课程设计-学生成绩管理系统设计与实现.doc_第1页
课程设计-学生成绩管理系统设计与实现.doc_第2页
课程设计-学生成绩管理系统设计与实现.doc_第3页
课程设计-学生成绩管理系统设计与实现.doc_第4页
课程设计-学生成绩管理系统设计与实现.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 软件工程1341 专业课程: 高级程序设计语言指导教师: 2014 年 6 月 27 日题 目学生成绩管理系统设计与实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 系统设计目的41.1 程序设计的目的41.2 程序设计主要目标41.3 程序设计任务41.4 程序设计要求5第2章 系统实现思路62.1 系统需求分析62.2 系统性能要求62.3系统功能分析62.4系统功能模块6第3章 课程设计项目83.1 学生成绩录入83.2学生成绩查询和浏览83.3学生信息输出103.4学生成绩排名处理12第4章 系统详细设计154.1构造学生信息结构体储存学生信息154.2系统功能函数类的设计154.3主函数设计16第5章 系统调试运行195.1程序运行结果19课程设计体会24参考文献25第1章 系统设计目的1.1 程序设计的目的1.将程序计思想用到具体的工作和学习中,加深对类与对象的理解,是将计算机课程与实际问题相联接的关键步骤。通过课程设计,能够提高学生分析问题、解决问题,从而运用所学知识解决实际问题的能力。2.对C+语法,基础知识和编程技巧进行综合运用,编写具有一定综合应用价值的稍大一些的程序。1.通过 高级程序设计语言课程设计,使自己能将学到的面向对象的程序设知识运用于实际。1.2 程序设计主要目标通过本课程设计,进一步深化掌握C+语言基本知识;掌握结构化程序设计的基本方法和设计技巧,初步了解算法分析与设计概念;理解面向对象程序设计思想,初步具备运用面向对象程序设计方法进行程序设计的能力。能熟练应用VC+集成环境进行C+语言程序的编写、编译与调试,提高学生对本课程知识综合运用能力。1.3 程序设计任务(1)设计四个类,包括学生类(描述学生基本信息);成绩类:班级类;课程类(描述课程信息:课程编号,科目名称,如高等数学,大学英语等);(2)学生成绩及课程信息用文件保存,程序执行时从文件读入;(3)能按学期,按班级完成对学生成绩的录入、修改,能按班级统计学生的成绩;(4)求学生的总分及平均分,并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单。 设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比 计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比) 显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息。分单人显示和以班输出(班成绩单格式输出到文件) 注意,至少应包含一个班、30人、三门课 1.4 程序设计要求通过实习题目,认真完成软件设计的全部过程,并以最终软件设计成果来体现自己独立完成实际任务和运用C+的能力,最后完成软件设计和程序调试并提交文档:课程设计报告书,报告书中包含设计的算法及部分程序代码。第2章 系统实现思路2.1 系统需求分析主程序模块 本程序各个模块功能均用函数实现,主程序主要用来实现数据的初始化,定义变量,调用函数等,实现对程序的整体控制。(1)学生信息录入功能;(2)学生成绩查询功能;(3)学生成绩输出功能;(4)学生信息修改功能;(5)学生信息删除功能;(6)学生成绩的排序功能。2.2 系统性能要求(1)系统安全、可靠;(2)功能齐全;(3)操作方便、界面清晰;(4)易于维护和扩充。2.3系统功能分析(1)资料维护:系统维护包括对学生的信息的录入操作及数据表中的信息进行浏览。(2)系统功能:可以对数据表中的信息进行浏览。(3)系统查询:可以对学生的信息进行查询。2.4系统功能模块学生成绩查询系统的功能模块可分为:成绩录入、增加、删除、修改、数据查询、排序显示构成。学生管理系统主菜单录入数据查询数据修改数据保存数据数据排序数据读取退出系统图2-1系统模块化设计图第3章 课程设计项目通过类的封装,将课程类的信息储存在学生类中,学生信息储存在班级类中,程序的所有功能均能通过班级类的成员函数实现。3.1 学生成绩录入用户可经过键盘等输入设备实现系统对学生成绩的录入struct Student /声明一个名为student的结构体类型 string name; /姓名 string number; /学号 double maths; /数学 double english; /英语 double datastruct; /数构 double physical; /物理 double total; /总分 double average;/均分;3.2学生成绩查询和浏览用户进入登录界面,输入系统所需信息,查询、浏览项目。void SYSTEM:search()/查询 cout请选择查询方式:endl; cout1.按学号查询endl; cout2.按姓名查询c; switch (c) case 1:/按照学号查询string num;cout请输入要查询的学号:num;for(i=0;in;i+) if(stui.number=num) cout学号 姓名 数学 英语 数构 物理 总分 平均分endl;coutstui.number stui.maths stui.english stui.datastruct stui.physical stui.total stui.averageendl;break; if(stui.number!=num)cout未找到该学生信息!endl;break;case 2:/按照学号查询string name1;cout请输入要查询的姓名:name1;for(i=0;in;i+) if(=name1) cout学号 姓名 数学 英语 数构 物理 总分 平均分endl;coutstui.number stui.maths stui.english stui.datastruct stui.physical stui.total stui.averageendl; break; 3.3学生信息输出用户可根据系统输出学生信息。void SYSTEM:show()/输出 cout学号 姓名 数学 英语 数构 物理 总分 平均分endl; for(int i=0;in;i+) coutstui.number stui.maths stui.english stui.datastruct stui.physical stui.total stui.averageendl; void SYSTEM:change() /修改string num;int i; cout请输入要修改的学生学号:num; for(i=0;in;i+) if(stui.number=num) cout该学号的学生信息如下:endl; cout学号 姓名 数学 英语 数构 物理 总分 平均分endl; coutstui.number stui.maths stui.english stui.datastruct stui.physical stui.total stui.averageendl;cout请输入新的学生信息:endl;cout学号:stui.number;stun.number=stui.number;cout姓名:;=;cout数学:stui.maths;stun.maths =stui.maths;cout英语:stui.english;stun.english=stui.english;cout数构:stui.datastruct;stun.datastruct=stui.datastruct;cout物理:stui.physical;stun.physical=stui.physical;stui.total= stui.maths+ stui.english+ stui.datastruct+ stui.physical;stui.average=stui.total/4;break; if(stui.number!=num)cout无此学生信息!endl;void SYSTEM:delet() /删除 string num; cout请输入要删除学生的学号,然后按回车确认:num; for(int i=0;in;i+) if(stui.number=num) for(int j=i;jn-1;j+) stuj=stuj+1;/用后一个学生信息覆盖前一个学生信息 n-; /学生人数减少一个 cout已成功删除该学生信息!endl;break;3.4学生成绩排名处理系统根据学生各科成绩,利用排序函数,对学生排名进行处理。void SYSTEM:sort() /排序cout请选择排序方式:endl;cout1.按学生总分排序endl;cout2.按学生平均分排序endl;cout3.返回k; switch (k) case 1:/按学生总分排序 Student p; for(int i=0;in;i+) for(int j=0;jn-i;j+) if(stuj.totalstuj+1.total) p=stuj; stuj=stuj+1; stuj+1=p; cout学号 姓名 数学 英语 数构 物理 总分endl; for(int m=0;mn;m+) coutstum.number stum.maths stum.english stum.datastruct stum.physical stum.totalendl; break; case 2:/按学生平均分排序 Student p;/定义一个Student类型的变量p for(int i=0;in;i+) for(int j=0;jn-i;j+) if(stuj.averagestuj+1.average) p=stuj; stuj=stuj+1; stuj+1=p; cout学号 姓名 数学 英语 数构 物理 平均分endl; for(int m=0;mn;m+) coutstum.number stum.maths stum.english stum.datastruct stum.physical stum.averageendl; break;case 3:return;/返回 第4章 系统详细设计4.1构造学生信息结构体储存学生信息学生信息包括:学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比。struct Student /声明一个名为student的结构体类型 string name; /姓名 string number; /学号 double maths; /数学 double english; /英语 double datastruct; /数构 double physical; /物理 double total; /总分 double average;/均分;4.2系统功能函数类的设计把该系统要实现的功能封装在此类中,方便增加和修改。在本系统中设计了七个函数分别实现学生成绩的录入,查询,输出,修改,删除,求总分和平均分。class SYSTEM /声明类systempublic:SYSTEM()n=0; /构造函数 void add();/添加 void show();/显示 void search();/查询 void change();/修改 void delet();/删除 void sort();/排序 void Max();/最高分 void Min();/最低分private:Student stu1000;/定义一个结构体类型student的变量stu int n;4.3主函数设计先用循坏语句实现不断重复,通过多重选择语句调用功能函数类中的相应函数实现学生成绩管理系统的各项功能需求。void main() SYSTEM person; int b; do cout*endl; cout 1.输入学生成绩 5.删除学生成绩endl; cout 2.查询学生成绩 6.学生成绩排序endl; cout 3.输出学生成绩 7.最高分endl; cout 4.修改学生成绩 8.最低分endl; cout 0.退出学生成绩管理系统endl; cout*endl; coutb; switch(b) case 1: cout请依次输入该学生的相关信息:endl; person.add(); break; case 2: person.search(); break; case 3: person.show(); break; case 4: person.change(); break; case 5: person.delet(); break; case 6: person.sort(); break; case 7: person.Max(); break; case 8: person.Min(); break; case 0:cout谢谢使用本系统!endl; while(b10);第5章 系统调试运行5.1程序运行结果1系统主界面。图图 5-1 系统主界面图2根据提示按学期,班级录入学生成绩。图 5Error! No text of specified style in document.-2 数据录入图3选择序号5可进行数据保存,保存数据以学期班级进行保存。图 5-3 数据保存图4选择2可进行数据查找,子菜单又分为三项,可根据提示进行相关的操作。图 5-4 数据查找图图 5-5 不及格学生名单打印图5选择6进行数据读取工作,选择数据7,即可进行退出系统操作。图 5-6 数据读取及系统退出图课程设计体会程序设计是我们的专业课,但通过此次实训,我深深感到自己对这门课程的难易程度还不了解,以至于平时学习马马虎虎了事的各种问题都显露出来。这次程序设计很不好,以为自己对这门课程知识没有掌握好,使我深深感到成绩来之不易,这次的实训对我来说是一次深刻的教训,在以后的学习中一定要踏踏实实不能弄虚作假,否则最后害的还是自己。另外,通过实践也让我认清了自己的编程能力,我现在基本还是什么都不会,还没能理解面对对象程序设计的思想,只是懂一点点C+语法而已。所以,我还得加强学习和练习,踏踏实实提高卧的程序设计能力。参考文献1谭浩强著,C+语言设计题解与上机指导,清华大学出版社2谭浩强著,C+面向对象程序设计,清华大学出版社3Decoder 著, C/C+程序设计,中国铁道出版社4Leen Ammeraal著,C+程序设计教程(第三版),中国铁道出版社5王岚波等著,visual c+6轻松进阶,电子工业出版社6张红军等著,visual c+编程详解,科学出版社#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; /得到c+成绩 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对不起!您要查询的学生不存在!endl;coutc;if(c!=y&c!=n)co

温馨提示

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

评论

0/150

提交评论