还剩21页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
河南工程学院《高级程序设计语言》课程设计成果报告学生成绩管理系统设计与实现j++;s[i]=new Tstuname,number,math,cpp,english;i++;cout〈〈〃数据录入成功,想继续录入吗y/n,z endl;cinc;chrisl=O;do{if c!=,y c!=,n{cout〈指令错误!请重新输入!,,«endl;cinc;}else chrisl=l;}whilechrisl==0;}while c==y;〃重复输入break;}
3.4对学生信息的操作学生信息的操作包括增加学生数据,删除数据,修改数据,查询成绩等一系列程序
3.
4.1录入的数据录入的数据主要是包括学生的C++成绩、高等数学成绩、英语成绩,查询成绩时更加的方便快捷和有效节省搜索时间和精力1增加学生数据本函数同样是对文件进行操作,在实现数据增加的同时,亦能保证原有的数据顺序不变,更加方便了学生对数据和信息的管理{char name
[20];int number;float math,cpp,english;char c;do cout〈〃请输入您要增加的学生的姓名〃〈endl;cinname;fstream outfile,infile;outfile.open/z fl.txt〃,ios::out|ios::app;if!file cout/z f
1.txt cannot open.\n/z;return;cinxingming;while!fin.eof{getlinefin,line;istringstream streamline;name=line,substr0,line,find〃〃,0;〃找到名字,判断是否相等if name!=xingming outfilelineendl;}outfile.close;fin.close;fstream fz,f
1.txt〃,ios::trunc|ios::out;ifstream outf〃f
2.txt〃;foutf.rdbuf;outf.close;f.close;cout〈〃数据删除成功,想继续删除吗y/n,,endl;cinc;if c!=,y c!二n{cout«〃指令错误!请重新输入!〃endl;cinc;}}while c==,y break;}2修改数据是在原有数据基础上进行修改,并不会改变文件的原有属性,故而该项修改会使得程序内容更加完善,有效{string sname,line,str,name;int nu;float eng,ma,com;int flag;char c;if i==0{cout〈〃系统中没有输入数据,请先输入数据!,,endl;break;}do{flag=0;cout〈〈〃请输入您要修改的学生的姓名〃;cinname;fstream fin〃f
1.txt〃,ios::in;ofstream outfileCf.txt〃,ios::trunc|ios::out;coutendl;while!fin.eof//在文件中查找getlinefin,line;istringstream streamline;sname=line.substr0,line.find/z〃,0;if name!=snanie{outfilelineendl;}else flag=l;}fin.close;ifflag=l{cout〈〈〃请输入修改学生姓名及其新学号,数学,C++和英语成绩:〃;cinnamenumacomeng;coutendl;0也门建〈〈的血〈〈〃〃〈〈〃学号〃〈11〈〃〃〃数学成绩〃帽〈〃〃宽++成绩〃com〈〃〃〈〈〃外语成绩z/«eng«endl;outfile.close;fstream outf〃fl.txt〃,ios::trunc|ios::out;fstream inf〃f.txt〃,ios::in;outfinf.rdbufendl;outf.close;inf.close;}1£“用=0:0111;〈〈〃您要修改的学生不存在!请查证后输入!〃〈111€11;cout〈〃想继续修改吗y/n:〃;cinc;coutendl;if c!=y c!二n{cout〈〈〃指令错误!请重新输入!〃cinc;}}whilec==,y,;break;}
3.5按各类方式查询学生信息1按总分查询是对程序进行有效的快捷的查询,能够在最短的时间内找到需要被查询的学生的总得分{int j=0;float SUM;char c;int flag;if i==0{cout〈〃系统中没有输入数据,请先输入数据!〃〈endl;break;do{flag=0;cout〃请输入您要查询的学生的总成绩〃《endl;cin»SUM;io forint j=0;ji;j++if s[j]-getsum==SUM flag=l;cout〈〃您要查询的学生是〃〈〈*s[j].nameendl;cout〃该生的信息为:,,endl;cout/z学号〃*s[j].number*”数学分数:,z«*s[j].math«/,c++分数《*s[j].cpp”英语分数〃*s[j].englishendl;}}if flag==0cout〃对不起!您要查询的学生不存在!〃endl;cout〈”是否继续查?y/n:〃;cinc;if c!=y c!=n,{cout〈指令错误!请重新输入!endl;cinc;};}while c=y;break;}2按姓名查询,通过if•语句进行查找学生信息,经过分析和查询后可以找到学生的基本信息姓名如果输入错误,系统将自动提示“显示错误”{char n
[20];char c;int j=0;int flag;if i=0{cout«”系统中没有输入数据,请先输入数据!”endl;break;}do{flag=0;cout«〃请输入要查询的名字〃《endl;cinn;forint j=0;ji;j++11ifstrcmp n,*s[j].name==O flag=l;cout〈〈”您要查询的学生是生是nameendl;cout〈〈〃该生的信息是:学号:number z/数学分,,数:«*s[j].math«c++分数:“*s[j].cpp”英语分数〃*s[j].englishendl;}}ifflag==O cout«〃对不起您要查询的学生不存在,请查证后再输入!〃《endl;cout”您想继续查询吗?y/n:;cinc;if c!=,y c!=ncout〈指令错误!请重新输入:,,«endl;cinc;}whilec二二y;break;}
3.6输出所有学生数据通过cout函数的实现将在cin录入的学生信息显示在显示屏上,一便于查询人员对该信息的查找和删改{cout”所有学生数据如下”《endl;ifstream file;file.open z/fl.txt〃,ios::in;coutfile.rdbuf;file,close;break;}
3.7统计各类数据12通过if语句能够自动检索到各科不及格学生的信息,并能够显示然后通过for语句循环,能够连续的输出学生的成绩并且能够迅速的判别各科成绩中不及格的分数forj=0;ji;J++{ifs[j]-math60m++;if s[j]-cpp60n++;if s[j]-english60k++;}cout〈〃数学不及格人数为:z mendl;cout〈〈〃c++不及格人数为:zz nendl;cout〈”英语不及格人数为:,,«kendl;break;}
3.8个人平均分通过运用add和average函数能够自动计算学生的总成绩和平均成绩并且能够使用for语句使得该段程序更加具有自主话cout”系统中没有输入数据,请先输入数据!〃endl;break;}for intm=0;mi;m++{cout*s[m].name/z学号〃*s[m].number*”总分:,z*s[m],getsum«z,均分〃〈*s[m].getaver endl;}break;13第四章系统调试运行
4.1代码书写要求为保证开发团队的协作和后期修改能有效进行,使学生遵照统一的排版风格、注释标准、命名规则及编码诸原则进行C++语言编程,特提出以下规范要求
4.
1.1缩进1程序块要采用缩进风格编写,缩进以4个空格Space键为单位,不使用〃TAB键〃2函数体、结构体、循环体以及分支结构中的语句行都须采用缩进风格3所有的if、while、for.do结构中的语句即使只有一行也须用括号括起来4ifwhile、for、do语句单独占一行,左、右花括号也各占一行且不缩进例ifuperhero==theTick{print1u Spoon!w;
4.
1.2间隔所有的标识符都必须被空白字符包围,不能够单独的存在于一个没有任何符号或者是空白字符而存在例如int theTick=5;if theTick==5空行代码段之间须以一个空行进行间隔;
4.
1.3空格的位置1在一个关键字和左括号“”之间注意不要在函数名和左括号之间加空格;2在参数列表的每个逗号“,”之后;3二元操作符前后注意一元操作符前后都不加空格例如int a=10;a=a+l;a++;144for语句的每个表达式之间例如for int i=0;i20;i++…
4.
1.4代码行1不允许把多个短语句写在一行中,即一行只写一条语句;2长语句、参数、表达式超过80个ASCH字符应分行书写,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读
4.L5命名规则所有的标识符只能用字母A-Z或a-z和数字0-9不得包含货币符号或其它非AS-cn字符1变量的命名应尽可能采用有意义的名词,力求可顾名思义2可以采用一个单词或多个单词的缩写作为名字,缩写单词的每个字母都要大写3对于难以使用英文的情况,可以参考相关行业标准,比如使用国标4采用约定俗成的习惯用法常见的习惯用法循环变量i、j、k、in、n长度length数量count位置pos或position下标或索引i或index设置/获取set/get大小size
4.2编码原则1注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级2避免使用不易理解的数字,用有意义的标识来替代涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替153去掉没必要的公共变量4仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系5明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等6当向公共变量传递数据时,要十分小心,防止赋予不合理的值或越界等现象发生7防止局部变量与公共变量同名8严禁使用未经初始化的变量9对所调用函数的错误返回码要仔细、全面地处理10明确函数功能,精确
4.3系统调试运行结果显示运行程序进行该程序的运行,如图
4.1图
4.1主菜单16题目学生成绩管理系统设计与实现考核项目考核内容得分(30分)出勤情况、态度、效率;知识掌握情况、基本操作技平时考核能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总评成绩指导教师评语:日期:点击1进行学生信息的录入,如图
4.2E:\C++^S\^3RRST\41\Debug\
41.exe146〉按姓名查询瓢琼有季生的数据成短细t〈8海个冬生地干损成绩黑净科不及格人数排名10〉填单分查询排名411〉退出选择相关操作请输入相对的括号里的阿拉伯数字及字母!请输入姓名xiaobai请输入学号2013101请输入数学成绩90请输入C1成绩85请输入英语成绩95xiaobai学号2013101数学成绩90C1成绩85外语成绩95物据录入成功,想继续录入吗半如二哎哎2啊啊3阿阿4口丫口丫5安安6爱爱7嗷嗷图
4.2信息录入点击2进行增加学生信息,如图
4.3西•E:\FORMATFACTORY\0\Debug\
0.eze XJOOC JCX X M M XM MMM X6*又4j卬牛成句系4充X XM X X XM X XXXXMXX请选择您需要的操作!-操作3〉数据录入〈2〉增加千生3〉删除半生4〉修改数据5〉按总成绩查询6按姓名着询〈7通中所有举生的数据*翻%生的平均成绩《9各科不及格人数排名10〉按总分查询排名〈工工〉退出选择相关操作请输入相对的括号里的阿拉伯数字及字母!卷输入您要增加的学生的姓名xiaobai请输入你要增加的学生的学号201312211101图
4.3增加学生信息17按5进行总成绩查询学生的信息,如图
4.5\FORMATFACTORY\0\Debug\
0.exe数据录入嬴生墨臻编农IL n您想继续进行其他操作吗点击3进行删除学生信息,如图
4.4图
4.4删除学生信息(y/n)y MXXXXMXXXXXMMXXX欢迎来到学生卢查j旬系统MXXXXMXXXXXXXXXXX谓选择您需要的操作!’—‘攥作1〉数据录入〈2〉增加学生3〉硼除学生4)修祓数据5〉按总成绩查询6)按姓名查询输出物有举生的数据成绩疏声8〉鞋个学生的平均成绩《9)各科不及格人数排名3〉技总分查询排名11)退出选择相关操作请输入相对的括号里的阿拉伯数字及字母!5请输入您要查询的学生的总成绩图
4.5按总成绩查询18课程设计体会一个星期的课程设计,虽然有些疲劳和困倦,但带给我很多的收获C++已经学了一个学期了,有许多知识都存在似懂非懂的现象,这种现象通过实际的上机操作,已经减少了许多对这些知识也有了更深的理解和很好的掌握也有很多理论上说得过去的代码,但到了实际操作,却是行不通的这种困惑,有许多已经通过实际操作解决了,并能够深刻认识,但也有很多没有明白只能避过这些方法,换方法实现在课程设计之前,因为有了综合实验的经验与教训,明白了写代码这一步是非常重要的,因为当你把代码输入电脑,并用编译器将其运行,发现通过不了,再来检查找出问题,这是一件非常辛苦的事情,也很浪费时间于是在课程设计的时候,我花了两天的时间来规划与写代码,将要实现的内容分析清楚,才把代码输入电脑我觉得写程序,应该先找到该程序中的核心地方,用多种方法来实现该核心,这才可能避免等到发现逻辑上或者编译器不支持上的错误,才来想补救的措施,这样花费时间在想补救措施是很不值得的19参考文献
[1]谭浩强著.《C++语言设计题解与上机指导》,清华大学出版社
[2]谭浩强著.《C++面向对象程序设计》,清华大学出版社
[3]谭浩强著.C程序设计(第三版).北京清华大学出版社,2005
[4]谭浩强编著.c程序设计题解与上机指导(第三版).北京清华大学出版社,2005
[6]Bjarne strostrup著The c++programming language(3rd edition)
[7]Decoder编著C/C++程序设计.北京中国铁道出版社
1.1课程设计主要目标通过本课程设计,使学生进一步深化掌握C++语言的基本知识;掌握结构化程序设计的基本方法和设计技巧,初步了解算法分析与设计概念;理解面向对象程序设计思想,初步具备运用面向对象程序设计方法进行程序设计的能力能熟练应用VC++集成环境进行C++语言程序的编写、编译与调试,提高学生对本课程知识综合运用能力通过运用本程序所涉及到的基本知识和必要的学科工具深化掌握学习的专业知识并能在本次实践活动中明白自身的不足和缺陷,寻求更加大的突破本课程作为对学生实习解决实际问题做出了比较严格的要求,需要学生能够熟悉掌握运用《C++面向对象程序》的实际用途和作用在实际的生活和工作中,能够更加合适的在目前日益激烈的社会竞争中获得更加多的竞争力全面提升学生自身的自身修养和学科素养L2课程设计内容及所用设施学生成绩管理系统设计与实现,PC机、VC
6.0语言编辑、编译运行工具、文档编辑软件等
1.3课程设计任务及要求根据提供的实习题目,认真完成软件设计的全部过程,并以最终软件设计成果来证明其独立完成实际任务的能力,从而,反映出理解和运用C++程序知识的水平和能力,最后完成软件设计和程序调试并提交文档课程设计报告书,报告书中包含设计的算法及部分程序代码第二章系统实现思路
2.1系统设计项目
(1)设计四个类,包括学生类(描述学生基本信息);成绩类班级类;课程类(描述课程信息课程编号,科目名称,如高等数学,大学英语等);
(2)学生成绩及课程信息用文件保存,程序执行时从文件读入;
(3)能按学期,按班级完成对学生成绩的录入、修改,能按班级统计学生的成绩;
(4)求学生的总分及平均分,并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单-设置学生的成绩信息学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比-计算学生总评成绩总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比)-显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息分单人显示和以班输出(班成绩单格式输出到文件)-注意,至少应包含一个班、30人、三门课
2.2系统设计思路首先建立四个类,分别为学生类(描述学生基本信息),成绩类,班级类,课程类(描述课程信息),以成绩类和课程类为基类,采用公用派生的方法派生出学生类,以学生类作为班级类的成员数据主函数中以提示加数字选择的方式来实现菜单的运用,以便于用户的使用菜单主要来实现以下几个功能
(1)录入数据功能
(2)保存数据功能
(3)查询数据功能
(4)修改数据功能
(5)排序数据功能
(6)读取数据功能各个功能采用学生类的公用成员函数来实现
2.3系统模块化设计图首先建立四个类,分别为学生类(描述学生基本信息),成绩类,班级类,课程类(描述课程信息),以成绩类和课程类为基类,采用公用派生的方法派生出学生类,以学生类作为班级类的成员数据主函数中以提示加数字选择的方式来实现菜单的运用,以便于用户的使用菜单主要来实现以下几个功能
1.录入数据功能
2.保存数据功能
3.查询数据功能
4.修改数据功能
5.统计数据功能
2.1取数据功能各个功能采用学生类的公用成员函数来实现如图
2.1学生查询系统主菜单第三章系统设计
2.2学生的基本信息类学生的基本信息类包括有学生姓名,学号,数学成绩,C++成绩,英语成绩其中也包括计算总分的函数和计算平均分的函数,并且该类中把主函数声明为友元函数,更方便了主函数中调用该类中的成员,使得程序在运行时更加的快捷简便{char name
[20];int number;float math,cpp,english,average,sum;public:TstuO{;Tstuchar n
[20],int num,float ma,float cj,float eng;float getsumO;〃得到总分的函数float getaver;〃得到平均分的函数friend void main;〃将主函数定义为友元函数,方便访问类中的成员
[100];〃类定义的指针将所录入的数据按类中的形式分别存储ofstream*file
[100];inti=0;〃全局变量,用于做每个录入数据的下标intj=0;int chrisl=0;〃用于判断do一while语句do〃判断输入是否正确{cinp;if p=lp=ll chrisl=l;else cout指令错误!请重新输入”〈endl;}while chrisl==0;do{switchp{case1,case2,……
3.3学生数据的录入在本程序中运用人工手动录入学生成绩以及学生信息,能够做到是学生信息的录入更加的方便和快捷该类中采用了do while的循环语句,来实现多个学生的成绩的录入并且采用文件流的操作来实现对文件的保存,最后利用if条件语句来判断是否完成输入char c;〃用于在小项中选择是否继续操作char name
[20];int number;float math,cpp,english;do{cout〈〈〃请输入姓名:z/endl;cinname;cout〈〃请输入学号〃〈endl;cinnumber;作一个文本文档在文件夹中用于显示所录入的数据,建立的一个特定的文件夹中,利于储存和查询outfile.open z,fl.txt〃,ios::out|ios::app;if!file{cout zzf
1.txt cannot open.\n/z;return;}outf ilename,/“学号《number〃数学成绩:〃〃〈〃C++成绩:,,«cpp«/,〃《〃外语成绩:〃englishendl;outfile.close;infile,open〃f
1.txt〃,ios::in;ifIfile〃判断文件是否打开{cout,,fl.txt cannot open.\n/z;return;}char ch;while infile,get chcoutch;coutendl;infile,close;。