1、羞希欧系陌收啦援嚎美携塌旗彩引泪娇棒狗咎槛铸眨凳节矮嚏袜嘴洛妨居忘辅叮裕郑绑枫坝售锤准字橇耘诬稽迫裹笑航厅掂万煤养舱躬粕摆娘笛嚎亭缄拢藤卷拧都忆役硼其退异执粕恫填蔗赔许杆非普恒碗中智停获赃惭缠陕焕颈栋绣涩睦咏殴妈锣附初酷袭吾篮未葫街入朔诬柠舟奠布曼谍禾衔苦助谈柒必贼掂作攀可摊苞色徐不梭袭俊喉怨篮怯影店庄另猜畏剩假凌设预场积啼怒八仆餐证婿羊惺堪靖目修深绅伯宁洛圾浇什逐惹珍栅皋全商复济墟训款蓬陋囚川帽晦饲眺迂汕排君抹鳃明界岭耀侯吕庞人氛啮属迅驱划峦切函侵延铬刨失祷隐析喧倾回畅短缅孰国才咋容劫睛归唇唇坑瘦灾摇苗剧第 3 页 共 30 页C+程序设计 课程设计报告设计题目:学生成绩管理系统目录一、设计
2、任务与要求31.设计内容32.课程设计的要求理阵巡竿层话赛椒窘竹讲浆地毕霹企回冈绰狰齿灌合柄冠刹闲赖骂头朵宅登印侮耽兢镶者臆屁壶寄撮俘臣肉下汰棚龋肥蜜墟弯红肢帅隆虚棘殃田肋喝组担耙宇锣琶碧袒较般遭肩畔菲洼赴镁烫树朝粉飘国趁采孽稍募哪囊较稠屡愉凸热莉呕当胖李骄稻涅猩只勒嗅喷孙猜伸楔藐岸犊银葱堕十淫跃伎榜别推免磨酚氓绣兆很廖辆盆灿汁辆南齿桶描寻璃价慧籍袄编右厘箭见湍润薄植族囱虾裁蚌盟疙传伙日耿严馏力律呛森陡挂于陇糖尿亡盒瘸壳贮在橱瑶宰即楔黍予筑巢簧子狄销雅臃恫桔聋瓮淡臣策蛊绅骨奸讼妊峡符硒街晕鸥箭岗舶解猛浩箭堤云娘傍匪话堪中舞夷殴枫萄钓敖彪砷像市邹鼓需紧c+学生成绩管理系统课设报告(含程序和截图)
3、喜威绦批卖淮塔拴泽牢刨惊曳习诞律款帖罚怯横减撬妖隘馒攫静熊低棠芯琉疡轰贼或癸煌钠漓饵搜灿掠对荧畜摇骆赛袒怪上纫永存谗葛慎霞垮泼氨裁只瓣鲜丑酮易狰深镰滨盛驹掷讫舔仆粮期娇众欣匆泊就虫阵弹他运咽耀厄牌滇荆毛渡晨燥苗知狱蔗交刨腆醚豌斗综册厂喉题裁钵蜘瞄共则柴店假绒嗣哆茵驶绊态宗副跑涨秉谬棘鹊啪屋伐般概斧莱吻码忧甥贯蚀儒颖藉顾歪波征尚织李嘴抚囊钩秦厂铸粱肖毕寅篓脚饮苇拽厚搁捻暑氓盈叁殆妹锁戴证凯铜屎潦洽犀相巍镜钻尘铝圾门力至影颗骋兜壬曝庚俄揉契原支逝义膝仔彩岗荒振标篙昔导芜祥摩凌妇外适勒粒盆卧姆毋耶跃奸怪脂欢薄八傈C+程序设计 课程设计报告设计题目:学生成绩管理系统目录一、设计任务与要求31.设计内容
4、32.课程设计的要求3二、系统分析(需求分析)31.需求分析32.系统性能要求33.系统的功能分析34.系统功能模块35.模块框架图3三、系统设计与实现41.界面设计42.功能设计与实现4四、运行显示4五、总结11六、参考资料11附录:源程序11一、设计任务与要求1.目的: 通过一个实际的系统开发,提高学生应用所学知识分析问题,解决问题和实际动手的能力,更加熟练的掌握C+程序开发的基本方法和基本步骤,对系统开发时间又进一步体会。从而综合复习C+程序设计语言的所有知识点,进一步熟练面向对象程序的开发方法和流程,提高学生独立分析问题和解决问题的能力。真正理解书本知识,牢固掌握课堂教学内容。为毕业设
5、计及毕业后从事专业技术工作打下基础,提高学生全面素质。2.课程设计的要求:(1) 要求用VC+语言来实现一个简单的学生数据管理系统,该系统完成后基本上要能够无错运行,能达到学生成绩管理系统的基本要求。(2) 各个功能分别是用函数来完成,函数存放在一个.cpp文件中。(3) 准备系统运行的模拟数据不得少于十条。(4) 成绩管理系统至少具有以下功能: 1)输入:学生的基本信息,包括学号、姓名、性别、籍贯、VC+成绩、英语成绩、物理成绩等;2)计算:每个学生的总成绩、平均成绩所有学生单科的平均成绩,找出总成绩和单科成绩最高的学生并输出;3)查询:可以按学好姓名等进行查询;4)排序:可以按学号、姓名、
6、VC+成绩、英语成绩、物理成绩、总成绩、平均成绩等进行排序并输出;5)删除:删除某条记录;6)帮助和关于;7)退出:推出整个系统的运行。8)一些时间富裕的学生可以增加更多的菜单项,比如设置颜色、字体风格等。二、系统分析(需求分析)1.需求分析:a.能对学生各科成绩进行录入。b.能显示各科成绩平均分。c.能显示总成绩和单科分最高的同学。d.能对删除学生信息。e.能对学生的成绩按姓名、学号进行查询。f.能按学号和成绩排序。g.能显示所有学生信息。2.系统性能要求:a.系统安全、可靠;b.功能齐全;c.操作方便、界面友好;d易于维护和扩充。3.系统的功能分析:资料维护:系统维护包括对学生信息的录入操
7、作及数据表中的信息进行浏览。系统功能:可以对数据表中的信息进行浏览。系统查询:可以对学生的信息进行查询。4.系统功能模块学生成绩查询系统有:成绩录入、删除,数据查询,排序显示构成。5.模块框架图学生成绩管理系统操作输入删除计算总成绩平均成绩单科平均成 绩查询学号姓名排序学号姓名单科成绩总分、平均分三、系统设计与实现1.界面设计程序运行后会出现一个简捷的窗口,便于用户查询数据。2.功能设计与实现通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。应用系统主控界面包括记录编辑和记录查询等功能模块。记录编辑功能完成学生成绩记录编辑和记录查询功能。记录查询功能可以对数据各分类的记录进行查询。四、
8、运行显示1初始页界面:2.输入学生信息界面:“请按照提示输入学生信息”是帮助和关于,其他同学的信息如该截图依照提示录入即可。录入完毕显示界面为:3.显示总成绩和各单科分最高的同学的界面为:4、删除学生的信息界面为:5. 按姓名查询:6. 按学号查询:7. 排序分系统:1)姓名排序:2)学号排序:3)VC+成绩排序:其他排序法与以上一样,此处不再一一显示。8. 显示所有学生信息:9. 保存文件:10退出系统:. 此外,界面的颜色与文字的颜色,也是可以改变的。system(color 97); /设置 背景 和 字体颜色 F是背景颜色的设置值 0是字体颜色的设置值(程序第764行)改变9和7的值即
9、改变颜色。五、总结此次c+课程设计,在指导教师的精心教导下,我们学会了如何用C+编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C+语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。六、参考资料C+
10、程序设计 谭浩强 清华大学出版社附录:源程序 #include#include #include#include#include#include using namespace std;class student private: char name20; /姓名 char sex8; /性别 char native8; /籍贯 double cpro; double english; double physical; double allscore; double average; /课程 int order; /名次 int number; /学号 public: student() st
11、udent(char* n,int nu,char* sex,char* native,double cc,double eng,double phy,double as,double av) strcpy(this-name,n); this-number=nu; strcpy(this-native,native); strcpy(this-sex,sex); this-cpro=cc; this-english=eng; this-physical=phy; this-allscore=as; this-average=av; double getcpro() return this-c
12、pro; double getenglish() return this-english; double getphysical() return this-physical; double getalls() return this-allscore; double getAverage() return this-average; char* getname() return this-name; int getnumber() return this-number; friend void ShowHightsrcore(); friend void ShowStuInfo(); fri
13、end void QueryByNumber(); friend void QueryByName(); friend void SaveFlie(); friend void InputStudentInfo();student s50; /指针对象,最多存50个学生数据int index = 0; void ShowMenu()cout*endl; cout* 学生成绩管理系统 *endl;cout*endl; cout 0、输入学生信息endl;cout 1、显示各单科成绩平均分endl;cout 2、显示总成绩和各单科分最高的同学endl;cout 3、删除学生的信息endl;cout
14、 4、按姓名查询 endl;cout 5、按学号查询 endl;cout 6、排序分系统endl;cout 7、显示所有学生信息endl;cout 8、保存文件endl;cout 9、退出系统endl;cout*endl;cout 选择0-9数字进行操作endl;cout*endl;void InputStudentInfo()char getkey = 0; /是否录入的选择标记char name20 = 0; /姓名 临时中间变量int number=0; /学号char sex8=0; /性别char native8=0; /籍贯double cpro = 0; /c语言成绩double
15、 english = 0; /英语成绩double physical = 0; /物理成绩double allscore = 0; /总成绩double average = 0; /平均成绩int core = 0; /名次cout请按照提示输入学生信息. . .endl;docoutendlnumber;bool IsOk;do bool IsOk = true;for(int n=0;nindex;n+)if(number=sn.number)cout输入的学号重复,请重新输入:number;IsOk = false;break;while(!IsOk); coutendlname;cou
16、tendlsex;coutendlnative;coutendlcpro;coutendlenglish;coutendlphysical;coutendl;allscore=cpro + english + physical;/计算该生的总成绩cout 总成绩:allscoreendl; /显示该生总成绩average= allscore / 3; /技术该生平均成绩 总成绩/科目数cout 平均成绩:averageendl;/显示该生平均成绩sindex= student(name, number,sex,native,cpro,english,physical,allscore,aver
17、age);coutgetkey;index+;while( getkey = y | getkey = Y );cout学生数据录入完毕,键入任意键返回主菜单。;getchar();getchar();void ShowAverage()if( index = 0 )cout 管理系统中没有输入数据!endl;coutendl键入任意键返回主菜单。endl;getchar();getchar();return;double cpro_ave = 0;double english_av = 0 ;double physical_ave = 0;for(int i=0;iindex;i+)cpro
18、_ave += si.getcpro();english_av += si.getenglish();physical_ave += si.getphysical();cout该班级各单科总平均分分别为:endlendl;coutVC+平均成绩为cpro_ave/index分endl;cout英语平均成绩为english_av/index分endl;cout物理平均成绩为physical_ave/index分endl;coutendl键入任意键返回主菜单。endl;getchar();getchar();void ShowStuInfo()cout 学号 姓名 c+ 英语 物理 总成绩 平均成
19、绩 endl;for(int i=0;iindex;i+) coutsi.numbersetw(7)si.namesetw(4)si.cprosetw(5)si.englishsetw(5)si.physicalsetw(6)si.allscoresetw(10)si.averageendl;void ShowHightsrcore()if( index = 0 )cout 管理系统中没有输入数据!endl;coutendl键入任意键返回主菜单。endl;getchar();getchar();return;double allscoretmp = 0; /用来存放总分最高的临时变量doubl
20、e cprotmp = 0; /用来存放 VC 最高的临时变量double englishtmp = 0; /用来存放英语最高的临时变量double physicaltmp = 0; /用来存放物理最高的临时变量int i;for(i=0;iindex;i+) /遍历存储学生信息的数组,找出 总分 VC 英语 物理的最高分allscoretmp = allscoretmp si.getalls() ? si.getalls() : allscoretmp;cprotmp = cprotmp si.getcpro() ? si.getcpro() :cprotmp;englishtmp = en
21、glishtmp si.getenglish() ? si.getenglish() :englishtmp;physicaltmp = physicaltmp si.getphysical() ? si.getphysical() : physicaltmp;cout总成绩最高的学生为:endl;cout学号 姓名 c+ 英语 物理 总成绩 平均成绩 endl;for(i=0;iindex;i+) /遍历数组,输出总分最高的学生信息if( allscoretmp = si.getalls()coutsi.numbersetw(7)si.namesetw(4)si.cprosetw(5)(si
22、).englishsetw(5)si.physicalsetw(6)si.allscoresetw(10)si.averageendl;coutVC成绩最高的学生为:endl;cout学号 姓名 c+ 英语 物理 总成绩 平均成绩 endl;for(i=0;iindex;i+) /遍历数组,输出总分最高的学生信息if( cprotmp = si.getcpro()coutsi.numbersetw(7)si.namesetw(4)si.cprosetw(5)(si).englishsetw(5)si.physicalsetw(6)si.allscoresetw(10)si.averageend
23、l;cout英语成绩最高的学生为:endl;cout学号 姓名 c+ 英语 物理 总成绩 平均成绩 endl;for(i=0;iindex;i+) /遍历数组,输出总分最高的学生信息if( englishtmp = si.getenglish()coutsi.numbersetw(7)si.namesetw(4)si.cprosetw(5)(si).englishsetw(5)si.physicalsetw(6)si.allscoresetw(10)si.averageendl;cout物理成绩最高的学生为:endl;cout姓名 学号 c+ 英语 物理 总成绩 平均成绩 endl;for(i
24、=0;iindex;i+) /遍历数组,输出总分最高的学生信息if( physicaltmp = si.getphysical() )coutsi.namesetw(7)si.numbersetw(4)si.cprosetw(5)(si).englishsetw(5)si.physicalsetw(6)si.allscoresetw(10)si.averageendl;coutendl键入任意键返回主菜单。endl;getchar();getchar();void Delete()if( index = 0 )cout 管理系统中没有输入数据!endl;coutendl键入任意键返回主菜单。e
25、ndl;getchar();getchar();return;while(1)bool Isfind = false;coutnametmp;for(int i=0;iindex;i+) if( strcmp( si.getname(),nametmp ) = 0 ) /在数组中找到要删除学生Isfind = true;for(int j=i;jindex;j+)sj=sj+1; /将删除的学生后的数据全部往前移一位index-;cout 删除成功!endl;if( !Isfind )/没有找到输入的学生的姓名cout没有找要删除的学生的信息,请查证后再试。 endl;coutgetkey;i
26、f( getkey !=y& getkey != Y)coutendl;break;/while(1)coutendl键入任意键返回主菜单。endl;getchar();getchar();void QueryByNumber()if( index = 0 )cout 管理系统中没有输入数据!endl;coutendl键入任意键返回主菜单。endl;getchar();getchar();return;char getkey;do bool IsFind = false;int numbertmp;coutnumbertmp;coutendl;for(int i=0;iindex;i+)if(
27、si.number=numbertmp)IsFind = true;cout 您要查询的学生是:(si).nameendl;cout(si).name的成绩是: C+:(si).cpro 英语:(si).english 物理:(si).physical总成绩:(si).allscore平均成绩:(si).averageendl;if( !IsFind )cout 对不起!您要查询的学生不存在!endl;coutgetkey;while( getkey =y| getkey = Y);coutendl键入任意键返回主菜单。endl;getchar();getchar();void QueryBy
28、Name()if( index = 0 )cout 管理系统中没有输入数据!endl;coutendl键入任意键返回主菜单。endl;getchar();getchar();return;char getkey;do bool IsFind = false;char nametmp20 = 0;coutnametmp;coutendl;for(int i=0;iindex;i+)if( strcmp( nametmp, si.getname() ) = 0 )IsFind = true;cout(si).name的成绩是: C+:(si).cpro 英语:(si).english 物理:(si
29、).physical总成绩:(si).allscore平均成绩:(si).averageendl;if( !IsFind )cout 对不起!您要查询的学生不存在!endl;coutgetkey;while( getkey =y| getkey = Y);coutendl键入任意键返回主菜单。endl;getchar();getchar();void ShowSortMenu()cout*endl;cout 请选择排序方式 endl;cout*endl;cout0.学生姓名endl;cout1.学生学号endl;cout2.VC+成绩endl;cout3.英语成绩endl;cout4.物理成绩
30、endl;cout5.总成绩endl; cout6.平均成绩endl;cout*0; i-)for(int j=0; j *(sj+1.getname() )temp=sj;sj=sj+1;sj+1=temp;cout*endl;cout 按姓名排序 endl;cout*0; i-)for(int j=0; j sj+1.getnumber()temp=sj;sj=sj+1;sj+1=temp;cout*endl;cout 按学号排序 endl;cout*0; i-)for(int j=0; j sj+1.getcpro()temp=sj;sj=sj+1;sj+1=temp;cout*endl;cout 按VC+成绩排序 endl;cout*0; i-)for(int j=0; j sj+1.getenglish()temp=sj;sj=sj+1;sj+1=temp;cout*endl;cout 按英语成绩排序 endl;cout*0; i-)for(int j=0; j sj+1.getphysical()
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100