面向对象C学生成绩管理系统_第1页
面向对象C学生成绩管理系统_第2页
面向对象C学生成绩管理系统_第3页
面向对象C学生成绩管理系统_第4页
面向对象C学生成绩管理系统_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计(论文)题 目 名 称 学生成绩管理系统 课 程 名 称 专业课程设计I 学 生 姓 名 学 号 系 、专 业 信息工程系、计算机科学与技术 指 导 教 师 2013年 11 月 15 日目录1 前言12 需求分析12.1任务12.2 要求12.3 运行环境12.4 开发工具23 分析和设计23.1 系统分析及设计思路23.2 主要类图43.3 函数流程图64 具体代码实现85 课程设计总结135.1 程序运行结果或预期运行结果135.2 课程设体会16 参考文献18 致 谢181 前言 当前的编程语言主要分为面向过程和面向对象两种,其中我们所熟悉的C语言是一种面向过程的语言,而C+则

2、是一种面向对象的语言。面向对象主要是一种思想,面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、网络管理结构、人工智能等。对于此次课程设计学生成绩管理系统的设计,主要是考察我们对面向对象中类的定义和使用,成员变量和成员函数的定义和使用,友元函数的理解和调用,继承性与派生类,文件输入输出的掌握情况,在实际设计中首先定义一个基类stu用来存放学生的基本信息,再定义一个派生类stu1用了存放课程信息。通过本课程设计,我们可以运用C+语言实现所设计的算法,编写较大型的程序,分析和解决实际应用问题,进一步加深、巩固自己所学专业课程的基本理论知识,理论联

3、系实际,进一步培养自己综合分析问题和解决问题的能力。通过本次课程设计我们还可以进一步掌握编写文档、文档排版的能力。为以后步入社会,走上工作岗位打下坚实的基础。2 需求分析2.1 任务某学校学生选择的课程包括选修课和必修课,每门课程有相应的学分,学生每学期可以选择若干门课程,设计学生成绩管理系统,计算学生某一学期的总成绩和平均成绩。2.2 要求具体要求:(1)可以进行学生成绩的输入和查询。(2)可以通过学号查找某个同学的总成绩,学分,平均成绩。(3)可以查询同学的达标情况和没有及格的科目。2.3 运行环境(1)WINDOW XP/WINDOW 7系统(2)Visual C+ 6.0编译环境或DE

4、V C+ 5.0编译环境2.4 开发工具C+语言3 分析和设计3.1 系统分析及设计思路根据面向对象的思想,通过类来实现设计一个学生成绩管理系统。首先定义一个基类stu用来存放学生的基本信息(学号(number),姓名(name)),再定义一个派生类stu1用来存放课程信息(课程号(classnumber),课程名(classname),课程总学分(score),平时成绩(pingshifen),实验成绩(shiyanfen),卷面成绩(juanmianfen),总分(zongfen),实得学分(lastscore))。根据实际情况考虑,有些课程并不需要实验,所以总分有两种算法。一种是没有实验

5、成绩的总分:总分=平时成绩×0.3+卷面成绩×0.7另一种有实验的总分:总分=平时成绩×0.15+实验成绩×0.15+卷面成绩×0.7,总学分=各科实得学分;总成绩=各科总分;平均成绩=总成绩/总学分;main函数用来实现操作,在程序中实现了三个功能:1输入学生成绩;2学生成绩查询;3达标查询。main函数通过文件流、I/O流等学习内容实现。通过建立文件来存储所输入的学生信息以及存储计算的结果。1.基类stu类的设计:class stu /*定义一个基类,用来存放学生基本信息*/ public:stu(char a20,char b20) st

6、rcpy(number,a); strcpy(name,b);char* getnumber() return number;char* getname() return name;private:char number20;char name20; 2.派生类stu1类的设计:class stu1:public stu /*定义派生类, 存放课程信息*/ public:stu1(char a20,char b20,char f10,char g10,double aa,double bb,double cc,double dd,double ee,double ff):stu(a,b) st

7、rcpy(classnumber,f); strcpy(classname,g); score=aa; pingshifen=bb; shiyanfen=cc; juanmianfen=dd; zongfen=ee; lastscore=ff;friend void main();private:char classnumber10;char classname10;double score,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore;;3.2 主要类图 图3.2.1 基类stu类图图3.2.2 派生类stu1类图public图3.2.

8、3 继承关系类图3.3 函数流程图 整个程序的流程图:首先判断是否进入学生成绩管理系统,如果进入,通过输入相应的1,2,3选择要实现的功能,如图3.3.1所示。 开始结束NNNYYYYNY进入达标查询系统进入成绩查询系统 p=2?p=3? p=1?1<=p&&p<=3?得到输入值p欢迎进入学生管理系统是否进入系统输出菜单选项 1,2,3指令错误,请重新输入进入信息输入系统图3.3.1 整个程序的主流程图开始 当进入系统学生成绩管理系统后根据提示选择要进行的操作,学生各科的成绩。根据提示输入信息,如:输入课程信息(课程编号,课程名称以及该课程的各项成绩等),输入学生信

