还剩27页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
河南工程学院《高级程序设计语言》课程设计成果报告学生成绩管理系统设计与实现ifP=1P=11chrisl=l;else cout〈指令错误!请重新输入endl;}
2.学生信息录入函数提供学生的信息录入功能while chrisl==O;do{switchp{case1:〃数据的录入{char c;〃用于在小项中选择是否继续操作char name
[30];int number;float math,cpp,english;do{cout〈〃请输入姓名〃endl;cinname;cout〈〃请输入学号:/z endl;cinnumber;cout〈”请输入数学成绩“endl;cinmath;cout〈〈〃请输入C++成绩〃〈endl;cincpp;cout〈〈”请输入英语成绩〃endl;cinenglish;fstream outfile,infile;〃作一个文本文档在文件夹中用于显示所录入的数据outfile.open,z f
1.txt〃,ios::out ios::app;if!file{cout/z f
1.txt cannot open.\n z/;return;}outf ilenamezz〃〈〈〃学号〃nuniber〃〃〈〃数学成绩〃〈”C++成绩外语成绩english〈endl;outf ile.close;infile,open〃f1・txt〃,ios::in;if!file〃判断文件是否打开{cout z,f
1.txt cannot open.\n,z;return;}char ch;whileinfile,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;}whilechrisl==O;}whilec==y;〃重复输入break;}
3.学生信息增加函数提供学生信息的增加功能case2:〃增加学生数据char name
[30];int number;float math,cpp,english;char c;docout«〃请输入您要增加的学生的姓名〃《endl;cinname;cout〈〃请输入你要增加的学生的学号:,,«endl;cinnumber;cout«〃请输入数学成绩〃endl;cinmath;cout〈〃请输入C++成绩〃endl;cincpp;cout〈”请输入英语成绩endl;cinenglish;fstream outfile,infile;outfile.open z,f
1.txt〃,ios::out|ios::app;cout z/f
1.txt cannot open.\n/z;return;outfilename,/学号number〈〃数学成绩:〃niath〃〃〃C++成绩〃〈cpp«〃〃〈〃外语成绩:〃Xenglishendl;outfile.close;infile,open zz f
1.txt〃,ios::in;if!filecout/z fl.txt cannot open.\n/z;return;char h;while infile,get hcouth;coutendl;infile,close;j++;s[i]=new Tstuname,number,math,cpp,english;i++;cout〈数据录入成功,想继续录入吗y/n,,«endl;cinc;if c!=y c!二n{cout〃指令错误!请重新输入!〃endl;cinc;10}whilec==,y;break;}
4.学生信息删除函数提供学生信息的删除功能case3:〃删除学生信息char c;string xingming,line,str,name;do{ifstream fin〃f
1.txt〃;fstream outfile/zf
2.txt,ios::trunc|ios::out;//作一个文本文档在文件夹中用于显示所录入的数据cout«〃请输入您要删除的学生的姓名〃《endl;cinxingming;while!fin.eof{getline fin,line;istringstream streamline;name=line.substr0,line.find/z〃,0;〃找到名字,判断是否相等if name!=xingming outfilelineendl;outfile.close;fin.close;11fstream f〃fl.txt〃,ios::trunc|ios::out;ifstream outf〃f
2.txt〃;f«outf.rdbuf;outf.close;f.close;cout«〃数据删除成功,想继续删除吗y/n z/endl;cinc;if c!=,y c!=,n,{cout〈〈”指令错误!请重新输入!〃endl;cinc;}}whilec==,y;break;}
5.学生信息修改函数提供学生信息的修改功能case4:〃修改数据string sname,line,str,name;int nu;float eng,ma,com;int flag;char c;if i==0cout«〃系统中没有输入数据,请先输入数据!/z endl;break;}do12flag=O;cout«〃请输入您要修改的学生的姓名〃;cinname;fstream fin〃f
1.txt〃,ios::in;ofstream outfile〃f.txt〃,ios::trunc|ios::out;coutendl;while!fin.eof//在文件中查找{getline fin,line;istringstream streamline;sname二line.substr0,line.find z/〃,0;if name!二sname outfilelineendl;}else flag=l;}fin.closeO;ifflag=lcout〃请输入修改学生姓名及其新学号,数学,C++和英语成绩:〃;cinnamenumacomeng;coutendl;outf ilename,/学号数学成绩:〈〈C++成绩:外语成绩:eng«endl;outfile.close;fstream outf〃fl.txt〃,ios::trunc|ios::out;fstream inf〃f.txt〃,ios::in;13outfinf.rdbufendl;outf.close;inf.close;}if flag=0cout〈〃对不起,您要修改的学生不存在!请查证后输入!〃*endl;cout想继续修改吗y/n:;cinc;coutendl;if c!=,y c!二ncout«,指令错误!请重新输入!endl”〃■cinc;}}whilec==y;break;
6.总成绩查询提供学生总成绩的查询功能case5:〃按总成绩查询int j=0;float SUM;char c;int flag;if i==0cout〈〃系统中没有输入数据,请先输入数据!,,endl;break;do14flag=O;cout〃请输入您要查询的学生的总成绩〃endl;cin»SUM;forint j=0;ji;j++{if s[j]-getsum==SUM{flag=l;cout«〃您要查询的学生是*s[j].nameendl;cout«”该生的信息为:,,endl;cout z/学号*s[j].number/z数学分数:math〈c++分数:〈*s[j].cpp”英语分数〃〈*s[j].englishendl;}}if flag==0cout〈〃对不起!您要查询的学生不存在!〃〈〈endl;cout”是否继续查?y/n:;cinc;if c!=y c!=’ncout指令错误!请重新输入!endl;cinc;};}whilec==,y;break;
157.按姓名查询提供学生按姓名方式查询功能case6:〃按姓名查询char n
[30];char c;int j=0;int flag;if i==0{cout«〃系统中没有输入数据,请先输入数据!/z endl;break;}do{flag=0;cout〃请输入要查询的名字endl;cinn;forint j=0;ji;j++ifstrcmpn,*s[j].name==0{flag=l;cout«〃您要查询的学生是〃〈〈*s[j].nameendl;cout«〃该生的信息是学号〃*s[j].number«z,数学分数〃〈〈*s[j].math〈〈〃c++分数:*s[j].cpp〈〃英语分数z,«*s[j].englishendl;}}if flag==016题目学生成绩管理系统设计与实现考核项目考核内容得分(30分)出勤情况、态度、效率;知识掌握情况、平时考核基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总评成绩指导教师评语:日期:cout«〃对不起您要查询的学生不存在,请查证后再输入!endl;cout”您想继续查询吗?y/n:;cin»c;if c!=y c!=n,cout指令错误!请重新输入〃〈endl;cinc;}}whilec==y;break;
8.输出所有学生的成绩提供输出所有学生的成绩的功能case7:〃输出所有学生数据]cout《”所有学生数据如下:,z endl;ifstream file;file,open〃fl.txt,ios::in;coutfile.rdbuf;file,close;break;
9.学生的平均成绩输出所有学生的平均成绩case8:〃统计每个学生的平均成绩{if i==017cout«〃系统中没有输入数据,请先输入数据!z,endl;break;for int m=0;mi;m++cout*s[m].name/z学号:zz*s[m].number,z总分:〃*s[m].getsum〈〈〃均分:,z«*s[m].getaverendl;}break;}
10.各学科不及格人数提供不及格学生人数case9:〃统计各学科不及格人数if i=0cout〈〃系统中没有输入数据,请先输入数据!z,endl;break;}intm,n,k,j;m=0;n=0;k=0;forj=0;ji;j++{ifs[j]-math60m++;if s[j]-cpp60n++;if s[j]-english60k++;}cout“数学不及格人数为:,,mendl;cout〈〈〃c++不及格人数为z/nendl;18cout〈〃英语不及格人数为:z/kendl;break;
11.总成绩排名提供总成绩的排名情况case10:〃按总成绩排名if i==0cout«〃系统中没有输入数据,请先输入数据!z/endl;break;}int h,g,n;int j=0;float a
[100],temp;for g=0;gi;g++{a[j]=*s[g].getsumO;j++;}for h=O;hi;h++{for n=0;ni-h;n++if a[n]a[n+l]temp=a[n];a[n]=a[n+l];a[n+l]=temp;}for n=l;n=i;n++couta[n]endl;break;19第5章系统调试运行
5.1程序调试界面
1.登陆界面系统登录界面样式图5-1系统登录界面
2.数据录入数据的录入界面样式图5-2学生登录界面
203.增加学生增加学生的界面样式%」:\C++程序设计葛飞\Debug\hr.exe100请输入C++成绩100请输入英语成绩100葛飞学号门数学成绩100J♦成绩00外语成绩100数据录入成功,想继续录入吗(y/Q y麟姓名请皤入学号:02请输入数学成绩100请输入C1成绩100请输入英语成绩100学加数重感雷普c♦♦成警00外鹦室兽李帅景学号2数学成绩C1成绩n00外语成绩100数据录入成功,想继续录入吗4)半图5-3增加学生界面
4.删除学生删除学生界面样式I」:\C++的设计葛飞\Debug\hr.exe请选择您需要的操作!’—‘喋件
3、1)数据录入〈2)增疝李生〈3〉丽J除聿生4)修改数据查询567)输出窃有学生的数据;蟾德麹瑞成绩腓名:3〉揩总分查询排名11)退出选择相关操作请输入相对的括号里的阿拉伯数字及字母!3辘A您要删除的学生的姓名嘉髓除成功,想继续删除吗(y/Q半图5-4删除学生界面21课程设计体会从此次课程设计中,我深刻体会到了自己理论上的不足与实践能力的缺乏,但同时我也体会到了过程的艰辛与成功的喜悦虽然这个系统没有达到目标,但这毕竟是我的心血,我将永远留住这份珍贵的回忆在这次实践中,我的逻辑思维能力和程序编写能力都获得了大幅度提高我一定会把这次的实践经验充分的在以后的学习工作中运用,努力解决问题,相信自己22参考文献⑴谭浩强著,《C++语言设计题解与上机指导》,清华大学出版社⑵谭浩强著,《C++面向对象程序设计》,清华大学出版社
[3]Decoder著,《C/C++程序设计》,中国铁道出版社⑷LeenAmmeraal著,《C++程序设计教程(第三版)》,中国铁道出版社
46.2详细设计第5章系统调试运行
205.1程序调试界面
207.2系统运行总结错误!未定义书签课程设计体会参考文献2223第1章系统设计目的
1.1课程设计目的
1.对C++语法,基础知识和编程技巧进行综合运用,编写具有一定综合应用价值的稍大一些的程序
2.培养学生的分析和解决实际问题的能力
3.培养学生的逻辑思维能力,编程能力和程序调试能力以及工程项目分析和管理能力
4.掌握书写程序设计开发文档的能力
1.2课程设计任务
(1)设计四个类,包括学生类(描述学生基本信息);成绩类班级类;课程类(描述课程信息课程编号,科目名称,如高等数学,大学英语等);
(2)学生成绩及课程信息用文件保存,程序执行时从文件读入;
(3)能按学期,按班级完成对学生成绩的录入、修改,能按班级统计学生的成绩;
(4)求学生的总分及平均分,并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单-设置学生的成绩信息学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比-计算学生总评成绩总评成绩:平时成绩*平时成绩所占百分比+期末成绩*(卜平时成绩所占百分比)-显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息分单人显示和以班输出(班成绩单格式输出到文件)-注意,至少应包含一个班、30人、三门课第2章系统需求分析设计程序前应分析用户的需求,从而更好的符合用户的功能需要,故应先进行各个方面的分析及系统模块的功能设置
2.1需求分析此次的学生成绩管理系统是生活中比较常用的系统,可以帮助教师更便捷的整理学生及班级的成绩、查看自己的教学质量效果要先设计一个程序,那么,就要首先了解程序使用者的需求所以要先对系统进行需求分析
1.学生信息录入功能用户从键盘输入每个学生的信息学号、姓名、数学成绩、C++成绩、英语成绩
2.学生成绩查询功能用户可以按学号或者姓名查询学生的信息
3.学生成绩输出功能用户可以通过这个功能实现对所有学生成绩的浏览
4.学生信息修改功能用户可以对学生的信息进行修改
5.学生信息删除功能用户可删除学生的成绩信息
6.学生成绩的排序功能用户可以对学生成绩排序
2.3系统功能模块此次设计的系统的主要功能就是对各个学生的各个学科成绩进行录入、修改、删除以及求平均分、求总分等操作在班级为单位的操作中,可以查询学生在班级的排名,以及班级的各个学科的不及格人数、以便对教学质量的评估故系统模块包括
1.主程序模块本程序各个模块功能均用函数实现,主程序主要用来实现数据的初始化,定义变量,调用函数等,实现对程序的整体控制
2.信息录入模块录入学生的成绩信息
3.信息查询模块输入学号,姓名,查询学生哥们课程的成绩及总成绩
4.信息删除模块通过学号直接删除该学生的成绩信息
5.信息修改模块修改学生成绩信息
6.信息排序模块根据成绩高低排序第3章系统实现思路通过类的封装,将课程类的信息储存在学生类中,学生信息储存在班级类中,程序的所有功能均能通过班级类的成员函数实现
6.1系统设计与实现通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容应用系统主控界面包括记录编辑和记录查询等功能模块记录编辑功能完成学生成绩记录编辑和记录查询功能记录查询功能可以对数据各分类的记录进行查询
3.2系统管理对系统进行检测与维护,保证系统的安全运行,使登陆者有一个安全登录环境
1.资料维护系统维护包括对学生姓名、成绩、学号的录入操作,对数据表中的信息进行浏览
2.成绩查询可以对学生成绩进行详细查询及各科成绩的优秀和不及格人数、各科总平均成绩等相关信息的浏览
3.排序显示包括统计学生排名成绩、不及格科目情况、各科总平均成绩查询者能够快速查询到自己想要的结果,帮助登陆者解决想要询问的问题
4.成绩的输入(学号、姓名、英语、数学、C++语言)
5.成绩统计(各科平均成绩、各科成绩“优秀”“良好”“中等”“及格”“不及格”的人数及其所占比例)
6.总成绩统计(学生的总成绩、平均成绩及成绩排名)
7.成绩的统计显示
8.学生数据的添加、修改、与删除
9.学生数据的读取与存储第4章系统详细设计
4.1主要程序流程图程序应有其各个流程的步骤,简化为图的模式更加清晰,明了更有利于理解系统的设计过程「学生成绩管理I系统J1成绩「总按统计绩成、___/批名图47程序流程图
4.2详细设计
1.主函数程序的头文件,为程序的主干部分#includeiostream#includestring#includefstream#includesstream#includeiomanip usingnamespace std;class Tstu//通过定义一个类来定义数据录入的函数char name
[30];int number;/_______________1float math,cpp,english,average,sum;public:Tstu{};Tstuchar n
[30],int num,float ma,float cj,float eng;float getsumO;〃得到总分的函数float getaver;//得到平均分的函数friend void main;〃将主函数定义为友元函数,方便访问类中的成员;Tstu::Tstuchar n
[30],int num,float ma,float cj,float engstrcpy name,n;〃得到姓名number=num;//得到学号math=ma;〃得到数学成绩cpp=cj;〃得到C++成绩english=eng;〃得到英语成绩}float Tstu::getsumO〃得到总分的函数|sum=cpp+english+math;return sum;}float Tstu::getaver//得到平均分的函数|average=getsum/3;return average;}voidmaincout〈〃*****************欢迎来到学生成绩查询系统*****************〃〈endl;cout〈请选择您需要的操作!《endl;〃菜单的输出cout〈〃操作〃〈endl;cout«,/1数据录入〃endl;cout«,z2增加学生〃〈〈endl;cout3删除学生endl;cout〈〈〃4修改数据〃Xendl;cout〈〃查询〃endl;cout«/,5按总成绩查询“endl;cout〈〃6按姓名查询〃〈〈endl;cout«,/7输出所有学生的数据“endl;cout〈〃成绩统计:,z endl;cout«〃8每个学生的平均成绩〃《endl;cout«,,9各科不及格人数〃Oendl;cout〈〈〃排名〃〈endl;cout«,/10按总分查询排名〈〈endl;cout〃11退出〃〈endl;cout«〃选择相关操作请输入相对的括号里的阿拉伯数字及字母!〃endl;int p=0;〃全局变量,用于选择菜单时的输入char w;〃全局变量,用于在大项中选择是否继续操作Tstu*s
[100];〃类定义的指针将所录入的数据按类中的形式分别存储ofstream*file
[100];int i=0;〃全局变量,用于做每个录入数据的下标int j=0;int chrisl=0;〃用于判断do—while语句do//判断输入是否正确cinp;。