面向对象程序设计马素妮_第1页
面向对象程序设计马素妮_第2页
面向对象程序设计马素妮_第3页
面向对象程序设计马素妮_第4页
面向对象程序设计马素妮_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、面向对象程序设计课程设计设计名称 学生成绩统计姓 名 马素妮 指导教师 张静 班 级 2015信息管理与信息系统本科班 2016年5月20日目录一 引言二 目的与要求三 系统需求分析四 功能设计五 内容设计六 功能介绍七 实验总结八 参考资料附件:程序代码一引言面向对象程序设计课程设计是集中实践性环节之一,是学习完面向对象程序设计课程后进行的一次全面的综合练习。要求学生达到熟练掌握C+语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。二 目的与要求通过本课程设计的实践,全面总结C+课程学

2、习中的的数据类型、程序结构、数组、函数、指针、结构体、链表等基本概念,掌握其使用方法。掌握面向对象程序设计中有关类、对象、继承、重载、多态性、输入输出流类体系、文件操作的基本概念,初步学会用类与对象这种面向对象的程序设计方法编写应用程序。培养使用面向对象的程序设计方法编写计算机程序的能力。通过设计一个学生成绩统计管理,进一步熟悉C+中类的概念、类的封装、继承的实现方式。了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。程序设计是一门实践性很强的课程,必须十分重视实践环

3、节。许多实际的知识不是靠听课和看书学到的,而是通过长时间的实践积累的。三系统需求分析学生管理系统要求利用C语言面向过程的编程思想来完成系统的设计,除了要突出C语言的函数特征,以多个函数实现每一个子功能外,还要画出功能模块图;另外,要求我们进行简单界面设计,能够实现友好的交互,熟练掌握C语言对文件的各种操作。 四功能设计1. 学生基本信息及成绩所选科目成绩的录入。 2. 基本信息的查询与修改。 3. 对该班各科成绩进行分析(即求平均成绩); 4. 对所开课程的成绩分析(求最高分和及格人数); 五内容设计 本学生成绩管理系统程序是一个具有对学生信息进行录入、添加、删除、根据学号进行学生信息的查询、

4、显示已有学生信息的显示、对学生成绩进行统计(包括最高分,最低分,及格率和需要补考的学生),可以对已有的学生信息进行修改,保存和读取输入的数据等功能。一切功能都可以在运行的软件中运行。六功能介绍 通过主函数显示程序的主界面,通过输入的数字不同,函数会进入不同功能的函数继续运行。输入1时,进入学生资料管理的界面。选择1-5数字选择各个不同的小功能。 输入1时,进行学生资料的录入。输入2时,进行学生资料的删除输入3时,进行学生资料的添加输入4时,进行学生资料的修改输入5时,进行学生资料的读取输入0时,可以返回主界面回到主界面后,输入2时,进入学生成绩统计管理功能的界面可以输入0-8任意数字选择各个不

5、同的小功能。输入1时,进行学生成绩总分排名输入2时,进行学生高数分数排名输入3时,进行学生英语分数排名输入4时,进行学生C+分数排名输入5时,显示学生最高总分输入6时 显示学生最低总分输入7时,进行学生平均分排名输入8时,进行及格率计算输入0时,可以返回主界面回到主界面后,输入3时,进入学生成绩统计管理功能的界面可以输入0-3的任意数字,选择 各个不同的功能输入1时,进行按学号查询学生资料的功能输入2时,进行按姓名查询学生资料的功能输入3时,进行按所在班级查询学生资料的功能输入0时,可以返回主界面回到主界面后,输入4时,进入关于系统信息的界面回到主界面后,输入0时,可以退出主界面,结束系统运行

6、 七实验总结此次c+课程设计,在指导教师的精心教导下,我们学会了如何用C+编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C+语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。附件:(程序代码)#i

7、nclude<iostream> #include<fstream> /输入输出文件#include<string> #include<iomanip> /输出格式控制using namespace std; char press;int choose;int n;class Studentpublic:int num; string name;int bj;char sex;float Math;float English;float Cjj;float sum;float average;Student stud100;/读取资料 void

8、read() char filename20; cout<<"从文件中读取信息!"<<endl; cout<<"请输入文件名:"<<endl; cin>>filename; ifstream infile(filename,ios:in|ios:out); /定义输入文件流对象,以输出方式打开用户自定义的磁盘文件 if(!infile) cerr<<"open error!"<<endl; exit(1); /输出出错信息do int i=0; inf

