c语言课程设计报告(成绩管理系统)_第1页
c语言课程设计报告(成绩管理系统)_第2页
c语言课程设计报告(成绩管理系统)_第3页
c语言课程设计报告(成绩管理系统)_第4页
c语言课程设计报告(成绩管理系统)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言课程设计设计说明书学生成绩管理系统起止日期: 2016 年12月12日至 2016年12月23日学生姓名班级成绩指导教师电子信息工程系年 月 日目录:1、课程设计题目要求32、课程设计应完成的工作33、总体设计要求33.1总体功能要求33.2主要模块功能包括44、程序流程图55、源代码及注释56、代码运行效果说明137、总结15一、课程设计题目要求:学生信息包括学号、姓名、3门考试成绩。试设计一学生成绩管理系统,使之能提供 以下功能:1、学生成绩录入功能(成绩信息用文件保存,也可不用)2、统计:1)输入学生的学号统计该生的总分及平均分;2)输入课程求该门课程的平均分。3、排序:按学号4、

2、查找:输入一个学生学号,输出其姓名及平均成绩5、修改、删除学生信息(任选一项)调试环境:VC+6. 0二、课程设计应完成的工作:(1)编写算法(2)算法测试,并有具体的测试结果和结果分析(3)撰写课程设计报告。内容包扌舌:a. 封面扉页b. 设计任务书c. 目录d. 设计总体方案(包括流程图)e. 使用说明及运行实例(包括界面)f. 源程序代码注释三、总体设计总体功能要求:(1)链表的建立,每个节点包括:学号、姓名、性别、语文、数学、英语、总分。(2)节点的插入,按学号的顺序插入。(3)删除链表中的节点,按学号或者姓名。衰输岀“空pighead当num? =pl-nwh以及pl所捋的结点不?6

3、表尾结点p2=pl ( p2后移一企仅晝) pl=pl-next ( pl后務一个位置)pl是荽删除的结点埸:-_ _7-所播是头结成信息ho ad=pl-nxt(H除头结点)p2-next= pl-next (ffll除一个结点)删除琏袁中的结.点链表的输出。按学号排序、按总分排序功能模块图、流程图(要求有总体的功能模块图、 各部分流程图):p=h“d,使P指向第一个结点_p揺冋的术建魁结虫/输出P所指向的结.点P指向下一个结点当P指向的不是尾表输出涟表的函数print主要功能模块包括:1、成绩录入功能2、成绩输出功能3、成绩查询功能4、删除功能5、排序功能U!6、统计功能、程序流程图:五、

4、源代码及注/rr:include include include #define LEN sizeofStudent)#define NULL 0tvpedef stmct studentmt num;严学号*/char name20; /* 姓名 */ char sex2; /* 性别 */int score3; /* 成绩 */mt sum; /*总成绩*/stmct student *next; Student;int n; /*声明一个全局变量*/Student *ciii(void);Student *sort_l(Student *head,int); /*声明按学号排序函数*/

5、void sort_2(Student *head); /*声明按总分排序函数*/ void piiiit(Student *head); /* 声明显示函数Student *soit_all(Smdent *head); /* 声明排序函数*7 void find(Smdent *head); /* 声明查询函数*/Student *add_new(Student *head);Student *cin() mt flag;Student *head,*pl,*p2;n=0;head=(Student *)nialloc(LEN);p2=head;pnntfC*n请输入第d名学生的学号,学号

6、为0表示结束输入 scanf(H%d,&flag);wliile(getchai()for(;flag;) /*输入每个学生的信息引n+;pl=(Stiident *)inalloc(LEN);pl-num=flag;请输入第4名学生的姓名:”,n);/*输入姓名*/scanty M%sn,pl -naine);pnntf(”请输入第(1学生的性别:”,n); /*输入性别*/ scanf(”s,plsex);pruitfC请输入第4名学生的语文成绩:”,n); /*输入语文成绩*/scaiif(n%d,&p 1 -score0);pimtfC请输入第4名学生的数学成绩:”,n); /*输入数

7、学成绩*/scaiif(n%d,&p 1 -score 1 );pimtfC请输入第4名学生的英语成绩:”,n); /*输入英语成绩*/scaiif(n%d,&p 1 -score2);p l-sum=p l-score0+p l-scorel +p 1 -score2;p2-next=pl;p2=pl;prmtfC*ii请输入第d名学生的学号,没有此学生则输入0表示结束:n+l);scanty ”d ;&flag);p2 -next=NULL;return head;Student *soit_all(Smdent *head) /*定义排序函数*/ iiit choose; 血(;)prm

