还剩23页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
河南工程学院《高级程序设计语言》课程设计成果报告学生成绩管理系统设计与实现friend void main;〃将主函数定义为友元函数,方便访问类中的成员;Tstu::Tstuchar n
[20],int num,float ma,float cj,float engstrcpyname,n;〃得到姓名number=nuni;〃得到学号math=ma;〃得到数学成cpp=cj;绩〃得到C++成绩〃得到英语english=eng;成绩}float Tstu::getsum〃得到总分的函数sum=cpp+english+math;return sum;float Tstu::getaver//得到平均分的函数average=getsum/3;return average;ase1:〃数据的录入char c;〃用于在小项中选择是否继续操作char name
[30];int number;float math,cpp,english;do{cout〈〈〃请输入姓名/z endl;〃输入姓名的操作cinname;〃输入学号的操作cout〈〃请输入学号:z/endl;cinnumber;〃输入成绩的操作cout〃请输入数学成绩〃〈endl;cinmath;cout〈〃请输入C++成绩〃〈endl;cincpp;cout〈”请输入英语成绩“endl;cinenglish;〃作一个文本文档在文fstream outfile,infile;件夹中用于显示所录入的数据outf ile.openz/f
1.txt〃,ios::out|ios::app;{cout z/fl.txt cannot open.\n zz;return;}outf ilename,,“学号:,,number/,数学成绩〃〃C++成绩:,,cpp//〃〈〈〃外语成绩〃〈〈englishendl;outfile.close;infile,open/z f
1.txt〃,ios::in;if!file〃判断文件是否打开{cout z/f
1.txt cannot open.\n z/;return;char ch;whileinfile,get chcoutch;coutendl;infile,close;j++;s[i]=new Tstuname,number,math,cpp,english;i++;cout数据录入成功,想继续录入吗y/n,,«endl;
3.3保存数据功能的设计保存数据主要是对数据的保密性,可持续性等进行完整的保存,以便以后程序在应用是能准确无误的调用所保存的数据fstream outfile,infile;〃作一个文本文档在文件夹中用于显示所录入的数据outf ile.open/f
1.txt〃,ios::out|ios::app;if!file{cout z/fl.txt cannot open.\n/z;return;}outf ilename,/学号:,,number/,数学成绩〃〃C++成绩:,,cpp//〃〈〈〃外语成绩〃〈〈englishendl;outfile.close;infile,open/z f
1.txt〃,ios::in;if!file〃判断文件是否打开{cout/z f
1.txt cannot open.\n〃;return;char ch;while infile,getch coutch;coutendl;infile,close;j++;s[i]=new Tstuname,number,math,cpp,english;i++;cout〈〃数据录入成功,想继续录入吗y/n,,endl;cinc;chrisl=0;do{if c!=,y c!二n{cout指令错误!请重新输入!,,«endl;cinc;else chrisl=l;}while chrisl-0;}while(c二二y);〃重复输入break;
3.4查询数据功能的设计查询功能主要分为两种
(1)按总分查询;
(2)按姓名查询
(1)按总分查询case5:〃按总分查询{int j=0;float SUM;char c;int flag;if(i=0)(cout〈〈〃系统中没有输入数据,请先输入数据!〃<〈endl;break;io doflag=0;cout«〃请输入您要查询的学生的总成绩〃endl;cin»SUM;ifs[j]-getsum==SUMflag=l;cout«〃您要查询的学生是:,z«*s[j].nameendl;cout〈〈”该生的信息为:,,«endl;cout«,/学号*s[j].number*”数学分数:c++分数:《*s[j].cpp〃英语分数z/*s[j].englishendl;for int j=0;ji;j++if flag==0cout〈〈〃对不起!您要查询的学生不存在!endl;cout〈”是否继续查?y/n:〃;cinc;if c!=,y c!=n{cout〈〈”指令错误!请重新输入!“〈endl;cinc;;}whilec==,y;break;112按照姓名查询case6:〃按姓名查询char n
[20];char c;int j=0;int flag;if i==0cout”系统中没有输入数据,请先输入数据!”〈endl;break;doflag=0;cout”请输入要查询的名字“endl;cinn;forint j=0;ji;j++ifstrcmp n,*s[j].name==0flag=l;cout〈〃您要查询的学生是:,,*s[j].nameendl;cout«〃该生的信息是:学号〃〈〈*s[j].number/z数学分数〃〈*s[j].math〈〈〃c++分数/z«*s[j].cpp〈〃英语分数〃〈〈*s[j].englishendl;}ifflag==0cout〃对不起您要查询的学生不存在,请查证后再输入!〃Xendl;12cout〈〃您想继续查询吗?y/n:〃;cinc;if c!=,y c!二ncout〈〃指令错误!请重新输入:,,«endl;cinc;}whilec二二y;break;}
3.5修改数据功能的设计case4:〃修改数据string sname,line,str,name;int nu;float eng,ma,com;int flag;char c;if i==0{cout”系统中没有输入数据,请先输入数据!“endl;break;}doflag=0;cout«〃请输入您要修改的学生的姓名〃;cinname;fstream fin〃fL txt〃,ios::in;ofstream outfile/z f.txt〃,ios::trunc|ios::out;coutendl;while!fin.eof〃在文件中查找13getline fin,line;istringstream streamline;sname=line.substrO,line.find,z〃,0;if name!=snameoutfilelineendl;else flag=l;}fin.close;ifflag=l{cout〃请输入修改学生姓名及其新学号,数学,C++和英语成绩:〃;cinnamenumacomeng;coutendl;outf ile«name/,学号”〈nu«〃数学成绩“〈”C++成绩外语成绩eng〈endl;outfile.close;fstream outf〃f
1.txt〃,ios::trunc|ios::out;fstream inf〃f.txt〃,ios::in;outfinf.rdbufendl;outf.close;inf.close;}if flag=0cout〈“对不起,您要修改的学生不存在!请杳证后输入!〃〈Vendl;cout«〃想继续修改吗y/n:;cinc;14coutendl;if c!=y c!=n,{cout«,,指令错误!请重新输入!endl”cinc;}}whilec==,y;break;}
3.6数据排列的设计{if i==0cout”系统中没有输入数据,请先输入数据!,,«endl;break;}int h,g,n;intj=0;float a
[100],temp;for g=0;gi;g++a[j]=*s[g].getsumQ;j++;}for h=O;hi;h++{for n=0;ni-h;n++ifa[n]a[n+l]temp=a[n];a[n]=a[n+l];a[n+l]=temp;}}for n=i;n=i;n++couta[n]endl;break;
153.7主函数的设计voidmaincout〈〈〃*****************欢迎来到学生成绩查询系统*****************〃〈〈endl;cout«〃请选择您需要的操作!〃《endl;〃菜单的输出cout〈〃操作,z«endl;cout«/,1数据录入“endl;cout,z2增加学生〃endl;cout,/3删除学生”〈endl;cout〈〈〃4修改数据〃〈endl;cout〈〃查询〃〈〈endl;cout,/5按总成绩查询〃endl;cout〈〈〃6按姓名查询〃〈〈endl;cout«,/7输出所有学生的数据〃endl;cout〈〈〃成绩统计:,,endl;cout«,,8每个学生的平均成绩〃〈endl;cout,/9各科不及格人数〃〈endl;cout〈〈〃排名〃〈endl;cout,/10按总分查询排名endl;cout〈〃11退出〃endl;cout«〃选择相关操作请输入相对的括号里的阿拉伯数字及字母!〃〈endl;16题目学生成绩管理系统设计与实现考核项目考核内容得分(30分)出勤情况、态度、效率;知识掌握情况、平时考核基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总评成绩指导教师评语:日期:第4章系统调试运行每一个case都能执行,但是有很多的地方都不够完善,例如在总成绩排序中,只能输出总成绩,不能单独的输出学生的相应的信息;每次进行别的操作之前都要在进行一次数据的录入,不能直接对原有的文件进行读取
4.1成绩的录入在程序运行的简捷窗口,选择自己所要查询的目的例如录入成绩,选择数字lo如图
4.Io护择相关操作请输入相对的括号里的阿拉伯数字及字母!,输△姓名:xiaoning倩输入学号请输入数学成绩89请输入C1成绩90苗输入英语成绩94xiaoning学号201300001数学成绩:89C成绩外语成绩94数据录入成功,想继续录入吗图
4.1成绩录入
4.2成绩的增加在程序运行的简捷窗口,选择自己所要查询的目的例如增加成绩选择数字2如图
4.2选择相关操作请输入相对的括号里的阿拉伯数字及字母!,输入您要增加的学生的姓名wanghong请输入你要增加的学生的学号201300002请输入数学成绩88请输入C—成绩78请输入英语成绩90xiaoning引导201300001数学成绩:89C—成绩夕卜语成绩94wanghong学号201300002数学成绩88C1成绩78外语成绩90数据录入成功,想继续录入吗〈y/Q图
4.2成绩增加
4.3删除17在程序运行的简捷窗口,选择自己所要查询的目的例如选择数字3,删除成绩如图
4.3选择相关操作请输入相对的括号里的阿拉伯数字及字母I请输入您要删除的学生的姓名uanghong数据删除成功,想继续删除吗〈y/n图
4.3成绩删除
4.4修改在程序运行的简捷窗口,选择自己所要查询的目的例如选择数字4,修改成绩,如图
4.4选择相关操作请输入相对的括号里的阿拉伯数字及字母!请输入您要修改的学生的姓名Liaoning请输入修改学生姓名及其新学号,数学,C++和英语成绩201300001929094图
4.4成绩修改
4.5查询在程序运行的简捷窗口,选择自己所要查询的目的例如选择数字6,查询总成绩如图
4.5请输入要查询的名字;lining您妻善询的学生是lining读生的宿息是:学号201300001数学分数:92c♦♦分数90英语分数94您想继续查询吗图
4.5成绩查询
4.6排序显示在程序运行的简捷窗口,选择自己所要查询的目的例如选择数字io,用总成绩排序,如图
4.618遒迺择您需要的操作!榛作:、3)数据录入〈2)增加学生3)删除学生4〉修筱数据*询5)隹总成绩查询6〉;安姓名查询《7瀚出所有军生的数据成缄统计《8淘个学生的平均成绩9)各科不及格人数排名30〉按总分查询排名11〉退出选择相关操作请输入相对的括号里的阿拉伯数字及字母!10256267图
4.6排序总成绩
4.7退出程序在程序运行的简捷窗口,选择自己所要查询的目的例如选择数字11,退出程序!如图
4.7o选择相关操作请输入相对的括号里的阿拉伯数字及字母!11您想继续进行其他操作吗儿〉5Pi*ess anykey tocontinue图
4.7退出程序19课程设计体会实践是检验真理的唯一标准,实践能积累我们的经验,找到我们的不足,更好的掌握我们所要学习的东西这次的C++教学实践活动,使我学到了很多的知识,弥补了我的很多漏洞通过这次实践活动使我认识到C++和C语言的不同,C语言是基本的语言,而C++是C语言的超集通过C++的学习有利于开发自己的逻辑思维能力,培养自己的分析问题、解决问题的能力希望以后能多进行这样的实训,加长时间,培养学生独立思考问题的能力,提高实际操作水平20参考文献
[1]谭浩强《C++面向对象程序设计》清华大学出版社
[2]谭浩强《C++面向对象程序设计题解与上机指导》清华大学出版社
[3]谭浩强《C语言程序设计》清华大学出版社
[4]Y.Daniel Liang.《C++语言程序设计基础篇》机械工业出版社
[5]Kathy Sierra.《Head FirstC++》东南大学出版社
1.1课程设计目的《C++程序设计》不仅具有很强的理论性,更是一门实践性非常强的课程,其实践教学环节的效果直接影响着理论教学的效果本课程注重边学边练,但由于课堂教学和实验的深度与广度有限,练习的深度也受到了一定的限度为了弥补这一点,而设置了《C++程序设计》实践教学的方案,主要以教学实习的方式对学生进行综合训练,培养实际分析问题、编程和动手能力,通过教学实习,帮助学生系统地掌握面向对象程序设计方法及各种编辑技巧,努力成为自由驾驭程序设计语言的软件编程能手
1.2课程设计内容
1.设计四个类学生类(描述学生基本信息);成绩类;班级类;课程类(描述课程信息,课程编号,科目名称(如高等数学,大学英语等))学生成绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入
2.能按学期,按班级完成对学生成绩的录入,修改,能按班级统计学生的成绩;求学生的总分及平均分;并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单-设置学生的成绩信息学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比;-计算学生总评成绩总评成绩:平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比);-显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息分单人显示和以班输出(班成绩单格式输出到文件);-注意,至少一个班,30人三门课第2章系统实现思路
2.1问题的需求分析
1.能对学生各科成绩进行录入
2.能对学生的成绩进行增加
3.能对学生的成绩进行删除
4.能对学生的成绩进行修改
5.能对学生的成绩按总成绩,姓名,进行查询
6.能输出学生的所有数据
7.能进行成绩统计
8.能进行总分查询排名
2.2系统性能要求
1.系统安全、可靠;
2.功能齐全;
3.操作方便、界面友好;4易于维护和扩充
2.3系统功能模块学生成绩查询系统有成绩录入、增加、删除、修改,数据查询,排序显示构成
2.4模块框架图根据学生的基本信息,借助C++有的优势特点,我们做出了以下的模版图块,便于理解和设计运用.学生成绩管理系统操作成绩按总成统计绩排名录增删修每个数科入加除改学生及人的平均成各绩不格图27模版框架图第3章系统详细设计
3.1有关类的设计从题中要求可知,要设计四个类
(1)成绩类大体上分为三类数学、英语、C++;但是每一类又可分为三个小的部分平时成绩、期末成绩和总评成绩因此,我这样来定义这样的成绩类class grade{Public:Double math
[3];Double English
[3];Double c++
[3];};
(2)班级类对于班级类,主要是学生成绩的划分;按照班级划分和按照学期划分所以,班级类中就有两个成员year和class classClass{Public:Int year;Int class;};
(3)分数类对于分数类,主要是针对对象一一学生,因此分数类是从grade和class公共派生类,在分数类中,还要统计三个科目的成绩,所以就把统计函数写在了这里面Class scorejpublicgrate,public classPublic:Char name
[30];Char number
[30];Double sum;Double average;Double mh{Return math
[0]*math
[3]+math
[1]*l-math
[2];}Double egReturn English
[0]*rnglish
[3]+English[l]*1-english
[2];}Double cReturn c++
[0]*c++
[3]+c++
[1]*l-c++
[2];};4学生类对于学生类,就比较复杂了,首先要定义学生的数组来表示学生在哪学年,班级等,接下来要写函数了,析构函数,保存函数,查找函数,排序函数,修改函数等等Class student{Private:Score stu
[2]
[2][m];〃学生数组static int sizel,size2,size3,size4;intsi,s2,s3,s4;〃定义数据public:Student{sl=0;s2=0;s3=0;s4=0;}〃构造函数Student{}〃析构函数void add;〃添加函数void search;〃查找函数void list;〃名单函数void change;〃修改函数void sortl;〃排序函数void sort2;〃排序函数void save;〃保存函数void output;〃读取函数;int Student::sizel=0;int Student::size2=0;int Student::size3=0;int Student::size4=0;
3.2输入数据功能的设计输入函数主要是输入要存入的学生信息姓名,学生的各科成绩等,由于要输入大量的数据,所以我就用数组来定义一班三十个人的姓名,这样就可以直接的输入,以便在之后的程序中用到录入的时候,我用到了一个类,其中的各科成绩都有分别的输入,从而保证了程序的条理清晰,不给人那么凌乱感class Tstu〃通过定义一个类来定义数据录入的函数char name
[30];〃定义一个学生姓名的数组int number;float math,cpp,english,average,sum;//定义三科的科目,平口寸成绩总评成绩public:Tstu{;Tstuchar n
[30],int num,float ma,float cj,float eng;float getsumO;〃得到总分的函数float getaver;〃得到平均分的函数。