还剩23页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
河南工程学院《高级程序设计语言》课程设计成果报告学生成绩管理系统设计与实现char c;string xingming,line,str,name;do{ifstream fin〃f
1.txt〃;fstream outfilez/f
2.txt〃,ios::trunc|ios::out;〃作一个文本文档在文件夹中用于显示所录入的数据cout«〃请输入您要删除的学生的姓名〃《endl;cinxingming;while!fin.eofgetlinefin,line;istringstream streamline;name=line,substr0,line,find〃〃,0;〃找到名字,判断是否相等if name!=xingming outfilelineendl;outfile.close;fin.close;fstream f〃f
1.txt〃,ios::trunc|ios::out;ifstream outf〃f
2.txt〃;foutf.rdbuf;outf.close;f.close;cout〈〃数据删除成功,想继续删除吗ey/n,,endl;cinc;if c!=y c!二ncout«〃指令错误!请重新输入!”《endl;cinc;}whilec二二y;}3修改数据函数用于录入数据的修改void Fuction::changeO〃修改数据{string sname,line,str,name;int nu;float eng,ma,com;int flag;char c;do{flag=0;cout〈〃请输入您要修改的学生的姓名〃;cinname;fstream finz/f
1.txt,z,ios::in;ofstream outfile〃f.txt〃,ios::trunc|ios::out;coutendl;while!fin.eof//在文件中查找{getlinefin,line;istringstream streamline;sname=line.substr0,line.fincK^〃,0;ifname!=sname{outfilelineendl;else flag=l;fin.close;ifflag=l cout〃请输入修改学生姓及其新学号,数学,C++和英语成绩一〃;cinnamenumacomeng;coutendl;outf ilename,/学号数学成绩‘,C++成绩,.com外语成绩,,eng«endl;outfile.close;fstream outf〃f
1.txt〃,ios::trunc|ios::out;f strearn inf/z f.txt/z,ios::in;outfinf.rdbufendl;outf.close;inf.close;cout〈〃想继续修改吗ey/n:〃;cinc;coutendl;if c!=,y c!=n,{cout«,/指令错误!请重新输入!”《endl«〃〃;cinc;}whilec==,y;}4按总成绩查询函数用于实现按总成绩查询void Fuction::search_sum〃按总成绩杳询{float SUM;char c;int flag;flag=O;cout〈〃请输入您要查询的学生的总成绩:〃Gendl;cin»SUM;forint j=0;ji;j++{ifS[j]-getsum==SUM{flag=l;cout〈〈〃您要查询的学生是生*S[j].nameendl;cout〈〃该生的信息为a:z/endl;cout,/学号〈〈*$1].111111±61〈”数学分数:math«c++分数:〃*S[j].cpp/z英语分数〃〈〈*S[j].englishendl;if flag==0cout〈〈〃对不起您要查询的学生不存在!zz endl;cout〈”是否继续查y/n:〃;cinc;if c!=,y c!=,n{cout指令错误!请重新输入!endl;cinc;;}whilec==,y;}5按名字查询函数用于按名字查询信息void Fuction::search name〃按名字杳询{char n
[20];char c;int flag;flag=0;10cout〈〈”请输入要查询的名字“endl;cinn;forint j=0;ji;j++{if strcmpn,*S[j].name-0flag=l;cout”您要查询的学生是*S[j].nameendl;cout“该生的信息是学号〃*S[j].number”数学分数:〃*S[j].math«〃c++分数:〃*S[j].cpp”英语分数〃*S[j].englishendl;}}ifflag==0cout〃对不起您要查询的学生不存在,请查证后再输入!〃endl;cout〈〈“您想继续查询吗?y/n:〃;cin»c;if c!=y c!=n{cout指令错误!请重新输入:,,«endl;cinc;whilec==,y;}6输出学生所有的数据用于输出学生数据void Fuction::show_student_date〃输出所有学生的数据{cout“所有学生数据如?下?:〃endl;ifstream file;11file.open z/f
1.txt〃,ios::in;coutfile.rdbuf;file,close;7各个学生的平均成绩用于输出各个学生的平均成绩void Fuction::show_average〃每个学生的平均成绩{for int m=0;nii;m++cout*S[m].name/z学号〃〈〈*S[m].number,z总分〃*S[m].getsum〃均分:〃*S[m].getaverendl;}8各科不及格人数用于输出各科不及格人数void Fuction::show_num〃各科不及格人数{intm,n,k;m=0;n=0;k=0;forj=0;ji;j++{if S[j]-math60m++;if S[j]-cpp60n++;if S[j]-english60k++;cout〈〈〃数学不及格人数为:z/mendl;cout〈〈〃c++不及格人数为:z/nendl;cout〃英语不及格人数为〃k«endl;129按总分查询永远总分查询学生信息void Faction::show〃按恪总分查询排名{int h,g,n;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;}10结束用于结束程序int Fuction::end〃结束{cout〈〃退出系统〃endl;return0;
133.3主函数的设计由于程序采用封装的形式,所以大大缩减主函数的篇幅,考虑到函数功能需要循环实现,所以将功能函数进行整合,利用函数的递归调用实现功能,所以主函数本体内容其实只调用了整合的函数重点在整合各个功能函数,并利用函数的递归调用实现循环功能主程序中需要调用的头文件的声明#includeiostream#includefstream#includestring#includesstream#includeiomanip#include〃Student.h〃using namespacestd;〃主函数需要的各个头文件的声明利用函数的递归调用,来实现函数的循环,让程序能够在需要的情况下一直运行下去void menuO〃利用递归调用实现循环的功能函数集合{int a;〃判断变量int b;〃判断变量char w;〃判断变量Fuction f;〃功能函数类cout〈”请选择您需要的操作”《endl;cout«/,1数据录入“〈Vendl;cout,/2删除学生数据〈〈endl;cout/z3修改数据〃〈endl;cout〃4按总成绩查询〃Xendl;cout«/z⑸按姓名查询〃〈endl;cout«〃6输出所有学生的数据〃*endl;cout«z/⑺每个学生的平均成绩〃〈endl;14cout/z8各科不及格人数〃〈〈endl;cout z,9按总分查询排名“endl;cout〃10退出〃〈〈endl;do{cin»a;〃判断输入是否正确if a=la=ll b=l;else cout“指令错误!请重新输入〃“endl;}whileb==0;do{ifa==l{f.messin;}〃录入数据if a==2{f.delete;}〃删除信息if a==3{f.changeO;}〃修改数据if a==4{f.search_sum;}〃按总成绩查询if a—5{f.search_name;}〃按名字查询if a==6{f.show_student_date;}〃输出所有学生的数据if a==7{f.show_average;}〃每个学生的平均成绩if a==8{f.show_num;}〃各科不及格人数if a==9{f.show;}〃按总分查询排名if a==10{f.end;}〃结束}whileb-0;cout〃您想继续进行其他操作吗?y/n:,,«endl;b=0;do cinw;coutendl;if w!=,y w!=’n,15cout zz指令错误!请重新输入!〃endl;else b=l;menu;}whileb==0;}int main〃主函数{menu;return0;16题目学生成绩管理系统设计与实现考核项目考核内容得分(30分)出勤情况、态度、效率;知识掌握情况、平时考核基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总评成绩指导教师评语:日期:第4章系统调试运行
4.1逐步调试在每完成一个步骤以后,都及时地进行调试,以便能够及时的发现问题,并解决问题避免问题积压,便于程序流畅的完成
4.2分级调试对每个功能函数进行调试,更好的完善函数的功能操作界面3\.\Debug\lx_
13.exe十的不分耨上人生总有询姓生生出及排个杳要科一目查迎青子曼狗拼音输入法半图4一1操作界面功能1数据录入:17T I,B1234567891C*E:\ljk\lx_13\Debug\lx_
13.exe*戈个名臂,印操作皆量生心不有分生鬻及查询删较查强修生嬴改疆的数戈均成总奉各排数姓数按名出成主,想继续录入吗y/n)图4—2数据录入功能2删除学生信息:A*E:\ljk\lx_13\Debug\lx_
13.exe*〈1〉痢馥入2〉删窿学生3〉修改薮据《5〉按姓名查询6)输出麻有片的生数L—7)与个孚生的均成4〉48按〉总告成科最不查及询格人数29)按总分查询排名请输入您10〉要退删出除的学生的姓名k数据删除成功,想继续删除吗〉图4—3册[除信息*.,.W W.f123456789课程设计体会18本次实践,是第一次使用C++编写有实际使用功能的应用程序这次实践的过程,也是对C++的一次摸索的过程通过本次实践,我的C++编程思路变得更加明确本次实践中,我还懂得了程序开发的一些重要步骤,比如需求分析、总体设计、程序模块设计等在此次实践之前,我对C++的理解认识有不足之处,某些知识点的掌握并不牢固此次实践,使用到了很多先前学习的编程技巧和C++知识,等于一次变相的综合复习,对我C++语言的使用能力有了不错的提升19参考文献
[1]谭浩强.《C++面向对象程序设计》.清华大学出版社⑵谭浩强.《C++面向对象程序设计题解与上机指导》.清华大学出版社⑶谭浩强.《C++程序设计实践指导》.清华大学出版社⑷谭浩强.《C语言程序设计》.清华大学出版社⑸《大学计算机应用基础案例教程》⑹《计算机信息技术基础教程》
1.1课程设计目的
(1)将学到的面向对象的程序设计思想用到工作和学习中,加深对类与对象的理解通过课程设计,能够提高学生分析解决问题能力,从而运用所学知识解决实际问题的能力
(2)进一步深化掌握C++语言的基本知识;掌握结构化程序设计的方法和技巧,了解算法分析与设计概念;运用面向对象程序设计方法进行程序设计
1.2课程设计要求根据提供的实习题目,完成软件设计的全部过程,并以最终软件设计成果来证明其完成实际任务的能力,完成软件设计和程序调试并提交文档课程设计报告书,报告书中包含设计的算法及部分程序代码L3课程设计题目
(1)设计四个类;学生类(描述学生基本信息);成绩类班级类;课程类(描述课程信息课程编号,科目名称(如高等数学,大学英语等);学生成绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入;
(2)能按学期,按班级完成对学生成绩的录入,修改,能按班级统计学生的成绩;求学生的总分及平均分;并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单设置学生的成绩信息学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比计算学生总评成绩总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比)显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息分单人显示和以班输出(班成绩单格式输出到文件)注意,至少一个班,30人三门课第2章系统实现思路
2.1需求分析根据对题目的分析,程序所需要的功能大概非为如下几种1能对学生各科成绩进行录入:2能对学生的成绩进行删除3能对学生的成绩进行修改4能对学生的成绩按总成绩,姓名,进行查询5能输出学生的所有数据6能进行成绩统计7能进行总分查询排名
2.2系统性能要求要对于程序的整体把握,宏观的规划程序,所以对系统的性能要有以下的要求1系统安全、可靠;2功能齐全;3操作方便、界面友好;4易于维护和扩充;
2.3模块框图为了方便算法的完成,应该先画出模块框图,并根据框图进行算法的编写和程序的规划图2—1模块框图第3章系统详细设计
3.1类的设计设计两个类,其一为Student类,包含了需要录入和使用的数据,另一个为Function类,包含了功能函数的声明并且将这两个类封装在一个头文件中学生类//Student.h classStudent{protected:char name
[20];int number;double math,cpp,english,average,sum;public:Student{};Studentchar n
[20],int num,double m,double c,double e;double getsumO;〃得到总分的函数double getaver;〃得到平均分的函数friend classFuction;;功能函数类//Student.h classFuction{public:void messin;〃录入数据void delete;〃删除信息void change;//修改数据void search_sum;〃按恪总成绩查询void searchname;〃按名字查询void show_student_date;〃输出所有学生的数据void show_average;〃每个学生的平均成绩void show_num;〃各科不及格人数void show;〃按总分查询排名int end;〃结束;
3.2功能函数设计将功能函数封装在同一个cpp Fuction.cpp文件中,理清程序的条理,降低主函的冗杂性,便于程序的编写和调试,同时增加程序的隐蔽性Student类中的两个功能函数,即getsum和getaver两个简单的功能函数在此处略去1录入数据函数用于录入数据,存放于文件中void Fuction::messin〃录入数据char name
[20];char c;int number;double math,cpp,english;do{cout〈〈〃请输入姓名〃〈endl;cinname;cout〈〈〃请输入学号:zz endl;cinnumber;cout«〃请输入数学成绩.•,,«endl;cinmath;cout〈〃请输入C++成绩…,,endl;cincpp;cout〈”请输入英语成绩..,,«endl;cinenglish;ofstream outfile/z f
1.txt〃,ios::out|ios::app;if!outfile〃判断文件是否打开{cerr z,f
1.txt cannot open,z endl;exit1;}outf ilename«,/学号?number〈数学绩..〃«〃C++成绩..〃《cpp«〃〃《〃外语成绩..〃〈english〈〈endl;outfile.close;j++;S[i]=new Studentname,number,math,cpp,english;i++;cout«”数据录入成功,想继续录入吗e y/n,,«endl;cinc;chrisl=0;do{〃判断是否继续输入if c!=y c!二n{cout«”指令错洙误请重新输入!〃endl;cinc;}else chrisl=l;whilechrisl==0;}whilec==y;〃重复输入}2删除数据函数用于删除数据void Fuction::delete//删除信息。