8、tf(Hiitt# # # # # 学生成纟责统计排序 # # #1 .按学生学号排序 t prmtf(tt#t2. 学生总分排序 t piiiitf(ntt#t7.单科高分及均分 t&显示当前学生成绩t #n”); pimtf(Htt#tO.返回上一级菜单 t #n”); 请输入你要执行的操作:”); scaiif(H%d,&choose);while(getcharQ !=*ir); switch(choose)case 1:case 2:case 3:case 4:case 5: case 6:head=sort_l(head,choose);break;case 7:prnit(hea

9、d);sort_2(head);break;case 8:piint(head);break;case 0:remin head;default: prmtf(Hiiii 您的输入有误!请重新输入:iinn);break;Student *sort_l(Student *head,int choose) /*定义按学号排序函数引Student *p 1, *p2=head-next,*pnL*px;Student mid;if (!p2) return head;fbi(p l=p2 ;p 1 -next! =NULL:pl=pl -next)pm=pl;fbr(p2=p l-next;p2

10、? =NULL ;p2=p2-next) switch(choose)case l:if (pm-nump2-num) pm=p2;break;case 2:if (pm-sumsum) pm=p2;bieak;case 3:if (pm-score0score0) pm=p2;break;case 4:if (pm-score 1 score 1 ) pm=p2;break;case 5:if (pm-score2score2) pm=p2;break; if (pm!=pl)mid=*pm;*pm=*pl;*pl=niid;px=pm-next;pm-next=p l-next; pl-n

11、ext=px;pnntf(Mn排序后的成绩表为An”);print(head);return head;void son_2(Student *head) /*定义按总分排序函数*/Student *p=head-next;mt max_ 1 ,max_2、max_3、min_ 1、min_2;mt max_sum4iun_sum;iiit suni_l=0,sum_2=0、suni_3=0;float aver_ 1 ,aver_2,avei_3 ,avei_sum;if (!p) retuin;max_l =min_l=p scoe0 ;niax_2=inin_2=p scoie 1 ;

12、niax_3=min_3=p-scow2;niax_sum=niiii_sum=p-sum;fbi(;p;p=p-next)if (niax_lscore0) max_l=p-score0;else if (inui_lp-score0) niiii_l=p-score0;if (niax_2score 1 ) max-2=p-score 1 ;else if (iniii_2p-score 1 ) nwi_2=p-score 1 ;if (niax_3score2) max_3 =p-score2;else if (inui_3p-score2J) niui_3=p-score2;if (n

13、iax_sumsum) niax_sum=p-sum;else if (iniii_sump-suni) niiii_sum=p-suni;sum_ 1 +=p- score 0 ;sum_2+=p-scoie 1 ;sum_3+=p-scoie2;avei_l=l .0*sum_l/n;aver_2=l .0*sum_2/n;aver_3=l .0*sum_3/n;avei_sum=aver_ 1 +aver_2+aver_3;pmitf(”总共(1名学生,具体数据为:n”,n);prnitf(”总分最高分为d,最低分位小 平均分为.2fm,max_sum.nihi_sum,aver_sum

14、);void find(Smdent *head) /* 定义查询函数*/Student *p;mt choose血um;char tem20;if (n=0) prmtf(ii当前系统没有任何学生数据!ii H);return;他(;)prmtf(ii请输入您要查询学生的方式:niT);pimtfCK按学号查询;2、按姓名查询;0、我不查询了。iiii); 请选择:”);scanf(%d,&choose);while(getcharO !=ii);if (choose=l)pnntf(”n请输入你要查询的学生的学号,输入0退出学号查询:”);scanft,,%d.&fhum);foi(;fi

15、ium;)for (p=head-next ;p! =NULL&p-num!=fiium;p=p-next);if (!p)pnntf(iiii找不到你要查询的学号,请重新输入,输入0表示结束:”); scanf(”d”,&fhum);else if (p-num=fiium)pnntf(HQ学号为d学生的数据为:irp-num);pmitf(“学号t姓名t性别t语文成绩数学成绩英语成绩总 分5”);/*输出所有的学生信息*/printf(M%dt%st%st %d %d %d %dii,p-nunLp-name,p-sex ,p-score0,p-scorel,p-score2,p-sum)

