版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 软件工程1342 专业课程: 高级程序设计语言 指导教师: 2014 年 6 月 27 日题 目学生成绩管理系统设计与实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代
2、码的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 系统设计目的11.1 实训目的11.2 程序设计的要求11.3 系统设计的题目1第2章 系统实现思路22.1 分析系统的功能22.2 系统性能的要求22.3 系统的设计和实现22.4主函数设计构图2第3章 系统详细设计43.1 类的定义43.2 dowhile语句63.3 switch语句的使用73.4 case语句7第4章 系统调试运行174.1 运行界面展示174.2 数据录入界面展示174.3 数据输出展示174.4 排名展示18课程设计体会19参考文献20第1章 系统设计目的1.1 实训目的实训是为了让学生有更好的机
3、会接触程序设计,本次实训的目的是:(1)在编辑应用程序过程中,逐步加深对C语言编程的理解; (2)加强实践的能力,动手能力,同时进一步对所学的只是进行巩固; (3)培养初步编程的能力,为以后的学习奠定基础。 (4)提升个人系统设计和分析能力,学会软件项目权限管理的基础实现。1.2 程序设计的要求 为了更好的规范程序的设计提出一下要求:(1)能够灵活的定义类、派生类,能够灵活的应用类及类成员; (2)熟练掌握选择、循环结构程序设计并使用它们; (3)熟练掌握文件的使用; (4)熟练掌握类函数的定义并灵活使用;1.3 系统设计的题目为了将学生将自己所学的知识用于实践而得到很多锻炼,达到学以致用的目
4、的,安排此次实训。此次实训的题目是:学生成绩管理系统设计与实现第2章 系统实现思路2.1 分析系统的功能 根据对题目进行分析,列出程序的功能,并按照程序的功能进行程序的编写制作。(1)能对学生信息进行录入; (2)能对学生的成绩进行增加; (3)能对学生信息进行修改; (4)能对学生信息进行删除; (5)能对学生的成绩按不同的方式查询; (6)能输出学生的所有信息; (7)能按总分查询排名; (8)能对成绩进行统计;2.2 系统性能的要求 (1)系统安全可靠 (2)操作方便、易懂 (3)功能齐全 (4)易于使用和维护2.3 系统的设计和实现 (1)通过定义类来储存录入的数据; (2)通过dow
5、hile循环来实现功能选择 (3)通过switch语句来实现个步骤的选择运行2.4主函数设计构图图2-1 主函数流程图开始输入功能序号判断输入做出处理提示输入错误退出系统结束图2-2 系统功能分析图操作查询成绩统计按总成绩排名学生成绩管理系统录入增加删除修改总成绩 查询姓名输出学生成绩每个学生的平均成绩各科不及格的人数第3章 系统详细设计3.1 类的定义(1)定义学生类储存学生基本信息:class Student/设置学生类记录学生基本信息public:char name20;int number;int banji;public:Student(char n20,int num,int bj
6、);friend void main(); /将主函数定义为友元函数,方便访问类中的成员;Student:Student(char n20,int num,int bj)strcpy(name,n); /得到姓名 number=num; /得到学号 banji=bj;/得到班级(2)定义成绩类继承学生类储存学生基本信息class chengji:public Student/设置成绩类并继承学生类记录学生成绩public:float math,cpp,english,average,sum; float pmath,pcpp,penglish,psum;float bl;public:chen
7、gji(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();/得到总评成绩的函数fri
8、end 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;3.2 dowhile语句(1)通过dowhile语句来实现对
9、不同功能的操作:do /判断输入是否正确 cinp; if(p=1&p=11) /p指不同的功能操作 chris1=1; else cout指令错误!请重新输入:endl; while(chris1=0);(2)通过dowhile语句来实现对程序运行的操作coutw; coutendl; if(w!=y&w!=n) cout 指令错误!请重新输入!endl; else flag=1; while(flag=0); if(w=y)cout*欢迎来到学生成绩查询系统*endl; cout请选择您需要的操作!endl; /菜单的输出 cout操作:endl; cout(1)数据录入endl; cou
10、t(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; while(w=y);3.3 switch语句的使用(1)通过switch语句调用
11、不同功能操作do switch(p) case1case23.4 case语句 通过case选择不同的功能对程序进行操作 功能分为以下: (1)Case 1实现数据录入 case 1: /数据的录入 char c; /用于在小项中选择是否继续操作 char name20; int number; int banji; float pmath,pcpp,penglish,psum,bl,sum,sump; float math,cpp,english; docout请输入姓名:name; cout请输入学号:number; cout请输入班级:banji; cout请输入数学成绩:math; c
12、out请输入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
13、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; coute
14、ndl; 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; (2)case 2实现增加学生 增加学生信息同case 1基本相同这里不再展示程序。 (3)case 3实现删除学生case 3:/删除学生信息 if(i=0)cout系统中没有输入数据,请先输入数据!endl;break; char c; str
15、ing 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;
16、 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; (4)case 4实现修改数据 case 4:/修改数据 string sname,line,str,name; int bj;int nu;float eng,ma,com,peng,pma,pcom,bl;int fla
17、g;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 fla
18、g=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(); i
19、f(flag=0)cout对不起,您要修改的学生不存在!请查证后输入!endl; coutc; coutendl; if(c!=y&c!=n) cout 指令错误!请重新输入!endlc; (5)case 5实现按总成绩查询 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;
20、 cout该生的信息为:endl;cout 学号:(*sj).number班级:(*sj).banji 数学分数:(*sj).math cpp分数:(*sj).cpp 英语分数(*sj).english 平时数学分数:(*sj).pmath 平时cpp分数:(*sj).pcpp 平时英语分数(*sj).penglishendl; if(flag=0)cout对不起!您要查询的学生不存在!endl;coutc;if(c!=y&c!=n)cout指令错误!请重新输入!c; ; (6) case 6实现按姓名查询 case 6:/按姓名查询 char n20;char c;int j=0;int f
21、lag; if(i=0)cout系统中没有输入数据,请先输入数据!endl;break; do flag=0; cout请输入要查询的名字: n; for(int j=0;ji;j+) if(strcmp(n,(*sj).name)=0)flag=1; cout您要查询的学生是:(*sj).nameendl;cout该生的信息是:学号:(*sj).number班级:(*sj).banji 数学分数:(*sj).mathcpp分数:(*sj).cpp英语分数:(*sj).english 平时数学分数:(*sj).pmath 平时cpp分数:(*sj).pcpp 平时英语分数(*sj).pengl
22、ishendl; if(flag=0)cout对不起您要查询的学生不存在,请查证后再输入!endl;coutc;if(c!=y&c!=n)cout指令错误!请重新输入:c; while(c=y); break; (7)case 7实现输出所有学生的数据 case 7:/输出所有学生数据 cout所有学生数据如下:endl; ifstream file; file.open(f1.txt,ios:in); coutfile.rdbuf(); file.close(); break; (8) case 8实现每个学生的平均成绩 case 8:/统计每个学生的平均成绩 if(i=0)cout系统中没
23、有输入数据,请先输入数据!endl;break; for(int m=0;mi;m+) cout(*sm).name 学号:(*sm).number班级(*sm).banji 总分:(*sm).getsum() 均分:(*sm).getaver()endl; break; (9)case 9实现各科不及格人数 case 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; coutcpp不及格
24、人数为:nendl; cout英语不及格人数为:kendl; break; (10)case 10实现按总分查询排名 case 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;第4章 系统调试运行4.1 运行界面展示运行程
25、序展示学生成绩查询系统界面供用户选择操作如图4-1:图4-1 系统主界面4.2 数据录入界面展示 选择操作一录入学生数据并输出如图4-2。 图42 数据录入界面4.3 数据输出展示选择将学生数据输出供用户管理如图4-3图43 数据输出界面4.4 排名展示用户可对学生成绩进行管理排名方便管理如图4-4图44 学生排名界面课程设计体会短学期的课程设计是一次非常珍贵的机会,这是一次可以让我们所学的理相结合的机会。我们做的是学生成绩管理系统设计与实现。通过这次比较完整的一个程序的设计,我走出了纯理论的学习,从一种全新的角度去学习。在为期一周的实训中,开始时我一点头绪都没有,后来在查阅相关资料并在老师的
26、帮助下我找到了方法,经过努力最后我完成了任务 ,把程序编写完成。从没想过编程是如此麻烦,这次的实训我学到书本上没有的东西,我明白了程序编写是的幸苦,我懂得了一个程序的完成有时需要多人的合作与努力,在次我感谢我的同伴,是他们跟我一起努力才完成了程序编写。我更要感谢我的老师,是老师的指导让我找到编写程序的方法。参考文献1钱能编著,c+程序设计教程,清华大学出版社2谭浩强编著,c程序设计题解与上机指导,清华大学出版社3吕凤煮著,C+语言基础教程,清华大学出版社4 Robert L.Kruse著,C+数据结构与程序设计,清华大学出版社5 谭浩强编著,c+面向对象程序设计#include #includ
27、e #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 chen
28、gji: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;/得到
29、平时数学成绩 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 av
30、erage; 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(
31、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; i
32、nt 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=pm
33、ath+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 总评成绩ps
34、umendl; 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!
35、=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; cou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年生产安全知识竞赛
- 2026年县级青少年宫围棋教师招聘笔试模拟题
- 2026年中国香道数字嗅觉营销AI编程师认证考试考点梳理与习题集
- 2026年化学化工实验安全知识
- 2026年注册城乡规划师考试模拟题库
- 2026广西百色田东县人民医院医共体招聘20人考试备考题库及答案解析
- 2026年马鞍山花山区机关事务管理中心招聘4人考试备考试题及答案解析
- 2026清华大学第一附属医院博士后招聘考试备考试题及答案解析
- 2026年注册安全工程师检测卷含完整答案详解【名校卷】
- 2026年国开电大中国现代文学专题形考通关练习题(A卷)附答案详解
- 数据共享与交换协议
- 2024年专利代理人专利法律知识考试试卷及参考答案
- GB/T 44804-2024声学自由场条件下18岁至25岁耳科正常人听力阈值的统计分布
- 学生处分撤销申请书范文1
- 老年常见病中医治疗
- J-T 3351-2024 农村公路简易铺装路面设计施工技术细则 (正式版)
- 美容师:中级美容师考试试题
- 教育与美好人生智慧树知到期末考试答案2024年
- VTE预防健康教育
- PSW-零件提交保证书正规范本(通用版)
- 《社会保障学》医疗保险-课件
评论
0/150
提交评论