




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 软件工程1341 专业课程: 高级程序设计语言指导教师: 2014 年 6 月 27 日题 目学生成绩管理系统设计与实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 系统设计目的11.1课程设计要求11.2课程设计内容11.3课程设计目标2第2章 系统实现思路32.1需求分析32.2系统性能要求32.3系统功能模块32.4系统框架图42.5模块设计与分析4第3章 系统详细设计63.1 类的设计63.2 录入数据程序设计83.3 删除数据程序设计123.4 修改数据程序设计143.5 查询数据程序设计163.6 排列数据程序设计193.7主函数设计20第4章 系统调试运行224.1 调试结果224.2 系统缺陷26课程设计体会27参考文献27第1章 系统设计目的1.1 课程设计要求要求通过查阅与设计课题有关的文献资料,并自学与其相关内容,掌握Visual C+6.0集成开发环境的使用,每人独立完成课程设计全部内容,具体要求如下:1、 对系统进行功能模块分析、控制模块分析正确。2、 系统设计要能尽力完成题目所要求的功能。3、 编程简练,可用,尽可能的使系统的功能更加完善和全面。4、 说明书、流程图要清楚。1.2 课程设计内容l 熟悉Visual C+6.0的编辑环境,掌握其编辑、编译和程序调试功能。l 理解与掌握面对对象程序设计的基本概念、思想与方法。l 掌握和应用类与对象的设计与实现,完成文件的输入输出操作处理;运用模块化程序设计思想完成课程设计内容。l 综合程序设计。课程设计题目:学生成绩管理系统设计与实现设计四个类,包括学生类(描述学生基本信息);成绩类:班级类;课程类(描述课程信息:课程编号,科目名称,如高等数学,大学英语等);学生成绩及课程信息用文件保存,程序执行时从文件读入;能按学期,按班级完成对学生成绩的录入、修改,能按班级统计学生的成绩;求学生的总分及平均分,并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单。 设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比 计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比) 显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息。分单人显示和以班输出(班成绩单格式输出到文件) 注意,至少应包含一个班、30人、三门课 1.3 课程设计目标在计算机领域中,任何好的创意和设计最终都需要通过高水平的程序设计实现,因此学习程序设计是计算机及相关专业学生必备的基本技能之一。为了使学生更好的学习和掌握这一基本技能,必须系统而全面地的安排程序设计课程设计,目的是通过具体的课程设计,不仅使学生能够进一步理解程序设计的基本概念,掌握基本的程序设计方法,培养良好的程序设计风格,同时还可以借助程序设计技巧的训练,培养学生抽象思维、逻辑思维及统筹规划的能力。第2章 系统实现思路2.1需求分析学生成绩管理系统(以下简称“系统”)可以用来管理规模较大的成绩信息,对学生的成绩信息进行维护和统计。系统的目标用户为老师或其他需要统计各种信息的人员。系统可以极大的减少用户的工作量,为用户节省更多的时间,让用户在几秒钟内获得各种统计信息,在第一时间对学生成绩有全面的了解。系统给用户提供了简单而实用的功能。2.2系统性能要求根据学生成绩管理系统的标准,以及考虑到用户的需求,所以我们在编写系统程序时注意其实用性如下:(1) 系统安全、可靠;(2)功能齐全;(3)操作方便;(4)易于维护和扩充。2.3系统功能模块系统主要根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以方便对成绩的各项管理操作,“学生成绩管理系统”包括12个模块:输入学生资料,输出学生资料,学生成绩按顺序排列,按姓名、总分、平均分查找,添加学生资料,删除该学生资料,修改该学生资料,查找并显示学生资料,显示学生平均分,显示各科不及格人数,从文件中读入数据,储存学生资料并退出系统。这九个模块既相互联系又相互独立。系统首先为3个类:学生类、课程类、成绩类;接下来就是主函数界,主函数中包括界面显示、各个功能的代码编写。2.4系统框架图“学生成绩管理系统”主要由两大功能:编辑功能和统计功能。编辑功能又分为增加学生信息,修改学生信息,删除学生信息;统计功能分为显示学生信息,排列学生信息和查找学生信息。图2-1 系统框架图2.5模块设计与分析简易学生成绩管理系统主要有六大模块:学生信息(如学号、姓名、各科成绩、年龄等)的录入文件中;查找学生成绩信息;显示学生成绩信息;修改学生成绩信息;删除学生成绩信息;排列学生成绩信息。(1) 增加学生成绩信息通过键盘输入增加学生成绩信息,。通过键盘建立最初的信息了,建立后就可以保存成文件形式,方便以后使用。(2)修改学生成绩信息修改学生成绩信息:通过用户提供的学生姓名或学号,检索到该学生,然后进行修改,可以修改姓名、年龄、各科成绩等。(3)删除学生成绩信息删除某学生的单科成绩。例如,当某学生中期退课后,就可以用此功能将该课程成绩删除,删除某一个学生。将该学生的全部信息删除,该学生的数据将不再出现在数据库中。(4)储存学生资料并退出系统模块主要功能是用来储存学生资料。在对系统进行一系列操作,比如添加、删除、修改学生资料后,对系统的最新操作进行保存,及时更新系统,方便下一次的操作。第3章 系统详细设计3.1类的设计(1)学生类的设计此类中主要包括了学生的基本信息,如学生姓名,学号,班级等.此类作为基类,主要思考是这几个信息跟后面的成绩、课程的信息都有关联。所以作为基类更为合适。Class Studentpublic:string name; /学生姓名int num; /学生学号int bj; /学生班级int xq; /学期void setstudent(); /设置学生基本信息void display1(); /输出学生基本信息;(2)成绩类的设计此类主要是包含了学生各科成绩的成员数据。成绩是与学生个体相关的,每个学生与他的成绩可以说是组成了这个学生的个人信息。所以声明成绩类为学生类的派生类。class Score:public Studentpublic: double english,math,prog,physics,total,pj; char name; int num; int bj; void setenglish(); /设置英语成绩 double getenglish()return english; void setmath(); /设置数学成绩 double getmath()return math; void setprog(); 设置程序成绩 double getprog()return prog; void setphysics();/设置物理成绩 double getphysics()return physics; double gettotal()return english+math+physics+prog;/得到成绩 void display(); double PJ()pj=(english+math+physics+prog)/4;return pj;/得到平均成绩;(3)班级类的设计班级类主要是以不同班级为成员,其中包括了以班级输出成绩的函数.可以实现对不同班级成绩的区别存储。class bj:public Studentpublic:char name15; /学生姓名char number15; /学号int sum; /总分double average; /学生平均分double math1()return (math0*math3+math1*(1-math2);double english1()return (english0*english3+english1*(1-english2);double computer1()return (computer0*computer3+computer1*(1-computer2);(4)课程类的设计课程类中定义了不同学科的一位数组。例如english3,主要思路是:english0保存为学生的考试成绩,english1为学生的平时成绩,english3保存为学生的最后成绩。后面的各个课程都是如此。Class course:public StudentPublic: double english3,math3,g3;3.2录入数据程序设计输入函数主要是输入要存入的学生信息:姓名,学生的各科成绩等,由于人数过多,所以就定义了20个人,以这20个人为代表,录入成绩。录入的时候,我用到了一个类,其中的各科成绩都有分别的输入,从而保证了程序的条理清晰,不给人那么凌乱感。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; 3.3删除数据程序设计此函数主要是以删除学生信息而设计的,方便于管理学生信息,简单明了。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; 3.4修改数据程序设计数据的修改有助于数据的准确性,以便于以后能准确的利用数据。case 4:/修改数据 string sname,line,str,name; int nu;float eng,ma,com;int flag;char c; 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; 3.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; cout该生的信息为:endl; cout 学号:(*sj).number 数学分数:(*sj).math c+分数:(*sj).cpp 英语分数(*sj).englishendl; if(flag=0)cout对不起!您要查询的学生不存在!endl; coutc; if(c!=y&c!=n) cout指令错误!请重新输入!c; ; while(c=y); break; case 6:/按姓名查询 char n20;char c;int j=0;int flag; 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).mathc+分数:(*sj).cpp英语分数:(*sj).englishendl; if(flag=0) cout对不起您要查询的学生不存在,请查证后再输入!endl; coutc; if(c!=y&c!=n) cout指令错误!请重新输入:c; while(c=y); break; 3.6排列数据程序设计根据函数可将数据进行排列。 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; else flag=1; while(flag=0); if(w=y)3.7主函数设计 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选择相关操作请输入相对的括号里的阿拉伯数字及字母!endl; 第4章 系统调试运行4.1 调试结果(1) 成绩的录入在程序运行的简捷窗口,选择自己所要查询的目的。数据录入,如姓名:jj,学号:22222,数学成绩:0,c+成绩:0,外语成绩:0,录入结果如图。图4-1 录入程序结果(2) 成绩的增加根据指令添加成绩如图所示,选择指令2。图4-2 增加数据程序结果(3)数据的删除图4-3 删除数据程序结果(4) 数据的修改如图,修改学生数据可根据指令4,输入需要修改的姓名学号及其成绩。图4-4 修改数据程序结果4.2系统缺陷系统查询时,输入指令5或6时会显示系统没有输入数据。图4-5 系统中存在的缺陷图4-6 系统存在的缺陷课程设计体会在为期不到一周的时间里,通过老师和同学的帮助下,完成了这项课程。我体会颇多,学到很多东西。我加强了对C+的认识,复习了自己以前的知识,自己的逻辑思考能力也提高不少。通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。特别是学会了在Visual C+ 集成开发环境中如何调试程序的方法。参考文献1 谭浩强C语言程序设计 清华大学出版社2 陈国君等C+程序设计基础 清华大学出版社3谭浩强C+面向程序设计 清华大学出版社4MaryCampione.C+语言导学 机械工业出版社5Y.DanielLiang.C+语言程序设计基础篇机械工业出版社6KathySierra.HeadFirstC+ 东南大学出版社#include #includeusing namespace std;const int N=5;/*class score /分数public: int s_tot; int s_av; int s_su;class course /课程信息public:int cou_id; string cou_name; int mark; /分数;class grades /班级public:string major;int cla_id;int peop_nu;multiset stu;void fread(int n); /对成绩的录入,n个学生void revise(int t_ID); /根据学号修改学生信息void display(void); /打印班级成绩单void seek(int t_ID); /查找void failshow(void); /打印不及格学生名单;*/class student char n_name10; char n_numble5; char n_sex3; float score4;/score0英语成绩score1数学成绩,score2c语言成绩score3平均分public:student(); student(char name,char numble,char sex,float a,float b,float c); student(student &s); void input();/输入学生信息:姓名学号性别英语数学语文 float pj();/获取平均分 void stu_delete(student stu);/删除 void stu_find(student stu); void dispaly();/显示学生信息:姓名学号性别英语数学语文平均分;student:student()strcpy(n_numble,000); strcpy(n_name,noname); strcpy(n_sex,male); score0=88; score1=99; score2=95; score3=94;student:student(char name,char numble,char sex,float a,float b,float c)strcpy(n_name,name); strcpy(n_numble,numble); strcpy(n_sex,sex); score0=a; score1=b; score2=c; score3=(score0+score1+score2)/3.0;student:student(student &s) strcpy(n_name,s.n_name); strcpy(n_numble,s.n_numble); strcpy(n_sex,s.n_sex); score0=s.score0; score1=s.score1; score2=s.score2; score3=(score0+score1+score2)/3.0; void student:input() cout输入学生信息:endl; cout请依次输入: 姓名 学号 性别 英语 数学 c语言n_namen_numblen_sexscore0score1score2; score3=(score0+score1+score2)/3.0;float student:pj() return score3;void student:stu_delete(student stu)student t; int i,k,j; char d_numble5; coutd_numble; for(i=0;iN+1;i+) j=i; k=strcmp(stui.n_numble,d_numble); if(k=0&i!=N) for(;jN;j+) stuj=stuj+1; if(k=0&i=N) strcpy(stuN.n_numble,0000); strcpy(stuN.n_name,noname); strcpy(stuN.n_sex,男); stuN.score0=0; stuN.score1=0; stuN.score2=0; stuN.score3=0; void student:stu_find(student stu) int i,k; char d_numble5; coutd_numble; for(i=0;iN+1;i+) k=strcmp(stui.n_numble,d_numble); if(k=0) stui.dispaly(); void
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商场店面转让合同范本
- 公司劝退员工合同范本
- 共同管理合同范本
- 商贸公司策划合同范本
- 水费收取维护合同范本
- 吉林省吉林市蛟河市2023-2024学年八年级上学期期末考试数学试卷(含解析)
- 中国传统节日-端午节73
- 2025年生猪交易合同标准范本
- 2025版租赁合同样书
- 语文课程标准与教材研究知到课后答案智慧树章节测试答案2025年春内江师范学院
- 2025年中国煤炭地质总局社会招聘20人笔试参考题库附带答案详解
- 2025内蒙古能源集团智慧运维公司社会招聘(105人)笔试参考题库附带答案详解
- 公共卫生应急管理调研报告范文
- 【9物一模】安徽合肥瑶海区2025年中考物理一模试卷
- 2025-2030中国食品灭菌设备行业市场发展趋势与前景展望战略研究报告
- 2025年全国中医医师定期考核中医专业理论知识考试题库及答案(共六套)
- 餐厅点菜技巧培训
- 大风天气施工专项方案
- 华能山东石岛湾核电限公司2025年上半年应届高校毕业生招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2025新人教版七年级数学下册教案教学设计综合与实践2:白昼时长的规律探究(有反思)
- 高新技术产业融资数据对比表
评论
0/150
提交评论