16、;pnntf(-nn请输入你还要查询的学生的学号,输入0表示不按学号 查询了: ”);scanf(n%d,&fhum);else if (choose=2)pnntfC请输入你要查询的学生的姓名,输入0退出姓名查询:”); scanf(H%srtem);fbr(;sticmp(tem/,OH);)fbr(p=head-next;p!=NULL&sticmp(p-naine,tem);p=p-next);if(!p) pnntfCiin找不到你要查询的姓名,请重新输入,输入0表示结 束:”);scanf(H%s*tem);else if (!sticmp(p-naine,tem) prmtf(n

17、姓名为s学生的数据为:iip-name);prmtfC学号姓名t性别t语文成绩数学成绩英语成 绩总分n”);prmtf(” dt%st%st%d%d%d%dn,p-num,p-name,p-sex ,p-score0,p-scorel,p-score2,p-sum);prmtf(nii请输入你还要查询的学生的姓名,输入0表示 不按姓名查询了: ”);scanf(”s,tem);else if (choose=0)你选择了 不查询! nH);break;else piintf(ii你以其他方式选择了不查询! ii);bieak;Student *add_new(Student *head) /*

18、定义插入函数Student *p;mt flag;pnntf(-nn请输入你要新加入学生的学号,学号为0表示结束输入门;scanf(H%d*&flag);wliile(getchai()fbr(;flag;)p=(Student *)malloc(LEN);num=flag;prmtf(请输入新加入学生的姓名:输入姓名*/scanf(”s 役pnanie);pnntf(”请输入新加入学生的性别:”);/*输入性别*/ scanf(H%s,p-sex);请输入新加入学生的语文成绩:“小);/*输入语文成绩*/scanf(H%d,&p-score0);请输入新加入学生的数学成绩:“小);/*输入数

19、学成绩*/scanf(H%d,&p-scorel);请输入新加入学生的英语成绩:“小);/*输入英语成绩*/scanf(H%d,&p-score2);p-sum=p-score0+p-scorel+p-score2;p-next=head-next;head-next=p;n+;prmtf(ii请输入还要加入学生的学号,没有此学生则输入0表示结束:”);scanf(H%d,&flag);head=sort_ 1 (head ,1);piintf(”加入后的成绩表为:print(head);return head;void prmt(Student *head)Student *p=head-n

20、ext;if (!p)此系统目前没有任何学生数据! nWn);ietuni;pmirff此系统目前共计学生d名:3);printf(M* * * *nH);pmitfC学号t姓名t性别t语文成绩 数学成绩 英语成绩 总分E);fbr(;p;p=p亡 xt) p-nuni.p-name,p-sex ,p-score0,p-scorel,p-score2,p-sum=p-scoie0+pscoiel+ p-score2);%d%d%d%dE,stmct student *del(stmct student *headjong num) /*定义删除学生信息函数*/ stmct student *p