9、ile>>studi.num>>>>studi.sex>>studi.bj; /从磁盘读取学生的信息 infile>>studi.Math>>studi.English>>studi.Cjj; cout<<"学生的学号:"<<studi.num<<" " /向显示器输出学生的信息<<"姓名:"<<<<" " <<

10、;"性别:"<<studi.sex<<" " <<"班级:"<<studi.bj<<" " <<"高数成绩:"<<studi.Math<<" "<<"大学英语成绩:"<<studi.English<<" "<<"C+成绩:"<<studi.Cjj<<e

11、ndl; i+;while(!infile.eof(); /判断是否为文件尾 infile.close();cout<<"读取成功!"<<endl;/保存资料void save() int i;char filename20;for(i=0;i<n;i+) cout<<"学生的学号:"<<studi.num<<" " <<"姓名:"<<<<" " <<"

12、性别:"<<studi.sex<<" " <<"班级:"<<studi.bj<<" " <<"高数成绩:"<<studi.Math<<" " <<"大学英语成绩:"<<studi.English<<" " <<"C+成绩:"<<studi.Cjj<<endl;c

13、out<<"将记录保存在文件夹!"<<endl;cout<<"请输入文件名:"cin>>filename; ofstream outfile(filename); if(!outfile)cerr<<"open error!"<<endl; for(i=0;i<n;i+) outfile<<" "<<studi.num<<" "<<<<&q

14、uot; "<<studi.sex<<" "<<studi.bj<<" " outfile<<studi.Math<<" "<<studi.English<<" "<<studi.Cjj; outfile.close();cout<<"保存成功!"<<endl;/输入资料void SR() cout<<"请根据你的需要输入学生的个数:

15、"cin>>n;for(int a=0;a<n;a+)cout<<"请输入第"<<a+1<<"个学生资料:"<<endl;cout<<"学号:"<<' 'cin>>studa.num;cout<<"姓名:"<<' 'cin>>;cout<<"性别:"<<' '

16、cin>>studa.sex;cout<<"班级:"<<' 'cin>>studa.bj;cout<<"高数成绩:"<<' 'cin>>studa.Math;cout<<"大学英语成绩:"<<' 'cin>>studa.English;cout<<"C+成绩:"<<' 'cin>>studa.Cjj

17、;studa.sum=studa.Math+studa.English+studa.Cjj;studa.average=(studa.Math+studa.English+studa.Cjj)/3;cout<<"输入成功,学生资料是否保存?(y/n)"<<endl;cin>>press;switch(press)case 'y' : save();break;default: cout<<"不保存!"break;/删除资料void SC() dostring SC_name;cout<

18、<"请输入你要删除的学生名字:"<<endl;int i=0;cin>>SC_name;while(!=SC_name&&i<n) i+; /查找判断if(=SC_name) for(int j=i;j<n-1;j+)studi.num=studi+1.num; =studi+1.name; studi.sex=studi+1.sex; studi.bj=studi+1.bj; studi.Math=studi+1.Math; studi.English=s

19、tudi+1.English; studi.Cjj=studi+1.Cjj;cout<<"删除成功!"<<endl;n=n-1;else if(i=n) cout<<"can't find this name"<<endl;cout<<"该信息不存在,无法删除!"<<endl; cout<<"是否继续操作?(y/n)"<<endl;cin>>press;while(press='y'|

20、press='Y') ;/添加资料void TJ() docout<<"请添加新的学生信息"<<endl;cout<<"新的学生学号:"<<endl;cin>>studn.num;cout<<"新学生姓名:"<<endl;cin>>;cout<<"新学生性别:"<<endl;cin>>studn.sex;cout<<"新学生班级

21、:"<<endl;cin>>studn.bj;cout<<"新学生的高数成绩:"<<endl;cin>>studn.Math;cout<<"新学生的大学英语成绩:"<<endl;cin>>studn.English;cout<<"新学生的C+成绩:"<<endl;cin>>studn.Cjj;studn.sum=studn.Math+studn.English+studn.Cjj;studn.a

22、verage=(studn.Math+studn.English+studn.Cjj)/3;n+; cout<<"(是否继续操作?(y/n)"<<endl;cin>>press;while(press='y'|press='Y');cout<<"添加成功,学生资料是否保存?(y/n)"<<endl;cin>>press;switch(press)case 'y' : save();break;default: cout<<&

23、quot;不保存!"break;/修改资料void XG() begin:string find_name;int i;cout<<"请输入你要修改的学生名字:"<<endl;cin>>find_name;for(i=0;i<n;i+)if(=find_name)cout<<<<" "<<"has been found:"<<endl; cout<<"学生的学号:"

24、<<studi.num<<' ' <<"姓名:"<<<<' ' << "性别:"<<studi.sex<<' ' << "班级:"<<studi.bj<<' ' <<"高数成绩:"<<studi.Math<<' ' <<"大学英语

25、成绩:"<<studi.English<<' ' <<"C+成绩:"<<studi.Cjj<<endl;break; if(!=find_name) cout<<"can't find this name"<<endl; cout<<"请重新查找!"<<endl;goto begin;for(int j=0;j<n;j+)cout<<"请输入新的信

26、息:"<<endl;cout<<"学号:"<<' 'cin>>studj.num;cout<<"姓名:"<<' 'cin>>;cout<<"性别:"<<' 'cin>>studj.sex;cout<<"班级:"<<' 'cin>>studj.bj;cout<<

27、;"高数成绩:"<<' 'cin>>studj.Math;cout<<"大学英语成绩:"<<' 'cin>>studj.English;cout<<"C+成绩:"<<' 'cin>>studj.Cjj; studi.num=studj.num;=;studi.sex=studj.sex; studi.bj=studj.bj;studi.Math=stud

28、j.Math;studi.English=studj.English; studi.Cjj=studj.Cjj;break;cout<<"修改成功,是否保存?(y/n)"<<endl;cin>>press;switch(press)case 'y' : save();break;default: cout<<"不保存!"break;/按总分排名void zf() int m,t;string na;float z,h,e,c,p;char s;for(int j=0;j<n-1;j+)

29、 /选择法排序for(int i=0;i<n-1-j;i+) /以下的按各单科成绩和平均分也是运用选择法排序if(studi.sum>studi+1.sum) m=studi.num; studi.num=studi+1.num; studi+1.num=m; na=; =studi+1.name; studi+1.name=na; s=studi.sex; studi.sex=studi+1.sex; studi+1.sex=s; t=studi.bj; studi.bj=studi+1.bj; studi+1.bj=t; h=studi.

30、Math; studi.Math=studi+1.Math; studi+1.Math=h; e=studi.English; studi.English=studi+1.English; studi+1.English=e; c=studi.Cjj; studi.Cjj=studi+1.Cjj; studi+1.Cjj=c; z=studi.sum; studi.sum=studi+1.sum; studi+1.sum=z; p=studi.average; studi.average=studi+1.average; studi+1.average=p;cout<<"

31、学生按总分排名:"<<endl;cout<<"学号"<<' '<<"姓名"<<' '<<"性别"<<' '<<"班级"<<' '<<"总分"<<endl;for(int i=0;i<n;i+)cout<<studi.num<<" " <&

32、lt;<<" "<<studi.sex<<" "<<studi.bj<<" "<<studi.sum<<endl;cout<<endl;/按高数分数排名void gs() int g,t;float z,h,e,c,p;string na;char s;for(int j=0;j<n-1;j+) for(int i=0;i<n-1-j;i+) if(studi.Math>studi+1.Math) g=

33、studi.num; studi.num=studi+1.num; studi+1.num=g; na=; =studi+1.name; studi+1.name=na; s=studi.sex; studi.sex=studi+1.sex; studi+1.sex=s; t=studi.bj; studi.bj=studi+1.bj; studi+1.bj=t; h=studi.Math; studi.Math=studi+1.Math; studi+1.Math=h; e=studi.English; studi.English=studi+1.En

34、glish; studi+1.English=e; c=studi.Cjj; studi.Cjj=studi+1.Cjj; studi+1.Cjj=c; z=studi.sum; studi.sum=studi+1.sum; studi+1.sum=z; p=studi.average; studi.average=studi+1.average; studi+1.average=p; cout<<"学生按高数分数排名:"<<endl;cout<<"学号"<<' '<<"

35、;姓名"<<' '<<"性别"<<' '<<"班级"<<' '<<"高数分数"<<endl;for(int i=0;i<n;i+)cout<<studi.num<<" " <<<<" "<<studi.sex<<" "<<stu

36、di.bj<<" "<<studi.Math<<endl;cout<<endl; /按英语分数排名void yy()int g,t;float z,h,e,c,p;string na;char s;for(int j=0;j<n-1;j+) for(int i=0;i<n-1-j;i+) if(studi.English>studi+1.English) g=studi.num; studi.num=studi+1.num; studi+1.num=g; na=; =s

37、tudi+1.name; studi+1.name=na; s=studi.sex; studi.sex=studi+1.sex; studi+1.sex=s; t=studi.bj; studi.bj=studi+1.bj; studi+1.bj=t; h=studi.Math; studi.Math=studi+1.Math; studi+1.Math=h; e=studi.English; studi.English=studi+1.English; studi+1.English=e; c=studi.Cjj; studi.Cjj=studi+1.Cjj; studi+1.Cjj=c;

38、 z=studi.sum; studi.sum=studi+1.sum; studi+1.sum=z; p=studi.average; studi.average=studi+1.average; studi+1.average=p;cout<<"学生按英语分数排名:"<<endl;cout<<"学号"<<' '<<"姓名"<<' '<<"性别"<<' '<<

39、"班级"<<' '<<"英语分数"<<endl;for(int i=0;i<n;i+)cout<<studi.num<<" " <<<<" "<<studi.sex<<" "<<studi.bj<<" "<<studi.English<<endl;cout<<endl;

40、 /按C+分数排名void cy()int g,t;float z,h,e,c,p;string na;char s;for(int j=0;j<n-1;j+) for(int i=0;i<n-1-j;i+) if(studi.Cjj>studi+1.Cjj) g=studi.num; studi.num=studi+1.num; studi+1.num=g; na=; =studi+1.name; studi+1.name=na; s=studi.sex; studi.sex=studi+1.sex; studi+1.sex=s; t

41、=studi.bj; studi.bj=studi+1.bj; studi+1.bj=t; h=studi.Math; studi.Math=studi+1.Math; studi+1.Math=h; e=studi.English; studi.English=studi+1.English; studi+1.English=e; c=studi.Cjj; studi.Cjj=studi+1.Cjj; studi+1.Cjj=c; z=studi.sum; studi.sum=studi+1.sum; studi+1.sum=z; p=studi.average; studi.average

42、=studi+1.average; studi+1.average=p;cout<<"学生按C+分数排名:"<<endl;cout<<"学号"<<' '<<"姓名"<<' '<<"性别"<<' '<<"班级"<<' '<<"C+分数"<<endl;for(int i=0;

43、i<n;i+)cout<<studi.num<<" " <<<<" "<<studi.sex<<" "<<studi.bj<<" "<<studi.Cjj<<endl;cout<<endl;/计算最高总分void max_student() float max;max=stud0.sum;for(int j=0;j<n;j+)if(studj.sum&g

44、t;max)max=studj.sum;cout<<"最高总分为:"<<max<<endl;/计算最低总分void min_student() float min;min=stud0.sum;for(int j=0;j<n;j+)if(studj.sum<min)min=studj.sum;cout<<"最低总分为:"<<min<<endl;/按平均分排名void aver() float z,h,e,c,p;int m,b;string na;char s;for(in

45、t j=0;j<n-1;j+) for(int i=0;i<n-1-j;i+) if(studi.average>studi+1.average) m=studi.num; studi.num=studi+1.num; studi+1.num=m; na=; =studi+1.name; studi+1.name=na; s=studi.sex; studi.sex=studi+1.sex; studi+1.sex=s; b=studi.bj; studi.bj=studi+1.bj; studi+1.bj=b; h=studi.Mat

46、h; studi.Math=studi+1.Math; studi+1.Math=h; e=studi.English; studi.English=studi+1.English; studi+1.English=e; c=studi.Cjj; studi.Cjj=studi+1.Cjj; studi+1.Cjj=c; z=studi.sum; studi.sum=studi+1.sum; studi+1.sum=z; p=studi.average; studi.average=studi+1.average; studi+1.average=p;cout<<"学生按

47、平均分排名:"<<endl;cout<<"学号"<<' '<<"姓名"<<' '<<"性别"<<' '<<"班级"<<' '<<"平均分"<<endl;for(int k=0;k<n;k+)cout<<studk.num<<" "<<

48、;<<" "<<studk.sex<<" "<<studk.bj<<" "<<studk.average<<endl;cout<<endl;/计算及格率void jgl() int count1=0;int count2=0;int count3=0;float a,b,c;for(int i=0;i<n;i+)if(studi.Math>=60) count1+;a=(float)count1/(float

49、)n)*100;for(int j=0;j<n;j+)if(studj.English>=60) count2+;b=(float)count2/(float)n)*100;for(int k=0;k<n;k+)if(studk.Cjj>=60) count3+;c=(float)count3/(float)n)*100;cout<<setiosflags(ios:fixed)<<"三科成绩的及格率分别为:"<<endl;cout<<setprecision(2)<<a<<&qu

