学生成绩管理系统设计与实现22.docx
河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现程序代码docout«请输入姓名<<endl;信息输入过程cin>>name;cout<<“请输入学号"<<endl;cin>>number;cout«”请输入数学成绩“<<endl;cin>>math;cout<请输入 c+成绩<Xendl;cin>>cpp;cout<<”请输入英语成绩“<<endl;cin>>english;cout«”请输入数学平时成绩“<<endl;cin>>mathp;cout(请输入c+平时成绩<<endl;cin>>cppp;cout*"请输入英语平时成绩“<<endl;cin>>englishp;cout«"请输入成绩百分比“<<endl;cin>>baif;fstream outfile, infile;outfile. openC'f 1. txt, ios: :out | ios: :app) ;/翻开文件if(!file)cout<</zf 1. txt can not open. n,z;return ;)outf ile<<name<</z <<学号:/z<<number<<endl;7outf ile数学成绩:<setw(2) <<math<<setw(20)数学平时成绩:<<setw(2) <<mathp<<setw (20)数总成绩:/z<<setw(2) <<math*baif+mathp*(1-baif) <<endl;outf ile<外语成绩:<<setw(2) <<english<<setw(20)外语平时成绩:<setw(2) <<englishp«setw (20) <<外总成绩:z/<<setw(2) <<english*baif+englishp* (1-baif) <<endl;outf ilec+成绩:/z<<setw(2) <<cpp<<setw(20)c+平时成绩:/z<<setw(2) <<cppp<<setw(20) <<c 总成绩:,z«setw(2) <<cpp*baif+cppp* (1-baif) <<endl;outfile<总成绩:,z<<math*baif+mathp*(1-baif) +cpp*baif+cppp*(1-baif) +english*baif+e nglishp*(l-baif) <<endl;outfile. close();infile, open(f 1 txt, ios: : in);if(!file)(cout<</zf 1. txt can not open.n;return ;char ch;while (infile. get(ch)cout<<ch;cout<<endl;infile, close();j+;si=new Chengji(number, name, math, cpp, english, mathp,cppp, englishp, baif, mathz, cppz, engz);将数据录入文件i+;cout<”数据录入成功,想继续吗(y/n) “<<endl;cin>>c;chrisl=O;doif (c!='y'&&c!二'n') cout<<"指令错误!请重新输入!入Vendl;cin>>c;elsechrisl=l;while(chrisl=0);(2)增加功能与录入功能程序操作与代码大体相同参考录入功能。(3)删除功能用对文件的操作,判断所需删除的数据与数据库中的数据是否相同,利用 文件流操作删除对应数据。程序代码char c;string xingming, line, str, name;doifstream fin(f1.txt);fstream outfile (z/f2. txt, ios: : trunc | ios: :out) ; /仓建文件 2cout。请输入您要删除的学生的姓名:endl;cin>>xingming;while(!fin. eof ()执行判断并删除数据getline(fin, line);istringstream stream(line);name=line. substr(0, line, find( , 0);if (name!=xingming)outfile<<line<<endl;outf ile. close ();fin. close ();fstream f(fl. txt,ios:trunc|ios:out);ifstream outf (/zf2. txt);f<<outf. rdbuf ();outf. close ();f. close ();cout<<数据删除成功,想继续删除吗(y/n) endl;cin>>c;(4)修改功能参考录入功能,利用对文件的操作到达对数据的修改功能。(5)按姓名查询程序代码与按总分功能类似,区别在于这个功能中利用指针访问类中成员, 并进行判断。(6)输出所有数据通过翻开文件,对文件中的所有数据进行输出。程序代码cout« 所有学生数据如下:Oendl;ifstream file;file, open ("fl. txt", ios: in);以输入方式翻开文件cout«file. rdbuf ();以输出文件的所有数据file, close();(7)输出学生的平均分利用指针访问Chengji类中的成员,调用getaver ()函数求得平均分并执 行输出操作。程序代码10if (i=0) cout系统中没有输入数据,请先输入数据!endl;break;)for (int m=0;m<i;m+)cout« (*s m). name<<z,学号(*s m). num< 总分< (*s m). getsum () < 均分(*s m). getaver () <<endl;)(8)查询不及格人数调用get函数求得三科平均成绩,并统计不及格人数,并输出查询结果。程序代码if (i=0)(cout<<”系统中没有输入数据,请先输入数据! "<<endl;break;int m, n, k, j ;m=0;n=0;k=0;for (j=0;j<i;j+)if (sj->getshu()<60)m+;if (sj->getcpp()<60)n+;if (sj->geteng()<60)k+;)cout<<”数学不及格人数为:cout<<c+不及格人数为:n<endl;cout<英语不及格人数为:<kendl;11(9)总成绩排名通过for函数寻找最大值并进行交换,交换得最大值与最大值对应名 字。程序代码if (i=0)cout«系统中没有输入数据,请先输入数据!<endl;break;)int h, g, n;int j=0;float a100, temp;string k100, tempi;for(g=0;g<i;g+)aj = (*sg). getsumO ;kj = (*sg), name;j+;)for (h=O;h<i;h+)for (n=0;n<i-h;n+)if (an>an+l)(temp=an;交换得到最大值an=an+l;an+l=temp;templ=kn;交换名字kn=kn+l;12kn+l=templ;for(n=l;n<=i;n+) cout<<kn<<setw(5)<<an<<endl;(10)程序类的构造与继承基类class student和class kecheng用来封装学生的所有信息具体见代 码分析。派生类class chengji继承了两个类的所有数据,同时增加了自己的成 员,并添加了多个函数。Main ()用来实现所有的操作以及对程序的整体控制;定义文件输入流对象in和输出流对象out,定义文件输入流对象in和输出流对象out,实现对外部文件的操作,使得数据得以保存。程序代码 class Student public:Student(int n,char nu20) num=n;strcpy(name, nu);friend void main();protected: int num;学号 char name20;姓名 );声明学生类构造函数声明友元类声明课程类构造函数class Kechengpublic:13Kecheng (float ma, float cp,float eng) math=ma;cpp=cp;english=eng;)friend void main();声明友元protected:float math;数学float english;英语float cpp;/c+ ;class Chengji :public Student, public Kecheng声明成绩类public:Chengji (int n, string nam, float ma, float cp,float eng, float map, float cpp,float engp, float, bf, float mz, float cz, float ez): 构造函数Student (n,nam), Kecheng (ma, cp, eng), mathp(map), cppp(cpp), englishp (engp), baif (bf), mathz(mz), cppz(cz), englishz(ez) mathp=map;cppp二cpp;englishp=engp;baif=bf;mathz=mz;cppz=cz;englishz=ez;float getsum();综合函数14 float getshu() ;/数学最后成绩 float getcppO ;c 最后成绩 float getengO ;英语最后成绩 friend void main() ;/声明友元 float getaver ();平均值函数 protected:float mathp ;/数学平时成绩 float cppp;c+平时成绩float englishp;英语平时成绩 float baif;成绩百分比float mathz ;/数学总成绩 float cppz;c+总成绩 float englishz;英语总成绩);15第4章系统调试运行对已经编码完毕的程序进行调试运行,发现程序错误,更改错误。将代码进 一步优化,功能进一步完善。4.1系统运行总页面新建文件夹课程设计,并在文件夹中设立相应的工程,新建程序文件 命名为成绩,编写程序代码,并调试运行。系统调试运行输出主界面见图 4-1 oC:USERSINSPRIRONDESKTOPIVERSONwwDebugww.exe枳*1*0*1*迎来到 学生成绩查询 系 统杓*t*t*M*t*t*M=t= 请选择您需要的操作!一操作: 数据录入(2)增加学生删除学生修改数据查询:按总成绩查询(6)按姓名查询输出所有学生的数据 晟绩统并:每个学生的平均成绩 各科不及格人数 排名:(1。)按总分查询排名)退出选择相关操作请输入相对的括号里的阿拉伯数字及字母!图4-1系统主界面16题目学生成绩管理系统设计与实现考核工程考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、 基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答下列问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总评成绩指导教师评语:日期:4. 2录入功能需要输入学生的相关信息,并保存到fl.txt中,如图4-2C:USERSINSPRIRONDESKTOPIVERSONwwDebugww.exe.刖4亘(刖JI B tj病郭请成始成 学问语 数C-H英 IX 入 入 入 )0心刖 刖 俞 c 4JV 4Jr 国主肩LO主月LO主肩Lo4 一旦4亘 nHH HMHDp Dp X OMD 于 go O 1 11 1 O 1- 号号:1 学学号数学成绩:12 C+成绩:30 外语成绩:15数学成绩:10 C+成绩:10外语成绩:10数学成绩:20 C+成绩:10 外语成绩:20学石:100 数学成绩:10 C+成绩:10 外语成绩:10学号:1400数学成绩:10 C+成绩:10外语成绩:10数据录入成功,想继续录入吗(y/n)指令错误!请重新输入!n您想继续进行其他操作吗? (y/n) :nPress any key to continue0半:图4-2录入功能界面174. 3删除功能输入删除名字,程序自动寻找与名字相符数据并删除,如图4-3C:USERSINSPRIRONDESKTOPIVERSONwwDebugww.exe-?曼布封据录入增加学生删除学生(4)修改数据也询:按总成绩查询(6)按姓名查询输毋所有学生的数据械绩统并:每个学生的平均成绩各科不及格人数非名:(10)按总分查询排名(11)退出选择相关操作请输入相对的括号里的阿拉伯数字及字母! 3嵩俞入您要删除的学生的姓名:飘宣数据删除成功,想继续删除吗(y/n)F您想继续进行其他操作吗? (y/n) : nPress any key to continue-半:图4-3删除界面184. 4查询不及格人数调用get函数求三科平均成绩并统计不及格人数并输出查询结果。如图4-4C:USERSINSPRIRONDESKTOPIVERSONwwDebugww.exe'请选择您需要的操作!海据录入(2)增加学生删除学生修改数据查询:按总成绩查询按姓名查询(7)输生所有学生的数据前绩统并:每个学生的平均成绩各科不及格人数排名:(1。)按总分查询排名(11)退出选择相关操作请输入相对的括号里的阿拉伯数字及字母!数学不及格人数为:1不及格人数为:1英语不及格人数为:1您想继续进行其他操作吗? (y/n) :nPress any key to continue- 半:图4-4不及格人数界面19课程设计体会一个星期的课程设计,虽然有些疲劳和困倦,但给我带来很多的收获。C+ 已经学了一个学期了,有许多知识都存在似懂非懂的感觉,我觉得自己还需要花 更多的时间在C+上,才能更好的理解和掌握这门学科。这周我们在机房进行上 机操作,我花了三天时间来规划写代码,两天进行成果报告的设计,过程中我遇 到很多的问题,但是经过向老师请教,问题都一一解决。在今后的日子里,我会 更努力的学习,来充实自己在C+这方面的知识。20参考文献1谭浩强C+面向对象程序设计清华大学出版社2谭浩强C语言程序设计基础清华大学出版社3郑阿奇VisualC+实用教程电子工业出版社4郑莉4郑莉C+程序设计清华大学出版社5谭浩强C程序设计题解与上级指导(第三版)清华大学出版社21第1章课程设计目的、任务和内容要求11.1设计目的11. 2设计任务11. 3设计要求1第2章 系统实现思路22. 1需求分析22. 2系统性能要求22. 3系统的功能分析2第3章系统详细设计32.1 系统功能模块33. 2模块框架图33. 3系统的实现4第4章 系统调试运行164. 1系统运行总页面164. 2录入功能174. 3删除功能184. 4查询不及格人数19课程设计体会20参考文献21第1章 课程设计目的、任务和内容要求1.1 设计目的.使学生掌握C+编程的基本工作原理;1 .培养学生基本掌握C+应用编程的基本思路和方法;.使学生掌握C+应用调试的基本技能;2 .培养学生分析、解决问题的能力;.提高学生的科技论文写作能力。1. 2设计任务.进行需求分析和概要设计,给出流程图。1 .写出详细设计,熟悉其中采用的关键技术。2 .给出具体的编码实现并调试。3 .写课程设计报告提交源程序。1. 3设计要求.应具有简洁友好的用户界面。1 .要求软件系统的功能完善。2 .要求程序具备正确性,可读性和运行的高效性。第2章系统实现思路通过类的封装,将课程类的信息储存在学生类中,学生信息储存在班级类中, 程序的所有功能均通过班级类的成员函数实现。2.1 需求分析.能对学生各科成绩进行录入。1 .能对学生的成绩进行增加。2 .能对学生的成绩进行删除。3 .能对学生的成绩进行修改。4 .能对学生的成绩按总成绩,姓名,进行查询。5 .能输出学生的所有数据。6 .能进行成绩统计。7 .能进行总分查询排名。2. 2系统性能要求.系统平安、可靠;1 .功能齐全;.易于维护和扩充。2. 3系统的功能分析1 .资料维护:系统维护包括对学生信息的录入操作及数据表中的信息进行 浏览。2 .系统功能:可以对数据表中的信息进行浏览。3 .系统查询:可以对学生的信息进行查询。第3章系统详细设计3.1 系统功能模块学生成绩查询系统有:成绩录入、数据增加、修改、数据查询、排序显示构 成。3. 2模块框架图1 .程序中包含类和主函数,类构成了程序的数据管理与存放区。在主函数 中包括多种功能,以类为依托构成程序框架,在主函数中实现每一个功能。类与 功能共同构成程序框架。图3-1模块框架图2 .程序用到的头文件以及自己定义的函数(1)头文件#include<iostream>/输入输出流函数#include<fstream>#include<fstream>/文件操作函数#include<string>字符串函数#include<sstream> #include<iomanip>自己定义的函数float getsumO ;综合成绩float getshuO ;数学总评成绩 float getcppO ;c 总评成绩 float geteng();英语总评成绩 float getaver ();总平均成绩. 3系统的实现1.界面设计程序运行后会出现一个间接地窗口,便于用户查询数据。主函数用循环体以及switch语句实现功能选择。主界面展示请选择需要的操作!(1)数据录入(2)增加学生(3)删除学生(4)修改数据查询:(5)按总成绩查询(6)按姓名查询(7)输出所有学生的数据 成绩统计:(8)每个学生的平均成绩 (9)各个学科不及格人数 排名:(10)按总分查询排名(11)退出选择相关操作请输入相对的括号里的阿拉伯数字及字母!主程序代码主函数void main ()cout<*欢迎来到学生成绩查询系统*<<endl;/主 菜单cout<<”请选择需要的操作! "<(endl;cout<<,z (1)数据录入<<endl;cout«z,(2)增加学生<<endl;cout«/,(3)删除学生"<<endl;cout«z,(4)修改数据<<endl;cout查询:<<endl;cout«,z (5)按总成绩查询endl;cout<</z (6)按姓名查询<<endl;cout«,/ (7)输出所有学生的数据<<endl;cout<成绩统计:<endl;cout«/z (8)每个学生的平均成绩<endl;cout«,/ (9)各个学科不及格人数"<<endl;cout<<排名<<endl;cout<<z/ (10)按总分查询排名"<<endl;cout«z/ (11)退出<<endl;cout« 选择相关操作请输入相对的括号里的阿拉伯数字及字母! z/<<endl;int p=0;char w;Chengji *s100;ofstream *file100;int i=0;int j=0;int chrisl=0;float baif;主函数利用循环体执行,实现循环操作:5docin>>p;if(p>=l&&p<=ll) chrisl=l;elsecout<<“指令错误!请重新输入:"<<endl;while (chrisl=0);do(switch(p)录入功能case1: 增加功能删除功能case2: 修改数据功能按成绩查询功能case3: 按姓名查询功能case7:输出所有的数据case8: 输出学生的平均分/ /查询不及格人数case9: 总成绩排名while(w=' y');循环语句结束2.具体功能设计通过主窗体调用其他窗体,实现其他功能。(1)录入功能使用cin输入流输入学生的相关信息,并创立文件,将所输入的数据存入到文件中。