21、l,*p2;if(head=NULL) priiitf(niilist null! iin);ieniin head;pl=head;while(num! =p 1 -num & p 1 -next! =NULL)p2=p l;pl=pl -next;if(num=p l-num)if(p 1 =head)head=p 1 -next;else p2-next=p 1 -next;pnntfC delg %ldn” jiiim);n=n-l;else prmtf(,%lcl not deen found!return(head); mt mam()/*主函数即用户的操作界面*/ Student

22、 *head;mt choosej.nuni; /* 声明局部变量 */head=(Student *)nialloc(LEN); head-next=NULL;血(;)*学生成绩管理系统* * */*学生成绩管理系统*/学生数据键盘录入t恤”);/*.学生数据键盘录入*/ pnntf(%t*t2.学生数据统计排序t恤”);/*学生数据统计排序*/查询学生数据tt *n”); /*.查询学生数据*/ pnntf(tt*t4.插入学生数据tt *n); /*插入学生数据*/显示当前成绩表t *n”); /*显示当前成绩表*/prmtfCtt*t6.删除学生数据tt/*删除学生数据*/pnntf(

23、”tt*tO.退出成绩管理系统t/*退出成绩管理系统*/pimtfCii请输入你要执行的操作:”);/*请输入你要执行的操作*/ scaiif(%d,&choose);while(getchar(J !=ii);switch(choose)pnntf(”nn此选项将会建立新的学生数据系统,原来的数据将不再存在,你确信要删除原来的数据并建立新的数据系统么? nii);printf(”l、建立新的数据系统;0、放弃建立新的数据系统。nii); pnntf(”请选择:”); if (i=l) head=cin();prmt(head);break; else if (i=0)pimtf(n你选择了放

24、弃建立新的数据系统!break; else printf(ii你做出别的选择,当作放弃建立! n); break;case 2:head=sort_all(head);break; /* 调用排序函数 */case 3:fiiid(head);break; /*调用查询函数*/case 4:head=add_new(head); /*调用插入函数*/ case 5:print(head);break;严调用显示函数*/ case 6:pnntf(”请输入要删除的学生学号:”);scanff%cT;&num);del(head,num); /*调用删除函数*/ case O:system(Hpa

25、useM);ieturn 0; /*退 岀系统*/ default: pimtf(iiii 您的输入有误!请重新输入:nn);break;六.代码运行效果说明 ” D:C课设Debug课设成绩学生信息管理系统exh* * * *学生成绩管理系统* * *1 学生数据键盘录入*2学生数据统计排序*3 查询学生数据*4插入学生数据*5 显示当前成绩表*6.删除学生数据*0 退出成绩管理系统*晴输入你要执行的操作:图1进入系统 MD:C课设Debug课设成绩学生信息管理系统朝 x*4插入学生数据5.显示当前成绩表6 删除学生数据0.退出成绩管理系统*+请输入你要执行的操作:1此选项将会建立新的学生数

26、据系统,原来的数据将不再存在,你确信要删除原来的数据 并建立新的数据系统么?1、建立新的数拆系统:0、放弃建立新的数据系统。请选择;1 帳输入第1名学生的学号,学号为0表示结束输入:100清输入第1名学生的姓名:小王请输入第1学生的性别:男请输入第1名学生的语文成绩:98请输入第1名学生的数学成绩:78请输入第1名学生的英语成绩:go 请输入第2名学生的学号,没有此学生则输入0表示结束: 也狗拼音输入法全:图2通过键盘输入学生的信息 P:C课设Debug课设成绩学生信息管理系统.exe”谙输入第4名学生的数学成绩:90 请输入第4名学生的英语成绩:78请输入第5名学生的学号,没有此学生则输入0

27、表示结束:0号O 13 学 O 8 o O kl- - lL名白黑亮风 一二、 姓 dddd名别林性男女男男899078257986770235979067254879078255学生成绩统计一览*穿*客*客穿* 语文成绩 数学成绩 英语成绩 总分* * * * *学生成绩管理系统* * * * 1 学生数据键盘录入* 2 学生数据统计排序* 3查询学生数据* 4插入学生数据*+5 显示当前成绩表* 6 删除学生数据* 0 退出成绩管理系统*请输入你要执行的操作: 搜狗拼音输入法全:图3显示所有学生的信息排序后的成绩表为: 此系统目前共计学生4名986770235899078257979067254879078255学生成 绩统计* 语文成绩数学成绩英语成绩总分别性女男男男名黑白亮风 妲小小小小号 0 13 8 o o O 丄 V QV 11 11 IX图4按学号排序请输入您要查询学生的方式:1、按学号査询;2、按姓名査询;0、我不査询了。请选择:1”输入你

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论