




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 软件工程1341 专业课程: 高级程序设计语言指导教师: 2014 年 6 月 27 日题 目学生成绩管理系统设计与实现考核项目考核内容得分平时考核(20分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 系统设计目的11.1 课程设计题目11.2 课程设计的目的11.3 课程设计的要求11.4 系统设计实现的内容1第2章 系统实现思路32.1 系统分析32.2 系统功能模块32.3 系统设计与实现4第3章 系统详细设计53.1 建立4个类53.2 编写各个功能函数体7第4章 系统调试运行154.1 编写源代码154.2 编译154.3 执行15课程设计体会21参考文献22第1章 系统设计目的1.1 课程设计题目通过一年的学习,为了检验学生们的学习成果,老师布置了一个任务,就是设计一个常见的、并且日常生活中会用到的系统,用来进行记录学生的各科成绩、统计班级学习成绩以便进行教学质量评估、以及统计各班的及格率。这个系统就是学生成绩管理系统。1.2 课程设计的目的通过课程设计,学生在下述各方面的能力应该得到锻炼:巩固C+课程的基本知识和方法,通过该系统的实现,进一步培养学生理论联系实际、综合分析和解决问题的能力;掌握自顶而下的结构化程序设计的方法;进一步掌握在集成环境中程序调试的方法。1.3 课程设计的要求1根据C+课程所学的概念、理论与方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序来实现设计课程内容中的全部功能;2设计主控模块程序,对给出的程序源代码要给出各部分的详细注释;3自己根据能力及需要添加相应功能模块,增强模拟系统功能;4最终设计报告应包含系统的功能分析、系统的功能模块设计与实现、主要程序流程图、调试运行、课程设计心得与体会等内容。1.4 系统设计实现的内容这次程序设计的内容就是编写一个关于学生成绩管理系统的程序,通过设计的程序可以对各个学生的成绩信息进行录入、修改、增加等一系列操作,以及可以查询学生在所在班级的排名、平均分、总分等情况,并且对学生所在班级的总成绩可以进行评估。1设计四个类:(1)学生类:描述学生基本信息;(2)成绩类:设计的课程分别对应的成绩,如数学、英语、C+;(3)班级类:每位学生对应的班级;(4)课程类:描述课程信息,课程编号、课程名称(如数学、英语、C+);2学生成绩及课程信息用文件保存,程序执行时从文件读入;3能按学期,按班级完成对学生成绩的录入、修改;4能按班级统计学生的成绩;5求学生的总分及平均分;6根据学生的平均成绩进行排序;7查询学生成绩;8显示不及格科目及学生名单;9按班级输出学生的成绩单。 第2章 系统实现思路2.1 系统分析此次的学生成绩管理系统是生活中比较常用的系统,可以帮助教师更便捷的整理学生及班级的成绩、查看自己的教学质量效果。要先设计一个程序,那么,就要首先了解程序使用者的需求。所以要先对系统进行需求分析。经过需求分析,系统应有功能包括:(1)能对学生各科成绩进行录入;(2)能对学生的成绩进行增加;(3)能对学生的成绩进行删除;(4)能对学生的成绩进行修改;(5)能对学生的成绩按总成绩,姓名,进行查询;(6)能输出学生的所有数据;(7)能进行成绩统计;(8)能进行总分查询排名。2.2 系统功能模块此次设计的系统的主要功能就是对各个学生的各个学科成绩进行录入、增加、修改、删除以及求平均分、求总分等操作。在班级为单位的操作中,可以查询学生在班级的排名,以及班级各个学科的不及格人数、以便对教学质量的评估。1学生成绩管理系统分为:(1)学生成绩录入、增加、删除、修改;(2)数据查询;(3)成绩统计;(4)排名显示。2模块框架图模块框架图就是系统的整个大概流程,学生成绩管理系统可以分为操作、查询、成绩统计及按总成绩排名等操作。其中操作包括对学生信息的录入、增加、删除及修改。查询包括总成绩查询、按学生姓名查询、及输出所有学生的成绩。成绩统计又分为每个学生的平均成绩及各科不及格的人数。流程图如图2-1。学生成绩管理系统操作查询成绩统计按总成绩排名录入增加删除修改总成绩查询姓名每个学生的平均成绩各科不及格的人数输出所有学生的成绩图2-1 模块框架图2.3 系统设计与实现通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。应用系统主控界面包括记录编辑和记录查询等功能模块。记录编辑功能完成学生成绩记录编辑和记录查询功能。记录查询功能可以对数据各分类的记录进行查询。1界面设计程序运行后会出现一个简捷的窗口,便于用户查询数据。2功能设计与实现通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。应用系统主控界面包括记录编辑和记录查询等功能模块。记录编辑功能完成学生成绩记录编辑和记录查询功能。记录查询功能可以对数据各分类的记录进行查询。第3章 系统详细设计3.1 建立4个类1建立学生类,至少包括姓名、学号、各科成绩以及成绩平均值和总分。class Tstu char name20; int number; float math,cpp,english,average,sum; public: Tstu() ; Tstu ( char n20, int num,float ma,float cj,float eng ) ; float getsum(); float getaver(); friend void main(); ;2建立成绩类,该类是学生成绩记录的集合。其成员函数则是问题中要求的录入、增加、修改、删除、排序、求和、求平均值等各种操作。Tstu:Tstu ( char n20, int num,float ma,float cj,float eng ) strcpy(name,n); number=num; math=ma; cpp=cj; english=eng; float Tstu:getsum() sum=cpp+english+math; return sum; float Tstu:getaver() average=getsum()/3; return average; 3建立班级类,能够准确进行查找学生所在班级信息、以及班级总成绩等操作。class gradespublic: string major; int cla_id; int peop_num; multiset stu; void fread(int n); void revise(int t_ID); void display(void); void seek(int t_ID); void failshow(void); ;4建立课程类,能够记录学生的课程信息,以及学生课程对应的分数。class course public: int cou_id; string cou_name; int mark; ;3.2 编写各个功能函数体1数据录入:录入学生的基本信息以及各科的考试成绩。char c;char name20;int number;float math,cpp,english;docout请输入姓名:name;cout请输入学号:number;cout请输入数学成绩:math;cout请输入C+成绩:cpp;cout请输入英语成绩:english;fstream outfile,infile;outfile.open(f1.txt,ios:out|ios:app);if(!file) coutf1.txt can not open.n;return;outfilename 学号:number 数学成绩:math C+成绩:cpp 外语成绩:englishendl;outfile.close();infile.open(f1.txt,ios:in);if(!file) coutf1.txt can not open.n;return;2增加学生:输入需要增加的学生的信息以及各科成绩。char name20;int number;float math,cpp,english;char c;docout请输入您要增加的学生的姓名:name;cout请输入你要增加的学生的学号:number;cout请输入数学成绩:math;cout请输入C+成绩:cpp;cout请输入英语成绩:english;fstream outfile,infile;outfile.open(f1.txt,ios:out|ios:app);if(!file)coutf1.txt can not open.n;return;outfilename 学号:number 数学成绩:math C+成绩:cpp 外语成绩:englishendl;outfile.close();infile.open(f1.txt,ios:in);if(!file)coutf1.txt can not open.n;return;3删除学生:删除需要删除的学生的信息以及各科成绩。char c;string xingming,line,str,name;do ifstream fin(f1.txt);fstream outfile(f2.txt,ios:trunc|ios:out);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/n)endl;4修改数据:修改需要修改的学生的信息以及各科成绩。string sname,line,str,name;int nu;float eng,ma,com;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(!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)coutnamenumacomeng;coutendl;outfilename 学号:nu 数学成绩:ma C+成绩:com 外语成绩:engendl;outfile.close();fstream outf(f1.txt,ios:trunc|ios:out);fstream inf(f.txt,ios:in);outfinf.rdbuf()endl;outf.close();inf.close();if(flag=0)cout对不起,您要修改的学生不存在!请查证后输入!endl;cout想继续修改吗(y/n):;5按总成绩查询:根据学生的总成绩进行查询。int j=0;float SUM;char c;int flag;if(i=0)cout系统中没有输入数据,请先输入数据!endl;break;doflag=0;cout请输入您要查询的学生的总成绩:SUM;for(int j=0;jgetsum()=SUM)flag=1;cout您要查询的学生是:(*sj).nameendl;cout该生的信息为:endl;cout 学号:(*sj).number 数学分数:(*sj).math c+分数:(*sj).cpp 英语分数(*sj).englishendl;if(flag=0)cout对不起!您要查询的学生不存在!endl;cout是否继续查?(y/n):;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(strcmp(n,(*sj).name)=0)flag=1;cout您要查询的学生是:(*sj).nameendl;cout该生的信息是:学号:(*sj).number 数学分数:(*sj).mathc+分数:(*sj).cpp英语分数:(*sj).englishendl;if(flag=0)cout对不起您要查询的学生不存在,请查证后再输入!endl;cout您想继续查询吗?(y/n):;7输出所有学生的数据:输出系统中录入的所有学生的信息。cout所有学生数据如下:endl;ifstream file;file.open(f1.txt,ios:in);coutfile.rdbuf();file.close();break;8每个学生的平均成绩:计算每个学生的平均成绩。if(i=0)cout系统中没有输入数据,请先输入数据!endl;break;for(int m=0;mi;m+)cout(*sm).name 学号:(*sm).number 总分:(*sm).getsum() 均分:(*sm).getaver()endl;break;9各科不及格人数:统计各科没有几个的学生人数。if(i=0)cout系统中没有输入数据,请先输入数据!endl;break;int m,n,k,j;m=0;n=0;k=0;for(j=0;jmathcppenglish60)k+;cout数学不及格人数为:mendl;coutc+不及格人数为:nendl;cout英语不及格人数为:kendl;break;10按总分查询排名:按照学生的总分进行查询每个学生的名次。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;coutw;coutendl;if(w!=y&w!=n)cout 您输入的指令有误!请重新输入:endl;elseflag=1;while(flag=0);第4章 系统调试运行4.1 编写源代码按照所给要求,运用C+程序设计的原理及步骤编写源程序代码。4.2 编译编译程序把一个源程序翻译成目标程序的工作过程,分析过程中发现有语法错误,给出提示信息。4.3 执行1主菜单界面,如图4-1:图4-1 主菜单界面2各操作界面:(1)数据录入,如图4-2: 图4-2 数据录入(2)增加学生,如图4-3: 图4-3 增加学生 (3)删除学生,如图4-4: 图4-4 删除学生(4)修改数据,如图4-5: 图4-5 修改数据(5)按总成绩查询,如图4-6: 图4-6 按总成绩查询(6)按姓名查询,如图4-7: 图4-7 按姓名查询(7)输出所有学生的数据,如图4-8: 图4-8 输出所有学生的数据(8)每个学生的平均成绩,如图4-9: 图4-9 每个学生的平均成绩(9)各科不及格人数,如图4-10: 图4-10 各科不及格人数(10)按总分查询排名,如图4-11: 图4-11 按总分查询排名课程设计体会学生成绩管理系统是一个很实际例子,生活中比较常见,也经常会用到。同时要求学生的综合能力也很高,不仅考察了对单个知识点的掌握,更考察了所有知识点的综合运用熟练程度。在编写程序的过程中,更要细心,稍微有点马虎可能就会出错,引来不必要的麻烦。这次编写的系统的重点就是要会建立四个类。一个是学生类,用来存放一个学生的成绩记录,相当于一个结构体的功能。还有就是学生成绩类,该类用来存放多个学生的成绩记录。难点就是成绩类里的各个功能的实现。总的来说,添加,显示,查找,这三个功能比较容易,但是,删除,保存,加载这三个功能就需要认真费点脑筋了。我认为,在课程设计体会中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。作为一个软件工程专业的学生来说,多加练习是少不了的,只有多加练习,才能让自己学到的知识联系起来,也不会在用的时候觉得生疏。而且编写程序一定要有耐心,尽量少出错,提高编写效率。参考文献1谭浩强.C+面向对象程序设计.清华大学出版社2谭浩强.C语言程序设计.清华大学出版社3郑振杰.C+程序设计.人民邮电出版社4柴欣.C/C+程序设计.河北大学出版社5余苏宁、王明福.C+程序设计.高等教育出版社6吕凤翥.C+语言程序设计(第2版).电子工业出版社#include #include #include#include#includeusing namespace std; class Tstu char name20; int number; float math,cpp,english,average,sum; public: Tstu() ; Tstu ( char n20, int num,float ma,float cj,float eng ) ; float getsum(); float getaver(); friend void main(); Tstu:Tstu ( char n20, int num,float ma,float cj,float eng ) strcpy(name,n); number=num; math=ma; cpp=cj; english=eng; float Tstu:getsum() sum=cpp+english+math; return sum; float Tstu:getaver() average=getsum()/3; return average; 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; cout成绩统计:endl; cout(8)每个学生的平均成绩endl; cout(9)各科不及格人数endl; cout排名:endl; cout(10)按总分查询排名endl; cout(11)退出endl; cout选择相关操作请输入相对的括号里的阿拉伯数字及字母!p; if(p=1&p=11) chris1=1; else cout指令错误!请重新输入:endl; while(chris1=0); do switch(p) case 1: char c; char name20; int number; float math,cpp,english; do cout请输入姓名:name; cout请输入学号:number; cout请输入数学成绩:math; cout请输入C+成绩:cpp; cout请输入英语成绩:english; fstream outfile,infile; outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; outfilename 学号:number 数学成绩:math C+成绩:cpp 外语成绩:englishendl; outfile.close(); infile.open(f1.txt,ios:in); if(!file) coutf1.txt can not open.n; return; char ch; while(infile.get(ch) coutch; coutendl; infile.close(); j+; si=new Tstu(name, number,math, cpp, english); i+; cout数据录入成功,想继续录入吗(y/n)c; chris1=0; do if(c!=y&c!=n) cout指令错误!请重新输入!c; else chris1=1; while(chris1=0); while(c=y); break; case 2: char name20; int number; float math,cpp,english; char c; do cout请输入您要增加的学生的姓名:name; cout请输入你要增加的学生的学号:number; cout请输入数学成绩:math; cout请输入C+成绩:cpp; cout请输入英语成绩:english; fstream outfile,infile; outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; outfilename 学号:number 数学成绩:math C+成绩:cpp 外语成绩:englishendl; outfile.close(); infile.open(f1.txt,ios:in); if(!file) coutf1.txt can not open.n; return; char h; while(infile.get(h) couth; coutendl; infile.close(); j+; si=new Tstu(name,number, math, cpp, english); i+; cout数据录入成功,想继续录入吗(y/n)c; if(c!=y&c!=n) cout指令错误!请重新输入!c; while(c=y); break; case 3: char c; string xingming,line,str,name; do ifstream fin(f1.txt); fstream outfile(f2.txt,ios:trunc|ios:out); 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/n)c; if(c!=y&c!=n) cout指令错误!请重新输入!c; while(c=y); break; case 4: string sname,line,str,name; int nu;float eng,ma,com;int flag;char c;if(i=0)cout系统中没有输入数据,请先输入数据!endl;break;do flag=0; coutname; fstream fin(f1.txt,ios:in); ofstream outfile(f.txt,ios:trunc|ios:out); coutendl; while(!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) coutnamenumacomeng;coutendl;outfilename 学号:nu 数学成绩:ma C+成绩:com 外语成绩:engendl; outfile.close();fstream outf(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 指令错误!请重新输入!endlc; while(c=y);break; case 5: int j=0;float SUM;char c;int flag; if(i=0)cout系统中没有输入数据,请先输入数据!endl;break; do flag=0; cout请输入您要查询的学生的总成绩:SUM; for(int j=0;jgetsum()=SUM) flag=1;cout您要查询的学生是:(*sj).nameendl;cout该生的信息为:endl;cout 学号:(*sj).number 数学分数:(*sj).math c+分数:(*sj).cpp 英语分数(*sj).englishendl; if(flag=0)cout对不起!您要查询的学生不存在!
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 港口交通仿真建模-洞察及研究
- 铁合金湿法冶炼工新员工考核试卷及答案
- 理疗康复在抖音的推广策略
- 糖果成型工岗前考核试卷及答案
- 蜂产品加工工5S管理考核试卷及答案
- 课件的制作培训稿
- 手术急救类设备组装调试工成本控制考核试卷及答案
- 铜电解液脱铜项目可行性研究报告
- 急救安全知识培训心得课件
- 水声压电器件制造工理论知识考核试卷及答案
- 城市更新中装饰工程重点及难点措施
- 惠普尔养障体肺炎诊疗要点解析
- 棒针编织教学课件
- 护士关爱活动方案
- 职业健康:放射卫生知识培训计划
- 口腔团队的管理与建设
- 公司维护人员薪酬管理制度
- 2025至2030年中国宠物机器狗行业投资前景及策略咨询报告
- 公司关工委活动方案
- 守纪律小学生课件教学
- 链家签约文件合同模板
评论
0/150
提交评论