学生成绩管理系统-合肥工业大学

上传人:痛*** 文档编号:85670231 上传时间:2022-05-06 格式:DOC 页数:17 大小:95.50KB
收藏 版权申诉 举报 下载
学生成绩管理系统-合肥工业大学_第1页
第1页 / 共17页
学生成绩管理系统-合肥工业大学_第2页
第2页 / 共17页
学生成绩管理系统-合肥工业大学_第3页
第3页 / 共17页
资源描述:

《学生成绩管理系统-合肥工业大学》由会员分享,可在线阅读,更多相关《学生成绩管理系统-合肥工业大学(17页珍藏版)》请在装配图网上搜索。

1、-数据构造与算法课程设计报告设计题目 学生成绩管理系统 姓 名 学 号 专 业 计算机科学与技术 班 级 12-01班 完成日期 2014.06.27 (一) 需求和规格说明主要功能是对批量学生的各门成绩进展录入、修改、查询、统计等,要求便快速。记录学生的*、*、班级、性别、联系以及课程和成绩;可以对学生的成绩按*和*进展查寻;输出显示学生成绩;并实现排序、统计及格率和优秀率功能。编程任务:(1)界面根本要求:*学生成绩管理系统* F1 -帮助 * F2 -输入数据并存入文件 * F3 -根据*查询成绩 * F4 -根据*查询成绩 * F5 -输出文件容 * F6 成绩排序 * F7 -统计及

2、格和优秀人数 * ESC-退出系统 *另:提倡用MFC的对话框做简单的输入输出交互界面。(2)功能要求:1)帮助:系统使用法的相关信息。2)输入数据并存入文件:输入相关信息,并实现文件流的读写操作。3)根据*查询成绩:输入*,查询学生的各门成绩4)根据*查询成绩:输入*,查询学生的各门成绩5)输出文件容:屏幕输出显示所有学生的成绩6) 成绩排序:对*门成绩或总分进展快速排序,显示、保存7)统计及格和优秀人数:统计及格和优秀率。8)退出二设计主要容如下:1.关键类的设计,继承层次关系,代码:(编译器 C-Free 5.0)首先,创立了一个student类.在student类的共有局部声明程序所需

3、函数;然后就是student类的函数实现局部,其中定义student类的带参数及不带参数构造函数;再是常用函数的调用,并定义系统菜单函数及其界面;最后就是主函数文件。属性和法定义类名成员类别类型成员名描述student属性stringName学生*stringNumber学生*stringCLas所在班级charGender性别stringPhonedoubleMath数学成绩doubleputer微机机成绩doubleSum总的分数floatJige_num数学及格人数floatYousheng_num数学优秀人数floatJige微机及格人数floatYou*iu微机优秀人数floatJi

4、gelv数学及格率floatyoushenglv数学优秀率floatJigel微机及格率floatyou*iul微机优秀率intCount统计输入数据个数法voidhelp()帮助文件voidsum_score()总分函数voidapp_score动态节点建立的函数voidcin_app()输入数据的函数voiddel_score()删除数据的函数voiddisplist()打印数据的函数voidlookup(int,string)查找数据的函数voidpositor(int)排序数据的函数voidtongji()计算及格率和优秀率voidmenu()系统菜单函数完毕开场进入主菜单根据菜单输入

5、n的值选择程序输入打印输出查找排序统计帮助删除三用户手册程序运行时,进入主界面选择0,读取帮助信息帮助信息系统有对学生的*、*、班级、性别、联系以及计算机、数学的成绩录入等功能可以对学生的成绩按*和*进展查寻,并且能对学生成绩实现排序功能。按照界面说明进展程序的各个子程序调用,最终完成工作后便可退出。 2014 Anpengfei. All rights reserved.四调试及测试在调试过程中也出现了多处错误,逐一修改,坦然漏洞还是有的。由于系统每增加一个学生信息,无论他她是的情况如,其*和其他信息都是自定义的,但是当出现一样*时,系统能返回上级菜单,让用户重新输入。对于班级、性别、都是后

