学生成绩管理系统设计与实现_第1页
学生成绩管理系统设计与实现_第2页
学生成绩管理系统设计与实现_第3页
学生成绩管理系统设计与实现_第4页
学生成绩管理系统设计与实现_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 专业课程: 高级程序设计语言指导教师: 年 月 日题 目学生成绩管理系统设计与实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总 评 成 绩指导教师评语: 日

2、期: 年 月 日目 录第1章 系统设计目的11.1 设计内容11.2 设计目的:11.3设计要求:1第2章 系统实现思路32.1 系统分析32.2 系统模块框架图:4第3章系统详细设计53.1系统设计53.2系统的实现53.3 详细设计5第4章 系统调试运行17课程设计体会22参考文献24第1章 系统设计目的1.1 设计内容 - 设计四个类;学生类(描述学生基本信息);成绩类:班级类;课程(描述课程信息:课程编号,科目名称(如高等数学,大学英语等);学生成绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入;- 能按学期,按班级完成对学生成绩的录入,修改,能按班级统计学生的成绩;求学生

3、的总分及平均分;并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单。 设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比 计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比) 显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信 息。分单人显示和以班输出(班成绩单格式输出到文件) 注意,至少一个班,30人三门;1.2 设计目的:(1)基本掌握面向对象程序设计的基本思路和方法;(2)达到熟练掌握C+语言的基本知识和技能,解决简单的程序设计问题 (3)能够利用所学的

4、基本知识和技能,解决简单的程序设计问题1.3设计要求:基本要求:(1) 要求利用面向对象的方法以及C+的编程思想来完成系统的设计;(2) 要求在设计的过程中,建立清晰的类层次;(3) 在系统的设计中,至少要用到面向对象的一种机制; (4)根据C+课程所学的概念、理论和方法,按照C+程序设计的基本 步骤,设计出一个适当规模的程序来实现设计课程内容中的全部功能; (5)设计主控模块程序对给出的程序源代码要给出各部分的详细注释自己根据能力及需要添加相应功能模块,增强模拟系统功能。第2章 系统实现思路 2.1 系统分析1.需求分析:a.能对学生各科成绩进行录入:。b.能对学生的成绩进行增加。c.能对学

5、生的成绩进行删除。d.能对学生的成绩进行修改。e.能对学生的成绩按总成绩,姓名,进行查询。f.能输出学生的所有数据。g.能进行成绩统计h.能进行总分查询排名。2.系统功能描述: (1)使用继承的方法构造函数的类 (2)用文本文档来显示所录入的数据 (3)用switch函数来选择执行的功能 3.系统的功能分析: 资料维护:系统维护包括对学生信息录入操作及数据表中的信息进行浏览。系统功能:可以对数据表中的信息进行浏览。系统查询:可以对学生的信息进行查询。2.2 系统模块框架图:1.通过分析画出程序结构图:学生成绩管理系统 图0-0程序框架图操作查询学生信息修改增加总成绩查询姓名查询输出所有学生的成

6、绩录入 删除每个学生的平均成绩每个学生的总评成绩按总成绩排名查询各科不及格人数 第3章系统详细设计 3.1系统设计1. 界面设计程序运行后会出现一个简捷的窗口,便于用户查询数据。3.2系统的实现通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。应用系统主控界面包括记录编辑和记录查询等功能模块。记录编辑功能完成学生成绩记录编辑和记录查询功能。记录查询功能可以对数据各分类的记录进行查询3.3 详细设计 (1)定义一个基类student:class Student /定义学生类public: Student(char n20,int num,float xuen)strcpy(name,n)

7、;number=num;xuenian=xuen;char name20;int number;int xuenian; (2)再派生出成绩类:class Chengji: public Student /设置成绩类学生成绩 public: Chengji(char n20,int num,float xuen, float ma2,float ma,float cy2,float cy,float eng2,float eng):Student(n,num,xuen)cyuyan=cy;english=eng;math=ma;cyuyan2=cy2;english2=eng2;math2=m

8、a2;在这个类中把一些需要用到的成员函数写上,来计算总分,总评成绩,平均成绩注意参数; float get_sum() /计算总分 sum=english2+math2+cyuyan2; return sum; friend void main();/将主函数定义为友元函数,方便访问类中的成员 float get_aver() /得到平均分的函数average=get_sum()/3;return average;(3)定义主函数:void main() /主函数cout<<"*欢迎来到学生成绩查询系统*"<<endl;cout<<&qu

9、ot;请选择需要的操作!"<<endl;/菜单的输出cout<<"()数据录入"<<endl;cout<<"()增加学生"<<endl;cout<<"()删除学生"<<endl;cout<<"()修改数据"<<endl;cout<<"查询:"<<endl;cout<<"()按总成绩查询"<<endl;cout&l

10、t;<"()按姓名查询"<<endl;cout<<"()输出所有学生的数据"<<endl;cout<<"成绩统计:"<<endl;cout<<"()每个学生的平均成绩"<<endl;cout<<"()各个学科不及格人数"<<endl;cout<<"排名"<<endl;cout<<"()按总分查询排名"<

