版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生成绩标准管理系统专业课程设计汇报文书C语言课程设计报告书 课程名称: 学 院: 班 级: 学 号: 姓 名: 指导老师: 设计时间: 学生成绩管理课程设计1、 设计题目 用C语言编写程序完成以下任务:(1) 能按学期、按班级完成对学生成绩的录入、修改(2) 能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的 平时成绩进行查询 (3) 能查询学生成绩,不及格科目及学生名单(4) 能按班级输出学生的成绩单 二、设计要求(1) 贯彻结构化的程序设计思想。(2)用户界面友好,功能明确,操作方便。 (3)用户界面中的菜单至少应包括“统计各班总分及平均分”、“平均成绩 排 序”、“成绩单显示
2、”和“退出”4项。(4) 代码应适当缩进,并给出必要的注释,以增强程序的可读性。三、设计需求分析 经过对程序设计题目的分析可知,整个程序的设计实现大致分为十个模块,每一个模块对应一个函数。在这些函数当中,按学期对学生信息查询函数、按班级对学生信息查询函数、按平均成绩排序函数、按班级显示学生成绩单函数、统计全部学生总分及平均分函数、按总成绩排序函数、统计成绩不及格学生信息函数、显示全部学生信息并统计人数函数的实现严格按照题目的要求。读取文件函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。 这里要用到文件打开函数和文件读取数据函数,再加入人数的统计语句,以实现将文件内容显示到窗
3、体并统计总人数。 这一步在第一项功能的基础上稍加改动,添加求学生总分和平均分的函数就可以实现预期的功能。 实现的功能是按照学期对学生的成绩和数据进行查询,要求输入正确学期实现该功能。 实现的功能是按照班级对学生的成绩和数据进行查询,要求输入正确班级实现该功能。 该项为附加功能实现的是总成绩的递减排序以及名次显示,其中总成绩相同者名次相同。 按照题目的具体要求实现的是平均成绩的递减排序以及名次显示,其中平均成绩相同者名次相同。 该项即统计所有学生中各科中至少有一科不及格的学生的所有信息 。 该项即显示所有学生的基本信息及在总体中成绩排序信息。 除上面介绍的功能之外,程序还具有退出功能,可以在程序
4、的一次运行当中循环执行所有的功能,并根据需要终止程序,这使整个程序更加完善。每一个学生记录都包含学期、班级、学号、姓名,以及英语、计算机两门成绩,在程序当中将学生记录类型定义为结构体类型,函数每次对学生记录的访问,这样做保证学生数据的一致性,每次运行程序都可以采用原来的数据。4、 程序流程图1. 程序总体结构图 图1程序总体结构图2. 具体功能框图(1)显示全部学生信息并统计学生人数函数 图2读取学生数据 (2)按平均分排序函数 图3按平均分排序五、核心技术的实现说明及相应程序段本程序主要由十个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,
5、按学期对学生信息查询、按班级对学生信息查询函数、按平均成绩排序函数、统计成绩不及格学生信息函数等是程序中较为核心的部分,下面分别进行说明。1. 按学期、班级对学生信息查询函数 首先调用reads函数读取文件中的信息,利用for循环按照班级号循环查找,通过strcmp函数比较所查找学期、班级和已知学期、班级字符,利用if语句对所输入的待查找学期、班级与已知学期、班级字符进行判断,如果所查学期、班级字符不是已知,则显示无此学期、班级信息,在符合条件的情况下则输出该学期学生所有信息。具体的程序段如下:/*按学期对学生信息查询*/void xueqi () struct student studN;
6、char number20; int i,n; n=reads(stud); printf(n请输入待查询的学生学期号,按回车键确认:n,number); scanf(%s,number); printf(*所查学生信息如下*n);printf(学期 班级 学号 姓名 计算机 英语 总分 平均分 n); printf(*n); for(i=0;i=n)printf(没有找到该学期信息!n); return; else printf(%st%st%st%st%t%t%t%n,studi.xq,studi.cla,studi.num,,puter,studi.
7、english,puter+studi.english,(puter+studi.english)/2); /*按班级对学生信息查询*/void query() struct student studN; char number20; int i,n; n=reads(stud); printf(n请输入待查询的学生班级号,按回车键确认:n,number); scanf(%s,number); printf(*所查学生信息如下*n);printf(班级 学期 学号 姓名 计算机 英语 总分 平均分 n); printf(*n); for(i=0;i=n)pr
8、intf(没有找到该班级信息!n); return; else printf(%st%st%st%st%t%t%t%n,studi.cla,studi.xq,studi.num,,puter,studi.english,puter+studi.english,(puter+studi.english)/2);2. 按平均成绩排序函数该函数的核心内容是求平均成绩并对所有人进行排序。采用冒泡法对平均分进行排序,并记录对于总分的排序采用的排序算法是冒泡法排序,其中平均分的求得是在排序的过程中实现的,这部分程序仍然调用了read
9、s函数,整个排序过程在结构体数组stud中实现,由于排序算法涉及到两个数组元素的信息交换,因此还需要定义一个中间变量来协助。对于学生排序后名次的确定在结果输出时予以显示。具体程序段如下:/*按平均成绩排序*/void sort2() struct student studN,temp; int i,j,n; n=reads(stud); for(i=0;in-1;i+) for(j=0;jn-1-i;j+) if(studj.english+puter)/2(studj+1.english+studj+1.computer)/2) temp=studj; studj=stud
10、j+1; studj+1=temp; j=1; printf(*平均成绩排序结果如下*nn); printf(名次 学期 班级 学号 姓名 英语 计算机 平均成绩 n); printf(*n); for(i=0;in;i+) / 输出结果并排名 if(studi.english+puter=studi+1.english+studi+1.computer) printf(%dt%st%st%st%st%t%t%n,j,studi.xq,studi.cla,studi.num,,puter,studi.english,(p
11、uter+studi.english)/2); else printf(%dt%st%st%st%st%t%t%n,j+,studi.xq,studi.cla,studi.num,,puter,studi.english,(puter+studi.english)/2); getch();3. 统计成绩不及格学生信息该函数首先读取文件中的内容,通过循环将挑选出至少一科成绩不及格的学生的信息。具体的程序段如下: /*统计成绩不及格学生信息*/void bujige() struct student studN;int i,n; n=read
12、s(stud); printf(*成绩不及格学生信息如下*nn);printf(学期 班级 学号 姓名 计算机 英语 n); printf(*n); for(i=0;in;i+) if(puter60)|(studi.english60) printf(%st%st%st%st%t%n,studi.xq,studi.cla,studi.num,,puter,studi.english);六、测试情况七、课程设计总结 不觉之中C语言课程设计很快结束了,通过这一段时间的设计使我学到了许多,以前对C语言的认识比较肤浅,不过在不断尝试中我知道能利
13、用C语言解决比较复杂的问题,也对许多函数有了很深的认识。通过我的努力以及遇到不会的问题主动向老师请教和向同学们探讨,我顺利的完成了这次语言课程设计,感到要想对一门课程了解深刻就必须亲自身入其中的去体验,这样才能发现自己的很多缺点,才能一一的去克服,也才能真正的学到知识,也明白了那句“纸上谈来终觉浅,深知此是要躬行”的真正意义。纵然把结论书本背得滚瓜烂熟而不运用与实际,也不过是纸上谈兵罢了,终究在未来需要动手能力和实践人才的社会竞争中被淘汰,所以我们需要实际的操作,需要更多的实践训练,这样才能成为真正的二十一世纪合格的大学生!八、源程序代码#include #include #include#i
14、nclude #define N 25struct student char cla10; char xq10; char num20; char name10; float computer; float english; float sum,aver;studN;void menu();void sort();void printll();int reads(struct student stuN);void sort1() ;void sort2();void xueqi();void query();void bujige();void cjdan();void main()int c
15、; while(1) menu(); printf(n 请输入您要选择的操作序号,按回车键确认:); scanf(%d,&c); if(c8|c1) printf(-对不起,没 有 此 项 功 能 -!n); switch(c) case 1:printll();break; case 2:sort();break; case 3:xueqi();break; case 4:query();break; case 5:sort1();break; case 6:sort2();break; case 7:bujige();break; case 8:cjdan();break; case 9:
16、exit(0);void menu()printf(*n); printf(*n); printf( 欢 迎 光 临 n); printf( n); printf( 成 绩 统 计 系 统 n);printf( n); printf( n);printf( n); printf( n); printf( n); printf( n); printf( n); printf( n); printf( n); printf( n); printf( n); printf( n); printf( n); printf( n); printf( n); printf( n); printf( n);
17、 printf( n); printf( n); printf(*n); printf(*n);int reads(struct student studN) / 读取文件中的内容 FILE *fp; int i=0; if(fp=fopen(e:,r)=NULL) printf(文件打开失败!n); return 0; else for(i=0;!feof(fp);i+) fscanf(fp,%st%st%st%st%ft%fn,studi.xq,studi.cla,studi.num,,&puter,&studi.english); fclose(fp
18、); return i;void printll() /*读取D盘文件并打印全部,统计总人数*/ FILE *fp; int number=0,i,n=20; if(fp=fopen(E:,r)=NULL)printf(无 法 打 开 文 件n); printf(*所有的学生信息如下*n);printf(学期 班级 学号 姓名 计算机 英语 n); printf(*n); for(i=0;in;i+) fscanf(fp,%st%st%st%st%ft%fn,studi.xq,studi.cla,studi.num,,&puter,&studi.engli
19、sh); printf(%st%st%st%st%ft%fn,studi.xq,studi.cla,studi.num,,puter,studi.english); number+; if(feof(fp) break; printf(学生总人数为 :%dn,number); fclose(fp); void sort() /*统计全部学生总分及平均分*/ struct student studN;int i,n; n=reads(stud);printf(*全部学生信息如下*n);printf(班级 学号 姓名 计算机 英语 总分 平均分 n); pri
20、ntf(*n); printf(*n); for(i=0;in;i+) studi.sum=puter+studi.english; studi.aver=(puter+studi.english)/2; printf(%st%st%st%t%t%t%n,studi.cla,studi.num,,puter,studi.english,studi.sum,studi.aver); getch();void xueqi () /*按学期对学生信息查询*/ struct student studN; char number2
21、0; int i,n; n=reads(stud); printf(n请输入待查询的学生学期号,按回车键确认:n,number); scanf(%s,number); printf(*所查学生信息如下*n);printf(学期 班级 学号 姓名 计算机 英语 总分 平均分 n); printf(*n); for(i=0;i=n)printf(没有找到该学期信息!n); return; else printf(%st%st%st%st%t%t%t%n,studi.xq,studi.cla,studi.num,,puter,studi.english,stud
22、puter+studi.english,(puter+studi.english)/2); void query() /*按班级对学生信息查询*/ struct student studN; char number20; int i,n; n=reads(stud); printf(n请输入待查询的学生班级号,按回车键确认:n,number); scanf(%s,number); printf(*所查学生信息如下*n);printf(班级 学期 学号 姓名 计算机 英语 总分 平均分 n); printf(*n); for(i=0;i=n)printf(没有找到该班
23、级信息!n); return; else printf(%st%st%st%st%t%t%t%n,studi.cla,studi.xq,studi.num,,puter,studi.english,puter+studi.english,(puter+studi.english)/2);void sort1() /*按总成绩排序*/ struct student studN,temp; int i,j,n; n=reads(stud); for(i=0;in-1;i+) for(j=0;jn-1-i;j+) if(stu
24、dj.english+puterstudj+1.english+studj+1.computer) temp=studj; studj=studj+1; studj+1=temp; j=1; printf(*总成绩排序结果如下*nn); printf(名次 学期 班级 学号 姓名 英语 计算机 总成绩 n); printf(*n); for(i=0;in;i+) / 输出结果并排名 if(studi.english+puter=studi+1.english+studi+1.computer) printf(%dt%st%st%st%st%t%t%n,j,s
25、tudi.xq,studi.cla,studi.num,,puter,studi.english,puter+studi.english); else printf(%dt%st%st%st%st%t%t%n,j+,studi.xq,studi.cla,studi.num,,puter,studi.english,puter+studi.english); getch();void sort2() /*按平均成绩排序*/ struct student studN,temp; int
26、i,j,n; n=reads(stud); for(i=0;in-1;i+) for(j=0;jn-1-i;j+) if(studj.english+puter)/2(studj+1.english+studj+1.computer)/2) temp=studj; studj=studj+1; studj+1=temp; j=1; printf(*平均成绩排序结果如下*nn); printf(名次 学期 班级 学号 姓名 英语 计算机 平均成绩 n); printf(*n); for(i=0;in;i+) / 输出结果并排名 if(studi.english+studi.co
27、mputer=studi+1.english+studi+1.computer) printf(%dt%st%st%st%st%t%t%n,j,studi.xq,studi.cla,studi.num,,puter,studi.english,(puter+studi.english)/2); else printf(%dt%st%st%st%st%t%t%n,j+,studi.xq,studi.cla,studi.num,,puter,studi.english,(puter+st
28、udi.english)/2); getch();void bujige() /*统计成绩不及格学生信息*/ struct student studN;int i,n; n=reads(stud); printf(*成绩不及格学生信息如下*nn);printf(学期 班级 学号 姓名 计算机 英语 n); printf(*n); for(i=0;in;i+) if(puter60)|(studi.english60) printf(%st%st%st%st%t%n,studi.xq,studi.cla,studi.num,,puter,studi.english); void cjdan() /*按班级显示学生成绩单*/ struct student studN; char number20; i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沥青混凝土心墙堆石坝设计与计算
- 牛品种改良技术
- 建设工程施工合同纠纷要素式起诉状模板法务团队审定版
- 2026 年有子女离婚协议书标准版
- 2026 年离婚协议书权威正规范本
- 2026 年官方化离婚协议书专业范本
- 房企hr年终总结(3篇)
- 钓友俱乐部年终总结(3篇)
- 干部选拔任用工作情况的自查报告
- 2026年虚拟主机租用合同
- 东风7电路图解析
- 数字填图系统新版(RgMap2.0)操作手册
- YY/T 1778.1-2021医疗应用中呼吸气体通路生物相容性评价第1部分:风险管理过程中的评价与试验
- GB/T 17213.4-2015工业过程控制阀第4部分:检验和例行试验
- FZ/T 73009-2021山羊绒针织品
- JJF 1069-2012 法定计量检定机构考核规范(培训讲稿)
- GB∕T 5900.2-2022 机床 主轴端部与卡盘连接尺寸 第2部分:凸轮锁紧型
- 2011-2015广汽丰田凯美瑞维修手册wdl
- DFMEA编制作业指导书新版
- DB35∕T 1844-2019 高速公路边坡工程监测技术规程
- 城市管理综合执法局城管执法与执法程序PPT模板
评论
0/150
提交评论