6、输入系统的,没有进展限制,此系统只有保存和调用数据的功能,并不能对数据进展判断,查验是否为合法班级。合法等等。但是编程过程中对数学和微机的成绩输入是有限制的,输入数据必须满足0=输入值=100,否则将返回上级菜单重新输入。五运行实例:以两组数据为例:*班级性别数学成绩微机成绩01 qq 01 b 666666 88 59 02 ww 02 g 888888 79 80运行各功能函数如以下图:六进一步改良(1)、并未实现文件流的读取,目前程序只能逐条进展输入,不能实现批量读入,以后会做改良。(2)、没有实现结果的输出保存功能,信息只能在系统中调用,当系统关闭后没有保存想要的数值等功能,以后要加强

7、。(3)、没有进展MFC的优化设计,程序只是单纯的存在编译器当中,不过利用C-Free 5.0 倒是能生成函数.e*e文件,能单独拿出来在windows 操作系统下使用。(4)、对于信息的修改,用删除重新输入的式来完成,并未构建直接修改函数。七心得体会由于本课题中的多知识点都没有学过都要靠自己到课外的资料中去查找。在用的时候难免出现这样那样的错误。如开场设计出来的菜单不是预想的那样,而是总个窗中出现混乱。解决的这个问题的方法是调整。一个系统的菜单和提示信息非常重要。如果没有这些用户根本不知道怎么用这个成绩管理系统。在设计的调试过程中也无法顺利的完成调试工作。有了一个清晰简单的菜单和一些提示信息

8、这后,调试过程完成的非常顺利。回忆此次课程设计,我感慨颇多,确实,从拿到题目到完成整个编程,从理论到实践,可以学到很多很多的东西,同时不仅可以稳固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会效劳,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的缺乏之处,对以前所学过的知识理解得不够深刻,掌握得不够结实,比方说构造

9、体通过这次课程设计之后,一定把以前所学过的知识熟悉了,本次课程设计完毕了,我们通过这次实践学到了多知识。学到了设计一个简单的系统。要注意哪些面。也使我知道自己哪些面做得还不够。这不仅是程序设计,更是锻炼处理问题的能力,同时编写程序是件细心活,稍不留神就会出错,这就必须要求我对待事情要认真!在编写程序的过程中,错误不断出现,不同的类型(如少写了一个符号,写错了字母,用错了函数等等)层出不穷,这考验我们待事细心,耐心,能不能坚持到底,不能半途而废。但我总结出了一点点的经历如下:1、要对系统的功能和要求做出详细的分析,并合理分解任务。2、把分解出来的子任务,做给一个相对独立的模块。3、在设计一个模块

10、之前,要简单设想一下总界面的显视情况。4、针对设想出来的界面进展程序的编写。八对课程设计的建议1、可以多做一些技术上的指导,多讲讲算法。针对每个人的题目,有一些建立性的指导,比方我的题目中要求MFC设计,可以简单得培训一下,或效果会更好。2、课程设计,每个人的题目都不一样,相互之间交流还是很少的,我建议今后可以出一些相对难一点儿题目,分组进展设计,这样在过程中每个人都能得到锻炼,还能培养合作意识和团队精神,这对即将成为程序员的我们是很重要的。九附录源程序*include*include*include*include*includeusing namespace std;class stude

11、ntprivate:string number;string name;string clas;char gender;string phone; double puter;double math;double sum;student *head;student *curnode;student *ne*t;float jige_num;float youshen_num;float jige;float you*iu;float jigelv;float youshenglv;float jigel;float you*iul;int count;public:student();/不带参数

