版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生成绩单管理系统利用面向对象编程方法设计一个学生成绩单管理系统,要现以下功能:录入(添加) 学生信息: 学号、平时成绩和考试成绩, 系统自动计算总评成绩 (平 时成绩占 20%,考试成绩占 80%)。可以一次录入多名学生的信息。 查询学生成绩:输入要查询的学生的学号,查询该学生的信息并显示。 显示学生成绩单:按学号顺序显示学生成绩单。 删除学生信息:输入要删除的学生的学号,得到用户确认后,删除该学生的信息。 修改学生信息: 输入要修改的学生的学号, 显示该学生的原有信息, 用户输入修改 后的信息。对成绩进行统计分析: 可以对总成绩进行统计分析, 分别统计出各个成绩段的人数 和比例 , 本课程
2、班级平均成绩等。实验步骤如下:1. 创建项目创建一个 Win32 Console Application ,项目名为“ StudentScore”。2. 定义学生类 CStudent( 1)新建一个“ C/C+ Header File ”,文件名为“ student.h ”,代码如下:/ student.h 学生类的定义class CStudent public:CStudent( char * id="", char *na="",int us=0, int ts=0 ); /构造函数CStudent( const CStudent &s );
3、 / 拷贝构造函数CStudent();char* GetID(); / 获取学生的学号double GetTotalScore();/ 获取总评成绩static void TableHead( );/ 输出表头void Display( ); / 显示学生信息private:char ID5; char name10;int UsualScore;/int TestScore;/double TotalScore; / void CalcTotalScore();/ 学号/ 平时成绩 / 考试成绩 / 总评成绩/ 计算总评成绩;(2)新建一个"C+ Source File ”,文件
4、名为"student.cpp”,代码如下: / student.cpp 学生类的成员函数实现#include <iomanip.h>#include <string.h>#include "student.h"CStudent:CStudent( char * id, char *na,int us, int ts )/ 构造函数strcpy(ID,id); strcpy(name,na);UsualScore=us;TestScore=ts;CalcTotalScore();CStudent:CStudent( const CStuden
5、t &s )/ 拷贝构造函数strcpy( ID, s.ID );strcpy( name, );UsualScore=s.UsualScore;TestScore=s.TestScore;TotalScore=s.TotalScore;CStudent:CStudent() char* CStudent:GetID() / 取得学生的学号 return ID; double CStudent:GetTotalScore() / 获取总成绩 return TotalScore;void CStudent:TableHead( ) / 输出学生信息表头cout<<
6、;setw(4)<<" 学号 "<<setw(10)<<""<<setw(10)<<" 平时成绩 "<<setw(10)<<" 考试成绩 "<<setw(12)<<" 总成绩 n"void CStudent:Display( ) / 显示学生信息 cout<<setw(3)<<ID<<setw(10)<<name<<setw(10
7、)<<UsualScore <<setw(10)<<TestScore<<setw(10)<<TotalScore<<endl;void CStudent:CalcTotalScore() / 计算总成绩 TotalScore= UsualScore*0.2 + TestScore*0.8;3. 定义成绩单类 CStuDataBase(1) 新建一个"C/C+ Header File ”,文件名为"StuDataBase.h”,代码如下: / StuDataBase.h 定义成绩单类,用来管理所有学生的
8、成绩信息#include "student.h"const int MaxStuNum=51; / 班级学生人数最多 50 人class CStuDatabase public:CStuDatabase();/ 构造函数,从文件中读入学生成绩信息CStuDatabase();/ 析构函数,将学生成绩信息写入到文件中void ListScore( );/ 显示成绩单,输出所有学生信息void SelectStuInfo( );/ 查询学生信息void AddStuInfo( );/ 添加学生成绩void DelStuInfo( );/ 删除学生信息void EditStuIn
9、fo( );/ 修改学生信息void AnalyScore( );/ 对成绩进行统计分析void StuDBM( int );/ 成绩库维护int FunctionMenu(); / 功能菜单private:int num;/ 学生人数CStudent stuMaxStuNum;/ 学生数组 ,stu0 不用int SearchStu(const char* id); / 查找指定学号的学生 void SortStu( );/ 按学号从小到大对成绩单排序;(2) 新建一个"C+ Source File ”,文件名为"StuDataBase.cpp”,代码如下: / StuD
10、ataBase.cpp 成绩单类的实现#include <fstream.h>#include <string.h>#include <stdlib.h>#include <iomanip.h>#include <conio.h>#include "StuDataBase.h"int InputScore( )/ 输入百分制成绩int score;cin>>score;while ( score<0 | score>100 ) cout<<" 成绩超出围,请重新输入百分
11、制成绩(0-100 分)cin>>score;return score;CStuDatabase:CStuDatabase() / 从文件中读入学生信息 CStudent s; / 学生对象num=0;fstream StuFile; / 该文件用来保存学生信息StuFile.open( "StuInfo.dat", ios:in );if ( !StuFile ) cout<<" 文件 StuInfo.dat 不能打开! n"return;StuFile.read( (char*)&s, sizeof(s) );whil
12、e ( !StuFile.eof() ) num+;stunum=s;StuFile.read( (char*)&s, sizeof(s) );StuFile.close();CStuDatabase:CStuDatabase() / 将学生信息写入到文件中fstream StuFile; / 该文件用来保存学生信息StuFile.open( "StuInfo.dat", ios:out );if ( !StuFile ) cout<<" 文件 StuInfo.dat 不能创建! n"return;for ( int i=1; i&l
13、t;=num; i+ ) StuFile.write( (char*)&stui, sizeof(stui) ); StuFile.close();int CStuDatabase:SearchStu(const char * id) / 查找指定学号的学生for ( int i=1; i<=num; i+ )if ( strcmp(stui.GetID(),id)=0 )return i;return -1;int CStuDatabase:FunctionMenu() / 功能菜单 int FuncNum; / 保存操作编号system("cls"); /
14、 清屏cout<<"nnn"cout<<setw(20)<<' '<<H*nnn"查询学生成绩 nn" 显示学生成绩单 nn" 添加学生信息 nn" 删除学生信息 nn" 修改学生信息 nn"cout<<setw(24)<<' '<<" 请选择要进行的操作 :nn"cout<<setw(28)<<' '<<"1 -<
15、;<setw(28)<<' '<<"2 -<<setw(28)<<' '<<"3 -<<setw(28)<<' '<<"4 -<<setw(28)<<' '<<"5 -<<setw(28)<<' '<<"6 - 对成绩进行统计分析 nn" <<setw(28)<<
16、;' '<<"0 - 退出 nnn"cout<<setw(20)<<' '<<H*nnn"cin>>FuncNum;while ( FuncNum<0 | FuncNum>6 )cout<<" 请重新选择要进行的操作: "<<endl;cin>>FuncNum;return FuncNum;void CStuDatabase:StuDBM( int FuncNum ) / 成绩维护switch ( Func
17、Num ) case 1: SelectStuInfo(); break; / 查询学生成绩 case 2: ListScore( ); break;/ 显示成绩单case 3: AddStuInfo( ); break; / 添加学生信息 case 4: DelStuInfo( ); break;/ 删除学生信息case 5: EditStuInfo( ); break; / 修改学生信息 case 6: AnalyScore( ); break; / 对成绩进行统计分析 void CStuDatabase:SelectStuInfo( ) / 查询学生信息system("cls&
18、quot;); / 清屏char no5; / 临时保存学号cout<<"n 请输入要查询的学生学号: "<<endl;cin>>no;int i=SearchStu(no);if ( i=-1 ) cout<<"n 你查找的学生不存在! n" else cout<<"n 你所查找的学生成绩如下: nn " CStudent:TableHead( ); / 输出表头 stui.Display();cout<<"n 按任意键返回 "<<
19、;endl;getch();void CStuDatabase:ListScore( ) / 显示成绩单system("cls"); / 清屏if ( num = 0 ) cout<<" 当前还没有学生成绩! n" elseSortStu( ); / 按学号对成绩单排序 CStudent:TableHead( ); / 输出表头 for ( int i=1; i<=num; i+ ) stui.Display();cout<<"n 共有 "<<num<<" 条学生成绩信息
20、 n" cout<<"n 显示成绩完毕 !nn 按任意键返回 "<<endl;getch();void CStuDatabase:AddStuInfo( ) / 添加学生成绩 system("cls"); / 清屏char no5; / 临时保存学号cout<<" 请输入要添加的学生的学号(输入 -1 结束): " cin>>no;while ( strcmp(no,"-1")!=0 )int i=SearchStu( no );while ( i!=-1
21、) cout<<"n 你添加的学生已存在! n 请重新输入学号( -1 结束): cin>>no;if ( strcmp(no,"-1")=0 )cout<<"n 本次操作完成 !nn 按任意键返回 "<<endl;getch();return; i=SearchStu( no );num+;char na10;cout<<"n 请输入要添加的学生的: "cin>>na;cout<<"n 请输入要添加的学生的平时成绩: n"
22、;int us = InputScore();cout<<"n 请输入要添加的学生的考试成绩: n"int ts = InputScore();CStudent s(no,na,us,ts);stunum=s;cout<<"nn 请输入要添加的学生的学号(输入 -1 结束): " cin>>no;cout<<"n 本次操作完成 !nn 按任意键返回 "<<endl;getch();void CStuDatabase:DelStuInfo( ) / 删除学生信息模块 syste
23、m("cls"); / 清屏char no5; / 临时保存学号 cout<<"n 请输入要删除的学生学号: "<<endl; cin>>no;int i=SearchStu( no );if ( i=-1 ) cout<<"n 你要删除的学生不存在! n" else cout<<"n 您所删除的学生信息如下: nn " CStudent:TableHead( ); / 输出表头 stui.Display();char anser;cout<<
24、"n 是否真的要删除该学生?( Y/N ): " cin>>anser;if ( anser='y' | anser='Y')for ( int j=i+1; j<=num; j+ ) stuj-1=stuj;num-;cout<<"n 删除信息成功! "<<endl;cout<<"nn 按任意键返回 "<<endl;getch();void CStuDatabase:EditStuInfo( ) / 修改学生信息模块 system(&q
25、uot;cls"); / 清屏char no5; / 临时保存学号cout<<"n 请输入要修改的学生学号: "<<endl; cin>>no;int i=SearchStu( no );if ( i=-1 ) cout<<"n 你要修改的学生不存在! n" else cout<<"n 您所修改的学生成绩如下: nn " CStudent:TableHead( ); / 输出表头 stui.Display();cout<<"n 请输入学生的新信
26、息: " cout<<"n 请输入学生的: " char na10; cin>>na;cout<<"n 请输入学生的平时成绩: n" int us = InputScore();cout<<"n 请输入学生的考试成绩: n" int ts = InputScore();CStudent s(no,na,us,ts); stui=s;cout<<"n 修改信息成功! "<<endl;cout<<"nn 按任意键返回
27、 "<<endl;getch();void CStuDatabase:AnalyScore( ) / 对成绩进行统计分析 system("cls"); / 清屏int c5=0; / 用来保存各个分数段的人数 double AveScore=0; / 用来保存所有学生的平均成绩 double ts; / 临时保存总评成绩for ( int i=1; i<=num; i+ )ts=stui.GetTotalScore(); AveScore+=ts;case 9:c0+;break;/ 90(含 90)分以上人数case 8:c1+;break;/
28、 80(含 80) -90(不含90)分人数case 7:c2+;break;/ 70(含 70) -80(不含80)分人数case 6:c3+;break;/ 60(含 60) -70(不含70)分人数default: c4+; break; / 不及格人数 switch ( int( ts/10 ) ) case 10:AveScore/=num;cout<<"n 学生成绩分布情况如下: nn"cout<<" 优秀( 90 分 -100 分)人数: "<<c0<<" ,t 占 " &
29、lt;<double(c0)/num*100<<" %nn"cout<<"良好(80 分-89 分)人数:"<<c1<<" , t 占” <<double(c1)/num*100<<" %nn"cout<<" 中等( 70 分- 79 分)人数: "<<c2<<" , t 占 " <<double(c2)/num*100<<" %nn"cout<<"及格(60 分-69 分)人数:"<<c3<<" , t 占” <<double(c3)/num*100<<" %nn"cout<<" 不及格( 60 分以下 )人数: " <<c4<<" , t 占"<<double(c4)/num*100<<" %nn"cout<<" 学生总人数为:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理科普:守护健康从点滴做起
- 恒温库经营责任制度
- 房前屋后三包责任制度
- 托育安全管理责任制度
- 技术总工责任制度
- 护士明确责任制度
- 抽粒工岗位责任制度
- 捆绑责任制度
- 控辍保学老师责任制度
- 支委会责任制度
- “机械装配技术”竞赛设备介绍THMDZP-2型课件
- 药品生物技术专业人才培养方案建设调研报告
- GB/T 7025.2-2008电梯主参数及轿厢、井道、机房的型式与尺寸第2部分:Ⅳ类电梯
- GB/T 25149-2010工业设备化学清洗中碳钢钝化膜质量的测试方法红点法
- GB 12476.5-2013可燃性粉尘环境用电气设备第5部分:外壳保护型“tD”
- 血管外科常见疾病课件
- 新编教育社会学课件
- 中小学教师工作量标准
- 有机聚合物薄膜太阳能电池课件
- 2022年海南省农垦投资控股集团有限公司招聘笔试试题及答案解析
- 主体结构、二次结构、初装修劳务分包合同示范文本
评论
0/150
提交评论