11、<endl;cout<<"()退出"<<endl;cout<<"选择相关操作请输入相对的括号里的阿拉伯数字及字母!"<<endl;(4)运用全局变量: int p=0;/全局变量,用于选择菜单时的输入char w;/全局变量,用于在大项中选择是否继续操作Chengji *s100;/类定义的指针将所录入的数据按类中的形式分别存储ofstream *file100;int i=0;/全局变量,用于做每个录入数据的下标int j=0;(5)运用switch函数来实现用户所要求的功能,并用dowhile 来

12、进行循环。do/判断输入是否正确 cin>>p;if(p>=1&&p<=11)chris1=1;elsecout<<"指令错误!请重新输入:"<<endl;while(chris1=0); doswitch(p)case 1用来进行数据的录入,并保存:case 1: /数据录入 float zong; /计算总评成绩char c; /用于在小项中选择是否继续操作char name20;int number;float math2,cyuyan2,english2,math,cyuyan,english,bf,x

13、uenian;do cout<<"请输入学年"<<endl; cin>>xuenian;cout<<"请输入姓名"<<endl;cin>>name;cout<<"请输入学号"<<endl;cin>>number;cout<<"请输入数学期末成绩"<<endl;cin>>math2;cout<<"请输入数学平时成绩"<<endl;c

14、in>>math;cout<<"请输入c+期末成绩"<<endl; cin>>cyuyan2; cout<<"请输入c+平时成绩"<<endl;cin>>cyuyan;cout<<"请输入英语期末成绩"<<endl;cin>>english2;cout<<"请输入英语平时成绩"<<endl;cin>>english;cout<<"请输入成绩

15、百分比"<<endl;cin>>bf;zong=(english2+math2+cyuyan2)*(1-bf)+(english+math+cyuyan)*bf;fstream outfile,infile;/作一个文本文档在文件夹中用于显示所录入的数据outfile.open("f1.txt",ios:out|ios:app);if(!file)cout<<"f1.txt can not open.n"return ;outfile<<"姓名:"<<name<

16、;<" "<<"学号:"<<number<<"数学成绩:"<<math2<<"数学平时成绩:"<<math<<"c+成绩:"<<cyuyan2<<"c+平时成绩:"<<cyuyan<<"英语成绩:"<<english2<<"英语平时成绩"<<english<&

17、lt;"总评成绩"<<zong<<endl;outfile.close();infile.open("f1.txt",ios:in);if(!file)/判断文件是否打开cout<<"f1.txt can not open.n"return ;case2用来添加学生的数据;case 2: /增加学生数据char name20;int number;float cyuyan,math,english,cyuyan2,math2,english2,bf,xuenian;char c;do cout<

18、;<"请输入学年"<<endl; /增加的信息 cin>>xuenian;cout<<"请输入您要增加的学生的名字:"<<endl;cin>>name;cout<<"请输入你要增加的学生的学号:"<<endl;cin>>number;cout<<"请输入数学成绩"<<endl;cin>>math2;cout<<"请输入数学平时成绩"<<

19、endl;cin>>math;cout<<"请输入c+成绩"<<endl;cin>>cyuyan2;cout<<"请输入c+平时成绩"<<endl;cin>>cyuyan;cout<<"请输入英语成绩"<<endl;cin>>english2;cout<<"请输入英语平时成绩"<<endl;cin>>english;cout<<"请输入成绩

20、百分比"<<endl;cin>>bf; fstream outfile,infile;outfile.open("f1.txt",ios:out|ios:app);if(!file)cout<<"f1.txt can not open.n"return ;outfile<<"姓名:"<<name<<"学号:"<<number<<"数学成绩:"<<math2<<&quo

21、t;数学平时成绩:"<<math<<"c+成绩:"<<cyuyan2<<"c+平时成绩:"<<cyuyan<<"英语成绩:"<<english2<<"英语平时成绩"<<english<<endl;outfile.close();infile.open("f1.txt",ios:in);if(!file)cout<<"f1.txt can not

22、open.n"return ;char h;while(infile.get(h)cout<<h;cout<<endl;infile.close();j+;si=new Chengji(name,number,xuenian,math2,math,cyuyan2,cyuyan,english2,english);i+;case3用来删除学生的信息:case 3: /删除学生信息 char c; string xingming,line,str,name;doifstream fin("f1.txt");fstream outfile(&qu

23、ot;f2.txt",ios:trunc|ios:out);/作一个文本文档在文件夹中用于显示所录入的数据cout<<"请输入您要删除的学生的姓名:"<<endl;cin>>xingming;while(!fin.eof()getline(fin,line);istringstream stream(line);name=line.substr(0,line.find(" ",0);/找到名字,判断是否相等if (name!=xingming)outfile<<line<<endl;

