学生成绩排名系统课程设计报告书.docx
- 文档编号:7235410
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:28
- 大小:467.90KB
学生成绩排名系统课程设计报告书.docx
《学生成绩排名系统课程设计报告书.docx》由会员分享,可在线阅读,更多相关《学生成绩排名系统课程设计报告书.docx(28页珍藏版)》请在冰豆网上搜索。
学生成绩排名系统课程设计报告书学生成绩排名系统课程设计报告书程序设计基础课程设计-学生成绩排名系统第第1章章课程设计的目的和要求课程设计的目的和要求高级语言课程设计的主要目的是培养学生能够提高综合应用语言的能力,通过课程设计的训练,使学生能及时巩固已学的知识,补充未学的但有必要的容,掌握应用计算机解决实际问题的基本方法,熟悉程序开发的全过程,提高综合应用语言的能力。
高级语言程序设计的主要任务是要求学生遵循软件开发过程的基本规,运用结构程序设计的方法按照课程设计的题目要求,分析,编写,调试和测试高级语言程序及编写设计报告。
1.1课程设计的目的课程设计的目的1.巩固和掌握高级语言程序设计基本概念;2.掌握基本的程序设计方法;3.掌握开发软件所需的需求定义能力;4.提高书写程序设计说明文档的能力;5.提高综合运用高级语言的能力,强化编程和调试能力。
1.2课程设计的基本要求课程设计的基本要求1.根据所给的课程设计题目,分析课程设计题目的要求;2.对系统功能模块进行分析,写出详细的设计说明文档;3.编写程序代码,调试所编写程序使其能正确运行;4.设计完成的软件便于完成和使用;5.设计完成后提交课程设计报告;第第2章章课程设课程设计任务容计任务容2.1考核容考核容2.1.1编写的编写的C+语言程序语言程序针对编写的C+程序,应该主要考查下列容:
是否符合题目要求,是否完成了主要功能;是否存在语法错误、逻辑错误及运行错误;程序设计是否合理;程序是否具有良好的可读性和可靠性;是否符合结构化程序设计所倡导的基本理念;用户界面是否友好。
2.1.2课程设计报告课程设计报告针对提交的课程设计报告,应该主要考查下列容:
程序设计的报告容是否全面,观点是否正确;设计过程是否符合结构化程序设计方法的基本原则;层次是否清楚,语言是否通顺;各种图表是否规;是否具有良好的程序设计习惯。
2.2课题课题10、学生信息管理系统设计实现以下功能:
1)系统以菜单方式工作;2)学生信息录入功能(学生信息用文件保存);3)学生信息浏览功能;4)查询、排序功能(至少两种查询依据和两种排序依据);5)学生信息删除、修改功能。
备注:
学生信息包括:
学号,年龄,性别,出生年月,地址,E-mail等。
详细设计说明3.1模板设计图模板设计图该系统可以按功能进行模块划分,其模块如图3-1所示:
图3-1模板设计图其中:
1.学生成绩录入2.增加学生成绩记录模块可以完成学生成绩的输入,输入信息包括班级、学号、课程名、成绩。
3.删除学生成绩记录模块可以完成学生成绩的删除。
4.查询学生成绩记录模块可以完成学生成绩的查询,可以通过输入、学号或者是课程名来查询学生成绩。
5.学生成绩排序模块可以完成对学生成绩的排序,按照成绩的高低来进行排序。
3.2函数模块、功能分析、参数说明函数模块、功能分析、参数说明1.增加学生成绩记录模块(voidManage:
add()对应于总体设计时的系统功能模块图,各个功能模块的处理逻辑如下:
主要完成将数据存入单链表中的工作。
在这次增加学生成绩记录中,记录可以从二进制形式存储的数据文件中读入,也可以从键盘逐个读入学生记录。
如图3-2所示:
图3-2增加学生成绩记录流程图.2.删除学生成绩记录模块(voidManage:
del()要删除某个学生的信息,就要从磁盘文件中将所有同学信息读出来,然后除要删除的学生外,其它的所有记录再重新存入原来的磁盘文件中,如图3-3所示:
NY图3-3删除学生成绩记录流程图3.查询学生成绩记录模块(voidManage:
search()主要完成在单链表中查找满足相关条件的学生记录。
用户可以按照学生的学号、或课程名在单链表中进行查找。
未找到输出提示信息,如图3-4所示:
图3-4查询学生成绩记录流程图4学生成绩排序模块主要完成按照成绩的高低来进行排序,如图3-6所示:
图3-6学生成绩排序流程图3.3函数流程图函数流程图系统首先进入欢迎界面并提示用户输入不同的阿拉伯数字会进行不同的操作。
在用户做出选择后,根据用户输入的阿拉伯数字,程序将调用相应的功能模块,实现用户要进行的操作。
完成一次用户的操作后,再回到欢迎界面,等待用户再做出选择,再调用相应的功能模块,知道用户在欢迎界面选择了退出,该系统结束,终止执行,如图3-7所示:
开始输出界面选择操作选择1录入录入学生姓名,学号,成绩选择2删除按学号选择3输入数据输入学生的班级、学号、姓名、课程名、成绩选择4查询按姓名、学号或课程名选择6排序按成绩高低选择5退出系统结束图3-7函数流程图第第4章章编码与调试编码与调试4.1软件与测试软件与测试打开软件后,界面会出现你所需要的功能,根据你要进行的操作来选择。
4.2运行结果及截图运行结果及截图1.此图为程序运行成功后,出现的界面,此为主菜单界面,可依据界面执行。
如图4-1所示:
2.首先录入学生成绩记录,输入学生的班级、学号、课程名、成绩,如图4-2所示:
图4-2录入学生成绩记录3返回主菜单,选择相应的操作,对学生成绩进行排序和相应的查询,如图4-3所示:
图4-3学生成绩排序4.返回主菜单,进行查询学生成绩记录操作,如图4-4所示:
图4-4学生成绩排序5.返回主菜单,进行对学生成员进行增加。
如图4-5所示:
图4-5查询学生成绩6.返回主菜单,进行删除学生成绩记录操作,按照学号来删除学生信息,如图4-6所示:
图4-6删除学生成绩记录第第5章章课程设计心得与体会课程设计心得与体会本次课程设计,使我对数据结构这门课程有了更深入的理解。
数据结构是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。
一个人的力量是有限的,要想把课程设计做的更好,就要学会参考一定的资料,吸取别人的经验,让自己和别人的思想有机的结合起来,得出属于你自己的灵感。
在本课程设计中,我明白了理论与实际应用相结合的重要性,并提高了自己组织数据及编写大型程序的能力。
培养了基本的、良好的程序设计技能以及合作能力。
这次课程设计同样提高了我的综合运用所学知识的能力。
程序的编写需要有耐心,有些事情看起来很复杂,但问题需要一点一点去解决,分析问题,把问题一个一个划分,划分成小块以后就逐个去解决。
再总体解决大的问题。
这样做起来不仅有条理也使问题得到了轻松的解决。
在这段时间里,一直修改着相应的程序,并且尝试着调试各种运行结果。
终于,在自己的努力下,课程设计还算是有点起色。
经过这次的编程,我学会了很多东西。
比如说,如何在网上查找一些有用的东西,如何设计自己的目标,如何规划好自己的学习时间,如何让自己的思想应用到程序的编程过程中去,如何合理运用各种资源来提高自己的编程甚至是学习的能力。
另外,还有几点,我深有感触,就是我还问了别人怎样在Word文档中截图、怎样扩大或缩小图片等等。
总之,收获真的是挺大的。
通过这段时间的课程设计,我认识到数据结构是一门比较难的课程。
需要多花时间上机练习。
这次的程序训练培养了我实际分析问题、编程和动手能力,使我掌握了程序设计的基本技能,提高了我适应实际,实践编程的能力。
这次的课程设计我对于专业课的学习有了更加深刻的认识,以为现在学的知识用不上就加以怠慢,等到想用的时候却发现自己的学习原来是那么的不扎实。
以后努力学好每门专业课,让自己拥有更多的知识,才能解决更多的问题!
总的来说,这次课程设计让我获益匪浅,对数据结构也有了进一步的理解和认识。
不管怎么说,这次C+课程设计不仅给了我提高编程的能力的机会,而且让我的综合素质得到了一个全面的发展。
我相信,这样的日子一定能成为我以后生活中一段美好的回忆。
附录一附录一参考文献参考文献1谭浩强著C+程序设计,清华大学2严蔚敏、吴伟民编著数据结构(C语言版),清华大学3王杰数据结构经典算法实现与习题解答,人民邮电大学附录二附录二程序清单程序清单#include#include#include#include#defineLENsizeof(Student)#defineNULL0typedefstructstudentintnum;/*学号*/charname20;/*/charsex2;/*性别*/intscore4;/*成绩*/intsum;/*总成绩*/structstudent*next;Student;intn;/*声明一个全局变量*/Student*cin(void);/*声明学生信息函数*/Student*sort_all(Student*head);/*声明排序函数*/Student*sort_1(Student*head,intchoose);/*声明按学号排序函数*/voidsort_2(Student*head);/*声明按总分排序函数*/voidprint(Student*head);/*声明显示函数*/voidfind(Student*head);/*声明查询函数*/Student*add_new(Student*head);Student*cin()/*声明学生信息函数*/intflag;Student*head,*p1,*p2;n=0;head=(Student*)malloc(LEN);/*分配LEN大小的存空间给head,head为首地址*/p2=head;printf(n请输入第%d名学生的学号,学号为0表示结束输入:
n+1);scanf(%d,&flag);while(getchar()!
=n);for(;flag;)/*输入每个学生的信息*/n+;p1=(Student*)malloc(LEN);p1-num=flag;/*把flag复制给p1里面的num*/printf(请输入第%d名学生的:
n);/*输入*/scanf(%s,p1-name);printf(请输入第%d学生的性别:
n);/*输入性别*/scanf(%s,p1-sex);printf(请输入第%d名学生的语文成绩:
n);/*输入语文成绩*/scanf(%d,&p1-score0);printf(请输入第%d名学生的数学成绩:
n);/*输入数学成绩*/scanf(%d,&p1-score1);printf(请输入第%d名学生的英语成绩:
n);/*输入英语成绩*/scanf(%d,&p1-score2);printf(请输入第%d名学生的C语言成绩:
n);/*输入C语言成绩*/scanf(%d,&p1-score3);p1-sum=p1-score0+p1-score1+p1-score2+p1-score3;/*求和*/p2-next=p1;/*将后一个节点指向当前节点*/p2=p1;/*让p2成为当前节点*/printf(n请输入第%d名学生的学号,没有此学生则输入0表示结束:
n+1);scanf(%d,&flag);p2-next=NULL;/*结束标志*/printf(nn);returnhead;Student*sort_all(Student*head)/*定义排序函数*/intchoose;for(;)printf(ntt&学生成绩统计排序&n);printf(tt&t1.按学生学号排序t&n);printf(tt&t2.按学生总分排序t&n);printf(tt&t7.单科高分及均分t&n);printf(tt&t8.显示当前学生成绩t&n);printf(tt&t0.返回上一级菜单t&n);printf(请输入你要执行的操作:
);scanf(%d,&choose);while(getchar()!
=n);switch(choose)case1:
case2:
case3:
case4:
case5:
case6:
head=sort_1(head,choose);break;case7:
print(head);sort_2(head);break;case8:
print(head);break;case0:
returnhead;default:
printf(nn您的输入错误!
请重新输入:
nn);break;Student*sort_1(Student*head,intchoose)/*定义按学号排序函数*/Student*p1,*p2=head-next,*pm,*px;Studentmid;if(!
p2)returnhead;for(p1=p2;p1-next!
=NULL;p1=p1-next)pm=p1;for(p2=p1-next;p2!
=NULL;p2=p2-next)switch(choose)case1:
if(pm-nump2-num)pm=p2;break;case2:
if(pm-sumsum)pm=p2;break;case3:
if(pm-score0score0)pm=p2;break;case4:
if(pm-score1score1)pm=p2;break;case5:
if(pm-score2score2)pm=p2;break;if(pm!
=p1)mid=*pm;*pm=*p1;*p1=mid;px=pm-next;pm-next=p1-next;p1-next=px;printf(n排序后的成绩表为:
n);print(head);returnhead;voidsort_2(Student*head)/*定义按总分排序函数*/Student*p=head-next;intcount;intmax_1,max_2,max_3,max_4,min_1,min_2,min_3,min_4;intmax_sum,min_sum;intsum_1=0,sum_2=0,sum_3=0,sum_4=0;doubleaver_1,aver_2,aver_3,aver_4,aver_sum,percent;if(!
p)return;max_1=min_1=p-score0;max_2=min_2=p-score1;max_3=min_3=p-score2;max_4=min_4=p-score3;max_sum=min_sum=p-sum;for(;p;p=p-next)if(max_1score0)max_1=p-score0;elseif(min_1p-score0)min_1=p-score0;if(max_2score1)max_2=p-score1;elseif(min_2p-score1)min_2=p-score1;if(max_3score2)max_3=p-score2;elseif(min_3p-score2)min_3=p-score2;if(max_4score3)max_4=p-score3;elseif(min_4p-score3)min_4=p-score3;if(max_sumsum)max_sum=p-sum;elseif(min_sump-sum)min_sum=p-sum;sum_1+=p-score0;sum_2+=p-score1;sum_3+=p-score2;sum_4+=p-score3;aver_1=1.0*sum_1/n;aver_2=1.0*sum_2/n;aver_3=1.0*sum_3/n;aver_4=1.0*sum_4/n;for(p=head;p;p=p-next)for(inti=0;iscorei=60)count+;percent=(float)count/(float)n/4;aver_sum=aver_1+aver_2+aver_3+aver_4;printf(总共%d名学生,具体数据为:
n,n);printf(总分最高分为%d,最低分位%d,平均分为%.2f,percent=%.2fn,count=%d,max_sum,min_sum,aver_sum,percent,count);voidfind(Student*head)/*定义查询函数*/Student*p;intchoose,fnum;chartem20;if(n=0)printf(n当前系统没有任何学生数据!
n);return;for(;)printf(n请输入您要查询学生的方式:
nn);printf(1、按学号查询;2、按查询;0、我不查询了。
nn);printf(请选择:
);scanf(%d,&choose);while(getchar()!
=n);if(choose=1)printf(n请输入你要查询的学生的学号,输入0退出学号查询:
);scanf(%d,&fnum);for(;fnum;)for(p=head-next;p!
=NULL&p-num!
=fnum;p=p-next);if(!
p)printf(nn找不到你要查询的学号,请重新输入,输入0表示结束:
);scanf(%d,&fnum);elseif(p-num=fnum)printf(n学号为%d学生的数据为:
n,p-num);printf(学号tt性别t语文成绩数学成绩英语成绩C语言成绩总分n);/*输出所有的学生信息*/printf(%dt%st%st%d%d%d%d%dn,p-num,p-name,p-sex,p-score0,p-score1,p-score2,p-score3,p-sum);printf(nn请输入你还要查询的学生的学号,输入0表示不按学号查询了:
);scanf(%d,&fnum);elseif(choose=2)printf(n请输入你要查询的学生的,输入0退出查询:
);scanf(%s,tem);for(;strcmp(tem,0);)for(p=head-next;p!
=NULL&strcmp(p-name,tem);p=p-next);if(!
p)printf(nn找不到你要查询的,请重新输入,输入0表示结束:
);scanf(%s,tem);elseif(!
strcmp(p-name,tem)printf(n为%s学生的数据为:
n,p-name);printf(学号tt性别t语文成绩数学成绩英语成绩C语言成绩总分n);printf(%dt%st%st%d%d%d%d%dn,p-num,p-name,p-sex,p-score0,p-score1,p-score2,p-score3,p-sum);printf(nn请输入你还要查询的学生的,输入0表示不按查询了:
);scanf(%s,tem);elseif(choose=0)printf(n你选择了不查询!
n);break;elseprintf(n你以其他方式选择了不查询!
n);break;Student*add_new(Student*head)/*定义插入函数*/Student*p;intflag;printf(nn请输入你要新加入学生的学号,学号为0表示结束输入:
);scanf(%d,&flag);while(getchar()!
=n);for(;flag;)p=(Student*)malloc(LEN);p-num=flag;printf(请输入新加入学生的:
n);/*输入*/scanf(%s,p-name);printf(请输入新加入学生的性别:
);/*输入性别*/scanf(%s,p-sex);printf(请输入新加入学生的语文成绩:
n);/*输入语文成绩*/scanf(%d,&p-score0);printf(请输入新加入学生的数学成绩:
n);/*输入数学成绩*/scanf(%d,&p-score1);printf(请输入新加入学生的英语成绩:
n);/*输入英语成绩*/scanf(%d,&p-score2);printf(请输入新加入学生的C语言成绩:
n);/*输入英语成绩*/scanf(%d,&p-score3);p-sum=p-score0+p-score1+p-score2+p-score3;p-next=head-next;head-next=p;n+;printf(n请输入还要加入学生的学号,没有此学生则输入0表示结束:
);scanf(%d,&flag);head=sort_1(head,1);printf(加入后的成绩表为:
n);print(head);returnhead;voidprint(Student*head)Student*p=head-next;if(!
p)printf(nn此系统目前没有任何学生数据!
nnn);return;printf(此系统目前共计学生%d名:
n,n);printf(&学生成绩统计一览&n);printf(学号tt性别t语文成绩数学成绩英语成绩C语言成绩总分n);for(;p;p=p-next)printf(%dt%st%st%d%d%d%d%dn,p-num,p-name,p-sex,p-score0,p-score1,p-score2,p-score3,p-sum=p-score0+p-score1+p-score2+p-score3);structstudent*del(structstudent*head,longnum)/*定义删除学生信息函数*/structstudent*p1,*p2;if(head=NULL)printf(nlistnull!
n);returnhead;p1=head;while(num!
=p1-num&p1-next!
=NULL)p2=p1;p1=p1-next;if(num=p1-num)if(p1=head)head=p1-next;elsep2-next=p1-next;printf(delete:
%ldn,num);n=n-1;elseprintf(%ldnotdeenfound!
n,num);return(head);intmain()/*主函数即用户的操作界面*/Student*head;intchoose,i,num;/*声明局部变量*/head=(Student*)malloc(LEN);head-next=NULL;for(;)printf(ntt*学生成绩管理系统*n);/*学生成绩管理系统*/printf(tt*t1.学生数据键盘录入t*n);/*.学生数据键盘录入*/printf(tt*t2.学生数据统计排序和计算t*n);/*学生数据统计排序*/printf(tt*t3.查询学生数据tt*n);/*.查询学生数据*/printf(tt*t4.插入学生数据tt*n);/*插入学生数据*/printf(tt*t5.显示当前成绩表t*n);/*显示当前成绩表*/printf(tt*t6.删除学生数据tt*n);/*删除学生数据*/printf(tt*t0.退出成绩管理系统t*n);/*退出成绩管理系统*/printf(n请输入你要执行的操作:
);/*请输入你要执行的操作*/scanf(%d,&choose);while(getchar()!
=n);switch(choose)case1:
printf(ntttt&注意&);printf(nn此选项将会建立新的学生数据系统,原来的数据将不再存在,你确信要删除原来的数据并建立新的数据系统么?
nn);printf(1、建立新的数据系统;0、放弃建立新的数据系统。
nn);printf(请选择:
);scanf(%d,&i);if(i=1)head=cin();print(head);break;elseif(i=0)printf(n选择了放弃建立新的数据系统!
n);break;elseprintf(n请做出别的选择,当作放弃建立!
n);break;case2:
head=sort_all(head);break;/*调用排序函数*/ca
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩排名 系统 课程设计 报告书
![提示](https://static.bdocx.com/images/bang_tan.gif)