12、的构造函数/带数据域参数的构造函数,用来动态建立节点-student(string ,string ,string ,char ,string ,double ,double ,double=0.0);void help();/用于描述帮助信息void sum_score();/总分函数void cin_app();/用于输入void app_score(string,string,string,char,string,double,double);/动态的建立节点void del_score();/删除全部节点void displist();/输出节点中的全部数据void lookup(in

13、t ,string );/查找函数void del_score(int ,string );/删除函数void positor(int);/排序函数 void tongji();/统计及格率和优秀率;/student类的实现void err_char();/输入错误字符检测函数void score_err();/成绩围检测函数,当输入成绩不在0到100之间时提示重新输入student:student():ne*t(NULL)/不带参数的构造函数head=curnode=this;/带参数的构造函数student:student(string Number,string Name,string

14、Clas,char Gender,string Phone,double puter,double Math,double Sum):ne*t(NULL)number=Number;name=Name;clas=Clas;gender=Gender;phone=Phone; puter=puter;math=Math;sum=Sum;/统计及格率和优秀率 void student:tongji()int count; int jige_num=0,youshen_num=0,jige=0,you*iu=0;/分别算计算机和数学成绩的率人数和率 float jigelv,youshenlv,ji

15、gel,you*iul;/jigelv stand for puter;jigel stand for math int m=count; for(int i=0;i=60)jige_num=jige_num+1; if(puter=85)youshen_num=youshen_num+1; if(math=60)jige=jige+1; if(math=85)you*iu=you*iu+1; jigelv=jige_num/m; youshenlv=youshen_num/m; jigel=jige/m; you*iul=you*iu/m; cout计算机及格率: jigelv*100.0%

16、 计算机优秀率: youshenlv*100.0%endl; cout数学及格率: jigel*100.0% 数学优胜率: you*iu*100.0%endl; jige_num=0; youshen_num=0; jigelv=0; youshenlv=0; /帮助信息/ void student:help()cout 帮助信息 endl;cout系统有对学生的*、*、班级、性别、联系以及计算机、数学的成绩录入等功能endl; cout可以对学生的成绩按*和*进展查寻,并且能对学生成绩实现排序功能。endl;cout 2014 Anpengfei. All rights reserved.e

17、ndl; coutne*t=new student(Number,Name,Clas,Gender,Phone,puter,Math);curnode=curnode-ne*t;/删除表中的全部数据void student:del_score()student *p;curnode=head-ne*t;while(curnode!=NULL)p=curnode-ne*t;delete curnode;curnode=p;head-ne*t=NULL;curnode=head;cout现已是一个空表 endl;coutne*t=NULL)cout!这是一个空表!endl;coutne*t; co

18、ut*班级性别计算机数学总分 endl;while(curnode!=NULL)coutnumber;coutsetw(12)name;coutsetw(8)clas;coutsetw(8)gender;coutsetw(14)phone;coutsetw(15)puter;coutsetw(8)math;curnode-sum_score();coutsetw(8)sum;if(curnode-ne*t!=NULL)coutendl;elsecoutne*t;curnode=pw;cout!表中容输出完毕!endl;coutendl;cout ;system(pause);/输入数据void

19、 student:cin_app()student *p=curnode;bool b=0;string Number;string Name;string Clas; char Gender;string Phone; double puter;double Math;int count=0;while(1) coutNumber;curnode=head-ne*t;while(curnode!=NULL)b=(Number=curnode-number);curnode=curnode-ne*t;if(!b)break;elsecout出现了一样的*,请重新输入endl;curnode=p

