版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.计算机高级语言课程设计报告课题名称:简单学生成绩管理程序设计时间:2015.3.10 2015.3.20学生:傅小川学生学号:9、指导教师:王玉兰完成日期:2013年 3月 20日管理科学学院信息与计算机科学系.二一五年三月.简单师生管理系统程序设计【摘要】本次课程设计的课题是学生成绩管理系统,本报告介绍课程设计课题的选题,说明本系统的提供的主要功能,对设计思路,功能模块,流程图,中心算法进行了详细的说明, 并画出流程图。 本报告也提供完整的源程序代码,并展示了系统使用和运行效果, 最后给出了在高级语言程序设计过程中的总结,其中包括本程序的设计,设计中的遇到的难题和问题,查阅的参考文献等。【
2、关键字】功能,模块,效果,问题等Program Designingabout Simple Management System of Teachers and StudentsAbstract:Keywords:.目录1问题描述及设计要求1.1 问题描述1.2 设计要求2. 系统分析(需求分析) 1.1 功能需求1.2 性能需求3. 总体设计4. 详细设计1.1设计思路1.2主要函数设计5. 程序代码6. 程序测试7. 程序使用说明8. 总结参考文献1问题描述及设计要求.1.1 问题描述以本班同学学习成绩管理为例,设计一个包括基本信息输入、成绩输入、成绩统计计算、成绩查询、查询结果输出等功能的
3、系统,并按规要求编写设计报告。1.2 设计要求( 1)要求利用 C语言面向过程的编程思想来完成系统的设计;( 2)突出函数特征,以多个函数实现每一个子功能;( 3)画出简单的流程图及功能模块图;( 4)进行简单的界面设计,能够实现好的交互;( 5)具有清晰的数据结构的详细定义;( 6)熟练地掌握语言对文件的各种操作。2. 系统分析(需求分析)1.1 功能需求( 1)增加学生记录:增加并输入学生的,学号,性别,各科成绩等信息。( 2)查询功能:分别输入和学号进行对成绩,平均分的查询。( 3)修改和删除功能:重新输入学生的学号, ,性别,各科成绩等信息,或删除学生的记录。( 4)学生记录排序功能:
4、 排序后,显示学生的平均分和名次等结果。(5) 统计信息功能 : 显示当前全部的学生信息。1.2 性能需求通过分析,系统性能需求如下:(1)系统的高速性,稳定性,安全性。.(2)系统的体系结构能够方便添加功能模块,适应发展。(3)系统的人机界面友好,易学易用。(4)系统的维护成本较低。3. 总体设计进入学生成绩管理系统012345678退增查修记统打保显出加询改录计开存示系记信记排信文文记统录息录序息件件录按按按按学姓学姓号名号名查查排排找找序序4. 详细设计1.1设计思路系统主要实现的是学生的基本信息,成绩的管理, 整个系统是为了提高安全和方便而设计。进入系统之前选择按回车键,进入系统之后,
5、可以实现对所有的学生的信息进行修改,添加,删除,查询及对学生.成绩总分,平均分,位次进行统计等操作。1.2 主要函数设计int menu_select();函数声明int openfile(student stu); /用于打开文件int findrecord(student stud);/找到指定的数据int writetotext(student stud);/将数据写入文件中void welcome();void display1();/显示void showtable();/显示数据的清单void sort(student stu); /直接对数组排序的函数void deleterec
6、ord(student stu,int i);/ 删除表中数据void addrecord(student stud);/增加表中的数据void display(student stud,int n1,int n2);void amendrecord(student stud); /修改表中的数据void count(studentstud);/引用计数函数,统计学生的数void sortnum(student stud);/按学号降序排列void sortnum2(student stud);/按学号升序排列void sortname(student stud);/按名字降序排列void s
7、ortname2(student stud);/按名字升序排列void statistic(student stud);/统计5. 程序代码#include stdio.h.#include string.h#include malloc.h#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度 */#define numsubs 3/*学科数目 */typedef struct message_student/*结构体定义 */char number6;char name20;char sex4;float subjectnumsu
8、bs;float score;float average;int index;student;extern int numstus;/*学生数目 */extern student*pointer;/*指向结构体数组,结构体已经定义, extern 只是声明结构体的存在,直接使用*/extern int lens;int menu_select();/*函数声明 */int openfile(student stu);/用于打开文件int findrecord(student stud);/找到指定的数据. . .int writetotext(student stud);/将数据写入文件中vo
9、id welcome();void display1();/显示void showtable();/显示数据的清单void sort(student stu);/直接对数组排序的函数void deleterecord(student stu,int i);/删除表中数据void addrecord(student stud);/增加表中的数据void display(student stud,int n1,int n2);void amendrecord(student stud);/修改表中的数据void count(studentstud);/引用计数函数,统计学生的数void sortn
10、um(student stud);/按学号降序排列void sortnum2(student stud);/按学号升序排列void sortname(student stud);/按名字降序排列void sortname2(student stud);/按名字升序排列void sortcount(student stud);void sortcount2(student stud);void statistic(student stud); /统计#include stdio.hint menu_select()char c; /整形数据类型.printf(nn);printf(| 1.增加学
11、生记录5.统计信息 |n);printf(| 2.查询学生记录6.打开文件 |n);printf(| 3.修改学生记录7.保存文件 |n);printf(| 4.学生纪录排序8.显示记录 |n);printf(|0.退出系统 |n);printf(nn);printf(请选择 (0-8):);c=getchar();getchar();/赋字符值的函数return(c-0); /将 C转换为对应的数值, 如0-0 ,1-1#include stdio.hint findrecord(student stud)/*查找信息 */char str2;int i;if(numstus=0) prin
12、tf(没有可被查找的记录 n);return -1;/查找失败 else printf(以何种方式查找? n1. 学号 t2.n);.gets(str);if(str0=1)/*按学号查找 */printf(请输入学号 :);gets(str);for(i=0;i=numstus;i+)if(strcmp(str,studi.number)=0)/比较两个字符串display(stud,i,i);break;else continue;else if(str0=2)/*按查找 */printf(请输入 :);gets(str);for(i=0;inumstus)printf(没有查找所要的信息
13、。n);return -1; return i; #includestdio.hint openfile(student stu)int i=0,j;FILE *fp; /FILE是变量类型 ,FILE *fp是声明, *fp 指向 FILE 的对象char filename20,str2;if(numstus!=0)printf(已经有记录存在,是否保存?(y/n);gets(str);if(str0=y|str0=Y)writetotext(stu);printf(请输入文件名 :);gets(filename);.numstus=0;if(fp=fopen(filename,rb+)=N
14、ULL)printf(无法打开该文件 n);return(-1); fscanf(fp,%d,&numstus);/fscanf是读入文件中的数据fgetc(fp);while(inumstus)fscanf(fp,%s,stui.number);fscanf(fp,%s,);fscanf(fp,%s,stui.sex);for(j=0;jnumsubs;j+)fscanf(fp,%f,&stui.subjectj);fscanf(fp,%f,&stui.score);fscanf(fp,%f,&stui.average);fscanf(fp,%d,&stui.index);
15、i+;fclose(fp);printf(文件读取成功 n);printf(是否显示纪录 ?(y/n);.gets(str);if(str0=y|str0=Y)display(stu,0,numstus-1);return(0);#include stdio.hvoid sort(student stud)int i,j=0;char str5;student *p;p=stud;if(numstus=0)printf(没有可供查询的记录 !);while(1)for(i=0;i+)printf(请输入查询方式 :);printf((直接输入回车则结束查询操作)n);.printf(1.按照学
16、号 t);printf(2.按照 t);gets(str);if(strlen(str)=0) break;if(str0=1)printf(请输入排序次序: n);printf(1.升序排列 t);printf(2.降序排列 n);gets(str);if(str0=1)sortnum2(p);elsesortnum(p);display(stud,0,numstus-1);else if(str0=2)printf(请输入排序次序: n);printf(1.升序排列 t);printf(2.降序排列 n);gets(str);.if(str0=1)sortname2(p);elsesort
17、name(p);display(stud,0,numstus-1);else printf(请输入 12);printf(是否退出排序 ?(y/n);gets(str);if(str0=y|str0=Y) break; return;void sortnum(student stud)/按照学号排序成绩,降序int i,j;student temp;student *p;p=stud;for(i=0;inumstus;i+)for(j=0;j0).temp=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=temp; void sortnum2(student stud)/按照学
18、号排序成绩,升序int i,j;student temp;student *p;p=stud;for(i=0;inumstus;i+)for(j=0;j0)temp=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=temp; void sortname(student stud)/按照名字排序成绩,降序.int i,j;student temp;student *p;p=stud;for(i=0;inumstus;i+)for(j=0;j0)temp=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=temp; voidsortname2(studentstud)
19、/按照名字排序,升序int i,j;student temp;student *p;p=stud;for(i=0;inumstus;i+)for(j=0;j0)temp=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=temp;#includestdio.hvoid statistic(studentstud)/*新增功能,输出统计信息 */int i,j=0,k=0;char c1,str2;float averagenumsubs,sum=0;if(numstus=0)printf(没有可被查找的记录 n);elsewhile(1)printf(下面将统计考试成绩 n);p
20、rintf(请选择你要统计哪科的成绩1.语文 t2.数学 t3.英语n);.c1=getchar();printf(t一共有个 %d 记录 n,numstus);/*总共记录数 */switch(c1) case 1:for(i=0;istudi.subject0) k=i;if(studj.subject0studi.subject0) j=i;average0=sum/numstus;printf(t科目语文的最高分 :n);/*最高分*/printf(tT学号:%s:%s分数:%.2fn,studj.number,,studj.subject0);printf(t科目
21、语文的最低分是:n);/*最低分 */printf(tt学号:%s:%s分数:%.2fn,studk.number,,studk.subject0);printf(t科目语文的平均分是 %5.2fn,average0);/* 平均分 */.break;case 2:for(i=0;istudi.subject1) k=i;if(studj.subject1studi.subject1) j=i;average1=sum/numstus;printf(t科目数学的最高分 :n);/*最高分*/printf(tt学号:%s:%s分数:%.2fn,studj.number,stu
22、,studj.subject1);printf(t科目数学的最低分是:n);/*最低分 */printf(tt学号:%s:%s分数:%.2fn,studk.number,,studk.subject1);printf(t科目数学的平均分是 %5.2fn,average1);/* 平均分 */break;case 3:for(i=0;istudi.subject2) k=i;if(studj.subject2studi.subject2) j=i;average2=sum/numstus;printf(t科目英语的最高分 :n);/*最高分*/printf(tt
23、学号:%s:%s分数:%.2fn,studj.number,,studj.subject2);printf(t科目英语的最低分是:n);/*最低分 */printf(tt学号:%s:%s分数:%.2fn,studk.number,,studk.subject2);printf(t科目英语的平均分是%5.2fn,average2);/* 平均分 */break;default:printf(输入错误!请输入13 之间的数 n); sum=0;getchar();printf(是否继续进行统计 ?(y/n);gets(str);.if(str0=y|str0
24、=Y) ;else break; #includestdio.hint writetotext(student stud)/*将所有记录写入文件 */int i=0,j;FILE *fp;char filename20;printf(输入文件名称 :);gets(filename);fp=fopen(filename,w);fprintf(fp,%dn,numstus);while(inumstus)fprintf(fp,%s%s%s,studi.number,,studi.sex);for(j=0;jnumsubs;j+)fprintf(fp,%f ,studi.subj
25、ectj);fprintf(fp,%f%f%d,studi.score,studi.average,studi.index);.i+;fclose(fp);printf(已成功存储 !n);display(stud,0,numstus-1);numstus=0;return 0;#includestdio.hvoid welcome()printf(t*n);printf(tttt欢迎进入学生成绩管理系统tttt欢迎使用 !n);printf(t*n);printf(输入回车进入菜单栏:n);printf(nn);getchar();.void showtable()printf(-n)pri
26、ntf(学号 tt性别 t语文 t数学t英语总分 平均分名次 n);printf(-n);void display(student stud,int n1,int n2)int i;showtable();/*显示表头 */for(i=n1;i=n2;i+)printf(%st%st%st%.1ft%.1ft%.1ft%.1ft%.1ft%dn,studi.number,,studi.sex,studi.subject0,studi.subject1,studi.subject2,studi.score,studi.average,studi.index);/*通过循环输出
27、数据 */void display1().printf(ttt=欢迎下次使用 =);printf(nn);getchar();#includestdio.h#includevoid amendrecord(student stud)char str5;/*供用户输入 */int i=-1,j;if(numstus=0)/*没有记录返回*/printf(没有可供修改的记录!);while(i=0)printf(要删除这个学生的信息吗?(y/n);gets(str);if(str0=y|str0=Y).deleterecord(stud,i);count(stud); else printf(确定
28、要修改这个学生的信息吗?(y/n);gets(str);if(str0=y|str0=Y)printf(下面请重新输入学生的信息:n);printf(请输入学号 :);gets(studi.number);printf(请输入 :);gets();printf(请输入性别 ( 男/ 女 1/0):);gets(str);if(str0=0)strcpy(studi.sex,女);elsestrcpy(studi.sex,男);studi.score=0;printf(请按顺序输入成绩 :);for(j=0;j=0)for(j=i;jnumstus;j+).stuj=stuj
29、+1;numstus-;printf(删除成功 !n);void count(student stud)int i,j;for(i=0;inumstus;i+)studi.index=1;for(j=0;jstudi.score)studi.index+;#include stdio.hvoid addrecord(student stud)/增加学生信息int i=0,j,num;char str5;if(numstus!=0)printf(已有记录存在是否覆盖 ?(y/n)n);.gets(str);if(str0=Y|str0=y)i=0;else i=numstus;printf(请输入增加的学生信息条目数:);scanf(%d,&num);if(i=0)numstus=num;else numstus+=num;if(numstuslens)lens+=50;pointer=(student *)realloc(pointer,lens*LEN);printf(请输入学生信息
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中语文+《烛之武退秦师》《鸿门宴》对比阅读课件+统编版高一语文必修下册
- 快递公司岗位责任制度
- 意识形态两个责任制度
- 房地产责任制度
- 托运人法律责任制度
- 扶贫办信访责任制度
- 技术负责责任制度
- 拆违包保责任制度
- 换届风气监督责任制度
- 推行门前五包责任制度
- 伤口负压治疗新进展
- HIV感染者心理支持方案
- 配电箱设备防护维护技术方案
- 2026年苏州工业职业技术学院单招综合素质考试题库附答案
- 2025版《煤矿安全规程》解读
- 2026年安徽水利水电职业技术学院单招职业适应性考试题库及答案1套
- 采集动脉血课件
- 2025年江西省公务员考试行测真题解析试卷(含答案)
- 剧毒从业证摸拟考试及答案解析
- 西藏高标准农田施工方案
- 隧道施工环境监测方案
评论
0/150
提交评论