9、息(姓名,学号)等一系列的操作。如图3.3.2所示。 1输入学生信息:学生学号、学生姓名输入课程信息:课程编号、输入课程该课程的学分输入该学生该课程的各项成绩:平时成绩、实验成绩、卷面成绩。继续输入该科其他学生成绩 N Y其他选择,输入其他课程其他学生成绩、成绩查询、达标查询等。输入该课程其他学生在这科的各项成绩:平时成绩、实验成绩、卷面成绩。结束 图3.3.2 输入某科成绩流程图4具体代码实现#include<iostream>#include<string>#include<fstream>#include<conio.h>using nam

10、espace std;class stu /*定义一个基类,存放姓名和学号信息*/public:stu(char a20,char b20) strcpy(number,a); strcpy(name,b);char* getnumber() return number;char* getname() return name;private:char number20;char name20;class stu1:public stu /*定义另一个派生类,存放课程信息和成绩*/public:stu1(char a20,char b20,char f10,char g10,double aa,

11、double bb,double cc,double dd,double ee,double ff):stu(a,b) strcpy(classnumber,f); strcpy(classname,g); score=aa; pingshifen=bb; shiyanfen=cc; juanmianfen=dd; zongfen=ee; lastscore=ff;friend void main();private:char classnumber10;char classname10;double score,pingshifen,shiyanfen,juanmianfen,zongfen

12、,lastscore;void main() /*主函数*/char c; int flag5=0;int s=0;cout<<"欢迎进入学生管理系统"<<endl;cout<<"进入(y/n)"<<endl; cin>>c;do /*判断是否进入系统*/if(c='n')break;else flag5=1;char number10;char name20;int i=0,I=0,j=0;int ja=0;ofstream *file50; stu1 *s150; /*定义指

13、针存放课程信息*/char classnumber8;char classname10;double score,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore;bool flag=0;int p;char c4;do /*选择菜单*/cout<<"请选择操作"<<endl;cout<<"1 输入学生成绩信息"<<endl;cout<<"2 成绩查询"<<endl;cout<<"3 达标查

14、询"<<endl;do /*判断输入字符*/cin>>p;if(1<=p&&p<=3)flag=1;elsecout<<"指令错误,请重新输入!"<<endl;while(flag=0); if(p=1) /*进入信息输入系统*/ cout<<"进入信息添加"<<endl;char c1,c2;do /*信息的输入*/cout<<"请输入课程编号:"<<endl;cin>>classnumb

15、er;cout<<"请输入课程名:"<<endl;cin>>classname;docout<<"请输入学生学号:"<<endl;cin>>number;cout<<"请输入学生姓名:"<<endl;cin>>name;cout<<"课程总学分:"<<endl;cin>>score;cout<<"学生的平时成绩:"<<endl;c

16、in>>pingshifen;cout<<"学生的实验成绩:"<<endl;cin>>shiyanfen;cout<<"学生卷面成绩:"<<endl;cin>>juanmianfen;if(shiyanfen=0) /*总分的算法判断*/zongfen=pingshifen*0.3+juanmianfen*0.7;elsezongfen=pingshifen*0.15+shiyanfen*0.15+juanmianfen*0.7;if(90<=zongfen&

17、;&zongfen<=100) /*学分的计算*/lastscore=score;else if(80<=zongfen)lastscore=score*0.8;else if(70<=zongfen)lastscore=score*0.7;else if(60<=zongfen)lastscore=score*0.6;elselastscore=0;filej=new ofstream("e:eeee.txt",ios:app); /*信息存储文件的建立*/*filej<<"学号:"<<numbe

18、r<<" "<<"课程编号:"<<classnumber<<" "<<"课程名:"<<classname<<" "<<"学分:"<<score<<" "<<"平时分:"<<pingshifen<<" "<<"实验分:"<<

19、;shiyanfen<<" "<<"卷面分:"<<juanmianfen<<" "<<"综合成绩:"<<zongfen<<" "<<"实得学分:"<<lastscore<<" "<<endl;j+;s1I=new stu1(number,name,classnumber,classname,score,pingshifen,s

20、hiyanfen,juanmianfen,zongfen,lastscore);I+;cout<<"数据输入成功,继续输入其他学生成绩?(y/n)"cin>>c1;int flag1=0;doif(c1!='y'&&c1!='n')cout<<"错误指令"<<endl;cin>>c1;elseflag1=1;while(flag1=0);while(c1='y');cout<<"输入其他课程成绩?(y/n)&q

21、uot; /*转入其他成绩输入判断*/cin>>c2;int flag2=0;doif(c2!='y'&&c2!='n')cout<<"错误指令"<<endl;cin>>c2;elseflag2=1;while(flag2=0); while(c2='y');if(p=2) /*成绩查询系统*/cout<<"进入成绩查询"<<endl;char num10;cout<<"请输入学号"<