20、;coutName;count+; curnode=p;coutClas; curnode=p;coutGender; curnode=p;coutPhone;while(1)coutputer;while(cin.fail()err_char();coutputer;if(puter=0&puter=100)break;elsescore_err();while(1)coutMath;while(cin.fail()err_char();coutMath;if(Math=0&Mathapp_score(Number,Name,Clas,Gender,Phone,puter,Math);cou

21、t记录已添加!endl;coutne*t)cout!这是一个空表!endl;curnode=p;cout ;system(pause);return;cout *班级性别计算机数学总分 number=str;break;case 2: b=curnode-name=str;break;default: return;if(b)i=0;coutnumber;coutsetw(8)name;coutsetw(8)clas;coutsetw(8)gender;coutsetw(14)phone;coutsetw(15)puter;coutsetw(8)math;curnode-sum_score()

22、;coutsetw(8)sum;coutne*t;/当i=1是代表没有找到数据if(i)coutendl;cout没有匹配的数据 endl;curnode=p;cout 以上是本次查找的结果!endl;coutne*t)cout!这是一个空表!endl;curnode=p;coutnumber=str;break;case 2: b=curnode-name=str;break;default: return;if(b)i=0;pw-ne*t=curnode-ne*t;delete curnode;curnode=pw-ne*t;elsepw=curnode;curnode=curnode-n

23、e*t;/当i=1是代表没有找到数据if(i)cout没有匹配的数据endl;elsecout 数据删除成功 ne*t)curnode=curnode-ne*t;coutne*t=NULL)cout这是一个空表不能排序!endl;coutne*t-ne*t=NULL)cout只有一条记录不用排序!endl;coutne*t; q=s; p=q-ne*t; while(s!=NULL) while(p!=NULL) switch(n)case 1:while(s-puterputer) q-ne*t=p-ne*t; r-ne*t=p; p-ne*t=s; s=p; p=q-ne*t; if(p=

24、NULL)break; break;case 2:while(s-sumsum) q-ne*t=p-ne*t; r-ne*t=p; p-ne*t=s; s=p; p=q-ne*t; if(p=NULL)break; break;case 3:while(s-mathmath) q-ne*t=p-ne*t; r-ne*t=p; p-ne*t=s; s=p; p=q-ne*t; if(p=NULL)break; break;default: return; if(p=NULL) break; q=p; p=p-ne*t; r=s; s=s-ne*t; q=s; p=q-ne*t; if(p=NUL

25、L) break; cout成功完成排序操作,即将输出排序结果!endl;cout ;system(pause);displist();/ void menu()/系统菜单函数的定义 cout*endl; cout* *工业大学 *endl; cout* 学生成绩管理系统 *endl; cout*endl; cout* 0 -帮助 *endl; cout* 1 -输入数据并存入文件 *endl; cout* 2 -根据名字或*查询成绩 *endl; cout* 3 -删除信息 *endl; cout* 4 -显示文件容 *endl; cout* 5 成绩排序(降序) *endl; cout*

26、6 -统计及格和优秀人数 *endl; cout* 其他任意键 -退出系统 *endl; cout*endl; cout请选择:;/查找函数的调用void fun_lookup(student &a)int n;string str;cout1、按* 2、按*endl;coutn;while(cin.fail()err_char();coutn;if(n!=1&n!=2)n=1;coutstr;a.lookup(n,str);/删除函数的调用void fun_del(student &a)int n;string str; cout1、按* 2、按*endl;coutn;while(cin.f

27、ail()err_char();coutn;if(n!=1&n!=2)n=1;coutstr;a.del_score(n,str);/排序函数的调用void fun_positor(student &a)int n,m;cout 1 按计算机分数排序 2 按总分排序 endl;cout 3 按数学分数排序 endl;coutn;while(cin.fail()err_char();coutn;coutendl; /输出排序后的结果a.positor(n);/成绩围检测函数void score_err()cout- 输入的成绩应该在0-100之间-endl;cout -请返回重新输入-endl;

28、/退出程序函数void fun_e*it()cout-程序即将退出-endl;cout ;system(pause);e*it(1);/输入错误字符检测函数void err_char()cout-输入了非法字符,请重新输入-i;if(cin.fail()/输入非法字符时退出fun_e*it();switch (i)case 0: a.help() ;break;/帮助case 1: a.cin_app();break; /增加记录case 2: fun_lookup(a);break; /查找记录case 3: fun_del(a);break; /删除记录case 4: a.displist();break;/查看记录case 5: fun_positor(a);break;/排序case 6: a.tongji();break;/.统计及格和优秀人率default: fun_e*it();return 0;. z.

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!