已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 软件工程 1341 专业课程: 高级程序设计语言指导教师: 2014 年 6 月 27 日题 目学生成绩管理系统设计与实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 系统设计目的11.1 课程设计目的11.2 系统设计要求1第2章 系统实现思路22.1设计程序22.2系统功能的分析22.3程序流程图2第3章 系统详细设计33.1 程序首页33.2录入模块63.3 增加模块73.4删除模块103.5修改模块113.6查询模块123.7统计模块13第4章 系统调试运行144.1 程序运行144.2 录入功能144.3增加功能154.4删除功能16课程设计体会17参考文献18第1章 系统设计目的1.1 课程设计目的在计算机领域中,任何好的创意和设计最终都需要通过高水平的程序设计实现,因此学习程序设计是计算机及相关专业学生必备的基本技能之一。为了使学生更好的学习和掌握这一基本技能,必须系统而全面地的安排程序设计课程设计,目的是通过具体的课程设计,不仅使学生能够进一步理解程序设计的基本概念,掌握基本的程序设计方法,培养良好的程序设计风格,同时还可以借助程序设计技巧的训练,培养学生抽象思维、逻辑思维及统筹规划的能力。1.2 系统设计要求(1)设计四个类,包括学生类(描述学生基本信息);成绩类;班级类;课程类(描述课程信息:课程编号,科目名称,如高等数学,大学英语等);(2)学生成绩及课程信息用文件保存,程序执行时从文件读入;(3)能按学期,按班级完成对学生成绩的录入、修改,能按班级统计学生的成绩;(4)求学生的总分及平均分,并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单。 设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比 计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比) 显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息。分单人显示和以班输出(班成绩单格式输出到文件) 注意,至少应包含一个班、30人、三门课 第2章 系统实现思路2.1设计程序采用现有的资源,先进的管理系统开发方案,充分利用学校现有的资源,减少开发中的时间和财力、物力、提高系统开发的水平和应用效果。系统就满足学校的需求,例如学生信息的录入、查询、更新等。系统就具备数据库维护功能,及时根据用户需求进行数据添加、删除、修改等操作。2.2系统功能的分析录入功能:为用户提供相应的录入功能。查询功能:为用户提供查询功能,可查询允许范围内的所有信息。维护功能:为用户提供查询及相应的修改,删除功能。返回功能:为用户提供相应操作后返回到主页面。2.3程序流程图 流程程序图是进行流程程序分析过程中最基本的工具,是程序分析中最基本、最重要的分析技术。它运用工序图标符号对生产现场的整个制造过程做详细的记录,以便对零部件、产品在整个制造过程中的生产、加工、检验、储存等环节待作详细的研究与分析,特别适用于分析生产过程中的成本浪费,提高经济效益。流程图:学生管理系统操作查询成绩统计按总成绩排名录入增加成绩删除修改每个学生的平均成绩输出姓.名各科不及格人数图2-3程序流程图第3章 系统详细设计3.1 程序首页 程序运行后会出现一个间接地窗口,便于用户查询数据。主函数用循环体以及switch语句实现功能选择。主界面展示*欢迎来到学生成绩查询系统*请选择需要的操作!(1)数据录入(2)增加学生(3)删除学生(4)修改数据 查询:(5)按总成绩查询(6)按姓名查询(7)输出所有学生的数据 成绩统计:(8)每个学生的平均成绩(9)各个学科不及格人数排名:(10)按总分查询排名(11)退出选择相关操作请输入相对的括号里的阿拉伯数字及字母!主程序代码void main() /主函数system(color 07e); /设置当前窗口的背景色和前景色 0 = 黑色 8 = 灰色/ 1 = 蓝色 9 = 淡蓝色/ 2 = 绿色 A = 淡绿色/ 3 = 浅绿色 B = 淡浅绿色/ 4 = 红色 C = 淡红色/ 5 = 紫色 D = 淡紫色/ 6 = 黄色 E = 淡黄色/ 7 = 白色 F = 亮白色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;elsecout指令错误!请重新输入:endl; while(chris1=0);doswitch(p)case 1:. /录入功能case 2:. /增加功能case 3:. /删除功能case 4:. /修改数据功能case 5:. /按成绩查询功能case 6:. /按姓名查询功能case 7:. /输出所有的数据case 8:. /输出学生的平均分case 9:. / /查询不及格人数 case 10:. /总成绩排名while(w=y);/循环语句结束 3.2录入模块 根据程序的要求,我们建立了录入功能的switch函数,要求用户输入数据,以便存入文档,这就实现了数据的录入。 case 1: /数据的录入 char c; /用于在小项中选择是否继续操作 char name20; int number; int banji; float pmath,pcpp,penglish,psum,bl,sum,sump; float math,cpp,english; do cout请输入姓名:name; cout请输入学号:number; cout请输入班级:banji; cout请输入数学成绩:math; cout请输入cpp成绩:cpp; cout请输入英语成绩:english; cout请输入平时数学成绩:pmath; cout请输入平时cpp成绩:pcpp; cout请输入平时英语成绩:penglish; cout平时成绩所占比例bl; sum=math+cpp+english; sump=pmath+pcpp+penglish; psum=sump*bl+sum*bl; fstream outfile,infile; /作一个文本文档在文件夹中用于显示所录入的数据3.3 增加模块 建立一个char的name的数组,用来对用户实现数据的增加,即增加学生的姓名、学号、班级、成绩等信息。 char name20; int number; int banji; float math,cpp,english,bl,sum,sump,psum; float pmath,pcpp,penglish; char c; do cout请输入您要增加的学生的姓名:name; cout请输入你要增加的学生的学号:number; cout请输入班级:banji; cout请输入数学成绩:math; cout请输入cpp成绩:cpp; cout请输入英语成绩:english; cout请输入平时数学成绩:pmath; cout请输入平时cpp成绩:pcpp; cout请输入平时英语成绩:penglish; cout平时成绩所占比例bl; sum=math+cpp+english; sump=pmath+pcpp+penglish; psum=sump*bl+sum*bl; fstream outfile,infile; outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; outfilename 学号:number 班级banji 数学成绩:math cpp成绩:cpp 外语成绩:english 平时数学成绩:pmath 平时cpp成绩:pcpp 平时外语成绩:penglish 平时总成绩sump 总成绩sum 总评成绩psumendl; 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 chengji(name,number, banji,math, cpp, english,pmath, pcpp, penglish); i+; cout数据录入成功,想继续录入吗(y/n)endl;3.4删除模块 为实现对久置、无用的信息进行删除,建立的删除文件,以便腾出其空间,这也是对程序的一个完善过程。 if(i=0) cout系统中没有输入数据,请先输入数据!endl;break; 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;3.5修改模块 为防止用户不慎输入错误信息,我们还建立了一个修改功能的文件,以实现用户在输入错误信息后可修改此信息。string sname,line,str,name;int bj;int nu;float eng,ma,com,peng,pma,pcom,bl;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) coutnamenubjmacomengpmapcompengbl;coutendl;outfilename 学号:nu 班级bj数学成绩:ma cpp成绩:com 外语成绩:eng平时数学成绩:pma 平时cpp成绩:pcom 平时外语成绩:peng 平时成绩所占比例blendl; 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;3.6查询模块用户既然可用程序进行信息的输入、存档,那么用户便可对信息的查询,用户只需输入相关的操作,便可查询出学生的姓名、学号、成绩等信息。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).banji 数学分数:(*sj).math cpp分数:(*sj).cpp 英语分数(*sj).english 平时数学分数:(*sj).pmath 平时cpp分数:(*sj).pcpp 平时英语分数(*sj).penglishendl;3.7统计模块为了更好的看出学生的成绩优略,程序中还设计了统计功能,把所有的学生的信息详细的展现出来,用户便可清晰的看到所需的信息。if(i=0) cout系统中没有输入数据,请先输入数据!endl;break; for(int m=0;mi;m+) cout(*sm).name 学号:(*sm).number班级(*sm).banji 总分:(*sm).getsum() 均分:(*sm).getaver()endl; break; 第4章 系统调试运行4.1 程序运行 对程序进行编译,可看到程序的首页,用户可选择自己所需的操作:图4-1 系统主界面4.2 录入功能当用户进入到首页面后,输入1可进行数据的录入功能,用户可录入学生的姓名、学号、成绩等信息,并且储存在文档中。图4-3 录入功能4.3增加功能在录入学生信息后还想增加另一个学生的信息可选择继续录入数据,也可选择增加学生,只需在首页中输入2即可进行增加操作。图4-3 增加功能4.4删除功能 进行数据的录入或增加后,方可进行数据的删除或修改,如需要对数据进行删除只需输入3即可进行此操作,在进行此操作时需输入学生的姓名可删除。图4-4 删除功能课程设计体会长达一周的程序设计课程实践终于结束了,虽然整个过程不完全是自己一个人独立完成的,而且做出来的结果也不是很好,但是在请教同学和老师的同时,对这方面也有了进一步的了解,对课程设计的内容也基本上进行了掌握。通过这次实践让我认识到C+程序设计是一门实践性很强的课程,学习程序设计不能仅限于纸上谈兵,许多程序方法和技巧不是光靠听课和看书就能学得到的,而是必须通过大量的上机实践慢慢积累起来,程序设计能力的培养必须以实践为重,近两周的学习给了我锻炼的机会。另外通过这次实践,培养了自己做事认真,严谨的态度。还有程序设计,程序编译及运行过程中不可避免会出现不会、不懂的地方,出现程序错误以及不能编译运行等种种困难,让我必须非常严谨对待每一个语句,锻炼了严谨的思维。在这次设计程序中,我找出学习中的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。参考文献 (1) 谭浩强.C+面向对象程序设计.清华大学出版社 (2) 谭浩强.C+面向对象程序设计题解与上机指导.清华大学出版社 (3) LippmanBarbara.C+Primer.人民邮电出版社 (4) Bjarne Stroustrup.The C+ Programming Language.机械工业出版社 (5)C+语言的设计和演化,机械工业出版社 (6)C+语言的设计和演化(英文版),机械工业出版社 (7)C+程序设计语言(特别版),机械工业出版社#include #include #include#include#includeusing namespace std;class Student/设置学生类记录学生基本信息public:char name20;int number;int banji;public:Student(char n20,int num,int bj);friend void main(); /将主函数定义为友元函数,方便访问类中的成员;Student:Student(char n20,int num,int bj)strcpy(name,n); /得到姓名 number=num; /得到学号 banji=bj;/得到班级class chengji:public Student/设置成绩类并继承学生类记录学生成绩public:float math,cpp,english,average,sum; float pmath,pcpp,penglish,psum;float bl;public:chengji(char n20,int num,int bj,float ma,float cj,float eng, float pma,float pcj,float peng):Student(n,num,bj)math=ma;/得到数学成绩cpp=cj;/得到C语言成绩 english=eng;/得到英语成绩 pmath=pma;/得到平时数学成绩 pcpp=pcj;/得到平时C语言成绩 penglish=peng;/得到平时英语成绩float getsum();/得到总分的函数 float getaver(); /得到平均分的函数 float getpsum();/得到总评成绩的函数friend void main(); /将主函数定义为友元函数,方便访问类中的成员; float chengji:getsum() /得到总分的函数 sum=cpp+english+math; return sum; float chengji:getaver() /得到平均分的函数 average=getsum()/3; return average; float chengji:getpsum()/得到总评成绩的函数 psum=(pcpp+penglish+pmath)*bl+getsum()*(1-bl); return psum; 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; int banji; float pmath,pcpp,penglish,psum,bl,sum,sump; float math,cpp,english; do cout请输入姓名:name; cout请输入学号:number; cout请输入班级:banji; cout请输入数学成绩:math; cout请输入cpp成绩:cpp; cout请输入英语成绩:english; cout请输入平时数学成绩:pmath; cout请输入平时cpp成绩:pcpp; cout请输入平时英语成绩:penglish; cout平时成绩所占比例bl; sum=math+cpp+english; sump=pmath+pcpp+penglish; psum=sump*bl+sum*bl; fstream outfile,infile; /作一个文本文档在文件夹中用于显示所录入的数据 outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; outfilename 学号:number 班级:banji 数学成绩:math cpp成绩:cpp 外语成绩:english 平时数学成绩:pmath 平时cpp成绩:pcpp 平时外语成绩:penglish 平时总成绩sump 总成绩sum 总评成绩psumendl; 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 chengji(name, number,banji,math, cpp, english,pmath, pcpp, penglish); 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; int banji; float math,cpp,english,bl,sum,sump,psum; float pmath,pcpp,penglish; char c; do cout请输入您要增加的学生的姓名:name; cout请输入你要增加的学生的学号:number; cout请输入班级:banji; cout请输入数学成绩:math; cout请输入cpp成绩:cpp; cout请输入英语成绩:english; cout请输入平时数学成绩:pmath; cout请输入平时cpp成绩:pcpp; cout请输入平时英语成绩:penglish; cout平时成绩所占比例bl; sum=math+cpp+english; sump=pmath+pcpp+penglish; psum=sump*bl+sum*bl; fstream outfile,infile; outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; outfilename 学号:number 班级banji 数学成绩:math cpp成绩:cpp 外语成绩:english 平时数学成绩:pmath 平时cpp成绩:pcpp 平时外语成绩:penglish 平时总成绩sump 总成绩sum 总评成绩psumendl; 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 chengji(name,number, ban
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 28544-2026封装闪烁体光输出和固有分辨率的测量方法
- T/SDPEA 0028-202335千伏及以上高压电力用户输变电设备运行维护技术规程
- T/LCH 039-2025老旧小区景观绿化改造工程管理与验收规范
- T/CDAIA 0009-2025智能网联汽车示范运营作业规范
- T/CFA 0197-2025镁合金半固态注射成型机
- T/CSPSTC 179-2025堤防振动测试技术规范
- GB/T 14531-2026办公家具阅览桌、椅、凳
- 2025~2026学年贵州省黔西南布依族苗族自治州兴义市十校监考人教版三年级上册12月月考数学试卷【附答案】
- 2027届湖南长沙长郡芙蓉中学八年级数学第一学期期末质量跟踪监视试题含解析
- PHP程序员笔试真题(含详细答案)
- 2026一级建造师《水利水电工程管理与实务》真题及答案解析(完整版含图表)
- 2026年福建省高考地理试卷真题(含答案)
- 2026年铅锌冶炼行业市场深度调研报告及未来五至十年技术路径与产业化前景
- 2026标准短视频拍摄合同律师审核修订版条款严谨权利义务对等公平合理可签
- 中国临床肿瘤学会(CSCO)胃癌诊疗指南(2026版)
- 有限空间作业监理实施细则(详细完-整版)
- 2026年烟花爆竹零售经营安全考试试题及答案
- (正式版)DB34∕T 3763-2020 《水泥生产企业化验室达标评价规范》
- 2026年产科急症多学科协作处置试题(含答案)
- 草原鼠虫害防治施工方案及技术措施
- 2026年国家林业和草原局直属单位招聘笔试练习题附答案
评论
0/150
提交评论