1、C语言课程设计汇报一 .问题描述:题目七:学生成绩管理系统设计学生成绩信息包含:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。关键功效:(1) 能按学期、按班级完成对学生成绩录入、修改(2) 能按班级统计学生成绩,求学生总分及平均分(3) 能查询学生成绩,不及格科目及学生名单(4) 能按班级输出学生成绩单要求:使用二进制文件方法存放数据,系统以菜单方法工作学生成绩信息包含:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。要求使用二进制文件方法存放数据,系统以菜单方法工作,实现对学生成绩录入,修改,统计,排序,查询,输出等功效。二 .设计目标设计“学生成
2、绩管理系统”使其含有以下功效:(1) 能完成对学生成绩录入(2) 能按班级统计学生成绩,求学生总分及平均分,排序(3) 能按班级,学期输出学生成绩单和不及格科目及学生名单(4) 能查询单个学生成绩(5) 能修改单个学生信息三 . 要求系统以菜单方法工作四 . 功效1 输入功效:能够一次完成无数条信息输入。2 输出功效:能按班级输出学生成绩单。3 修改功效:完成对单个学生成绩修改。4 查找功效:完成对单个学生信息查找,并显示。5 排序功效:按学生成绩进行排序,并显示。6 有一个清楚美观界面来调用各个功效五模块图修 改void monify修改单个学生信息主流程学期int term班级int cl
3、asses信息录入void input 成绩统计void sort查询 void search姓名char name10学号int num成绩int score4学号stui.num、班级stui.classes,姓名stui.name、四门课成绩stui.score能按学号查询单个学生成绩 按班级统计学生成绩,求学生总分及平均分,排序成绩输出void print能按班级,学期输出学生成绩单和不及格科目及学生名单结构数组struct student六 . 具体内容整个系统除了主函数外,另外还有5个函数,实现六大功效:输入功效、输出功效、修改功效,查找并显示功效、排序并显示功效。各个函数具体设计
4、说明分别以下:1 . 定义结构体及宏定义 #include #include #include #define NUM 100struct student int term; int num; int classes; char name10; int score4; int sum; float average; stuNUM;2主函数 main()利用无限次循环for(;)和swithch()进行菜单选择来实现各函数调用,系统依据输入数字选项来调用对应函数。等实施完每一个函数功效后,按任一键回到主界面也要经过这个函数来实现!void main() zcd();/*主函数界面*/ void
5、zcd()int n=0;char m;system(cls);/*清屏*/ printf(按任一键进入主菜单n ); /*按任一键进入主菜单*/ printf(*n); printf(tt华中科技大学文华学院欢迎您n); printf(nttt- 欢迎使用学生管理系统nnttttt-n); printf(*MENU*n); printf(ttt1. 输入学生成绩统计 Input the recordn); /*输入学生成绩统计*/ printf(ttt2. 排序并显示 Sort to make new a filen); /*排序*/ printf(ttt3. 按班级显示成绩单 Print
6、the recordn); /*显示*/ printf(ttt4. 查找个人成绩 Search record on namen); /*查找*/ printf(ttt5. 修改 Modify a recordn); /*修改*/ printf(ttt6. 退出 Quitn); /*退出*/ printf(*n); printf(nttt输入你选择Enter your choice(17):); fflush(stdin); m=getchar(); doswitch(m) case 1:input();zcd();break; case 2:sort();system(pause);zcd()
7、;break; case 3:print();system(pause);break; case 4:search();zcd();break; case 5:modify();system(pause);zcd();break; case 6:exit(0); /*如菜单返回值为7则程序结束*/ default:printf(错误命令); getchar();zcd(); while(1);3输入信息函数 void input() system(cls); int i;char a;for(i=0;iNUM;i+) printf( n请输入学生学期:); scanf(%d,&stui.ter
8、m); printf( n请输入学生学号:); fflush(stdin); scanf(%d,&stui.num); printf( n请输入学生班级:); scanf(%d,&stui.classes); printf(n请输入学生姓名:); scanf(%s, stui.name) ; printf(n请输入学生语文成绩:); scanf(%d,&stui.score0); printf(n请输入学生数学成绩:); scanf(%d, &stui.score1); printf(n请输入学生英语成绩:); scanf(%d, &stui.score2); printf(n请输入学生计算机
9、成绩:); scanf(%d, &stui.score3); stui.sum=stui.score0+stui.score1+stui.score2+stui.score3;/算总分和平均 stui.average=(float)stui.sum/4.0; printf(是否要继续添加(按N&n退出); fflush(stdin); a=getchar(); if(a=n|a=N) break;4、排序并显示函数 void sort() int i,j=0;float temp; for(i=0;iNUM;i+) stui.sum=stui.score0+stui.score1+stui.s
10、core2+stui.score3; stui.average=(float)stui.sum/4.0; for(i=0;iNUM-1;i+)for(j=i+1;jNUM;j+)if(stui.sumstuj.sum)temp=stui.sum; stui.sum=stuj.sum; stuj.sum=temp; printf(学号t姓名t班级 语文 数学 英语 计算机 总分 平均分n); for(i=0;iNUM;i+) printf(%dt%st%d%5d%5d%5d%6d%7d%8.2fn,stui.num,stui.name,stui.classes, stui.score0,stui
11、.score1,stui.score2,stui.score3,stui.sum,stui.average); /*输出学生信息*/ system(pause);system(cls);print();5查找并显示一个统计 void search() system(cls);/*清屏*/ int number=0,i; printf(ttt 请输入要查找学生学号:); scanf(%d,&number); printf(学号t姓名t班级 语文 数学 英语 计算机 总分 平均分n); for(i=0;iNUM;i+) if(number=stui.num) break;/*查找判定*/ if(i
12、NUM)printf(%dt%st%d%5d%5d%5d%6d%7d%8.2fn,stui.num,stui.name,stui.classes,stui.score0,stui.score1,stui.score2, stui.score3,stui.sum,stui.average); /*输出学生信息*/ elseprintf(没找到该学生信息n);system(pause); 6按学期、按班级输出成绩函数void print() system(cls);char a; printf(1、按学期输出n);printf(2、按班级输出n);printf(3、返回n);fflush(stdi
13、n);a=getchar();switch(a)case 1:print1();case 2:print2();case 3:zcd();default:print(); void print1()/按学期int i,m;printf(请输入学期:n);scanf(%d,&m);printf(学号t姓名t班级 语文 数学 英语 计算机 总分 平均分n);for(i=0;iNUM;i+) if(m=stui.term) printf(%dt%st%d%5d%5d%5d%6d%7d%8.2fn,stui.num,stui.name,stui.classes, stui.score0,stui.sc
14、ore1,stui.score2, stui.score3,stui.sum,stui.average); /*输出学生信息*/system(pause);system(cls);print();void print2()/按班级int i,j,k;printf(请输入班级:n);scanf(%d,&k); printf(学号t姓名t班级 语文 数学 英语 计算机 总分 平均分n);for(i=0;iNUM;i+) if(k=stui.classes) stui.sum=stui.score0+stui.score1+stui.score2+stui.score3; stui.average=
15、stui.sum/4.0; printf(%dt%st%d%5d%5d%5d%6d%7d%8.2fn,stui.num,stui.name,stui.classes, stui.score0,stui.score1,stui.score2, stui.score3,stui.sum,stui.average); /*输出学生信息*/ printf(输出不及格学生名单及成绩:n);printf(学号t姓名t班级 语文 数学 英语 计算机 n);for(i=0;iNUM;i+) for(j=0;j4;j+) if(stui.scorej60&k=stui.classes) /*输出不及格学生名单及
16、成绩*/ printf(%dt%st%d%5d%5d%5d%6dn,stui.num,stui.name,stui.classes, stui.score0,stui.score1,stui.score2, stui.score3); break; system(pause);system(cls);print();7修改成绩函数void modify() system(cls); int number,i; printf(ttt请输入要修改信息学生学号:); scanf(ttt%d,&number); for(i=0;iNUM;i+) if(number=stui.num) break;/*
17、查找判定*/ if(iNUM)/*查找判定*/ printf(请输入修改后学生信息:); printf( n请输入学生学期:); scanf(%d,&stui.term); printf( n请输入学生学号:); fflush(stdin); scanf(%d,&stui.num); printf( n请输入学生班级:); scanf(%d,&stui.classes); printf(n请输入学生姓名:); scanf(%s, stui.name) ; printf(n请输入学生语文成绩:); scanf(%d,&stui.score0); printf(n请输入学生数学成绩:); scan
18、f(%d, &stui.score1); printf(n请输入学生英语成绩:); scanf(%d, &stui.score2); printf(n请输入学生计算机成绩:); scanf(%d, &stui.score3); elseprintf(没找到该学生信息n);system(paues);system(cls);zcd(); 七运行过程主菜单成绩录入统计排序按学期输出成绩按班级输出成绩查找个人成绩修改单个学生信息八.设计总结经过几周课程设计,我学到了很多东西:巩固和加深了对编程了解,提升综合利用本课程所学知识能力。培养了我选择参考书,查阅手册及文件资料能力。培养独立思索,深入研究,分
19、析问题、处理问题能力。经过实际编译系统分析设计、编程调试,掌握应用软件分析方法和工程设计方法。能够按要求编写课程设计汇报书,能正确叙述设计和试验结果,正确绘制系统和程序框图。课程设计是把我们所学理论知识进行系统总结并应用于实践良好机会,有利于加强我们用知识理论来分析实际问题能力,进而加强了我们对知识认识实践度,巩固了我们理论知识,深化了对知识认识,并为走向社会打下一个良好基础。在这次课程设计中我碰到很多问题和麻烦,得到了老师帮助和指导,才能够使得这次课程设计顺利进行下去,另外,在程序调试过程中,也得到很多同学帮助,给我立即指犯错误,提出很多宝贵意见。在此对老师和同学们表示感谢!(后附完整程序)