24、outfile.close(); fin.close(); fstream f("f1.txt",ios:trunc|ios:out); ifstream outf("f2.txt"); f<<outf.rdbuf(); outf.close(); f.close();case4用来修改数据:case 4: /修改数据 string sname,line,str,name; int nu; float en,mat,cyu,mat2,cyu2,en2; int flag; char c; if(i=0) cout<<"系

25、统中没有输入数据,请先输入数据"<<endl;break; do flag=0; cout<<"请输入您要修改的学生的名字:" ; cin>>name; fstream fin("f1.txt",ios:in); ofstream outfile("f.txt",ios:trunc|ios:out); cout<<endl; while(!fin.eof() /在文件中查找getline(fin,line);istringstream stream(line);sname=li

26、ne.substr(0,line.find("",0);if(name!=sname) outfile<<line<<endl;else flag=1; fin.close();if (flag=1)cout<<"请输入修改学生姓名及其新学号,数学,c+、英语成绩以及平时成绩:"cin>>name>>nu>>mat2>>mat>>cyu2>>cyu>>en2>>en;cout<<endl;outfile<&

27、lt;"姓名:"<<name<<"学号:"<<nu<<"数学成 绩:"<<mat2<<"数学平时成绩:"<<mat<<"c+成绩:"<<cyu2<<" c+平时成 绩:"<<cyu<<" 英语成绩:"<<en2<<" 英语平时成绩:"<<en<<e

28、ndl;outfile.close();fstream outf("f1.txt",ios:trunc|ios:out);fstream inf("f.txt",ios:in);outf<<inf.rdbuf()<<endl;outf.close();inf.close();if (flag=0)cout<<"对不起,你要修改的学生不存在!请查证后输入!"<<endl;case5用来实现总分的查询:case 5: /按总分查询 int j=0; float SUM;char c;int

29、flag; if (i=0)cout<<"系统中没有输入数据,请先输入数据!"<<endl;break;doflag=0;cout<<"请输入您要查询的学生的总成绩:"<<endl;cin>>SUM;for(int j=0;j<i;j+)if(sj->get_sum()=SUM)flag=1;cout<<"您要查询的学生是:"<<(*sj).name<<endl;cout<<"该生的信息为:"&l

30、t;<endl;cout<<" 学号:"<<(*sj).number<<" 数学分数:"<<(*sj).math2<<" c+分数:"<<(*sj).cyuyan2<<" 英语分数:"<<(*sj).english2<<endl;if(flag=0)cout<<"对不起!您要查询的学生不存在!"<<endl;case6用来实现用姓名查询:case 6: /按姓

31、名查询char n20;char c;int j=0;int flag;if(i=0)cout<<"系统中没有输入数据,请先输入数据!"<<endl;break;doflag=0;cout<<"请输入要查询的名字"<<endl;cin>>n;for(int j=0;j<i;j+)if(strcmp(n,(*sj).name)=0)flag=1;cout<<"该生的信息为:"<<" 学号:"<<(*sj).numbe

32、r<<" 数学分数:"<<(*sj).math2<<" c+分数:"<<(*sj).cyuyan2<<" 英语分数:"<<(*sj).english2<<"总分:"<<(*sj).get_sum()<<endl;/输出该学生的信息if(flag=0)cout<<"对不起!您要查询的学生不存在!"<<endl;cout<<"是否继续查?(y/n)

33、;"cin>>c;if(c!='y'&&c!='n')cout<<"指令错误!请重新输入"<<endl;cin>>c;case7用来输出所有学生的数据:case 7:/输出所有学生数据cout<<"所有学生数据如下:"<<endl;ifstream file;file.open("f1.txt",ios:in);cout<<file.rdbuf();file.close();break;case

34、用来统计每个人的平均成绩:case 8:if(i=0)cout<<"系统中没有输入数据,请先输入数据!"<<endl;break;for(int m=0;m<i;m+)cout<<"姓名:"<<(*sm).name<<" 学号:"<<(*sm).number <<" 总分:"<<(*sm).get_sum()<<" 均分:"<<(*sm).get_aver()<&l

35、t;endl;break;case9用来统计每科的不合格人数:case 9:if(i=0)cout<<"系统中没有输入数据,请先输入数据!"<<endl;break;int m,n,k,j;m=0;n=0;k=0;for(j=0;j<i;j+) /计算不合格人数if(sj->math2<60)m+;if(sj->cyuyan2<60)n+;if(sj->english2<60)k+;cout<<"数学不及格人数为:"<<m<<endl;cout<&

36、lt;"c+不及格人数为:"<<n<<endl;cout<<"英语不及格人数为:"<<k<<endl;break;case10用来进行排名:case 10: /按总分排名if(i=0)cout<<"系统中没有输入数据,请先输入数据!"<<endl;break;int h,g,n;int j=0;float a100,temp;for(g=0;g<i;g+) /进行排序aj=(*sg).get_sum();j+;for(h=0;h<i;h+)for(n=0;n<i-h;n+)if(an>an+1)temp=an;an=an+1;an+1=temp;for(n=1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论