《高级程序设计语言》课程设计成果报告=学生成绩管理系统设计与实现_第1页
《高级程序设计语言》课程设计成果报告=学生成绩管理系统设计与实现_第2页
《高级程序设计语言》课程设计成果报告=学生成绩管理系统设计与实现_第3页
《高级程序设计语言》课程设计成果报告=学生成绩管理系统设计与实现_第4页
《高级程序设计语言》课程设计成果报告=学生成绩管理系统设计与实现_第5页
已阅读5页,还剩50页未读, 继续免费阅读

下载本文档

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

文档简介

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

2、的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 系统设计目的11.1 课程实训目的11.2 课程实训的基本要求1第2章 系统实现思路22.1 问题描述22.2 功能要求2第3章 系统详细设计33.1 模块框架图33.2 do while 语句33.3 case 语句4第4章 系统调试运行194.1 运行界面展示194.2 数据录入界面展示204.3 数据输出展示214.4 排名展示22课程设计体会23参考文献24第1章 系统设计目的1.1 课程实训目的为了进一步巩固C+程序设计课程的只是,深刻把握C+语言的重要概念及基本语法,锻炼自己熟练的运用C+语言设计程序解决实际问题的

3、能力,通过这一周的课程实训,巩固所学 C+语言基本知识,掌握Visual Studio C+开发工具的运用,掌握结构化程序设计的主题思想,把所学课程相关知识加以融会贯通,以逐步求精的方法编制程序解决一些实际的问题,全面掌握C+语言的编程思想,为后续课程的学习打下坚实的基础,为将来编写软件积累一些典型的案例处理经验。1.2 课程实训的基本要求要求通过查阅与设计课题有关的文献资料,并自学与其相关内容,掌握Visual C+6.0集成开发环境的使用,每人独立完成课程设计全部内容,具体要求如下:(1)对系统进行功能模块分析、控制模块分析正确(2)系统设计要能尽力完成题目所要求的功能。(3)编程简练,可

4、用,尽可能的使系统的功能更加完善和全面(4)说明书、流程图要清楚。第2章 系统实现思路2.1 问题描述对至少一个班级,N个学生,每个学生至少三门课程,该系统实现对班级成绩的录入、显示、修改、排序等操作的管理。课程设计题目:学生成绩管理系统设计与实现。2.2 功能要求 (1) 设计四个类,包括学生类(描述学生基本信息);成绩类:班级类;课程类(描述课程信息:课程编号,科目名称,如高等数学,大学英语等);(2) 学生成绩及课程信息用文件保存,程序执行时从文件读入;(3) 能按学期,按班级完成对学生成绩的录入、修改,能按班级统计学生的成绩;(4) 求学生的总分及平均分,并能根据学生的平均成绩进行排序

5、,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单。 设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比 计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比) 显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息。分单人显示和以班输出(班成绩单格式输出到文件) 注意,至少应包含一个班、30人、三门课第3章 系统详细设计3.1 模块框架图程序中包含类和主函数,类构成了程序的数据管理和存放区。在主函数中包括多种功能。一类为依托构成程序框架,在主函数中实现每一个功能。类与功能共同构成程序框架。具

6、体内容如图3-1:学生成绩管理系统操作查询成绩统计排名录入增加删除修改总成绩姓名所有成绩输出学生平均成绩优秀人数不及格人数按总成绩排名数学成绩排名C+成绩排名英语成绩排名图3-1 模块框架图3.2 do while语句 do while 语句实现判断输入的正确性do /判断输入是否正确cinp;if(p=1&p=14)chris1=1;elsecout指令错误!请重新输入:endl;while(chris1=0);3.3 case 语句通过case语句选择不同功能进行操作case 1 进行数据的录入case 1: /数据录入char c;char name20;int number;float