50、ot;%," <<setprecision(2)<<b<<"%," <<setprecision(2)<<c<<"%"<<endl;/按学生学号查找资料void sn() doint find_num;cout<<"请输入你要查询的学号:"<<' 'cin>>find_num;int i;for(i=0;i<n;i+)if(studi.num=find_num) cout<<

51、;"学号为"<<studi.num<<"的学生的资料已找到:"<<endl; cout<<"学号:"<<studi.num<<' ' <<"姓名:"<<<<' ' << "性别:"<<studi.sex<<' ' << "班级:"<<studi

52、.bj<<' ' <<"高数成绩:"<<studi.Math<<' ' <<"大学英语成绩:"<<studi.English<<' ' <<"C+成绩:"<<studi.Cjj<<endl;break;if(studi.num!=find_num) cout<<"can't find this num"<<endl;c

53、out<<"是否继续操作?(y/n)"<<endl;cin>>press;while(press='y'|press='Y') ;/按学生姓名查找资料void sm() dostring find_name;cout<<"请输入你要查询的姓名:"<<' 'cin>>find_name;int i;for(i=0;i<n;i+)if(=find_name) / cout<<"姓名为"

54、;<<<<"的学生的资料已找到"<<endl; cout<<"学号:"<<studi.num<<' ' <<"姓名:"<<<<' ' <<"性别:"<<studi.sex<<' ' <<"班级:"<<studi.bj<<'

