




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生成绩单管理系统利用面向对象编程方法设计一个学生成绩单管理系统,要求实现以下功能:l 录入(添加)学生信息:学号、姓名、平时成绩和考试成绩,系统自动计算总评成绩(平时成绩占20%,考试成绩占80%)。可以一次录入多名学生的信息。l 查询学生成绩:输入要查询的学生的学号,查询该学生的信息并显示。l 显示学生成绩单:按学号顺序显示学生成绩单。l 删除学生信息:输入要删除的学生的学号,得到用户确认后,删除该学生的信息。l 修改学生信息:输入要修改的学生的学号,显示该学生的原有信息,用户输入修改后的信息。l 对成绩进行统计分析:可以对总成绩进行统计分析,分别统计出各个成绩段的人数和比例, 本课程班级
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”,文件名为“student
4、.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 CStudent &s )
5、/ 拷贝构造函数 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<<setw(4)&l
6、t;<"学号"<<setw(10)<<"姓名"<<setw(10)<<"平时成绩"<<setw(10)<<"考试成绩"<<setw(12)<<"总成绩n" void CStudent:Display( ) / 显示学生信息cout<<setw(3)<<ID<<setw(10)<<name<<setw(10)<<UsualSc
7、ore <<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 定义成绩单类,用来管理所有学生的成绩信息#include "student.h&
8、quot;const int MaxStuNum=51; / 班级学生人数最多50人 class CStuDatabase public:CStuDatabase(); / 构造函数,从文件中读入学生成绩信息CStuDatabase(); / 析构函数,将学生成绩信息写入到文件中 void ListScore( ); / 显示成绩单,输出所有学生信息 void SelectStuInfo( ); / 查询学生信息 void AddStuInfo( ); / 添加学生成绩 void DelStuInfo( ); / 删除学生信息 void EditStuInfo( ); / 修改学生信息 voi
9、d 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”,代码如下:/ StuDataBase.cpp 成绩单类的实现#incl
10、ude <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<<"成绩超出范围,请重新输入百分制成绩(0-100分):"cin&
11、gt;>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) );while ( !StuFile.eof()
12、 ) 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<=num; i+ ) StuFi
13、le.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"); /清屏cout<<"
14、;nnn"cout<<setw(20)<<' '<<"*nnn"cout<<setw(24)<<' '<<"请选择要进行的操作:nn"cout<<setw(28)<<' '<<"1 - 查询学生成绩nn"<<setw(28)<<' '<<"2 - 显示学生成绩单nn"<<setw(28)&
15、lt;<' '<<"3 - 添加学生信息nn"<<setw(28)<<' '<<"4 - 删除学生信息nn"<<setw(28)<<' '<<"5 - 修改学生信息nn"<<setw(28)<<' '<<"6 - 对成绩进行统计分析nn"<<setw(28)<<' '<<&qu
16、ot;0 - 退出nnn"cout<<setw(20)<<' '<<"*nnn"cin>>FuncNum;while ( FuncNum<0 | FuncNum>6 )cout<<"请重新选择要进行的操作:"<<endl;cin>>FuncNum; return FuncNum;void CStuDatabase:StuDBM( int FuncNum ) / 成绩维护switch ( FuncNum )case 1: SelectS
17、tuInfo(); 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"); /清屏char no5; /
18、临时保存学号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按任意键返回."<<endl; getch(); void CStuDatabase:
19、ListScore( ) / 显示成绩单system("cls"); /清屏if ( num = 0 )cout<<"当前还没有学生成绩!n" elseSortStu( ); / 按学号对成绩单排序 CStudent:TableHead( ); / 输出表头for ( int i=1; i<=num; i+ )stui.Display();cout<<"n共有 "<<num<<" 条学生成绩信息n"cout<<"n显示成绩完毕!nn按任意键
20、返回."<<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 )cout<<"n你添加的学生已存在!n请重新输入学号(-1结束):&
21、quot;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"int us = InputScore();cout<<"n请输入要添加的学生的
22、考试成绩: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( ) / 删除学生信息模块system("cls"); /清屏 char no5; / 临时保存学号cout<<&quo
23、t;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<<"n是否真的要删除该学生?(Y/N):"cin>>anser;if ( anser='y'
24、 | 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("cls"); /清屏 char no5; / 临时保存学号 cout<<"n请输入要修改的学生学号:"
25、;<<endl;cin>>no;int i=SearchStu( no );if ( i=-1 )cout<<"n你要修改的学生不存在!n" else cout<<"n您所修改的学生成绩如下:nn "CStudent:TableHead( ); / 输出表头stui.Display(); cout<<"n请输入学生的新信息:"cout<<"n请输入学生的姓名:"char na10;cin>>na;cout<<"
26、n请输入学生的平时成绩:n"int us = InputScore(); cout<<"n请输入学生的考试成绩:n" int ts = InputScore(); CStudent s(no,na,us,ts);stui=s;cout<<"n修改信息成功!"<<endl;cout<<"nn按任意键返回."<<endl;getch();void CStuDatabase:AnalyScore( ) / 对成绩进行统计分析system("cls");
27、 / 清屏 int c5=0; / 用来保存各个分数段的人数 double AveScore=0; / 用来保存所有学生的平均成绩double ts; / 临时保存总评成绩for ( int i=1; i<=num; i+ )ts=stui.GetTotalScore();AveScore+=ts;switch ( int( ts/10 ) )case 10:case 9: c0+; break; / 90(含90)分以上人数 case 8: c1+; break; / 80(含80)-90(不含90) 分人数 case 7: c2+; break; / 70(含70)-80(不含80)
28、 分人数 case 6: c3+; break; / 60(含60)-70(不含70) 分人数 default: c4+; break; / 不及格人数 AveScore/=num;cout<<"n学生成绩分布情况如下:nn"cout<<"优秀(90分-100分)人数:"<<c0<<",t占 "<<double(c0)/num*100<<" %nn"cout<<"良好(80分- 89分)人数:"<<c
29、1<<",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<<"学生总人数为:"<<num<<endl;cout<<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区康复练习试题及答案
- 2025年湖北幼儿师范高等专科学校单招职业倾向性测试题库完整
- 2025年广元中核职业技术学院单招职业倾向性测试题库完整版
- 现代医疗体系中的房颤护理培训与教育
- 2025年广西物流职业技术学院单招职业技能测试题库完美版
- 2025年哈尔滨应用职业技术学院单招职业适应性测试题库参考答案
- 2025年广西自然资源职业技术学院单招职业适应性测试题库汇编
- 2025年黑龙江省安全员B证考试题库
- 2025年河北对外经贸职业学院单招职业适应性测试题库附答案
- 2025年河南省开封市单招职业倾向性测试题库一套
- 人教版高中英语挖掘文本深度学习-选修四-UNIT-2-(答案版)
- 八下冀教版英语单词表
- 【人教版化学】选择性必修2 知识点默写小纸条(答案背诵版)
- 初中生心理健康教育讲座课件
- 2024年司法考试完整真题及答案
- 部编高教版2023·职业模块 中职语文 《宁夏闽宁镇:昔日干沙滩今日金沙滩》课件
- 企业对外沟通与形象塑造制度
- 《前列腺增生》课件
- 整体法兰强度校核计算表(设计:zxg)
- 供应链经理年度工作计划
- 2024年甘肃省公务员录用考试《行测》真题卷及答案解析
评论
0/150
提交评论