1、c+学生成绩管理系统课设报告含程序和截图C+程序设计 课程设计报告设计题目:学生成绩管理系统一、设计任务与要求31.设计容32.课程设计的要求3二、系统分析(需求分析)31.需求分析32.系统性能要求33.系统的功能分析34.系统功能模块35.模块框架图3三、系统设计与实现41.界面设计42.功能设计与实现4四、运行显示4五、总结11六、参考资料11附录:源程序11一、设计任务与要求1.目的: 通过一个实际的系统开发,提高学生应用所学知识分析问题,解决问题和实际动手的能力,更加熟练的掌握C+程序开发的基本方法和基本步骤,对系统开发时间又进一步体会。从而综合复习C+程序设计语言的所有知识点,进一
2、步熟练面向对象程序的开发方法和流程,提高学生独立分析问题和解决问题的能力。真正理解书本知识,牢固掌握课堂教学容。为毕业设计及毕业后从事专业技术工作打下基础,提高学生全面素质。2.课程设计的要求:(1) 要求用VC+语言来实现一个简单的学生数据管理系统,该系统完成后基本上要能够无错运行,能达到学生成绩管理系统的基本要求。(2) 各个功能分别是用函数来完成,函数存放在一个.cpp文件中。(3) 准备系统运行的模拟数据不得少于十条。(4) 成绩管理系统至少具有以下功能: 1)输入:学生的基本信息,包括学号、姓名、性别、籍贯、VC+成绩、英语成绩、物理成绩等;2)计算:每个学生的总成绩、平均成绩所有学
3、生单科的平均成绩,找出总成绩和单科成绩最高的学生并输出;3)查询:可以按学好姓名等进行查询;4)排序:可以按学号、姓名、VC+成绩、英语成绩、物理成绩、总成绩、平均成绩等进行排序并输出;5)删除:删除某条记录;6)帮助和关于;7)退出:推出整个系统的运行。8)一些时间富裕的学生可以增加更多的菜单项,比如设置颜色、字体风格等。二、系统分析(需求分析)1.需求分析:a.能对学生各科成绩进行录入。b.能显示各科成绩平均分。c.能显示总成绩和单科分最高的同学。d.能对删除学生信息。e.能对学生的成绩按姓名、学号进行查询。f.能按学号和成绩排序。g.能显示所有学生信息。2.系统性能要求:a.系统安全、可
4、靠;b.功能齐全;c.操作方便、界面友好;d易于维护和扩充。3.系统的功能分析:资料维护:系统维护包括对学生信息的录入操作及数据表中的信息进行浏览。系统功能:可以对数据表中的信息进行浏览。系统查询:可以对学生的信息进行查询。4.系统功能模块学生成绩查询系统有:成绩录入、删除,数据查询,排序显示构成。5.模块框架图三、系统设计与实现1.界面设计程序运行后会出现一个简捷的窗口,便于用户查询数据。2.功能设计与实现通过主窗体调用其他窗体,具体实现可以参照系统分析相关容。应用系统主控界面包括记录编辑和记录查询等功能模块。记录编辑功能完成学生成绩记录编辑和记录查询功能。记录查询功能可以对数据各分类的记录
5、进行查询。四、运行显示1初始页界面:2.输入学生信息界面:“请按照提示输入学生信息”是帮助和关于,其他同学的信息如该截图依照提示录入即可。录入完毕显示界面为:3.显示总成绩和各单科分最高的同学的界面为:4、删除学生的信息界面为:5. 按姓名查询:6. 按学号查询:7. 排序分系统:1)姓名排序:2)学号排序:3)VC+成绩排序:其他排序法与以上一样,此处不再一一显示。8. 显示所有学生信息:9. 保存文件:10退出系统:. 此外,界面的颜色与文字的颜色,也是可以改变的。 system(color 97); /设置 背景 和 字体颜色 F是背景颜色的设置值 0是字体颜色的设置值(程序第764行)
6、改变9和7的值即改变颜色。五、总结此次c+课程设计,在指导教师的精心教导下,我们学会了如何用C+编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C+语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
7、六、参考资料C+程序设计 谭浩强 清华大学出版社附录:源程序 #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: stud
8、ent() student(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() retur
9、n this-cpro; 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 ShowStuInf
10、o(); friend 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、删除学
11、生的信息endl; cout 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; /籍贯 d
12、ouble cpro = 0; /c语言成绩 double english = 0; /英语成绩 double physical = 0; /物理成绩 double allscore = 0; /总成绩 double average = 0; /平均成绩 int core = 0; /名次 cout请按照提示输入学生信息. . .endl; do coutendlnumber; bool IsOk; do bool IsOk = true; for(int n=0;nindex;n+) if(number=sn.number) cout输入的学号重复,请重新输入:number; IsOk =
13、false; break; while(!IsOk); coutendlname; coutendlsex; coutendlnative; coutendlcpro; coutendlenglish; coutendlphysical; coutendl; allscore=cpro + english + physical;/计算该生的总成绩 cout 总成绩:allscoreendl; /显示该生总成绩 average= allscore / 3; /技术该生平均成绩 总成绩/科目数 cout 平均成绩:averageendl;/显示该生平均成绩 sindex= student(name
14、, number,sex,native,cpro,english,physical,allscore,average); 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; doub
15、le english_av = 0 ; double physical_ave = 0; for(int i=0;iindex;i+) cpro_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键入
16、任意键返回主菜单。endl; getchar(); getchar();void ShowStuInfo() cout 学号 姓名 c+ 英语 物理 总成绩 平均成绩 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; cout
17、endl键入任意键返回主菜单。endl; getchar(); getchar(); return; double allscoretmp = 0; /用来存放总分最高的临时变量 double cprotmp = 0; /用来存放 VC 最高的临时变量 double englishtmp = 0; /用来存放英语最高的临时变量 double physicaltmp = 0; /用来存放物理最高的临时变量 int i; for(i=0;iindex;i+) /遍历存储学生信息的数组,找出 总分 VC 英语 物理的最高分 allscoretmp = allscoretmp si.getalls()
18、 ? si.getalls() : allscoretmp; cprotmp = cprotmp si.getcpro() ? si.getcpro() :cprotmp; englishtmp = englishtmp si.getenglish() ? si.getenglish() :englishtmp; physicaltmp = physicaltmp si.getphysical() ? si.getphysical() : physicaltmp; cout总成绩最高的学生为:endl; cout学号 姓名 c+ 英语 物理 总成绩 平均成绩 endl; for(i=0;iin
19、dex;i+) /遍历数组,输出总分最高的学生信息 if( allscoretmp = si.getalls() coutsi.numbersetw(7)si.namesetw(4) si.cprosetw(5)(si).englishsetw(5)si.physicalsetw(6) si.allscoresetw(10)si.averageendl; coutVC成绩最高的学生为:endl; cout学号 姓名 c+ 英语 物理 总成绩 平均成绩 endl; for(i=0;iindex;i+) /遍历数组,输出总分最高的学生信息 if( cprotmp = si.getcpro() co
20、utsi.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=0;iindex;i+) /遍历数组,输出总分最高的学生信息 if( englishtmp = si.getenglish() coutsi.numbersetw(7)si.namesetw(4) si.cprosetw(5)(si).e
21、nglishsetw(5)si.physicalsetw(6) si.allscoresetw(10)si.averageendl; cout物理成绩最高的学生为:endl; cout姓名 学号 c+ 英语 物理 总成绩 平均成绩 endl; for(i=0;iindex;i+) /遍历数组,输出总分最高的学生信息 if( physicaltmp = si.getphysical() ) coutsi.namesetw(7)si.numbersetw(4) si.cprosetw(5)(si).englishsetw(5)si.physicalsetw(6) si.allscoresetw(1
22、0)si.averageendl; coutendl键入任意键返回主菜单。endl; getchar(); getchar(); void Delete() if( index = 0 ) cout 管理系统中没有输入数据!endl; coutendl键入任意键返回主菜单。endl; getchar(); getchar(); return; while(1) bool Isfind = false; coutnametmp; for(int i=0;iindex;i+) if( strcmp( si.getname(),nametmp ) = 0 ) /在数组中找到要删除学生 Isfind
23、= true; for(int j=i;jindex;j+) sj=sj+1; /将删除的学生后的数据全部往前移一位 index-; cout 删除成功!endl; if( !Isfind )/没有找到输入的学生的姓名 cout没有找要删除的学生的信息,请查证后再试。 endl; coutgetkey; if( 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(si.number=numbertmp) IsFind = true; cout 您要查询的学生是:(si).nameendl; cout(si).name的成绩是: C+:(si).c
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1