55、' <<"高数成绩:"<<studi.Math<<' ' <<"大学英语成绩:"<<studi.English<<' ' <<"C+成绩:"<<studi.Cjj<<endl;break;if(!=find_name) cout<<"can't find this name"<<endl;cout<<&qu

56、ot;(是否继续操作?(y/n)"<<endl;cin>>press;while(press='y'|press='Y') ;/按学生所在班级查找资料void bbj() doint find_bj;cout<<"请输入你要查询的班级:"<<' 'cin>>find_bj;int i;for(i=0;i<n;i+)if(studi.bj=find_bj) cout<<"所在班级为"<<studi.bj<

57、<"的所有学生资料已找到:"<<endl; cout<<"学生的学号:"<<studi.num<<' ' <<"姓名:"<<<<' ' <<"性别:"<<studi.sex<<' ' <<"班级:"<<studi.bj<<' ' <<&quo

58、t;高数成绩:"<<studi.Math<<' ' <<"大学英语成绩:"<<studi.English<<' ' <<"C+成绩:"<<studi.Cjj<<endl;break;if(studi.bj!=find_bj) cout<<"can't find this bj"<<endl;cout<<"(是否继续操作?(y/n)"&l

59、t;<endl;cin>>press;while(press='y'|press='Y') ;/学生资料管理界面void Fire()while(choose!=0) cout<<"ttt*"<<endl; cout<<"ttt*"<<endl; cout<<"ttt* 学生资料管理 *"<<endl; cout<<"ttt* *"<<endl; cout<<

60、"ttt* 1.录入学生资料 *"<<endl; cout<<"ttt* 2.删除学生资料 *"<<endl; cout<<"ttt* 3.添加学生资料 *"<<endl; cout<<"ttt* 4.修改学生资料 *"<<endl; cout<<"ttt* 5.读取学生资料 *"<<endl; cout<<"ttt* 0.返回 *"<<endl; cout<<"ttt* *"<<endl; cout<<"ttt* 按Enter继续 *"<<endl; cout<<"

温馨提示

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

评论

0/150

提交评论