22、;<endl;cin>>num;int ii=0;double sum=0;double fen=0;double pingjunfen;for(int j=0;j<I;j+)if(strcmp(*s1j).getnumber(),num)=0) /*判断学号是否存在*/cout<<"课程编号:"<<(*s1j).classnumber<<" "<<"课程名称:"<<(*s1j).classname<<" "<&l

23、t;"学分:"<<(*s1j).score<<" "<<"平时成绩:"<<(*s1j).pingshifen<<" "<<"实验成绩:"<<(*s1j).shiyanfen<<" "<<"卷面成绩:"<<(*s1j).juanmianfen<<" "<<"综合成绩:"<

24、<(*s1j).zongfen<<" "<<"实得学分:"<<(*s1j).lastscore<<" "<<endl;ii+;sum+=(*s1j).lastscore; /*总学分计算*/if(*s1j).score!=0) /*平均分的计算*/fen+=(*s1j).zongfen;pingjunfen=fen/sum; cout<<"共修:"<<ii<<"科"<<"

25、"<<"总学分:"<<sum<<" "<<"总分:"<<fen<<" "<<"平均分:"<<pingjunfen<<endl;if(p=3) /*达标查询系统*/cout<<"进入达标查询"<<endl;char num10;double sum;cout<<"请输入学号"<<endl;cin

26、>>num;for(int j=0;j<I;j+)if(strcmp(*s1j).getnumber(),num)=0) sum+=(*s1j).lastscore; if(*s1j).zongfen<60) /*未及格学科的*/cout<<(*s1j).classname<<"未及格"<<endl;if(sum<10) /*留级判断*/cout<<"不好意思同学你未通过,需留级!"<<endl;cout<<"进行其他操作(y/n)"

27、<<endl;cin>>c4;while(c4='y');while(flag5=0);5 课程设计总结5.1 程序运行结果或预期运行结果1.通过输入y/n判断用户是否进入学生成绩管理系统,通过输入对应的序号选择对应的功能,如图5.1.1所示。图5.1.1 进入学生成绩管理系统2. 判断输入的数字1,2,3选择对应实现的功能,选择1即表示输入学生成绩,首先输入课程号、课程名称再输入该课程某一学生的信息、课程学分以及该生这门课程的各项成绩,因为高数没有实验,所以实验成绩为0。如图5.1.2所示。图5.1.2 输入学科1(高数)某一学生该科的各项成绩3.通过

28、上一个流程选择y,选择输入学科1(高数)的其他学生在该课程的各项成绩,平时分、实验分和卷面分。如图5.1.3所示图5.1.3 输入学科1(高数)其他学生该科的各项成绩 4.当学科1数据和学生在该科的信息输入数据成功后。继续进行其他学科2(如C+面向对象的课程编号、课程名)的输入操作和其他学生在C+面向对象这科的各项成绩,因为该科有实验,所以有实验成绩。如图5.1.4所示。图5.1.4 输入学科2(C+面向对象)某一学生该科的各项成绩5.输入其他学生在学科2(C+面向对象)的各项成绩,如图5.1.5所示。图5.1.5 输入学科2(C+面向对象)其他学生该科的各项成绩6.当所有学生的所有科目成绩输

29、入数据成功后,选择适当的操作。下面进行的操作就是各个学生的成绩查询,以输入的数据039号学生和002学生为例。如图5.1.6所示。图5.1.6 学号为039号学生的各科成绩7. 查询其他学生的各科成绩,选择适当的操作。以输入的学号002号学生为例。如图5.1.7所示。图5.1.7 学号为002号学生的各科成绩8. 通过查找各个学生的成绩,我们可以对成绩管理系统里的数据有清晰的认识,在必要时可以通过该系统进行统计。在了解同学成绩后我们需要进行的操作是:某已学生是否达标,以及该生哪门不及格等信息。通过适当的操作进行达标查询,以002号为例可以看出:该生需要留级,未及格的科目为C+面向对象。如图5.

30、1.8所示。图5.1.8 学号为002号学生的达标查询 9.当所有的数据输入成功、学生的各科成绩计算出来后。可以在程序设置的位置找到我们所输入数据、计算得到的数据存储的文本文件。课程信息和学生成绩可以从文件读取。如图5.1.9所示。图5.1.9 存储输入数据和计算得到数据的文本文件 5.2 课程设计体会课程设计刚开始时,拿着选定的题目不知如何下手。毕竟课程设计不同于实验课,很多东西都要自己设计。静下心来,仔细分析题目,再加上指导老师的说明与提示,心中才有了谱。将整个系统根据不同的功能化分成不同的模块,画出各个部分的流程图根据流程图设计代码块。比如设计一个基类stu和一个派生类stu1再分别进行设计,逐个攻破,最后将其整合起来。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,友元函数、文件操作、函数重载。而且学到了很多在书本上所没有学到过的知识。在完成课题过程

温馨提示

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

评论

0/150

提交评论