7、 math,cpp,english,mathp,cppp,englishp,baif,mathz,cppz,engz,sum;docout请输入姓名name;cout请输入学号number;cout请输入数学成绩math;cout请输入c+成绩cpp;cout请输入英语成绩english;cout请输入数学平时成绩mathp;cout请输入c+平时成绩cppp;cout请输入英语平时成绩englishp;cout请输入成绩百分比baif;fstream outfile,infile;outfile.open(f1.txt,ios:out|ios:app);if(!file)coutf1.txt

8、 can not open.n;return 0;outfilenameendl学号:numberendl数学成绩mathendlc+成绩:cppendl外语成绩:englishendl数学平时成绩mathpendlc+平时成绩cpppendl英语平时成绩englishpendl综合成绩math*baif+mathp*(1-baif)+cpp*baif+cppp*(1-baif)+english*baif+englishp*(1-baif)endl;outfile.close();infile.open(f1.txt,ios:in);if(!file)coutf1.txt can not op

9、en.n;return 0;char ch;while(infile.get(ch)coutch;coutendl;infile.close();j+;si=new Chengji(number,name,math,cpp,english,mathp,cppp,englishp,baif,mathz,cppz,engz);i+;cout数据录入成功,想继续吗(y/n)c;chris1=0;doif(c!=y&c!=n)cout指令错误!请重新输入!c;elsechris1=1;while(chris1=0);while(c=y);break;case 2 进行数据的增加case 2: /增加学

10、生数据char name20;int number;float math,cpp,english,mathp,cppp,englishp,mathz,cppz,engz;char c;docout请输入您要增加的学生的名字:name;cout请输入你要增加的学生的学号:number;cout请输入数学成绩math;cout请输入c+成绩cpp;cout请输入英语成绩english;cout请输入数学平时成绩mathp;cout请输入c+平时成绩cppp;cout请输入英语平时成绩englishp;cout请输入成绩百分比baif;fstream outfile,infile;outfile.o

11、pen(f1.txt,ios:out|ios:app);if(!file)coutf1.txt can not open.n;return 0;outfilename 学号:number 数学成绩math c+成绩:cpp外语成绩:english 数学平时成绩mathp c+平时成绩cppp 英语平时成绩englishpendl;outfile.close();infile.open(f1.txt,ios:in);if(!file)coutf1.txt can not open.n;return 0;char h;while(infile.get(h)couth;coutendl;infile

12、.close();j+;si=new Chengji(number,name,math,cpp,english,mathp,cppp,englishp,baif,mathz,cppz,engz);i+;cout数据录入成功,想继续吗(y/n)c;if(c!=y&c!=n)cout指令错误!请重新输入!c;while(c=y);break;case 3 进行信息的删除case 3: /删除学生信息char c;string xingming,line,str,name;doifstream fin(f1.txt);fstream outfile(f2.txt,ios:trunc|ios:out)

13、;cout请输入您要删除的学生的姓名:xingming;while(!fin.eof()getline(fin,line);istringstream stream(line);name=line.substr(0,line.find( ,0);if(name!=xingming)outfilelineendl;outfile.close();fin.close();fstream f(f1.txt,ios:trunc|ios:out);ifstream outf(f2.txt);foutf.rdbuf();outf.close();f.close();cout数据删除成功,想继续删除吗(y/

14、n)c;if(c!=y&c!=n)cout指令错误!请重新输入!c;while (c=y);break;case 4 尽心数据的修改case 4: /修改数据string sname,line,str,name;int nu;float eng,ma,com,map,cpp,engp;int flag;char c;if(i=0)cout系统中没有输入数据,请先输入数据endl;break;doflag=0;coutname;fstream fin(f1.txt,ios:in);ofstream outfile(f.txt,ios:trunc|ios:out);coutendl;while(!

15、fin.eof()getline(fin,line);istringstream stream(line);sname=line.substr(0,line.find(,0);if(name!=sname)outfilelineendl;else flag=1;fin.close();if(flag=1)coutnamenumacomengmapcppengp;coutendl;outfilename 学号:nu 数学成绩:ma c+成绩:com 外语成绩:eng 数学平时成绩map c+平时成绩cpp 英语平时成绩:engpendl;outfile.close();fstream outf(

16、f1.txt,ios:trunc|ios:out);fstream inf(f.txt,ios:in);outfinf.rdbuf()endl;outf.close();inf.close();if(flag=0)cout对不起,你要修改的学生不存在!请查证后输入!endl;coutc;coutendl;if(c!=y&c!=n)cout指令错误!请重新输入!c;while(c=y);break;case 实现按总分查寻case 5: /按总分查询int j=0;float SUM;char c;int flag;if(i=0)cout系统中没有输入数据,请先输入数据!endl;break;d

17、oflag=0;cout请输入您要查询的学生的总成绩:SUM;for(int j=0;jgetsum()=SUM)flag=1;cout您要查询的学生是:(*sj).nameendl;cout该生的信息为:endl;cout 学号:(*sj).num 数学分数:(*sj).math*(*sj).baif+(*sj).mathp*(1-(*sj).baif) c+分数(*sj).cpp*(*sj).baif+(*sj).cppp*(1-(*sj).baif) 英语分数(*sj).english*(*sj).baif+(*sj).englishp*(1-(*sj).baif)endl;if(fla

18、g=0)cout对不起!您要查询的学生不存在!endl;coutc;if(c!=y&c!=n)cout指令错误!请重新输入c;while(c=y);break;case 6 实现按学生姓名查询case 6: /按姓名查询char n20;char c;int j=0;int flag;if(i=0)cout系统中没有输入数据,请先输入数据!endl;break;doflag=0;cout请输入要查询的名字n;for(int j=0;ji;j+)if(n=(*sj).name)flag=1;cout该生的信息为: 学号:(*sj).num 数学分数:(*sj).math*(*sj).baif+(

19、*sj).mathp*(1-(*sj).baif) c+分数(*sj).cpp*(*sj).baif+(*sj).cppp*(1-(*sj).baif) 英语分数(*sj).english*(*sj).baif+(*sj).englishp*(1-(*sj).baif)endl;if(flag=0)cout对不起!您要查询的学生不存在!endl;coutc;if(c!=y&c!=n)cout指令错误!请重新输入c;while(c=y);break;case 7 实现学生数据的输出 case 7: /输出所有学生数据cout所有学生数据如下:endl;ifstream file;file.ope

20、n(f1.txt,ios:in);coutfile.rdbuf();file.close();break;case 8实现学生平均成绩的统计 case 8: / 统计每个学生的平均成绩if(i=0)cout系统中没有输入数据,请先输入数据!endl;break;for(int m=0;mi;m+)cout(*sm).name 学号(*sm).num 总分 (*sm).getsum() 均分(*sm).getaver ()endl;break; case 9 实现各学科优秀人数的统计 case 9: /统计各学科优秀人数if(i=0)cout系统中没有输入数据,请先输入数据!endl;break

21、;int m,n,k,j;m=0;n=0;k=0;for(j=0;jgetmath()90)m+;if(sj-getcpp()90)n+;if(sj-geteng()90)k+;cout数学优秀人数为:mendl;coutc+优秀人数为:nendl;cout英语优秀人数为:kendl;break;case 10 实现各学科不及格人数的统计 case 10: /统计各学科不及格人数if(i=0)cout系统中没有输入数据,请先输入数据!endl;break;int m,n,k,j;m=0;n=0;k=0;for(j=0;jgetmath()getcpp()geteng()60)k+;cout数学

22、不及格人数为:mendl;coutc+不及格人数为:nendl;cout英语不及格人数为:kendl;break;case 11 实现按总分排名case 11: /按总分排名if(i=0)cout系统中没有输入数据,请先输入数据!endl;break;int h,g,n;int j=0;float a100,temp;for(g=0;gi;g+)aj=(*sg).getsum();j+;for(h=0;hi;h+)for(n=0;nan+1)temp=an;an=an+1;an+1=temp;for(n=1;n=i;n+)coutanendl;break;case 12 实现按数学成绩排名ca

23、se 12: /按数学成绩排名if(i=0)cout系统中没有输入数据,请先输入数据!endl;break;int h,g,n;int j=0;float a100,temp;for(g=0;gi;g+)aj=(*sg).getmath();j+;for(h=0;hi;h+)for(n=0;nan+1)temp=an;an=an+1;an+1=temp;for(n=1;n=i;n+)coutanendl;break;case 13 实现按c+成绩的排名case 13: /按c+成绩排名if(i=0)cout系统中没有输入数据,请先输入数据!endl;break;int h,g,n;int j=

24、0;float a100,temp;for(g=0;gi;g+)aj=(*sg).getcpp();j+;for(h=0;hi;h+)for(n=0;nan+1)temp=an;an=an+1;an+1=temp;for(n=1;n=i;n+)coutanendl;break;case 14 实现按英语成绩排名case 14: /按英语成绩排名if(i=0)cout系统中没有输入数据,请先输入数据!endl;break;int h,g,n;int j=0;float a100,temp;for(g=0;gi;g+)aj=(*sg).geteng();j+;for(h=0;hi;h+)for(n

25、=0;nan+1)temp=an;an=an+1;an+1=temp;for(n=1;n=i;n+)coutanendl;break;第4章 系统调试运行4.1 运行界面展示 运行程序展示学生成绩查询系统界面供用户选择操作。具体内容如图4-1:图4-1 主界面4.2 数据录入界面展示 选择操作录入学生数据并输出以供用户核对。具体内容如图4-2图4-2 数据录入4.3 数据输出展示选择将学生数据输出供用户管理。具体内容如图4-3:图4-3 输出所有学生数据4.4 排名展示用户可对学生成绩进行管理排名方便管理。具体内容如图4-4:图4-4 按总分查询排名课程设计体会经过一个学期对c+程序设计的学习

26、,我学习到了基本的理论知识,了解到了c+语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下坚实的基础。在老师和同学的帮助下,通过自己的努力,终于完成了这次学生成绩查询系统的简单课程设计。我经过这段时间的编程,对其中的艰辛,我是深有体会。从刚开始的选择程序、理解程序到后来的调试程序以及改进程序这个过程中,我遇到了各种各样的困难和挫折。但是我坚定信念,对自己充满了信心,想尽一切办法克服重重困难。通过课程设计的训练,我进一步学习和掌握了对程序的设计和编写,从中体会到了面向对象程序设计的方便和巧妙。懂得了在进行编写一个程序之前,要有明确的目标和整体的设计思想。另外某些具体的细节内容也是相当

27、的重要。这些宝贵的编程思想和从中摸索到的经验都是在编程的过程中获得的宝贵财富。这些经验对我以后的编程会有很大的帮助,我要好好利用。参考文献1谭浩强编著 c程序设计题解与上机指导 清华大学出版社2吕凤煮著 C+语言基础教程 清华大学出版社3Robert L.Kruse著 C+数据结构与程序设计 清华大学出版社4谭浩强编著 c+面向对象程序设计5钱能编著 c+程序设计教程 清华大学出版社6LippmanBarabara C+ Primer 人民邮电出版社7Bjarne StroustrupThe C+ Programming Language机械工业出版社#include#include#incl

28、ude#include#includeusing namespace std;class Student /声明学生类public:Student(int n,string num) /构造函数num=n;name=num; protected:int num;string name;class Kecheng /声明课程类public:Kecheng(float ma,float cp,float eng)/构造课程类函数math=ma;cpp=cp;english=eng;protected:float math;float english;float cpp;class Chengji:

29、public Student,public Kecheng /声明成绩类public:Chengji(int n,string nam,float ma,float cp,float eng,float map,float cpp,float engp,float bf,float mz,float cz,float ez): /构造成绩类 继承Student(n,nam),Kecheng(ma,cp,eng),mathp(map),cppp(cpp),englishp(engp),baif(bf),mathz(mz),cppz(cz),englishz(ez)mathp=map;cppp=c

30、pp;englishp=engp;baif=bf;mathz=mz;cppz=cz;englishz=ez;float getsum();float getmath();float getcpp();float geteng();float getaver();friend void main(); /将主函数定义为友元函数protected:float mathp;float cppp;float englishp;float baif;float mathz;float cppz;float englishz;float Chengji:getsum() /定义类外函数 float sum

31、;sum=math*baif+mathp*(1-baif)+cpp*baif+cppp*(1-baif)+english*baif+englishp*(1-baif);return sum;float Chengji:getaver()float average;average=getsum()/3;return average;float Chengji:getmath()float mz;mz=math*baif+mathp*(1-baif);return mz;float Chengji:getcpp()float cz;cz=cpp*baif+cppp*(1-baif);return

32、cz;float Chengji:geteng()float ez;ez=english*baif+englishp*(1-baif);return ez;void main() /主函数cout*欢迎来到学生成绩查询系统*endl;cout请选择需要的操作!endl;cout选择相关操作请输入相对的括号里的阿拉伯数字及字母!endl;cout(1)数据录入endl;cout(2)增加学生endl;cout(3)删除学生endl;cout(4)修改数据endl;cout查询:endl;cout(5)按总成绩查询endl;cout(6)按姓名查询endl;cout(7)输出所有学生的数据endl

33、;cout成绩统计:endl;cout(8)每个学生的平均成绩endl;cout(9)各个学科优秀人数endl;cout(10)各个学科不及格人数endl;cout排名endl;cout(11)按总分查询排名endl;cout(12)按数学成绩查询排名endl;cout(13)按c+成绩查询排名endl;cout(14)按英语成绩查询排名endl;cout(15)退出p;if(p=1&p=11)chris1=1;elsecout指令错误!请重新输入:endl;while(chris1=0);doswitch(p)case 1: /数据录入char c;char name20;int numbe

34、r;float math,cpp,english,mathp,cppp,englishp,baif,mathz,cppz,engz,sum;docout请输入姓名name;cout请输入学号number;cout请输入数学成绩math;cout请输入c+成绩cpp;cout请输入英语成绩english;cout请输入数学平时成绩mathp;cout请输入c+平时成绩cppp;cout请输入英语平时成绩englishp;cout请输入成绩百分比baif;fstream outfile,infile;outfile.open(f1.txt,ios:out|ios:app);if(!file)cou

35、tf1.txt can not open.n;return ;outfilenameendl学号:numberendl数学成绩mathendlc+成绩:cppendl外语成绩:englishendl数学平时成绩mathpendlc+平时成绩cpppendl英语平时成绩englishpendl综合成绩math*baif+mathp*(1-baif)+cpp*baif+cppp*(1-baif)+english*baif+englishp*(1-baif)endl;outfile.close();infile.open(f1.txt,ios:in);if(!file)coutf1.txt can

36、not open.n;return ;char ch;while(infile.get(ch)coutch;coutendl;infile.close();j+;si=new Chengji(number,name,math,cpp,english,mathp,cppp,englishp,baif,mathz,cppz,engz);i+;cout数据录入成功,想继续吗(y/n)c;chris1=0;doif(c!=y&c!=n)cout指令错误!请重新输入!c;elsechris1=1;while(chris1=0);while(c=y);break;case 2: /增加学生数据char n

37、ame20;int number;float math,cpp,english,mathp,cppp,englishp,mathz,cppz,engz;char c;docout请输入您要增加的学生的名字:name;cout请输入你要增加的学生的学号:number;cout请输入数学成绩math;cout请输入c+成绩cpp;cout请输入英语成绩english;cout请输入数学平时成绩mathp;cout请输入c+平时成绩cppp;cout请输入英语平时成绩englishp;cout请输入成绩百分比baif;fstream outfile,infile;outfile.open(f1.txt,ios:out|ios:app);if(!file)coutf1.txt can not open.n;return ;outfilename 学号:number 数学成绩math c+

温馨提示

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

评论

0/150

提交评论