课程设计:学生成绩管理系统设计与实现.doc
《课程设计:学生成绩管理系统设计与实现.doc》由会员分享,可在线阅读,更多相关《课程设计:学生成绩管理系统设计与实现.doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现题 目学生成绩管理系统设计与实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 系统设计目的11.1 设计目的11.2设计内容11.3 课程设计要求1第2章
2、系统实现思路22.1 需求分析22.2 系统性能要求22.3 系统功能分析22.4 系统功能模块32.5 模块框架图3第3章 系统详细设计43.1 关键类的设计43.2 界面设计63.3 主函数的设计73.4 数据录入函数的设计73.5 修改函数的设计93.6 总分查询函数的设计113.7 总分排名函数的设计12第4章 系统调试运行144.1 调试144.2 界面菜单144.3 程序结果分析14课程设计体会17参考文献18第1章 系统设计目的及内容1.1 设计目的进一步深化掌握C+语言的基本知识;掌握结构化程序设计的基本方法和设计技巧,初步了解算法分析与设计概念;理解面向对象程序设计思想,初步
3、具备运用面向对象程序设计方法进行程序设计的能力。能熟练应用VC+集成环境进行C+语言程序的编写、编译与调试,提高对本课程知识综合运用能力。1.2设计内容设计四个类,包括学生类(描述学生基本信息);成绩类:班级类;课程类(描述课程信息:课程编号,科目名称,如高等数学,大学英语等);学生成绩及课程信息用文件保存,程序执行时从文件读入;能按学期,按班级完成对学生成绩的录入、修改,能按班级统计学生的成绩;求学生的总分及平均分,并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单。 设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所
4、占百分比 计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比) 显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息。分单人显示和以班输出(班成绩单格式输出到文件) 注意,至少应包含一个班、30人、三门课 1.3课程设计要求根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序来实现设计课程内容中的全部功能;设计主控模块程序对给出的程序源代码要给出各部分的详细注释自己根据能力及需要添加相应功能模块,增强模拟系统功能。第2章 系统实现思路2.1 需求分析按照C+程序设计的基本步骤,设计出一个适当规模的程序来实
5、现设计课程内容中的全部功能。对给出的程序源代码要给出各部分的详细注释。自己根据能力及需要添加相应功能模块,增强模拟系统功能。(1)能对学生各科成绩进行录入;(2) 能对学生的成绩进行增加;(3) 能对学生的成绩进行删除;(4) 能对学生的成绩进行修改;(5) 能对学生的成绩按总成绩,姓名,进行查询;(6) 能输出学生的所有数据;(7) 能进行成绩统计;(8) 能进行总分查询排名。2.2 系统性能要求(1) 系统安全、可靠;(2) 功能齐全;(3) 操作方便、界面友好;(4) 易于维护和扩充。2.3 分析系统功能模块功能模块化是将程序划分成若干个功能模块,每个功能模块完成了一个子功能,再把这些功
6、能模块总起来组成一个整体。以满足所要求的整个系统的功能。此程序利用功能模块化将复杂的程序分解成许多容易解决的局部问题。学生成绩查询系统功能模块有:(1) 数据录入;(2) 增加学生;(3) 删除学生;(4) 修改数据;(5) 数据查询;(6) 排序显示。2.4 系统功能分析(1) 资料维护:系统维护包括对学生信息的录入及数据表的信息进行浏览。(2)系统功能:可以对数据表中的信息进行浏览。(3)系统查询:可以对学生的信息进行查询。2.5 模块框架图学生绩管理系统包括九个模块这九个模块既相互联系又相互独立,建立如图2-1模块框架图。学生成绩查询系统 用switch语句进行选择按总成绩排名各科不及格
7、人数输出所有学生成绩平均成绩按姓名查询总成绩查询修改删除增加录入图2-1模块框架图第3章 系统详细设计3.1 关键类的设计从题中要求可知,要设计四个类建立成绩类:大体上分为数学、英语、c+,但是每一类又可分为三小的部分:平时成绩、期末成绩和总评成绩。class gradepublic:double math3;double English3;double c+3;建立班级类:对于班级类,主要是学生成绩的划分,按照班级划分和按照学期划分。所以,班级类中就有两个成员year和class。class ClassPublic:Int year;int class;分数类:对于分数类,主要是针对对象学生
8、,因此分数类是从grade和class公共派生类,在分数类中,还要统计三个科目的成绩,所以就把统计函数写在了这里面。Class scorePublic:Char name30;Char number30;Double sum;Double average;Double mh()Return (math0*math3+math1*(1-math2);Double eg()Return (English0*rnglish3+English1*(1-english2);Double c()Return (c+0)*(c+3)+(c+1)*(1-c+2);学生类:其中定义无参构造函数,析构函数、保存函
9、数、查找函数、排序函数、修改函数等等。Class student Private:Scorestu22m;/学生数组Static int size1,size2,size3,size4;int s1,s2,s3,s4;/定义数据public:Student()s1=0;s2=0;s3=0;s4=0;/构造函数void add();/添加函数void search();/查找函数void list();/名单函数void change();/修改函数void sort1();/排序函数void sort2();/排序函数void save();/保存函数void output();/读取函数;3
10、.2 主界面设计先定义系统菜单函数及其界面,程序运行后会出现一个简洁的窗口,便于用户查询数据。 void main()cout<<"学生成绩查询系统"<<endl;cout<<"请选择您需要的操作!"<<endl; /菜单的输出cout<<"操作:"<<endl;cout<<"(1)数据录入"<<endl;cout<<"(2)增加学生"<<endl cout<<&q
11、uot;(3)删除学生"<<endl;cout<<"(4)修改数据"<<endl;cout<<"查询:"<<endl;cout<<"(5)按总成绩查询"<<endl;cout<<"(6)按姓名查询"<<endl;cout<<"(7)输出所有学生的数据"<<endl;cout<<"成绩统计:"<<endl;cout
12、<<"(8)每个学生的平均成绩"<<endl;cout<<"(9)各科不及格人数"<<endl;cout<<"排名:"<<endl;cout<<"(10)按总分查询排名"<<endl;cout<<"(11)退出"<<endl;cout<<"选择相关操作请输入相对的括号里的阿拉伯数字及字母!"<<endl;3.3 主函数的设计在main
13、()函数中先设计主界面函数,然后通过switch、break语句选择判断来调用相关功能模块,然后通过do while、if、for等语句完成对数据录入、增加学生、删除数据、修改数据、按总成绩查询、按姓名查询、输出所有学生数据、平均成绩、各科不及格人数、排名各项功能的编译。3.4 数据录入函数的设计此函数为数据录入的实现过程,定义一个字符变量c,用于在小项中选择是否继续操作,并定义字符变量姓名name且规定是30个name,定义整型变量学号number,浮点型变量数学成绩math、成绩cpp、英语成绩english,程序用fstream类定义outfile,infile调用结构函数打开磁盘文件f
14、1.txt,用if语句判断文件是否打开,数据录入完毕后,关闭磁盘文件f1.txt。char c; /用于在小项中选择是否继续操作 char name30;int number;float math,cpp,english;docout<<"请输入姓名:"<<endl;cin>>name;cout<<"请输入学号:"<<endl;cin>>number;cout<<"请输入数学成绩:"<<endl;cin>>math;cout&l
15、t;<"请输入C+成绩:"<<endl;cin>>cpp;、cout<<"请输入英语成绩:"<<endl;cin>>english;fstream outfile,infile; /作一个文本文档在文件夹中用于显示录入数据outfile.open("f1.txt",ios:out|ios:app);if(!file)cout<<"f1.txt can not open.n"return;outfile<<name<<
16、;" "<<"学号:"<<number<<" "<<"数学成绩:"<<math<<" "<<"C+成绩:"<<cpp<<" "<<"外语成绩:"<<english<<endl;outfile.close();infile.open("f1.txt",ios:in);if(!f
17、ile) /判断文件是否打开 cout<<"f1.txt can not open.n"return;char ch;while(infile.get(ch)cout<<ch;cout<<endl;nfile.close();j+;si=new Tstu(name, number,math, cpp, english);i+;cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;cin>>c;chris1=0;doif(c!='y'&&c!
18、='n')cout<<"指令错误!请重新输入!"<<endl;cin>>c;elsechris1=1;while(chris1=0);while(c='y'); /重复输入break;3.5 修改数据函数的设计此函数先打开磁盘文件f.txt,然后在文件中查找你要修改的姓名,核对此姓名存在于磁盘文件后,输入你需要修改的学生姓名,新学号及其数学、c+和英语成绩,把数据存入磁盘文件中,修改后完毕后关闭磁盘文件。string sname,line,str,name; int nu;float eng,ma,com;
19、int flag;char c;if(i=0)cout<<"系统中没有输入数据,请先输入数据!"<<endl;break;doflag=0;cout<<"请输入您要修改的学生的姓名:"cin>>name;fstream fin("f1.txt",ios:in);ofstream outfile("f.txt",ios:trunc|ios:out);cout<<endl;while(!fin.eof() )/在文件中查找getline(fin,line);i
20、stringstream stream(line);sname = line.substr(0,line.find(" ",0);if(name!=sname)outfile<<line<<endl;else flag=1;fin.close();if(flag=1)cout<<"请输入修改学生姓名及其新学号,数学,c+和英语成绩:"cin>>name>>nu>>ma>>com>>eng;cout<<endl;outfile<<name
21、<<" "<<"学号:"<<nu<<" "<<"数学成绩:"<<ma<<" "<<"C+成绩:"<<com<<" "<<"外语成绩:"<<eng<<endl;outfile.close();fstream outf("f1.txt",ios:trunc|ios:o
22、ut);fstream inf("f.txt",ios:in);outf<<inf.rdbuf()<<endl;outf.close();inf.close();if(flag=0)cout<<"对不起,您要修改的学生不存在!请查证后输入!"<<endl;cout<<"想继续修改吗(y/n):"cin>>c;cout<<endl;if(c!='y'&&c!='n')cout<<" 指
23、令错误!请重新输入!"<<endl<<" "cin>>c;while(c='y');break;3.6 总分查询函数的设计此函数为按总分查询的实现过程巧妙运用字母i,定义i的值为零时数据不存在,i的值为1时数据存在,查询时要考虑数据是否存在;然后利用指针调用各科分数。int j=0;float SUM;char c;int flag;if(i=0)cout<<"系统中没有输入数据,请先输入数据!"<<endl;break;doflag=0;cout<<&qu
24、ot;请输入您要查询的学生的总成绩:"<<endl;cin>>SUM;for(int j=0;j<i;j+)if(sj->getsum()=SUM)flag=1;cout<<"您要查询的学生是:"<<(*sj).name<<endl;cout<<"该生的信息为:"<<endl;cout<<" 学号:"<<(*sj).number<<" 数学分数:"<<(*sj).
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 学生 成绩管理系统 设计 实现
限制150内