还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
河南工程学院《高级程序设计语言》课程设计成果报告学生成绩管理系统设计与实现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;〃得到平均分的函数friend void main;〃将主函数定义为友元函数,方便访问类中的成员};Tstu::Tstuchar n
[20],int num,float ma,float cj,float engstrcpy name,n;〃得到姓名number=num;〃得到学号math=ma;〃得到数学成绩cpp=cj;〃得到C++成绩english=eng;〃得到英语成绩}float Tstu::getsum〃得到总分的函数{sum=cpp+english+math;return sum;}〃得到平均分的函数float Tstu::getaver{average=getsum/3;return average;}在这里,我用了上年的case语句,这样更加简化了程序,使程序更具模板化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 ilename,/学号:,,number«,/数学成绩〈〈”C++成绩:外语成绩:〈english〈〈endl;outf ile.close;infile.open,,fl.txt〃,ios::in;if!file〃判断文件是否打开{cout/z f
1.txt cannot open.\n/z;return;}char ch;while infile.get ch//while循环coutch;coutendl;infile,close;j++;s[i]=new Tstuname,number,math,cpp,english;i++;cout«〃数据录入成功,想继续录入吗y/n,,«endl;
3.3保存数据功能的设计保存数据主要是对数据的保密性,可持续性等进行完整的保存,以便以后程序在应用是能准确无误的调用所保存的数据fstream outfile,infile;〃作一个文本文档在文件夹中用于显示所录入的数据outfile.open z/f
1.txt〃,ios::out|ios::app;if!file{cout/z f
1.txt cannot open.\n/;return;outf ilename,/学号:,,number«,/数学成绩〈〈”C++成绩:外语成绩:〈english〈〈endl;outf ile.close;infile.open,z fl.txt〃,ios::in;if!file〃判断文件是否打开{cout/z f
1.txt cannot open.\n/z;return0;}char ch;while infile,getch coutch;coutendl;infile,close;io j++;s[i]=new Tstuname,number,math,cpp,english;i++;在此,我用了多次循环结构让程序更加贴近现实,人性化cout〈〃数据录入成功,想继续录入吗y/n,,«endl;cinc;chrisl=O;do{if c!=y c!=,n{cout指令错误!请重新输入!endl;cinc;else chrisl=l;}whilechrisl==O;}whilec==,y;〃重复输入break;
3.4查询数据功能的设计查询功能主要分为两种按总分查询和按姓名查询1按总分查询按总分查询,就要先输入有关数据,从而才有数据可查,case5:〃按总分查询int j=0;float SUM;char c;int flag;if i==0{cout〈〃系统中没有输入数据,请先输入数据!zz endl;break;11此处我利用了C语言中do循环和if循环,以此来输出查询信息do|flag=0;cout«〃请输入您要查询的学生的总成绩〃《endl;cin»SUM;if s[j]-getsuni==SUM{flag=l;cout«〃您要查询的学生是:,z«*s[j].nameendl;cout“该生的信息为:,,«endl;cout,/学号*s[j].number〃数学分数〃〈〈*5仃].1!1a1±c++分数:〈〈*s[j].cpp〈〃英语分数〃*s[j].englishendl;for int j=0;ji;j++{}}if flag==0cout〈〃对不起!您要查询的学生不存在!在Vendl;cout“是否继续查?y/n:;cinc;if c!=,y c!=ncout〈〃指令错误!请重新输入!endl;cinc;;}whilec==,y;12break;2按照姓名查询同样,按照姓名查询,表面意思可知,就是查询需要知道学生的姓名,之后便会显示出学生的一系列信息case6:〃按姓名查询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++ifstrcmpn,*s[j].name==0{flag=l;cout«〃您要查询的学生是〃*s[j].nameendl;cout〈〈〃该生的信息是:学号:,z«*s[j].number«,/数学分数〃〈*s[j].math〃c++分数:*s]〈.cpp〈〈〃英语分数:〃〈〈*s[j].englishendl;13if flag==O cout〈〃对不起您要查询的学生不存在,请查证后再输入!〃endl;cout〈〃您想继续查询吗?y/n:〃;cinc;if c!=y c!=n,cout«指令错误!请重新输入:,,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{a《〃系统中没有输入数据,请先输入数据!/z endl;break;do14flag=O;cout«〃请输入您要修改的学生的姓名〃;cinname;fstream fin〃f
1.txt〃,ios::in;ofstream outfilez/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.close;ifflag=lcout〈〃请输入修改学生姓名及其新学号,数学,C++和英语成绩:〃;cinnamenumacomeng;coutendl;outf ilenamez,学号数学成绩〃*ma«〃〃《〃C++成绩〃《〃外语成绩〃《eng«endl;outfile.close;fstream outf〃f
1.txt〃,ios::trunc|ios::out;15fstream inf〃f.txt〃,ios::in;outfinf.rdbuf endl;outf.close;inf.close;}if flag=0cout〈〈〃对不起,您要修改的学生不存在!请查证后输入!〃《endl;cout〈〈”想继续修改吗y/n;cinc;coutendl;if c!=y c!二n{cout«/,指令错误!请重新输入!〃■cinc;}}while c二二y;break;}
3.6数据排列的设计数据的排列是使得if语句的功能发挥的淋漓尽致,所以if语句是我对排序一类的首选,其中最大值就要用到for循环语句利用冒泡法进行总分的排序,因此if语句和for语句让我完成了这部分的设计{if i==0cout〃系统中没有输入数据,请先输入数据!〃〈〈endl;break;}int h,g,n;intj=0;float a
[100],temp;16题目学生成绩管理系统设计与实现考核项目考核内容得分(30分)出勤情况、态度、效率;知识掌握情况、基本操平时考核作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总评成绩指导教师评语:日期:for g=O;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;}}
3.7主函数的设计主函数是一个程序的核心部件,因此他是重中之重,由于大部分内容在上面都已经写的差不多了,所以只需在主函数中写一些有关操作的语句就行了voidmaincout〃*****************欢迎来到学生成绩查询系统*****************〃〈〈endl;cout〈〃请选择您需要的操作!〈endl;〃菜单的输出cout〈〈〃操作〃Xendl;〃操作的提示cout〈〈〃1数据录入〃endl;cout«zz2增加学生“endl;cout«”3删除学生〃〈endl;cout〈〈〃4修改数据〃〈〈endl;〃查询的提示cout〈〈〃查询〃〈〈endl;17cout〃5按总成绩查询〃endl;cout z,6按姓名查询〃endl;cout〈〃7输出所有学生的数据〃endl;cout〈〈〃成绩统计〃endl;〃成绩的提示cout«〃8每个学生的平均成绩〃《endl;cout«,/9各科不及格人数〃〈endl;cout〃排名:,,endl;〃排名的提示cout«,/10按总分查询排名”Xendl;cout z/11退出〃〈endl;〃退出的提示cout〃选择相关操作请输入相对的括号里的阿拉伯数字及字母!〃〈endl;〃还要进行其他操作的提示18第4章系统调试运行
4.1系统调试4—1控制界面图4—1控制界面图上图可以看出主界面有我们所需要的功能数据录入、增加学生、删除学生等,下面就来看看我们编程的程序的各项功能吧!!
194.2调试结果
(1)数据输入功能如下图4—2图4—2数据输入功能202增加学生功能如下图4—3图4—3增加学生信息功能21
(3)删除学生信息功能如下图4—41*E:\新建文件夹\O\Debug\O.exe;XXXMXXMXMXXMMXX j卬主||牛询系专有MMMMMMMMMMMMMMM通迺择您需要的操作!’—「攥作1)姓据录入〈2〉增加学生3〉删除半生4)修改数据查伽9技总成绩查询〈6〉按姓名查询⑺输出所有举生的数据成蟋计8)鞋个学生的平均成绩9〉各科不及格人数排名•〈工〉技总分查询排名1〉退田选择相关操作请输入相对的括号里的阿拉伯数字及字母!请输入您要删除的学生的姓名张二装据删除成功,想继续删除吗(y/n〉|QQPinyin图4—4删除学生信息功能22课程设计体会通过本次上级编程,我体会较深的一点是自己看书学习的经验,以及从网上以及其他各种途径获得信息和知识的经验理论与实际相结合的设计,锻炼了我综合运用所学的基础知识,解决实际问题的能力,同时也提高我查阅文献资料、对程序整体的把握等其他能力水平而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,我的各方面验都得到了极大的丰富23参考文献
[1]谭浩强《C++语言设计题解与上机指导》,清华大学出版社
[2]谭浩强《C++面向对象程序设计》,清华大学出版社
[3]刘健周《C++面向对象的程序设计》,机械工程出版社
[4]陈维新,林小茶《C++面向对象的程序设计课程》,清华大学出版社
[5]安双国《C++面向对象的程序设计》,机械工程出版社
113.5修改数据功能的设计
1.1设计的背景学生成绩管理系统是学校日常信息管理的一个重要内容随着学校考试次数越来越多,学生成绩管理的工作量也变得越来越大如果能对学生成绩做系统的管理,就能更好、更方便地快速查询或者修改学生的考试成绩,省去了文件管理的繁琐与麻烦,无疑讲给学校的管理部门带来很大的方便学生成绩管理系统就是把学生的考试成绩实行统
一、集中、规范的收集管理,建立现代化、专业话的管理系统
1.2设计内容•熟悉Visual C++
6.0的编辑环境,掌握其编辑、编译和程序调试功能•理解与掌握面对对象程序设计的基本概念、思想与方法•掌握和应用类与对象的设计与实现,完成文件的输入输出操作处理;运用模块化程序设计思想完成课程设计内容•综合程序设计•课程设计题目《学生成绩管理系统设计与实现》
①设计四个类,包括学生类(描述学生基本信息);成绩类班级类;课程类(描述课程信息课程编号,科目名称,如高等数学,大学英语等);
②学生成绩及课程信息用文件保存,程序执行时从文件读入;
③按学期,按班级完成对学生成绩的录入、修改,能按班级统计学生的成绩;
④求学生的总分及平均分,并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单-设置学生的成绩信息学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比-计算学生总评成绩总评成绩:平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比)-显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息分单人显示和以班输出(班成绩单格式输出到文件)-注意,至少应包含一个班、30人、三门课-.3设计的目的1基本掌握面向过程程序设计的基本思路和方法;2达到熟练掌握C++语言的基本知识和技能;3能够利用所学的基本知识和技能,解决简单的程序设计问题;
1.4设计的要求掌握Visual C++
6.0集成开发环境的使用,每人独立完成课程设计全部内容,具体要求如下
1、对系统进行功能模块分析、控制模块分析正确
2、系统设计要能尽力完成题目所要求的功能
3、编程简练,可用,尽可能的使系统的功能更加完善和全面
4、说明书、流程图要清楚第2章系统实现思路
2.1系统分析
(1)选择用户要进行的功能;
(2)对学生信息进行录入功能;
(3)对学生的信息进行保存功能;
(4)对学生的信息进行查询功能;
(5)对学生的信息进行修改功能;
(6)对学生的信息进行删除功能;
(7)能对学生的成绩进行按班级分类功能;
(8)能对学生的成绩进行按个人分类功能;
2.2模版视图
(1)总体设计2程序流程图:输入学生信息更新学生信息查询学生成绩统计学生成绩及找数名从从按键文修删排进分昭改除序统段盘件学学学“行输中生生生、、、计入输成成成姓绩绩绩名按入查课找按课名得分降分排序按照学生号删除按照姓名删除图1T程序流程图第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 score;public grate,public class{Public:Char name
[30];Char number
[30];Double sum;Double average;Double mh{Return math
[0]*math
[3]+math
[1]*1-math
[2];}Double eg{Return English
[0]*rnglish
[3]+English[l]*l-english
[2];}Double c{Return c++
[0]*c++
[3]+c++
[1]*l-c++
[2];}};4学生类对于学生类,就比较复杂了,首先要定义学生的数组来表示学生在哪学年,班级等,接下来要写函数了,析构函数,保存函数,查找函数,排序函数,修改函数等等Class studentPrivate:Score stu
[2]
[2][m];〃学生数组static int sizel,size2,size3,size4;intsi,s2,s3,s4;〃定义数据public:Student{s1=0;s2=0;s3=0;s4=0;}〃构造函数Student{}〃析构函数void add;〃添加函数void search;〃查找函数。