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 ); / 拷贝构造函数 CStudent(); char* Ge
3、tID(); / 获取学生的学号 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.cpp”,代码如下:
4、/ student.cpp 学生类的成员函数实现#include #include #include student.hCStudent: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 ) / 拷贝构造函数 strcpy( ID, s.ID ); strcpy( name, s.name ); UsualS
5、core=s.UsualScore; TestScore=s.TestScore; TotalScore=s.TotalScore;CStudent:CStudent() char* CStudent:GetID() / 取得学生的学号 return ID; double CStudent:GetTotalScore() / 获取总成绩 return TotalScore;void CStudent:TableHead( ) / 输出学生信息表头 coutsetw(4)学号setw(10)姓名setw(10)平时成绩setw(10)考试成绩setw(12)总成绩n; void CStudent
6、:Display( ) / 显示学生信息 coutsetw(3)IDsetw(10)namesetw(10)UsualScore setw(10)TestScoresetw(10)TotalScoreendl; void CStudent:CalcTotalScore() / 计算总成绩 TotalScore= UsualScore*0.2 + TestScore*0.8; 3. 定义成绩单类CStuDataBase(1)新建一个“C/C+ Header File”,文件名为“StuDataBase.h”,代码如下:/ StuDataBase.h 定义成绩单类,用来管理所有学生的成绩信息#in
7、clude student.hconst int MaxStuNum=51; / 班级学生人数最多50人 class CStuDatabase public: CStuDatabase(); / 构造函数,从文件中读入学生成绩信息 CStuDatabase(); / 析构函数,将学生成绩信息写入到文件中 void ListScore( ); / 显示成绩单,输出所有学生信息 void SelectStuInfo( ); / 查询学生信息 void AddStuInfo( ); / 添加学生成绩 void DelStuInfo( ); / 删除学生信息 void EditStuInfo( );
8、/ 修改学生信息 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”,代码如下:/ StuDataBase
9、.cpp 成绩单类的实现#include #include #include #include #include #include StuDataBase.hint InputScore( ) / 输入百分制成绩 int score;cinscore;while ( score100 ) coutscore;return score;CStuDatabase:CStuDatabase() / 从文件中读入学生信息 CStudent s; / 学生对象num=0;fstream StuFile; / 该文件用来保存学生信息 StuFile.open( StuInfo.dat, ios:in );
10、if ( !StuFile ) cout文件StuInfo.dat不能打开!n; return; StuFile.read( (char*)&s, sizeof(s) ); while ( !StuFile.eof() ) num+; stunum=s; StuFile.read( (char*)&s, sizeof(s) ); StuFile.close(); CStuDatabase:CStuDatabase() / 将学生信息写入到文件中 fstream StuFile; / 该文件用来保存学生信息 StuFile.open( StuInfo.dat, ios:out ); if ( !
11、StuFile ) cout文件StuInfo.dat不能创建!n; return; for ( int i=1; i=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()
12、 /功能菜单 int FuncNum; / 保存操作编号 system(cls); /清屏 coutnnn; coutsetw(20) *nnn; coutsetw(24) 请选择要进行的操作:nn; coutsetw(28) 1 - 查询学生成绩nn setw(28) 2 - 显示学生成绩单nn setw(28) 3 - 添加学生信息nn setw(28) 4 - 删除学生信息nn setw(28) 5 - 修改学生信息nn setw(28) 6 - 对成绩进行统计分析nn setw(28) 0 - 退出nnn; coutsetw(20) FuncNum; while ( FuncNum6
13、) cout请重新选择要进行的操作:FuncNum; return FuncNum;void CStuDatabase:StuDBM( int FuncNum ) / 成绩维护 switch ( FuncNum ) case 1: SelectStuInfo(); break; / 查询学生成绩 case 2: ListScore( ); break; / 显示成绩单 case 3: AddStuInfo( ); break; / 添加学生信息 case 4: DelStuInfo( ); break; / 删除学生信息 case 5: EditStuInfo( ); break; / 修改学
14、生信息 case 6: AnalyScore( ); break; / 对成绩进行统计分析 void CStuDatabase:SelectStuInfo( ) / 查询学生信息 system(cls); /清屏 char no5; / 临时保存学号 coutn请输入要查询的学生学号:no; int i=SearchStu(no); if ( i=-1 ) coutn你查找的学生不存在!n; else coutn你所查找的学生成绩如下:nn ; CStudent:TableHead( ); / 输出表头 stui.Display(); coutn按任意键返回.endl; getch(); vo
15、id CStuDatabase:ListScore( ) / 显示成绩单 system(cls); /清屏if ( num = 0 ) cout当前还没有学生成绩!n; else SortStu( ); / 按学号对成绩单排序 CStudent:TableHead( ); / 输出表头 for ( int i=1; i=num; i+ ) stui.Display(); coutn共有 num 条学生成绩信息n; coutn显示成绩完毕!nn按任意键返回.endl; getch(); void CStuDatabase:AddStuInfo( ) / 添加学生成绩 system(cls); /
16、清屏 char no5; / 临时保存学号 coutno; while ( strcmp(no,-1)!=0 ) int i=SearchStu( no ); while ( i!=-1 ) coutno; if ( strcmp(no,-1)=0 ) coutn本次操作完成!nn按任意键返回.endl; getch(); return; i=SearchStu( no ); num+; char na10; coutna; coutn请输入要添加的学生的平时成绩:n; int us = InputScore(); coutn请输入要添加的学生的考试成绩:n; int ts = InputSc
17、ore(); CStudent s(no,na,us,ts); stunum=s; coutno; coutn本次操作完成!nn按任意键返回.endl; getch(); void CStuDatabase:DelStuInfo( ) / 删除学生信息模块 system(cls); /清屏 char no5; / 临时保存学号 coutn请输入要删除的学生学号:no; int i=SearchStu( no ); if ( i=-1 ) coutn你要删除的学生不存在!n; else coutn您所删除的学生信息如下:nn ;CStudent:TableHead( ); / 输出表头stui.
18、Display();char anser;coutanser;if ( anser=y | anser=Y) for ( int j=i+1; j=num; j+ )stuj-1=stuj;num-;coutn删除信息成功!endl; coutnn按任意键返回.endl; getch(); void CStuDatabase:EditStuInfo( ) / 修改学生信息模块 system(cls); /清屏 char no5; / 临时保存学号 coutn请输入要修改的学生学号:no; int i=SearchStu( no ); if ( i=-1 ) coutn你要修改的学生不存在!n;
19、 else coutn您所修改的学生成绩如下:nn ; CStudent:TableHead( ); / 输出表头 stui.Display(); coutn请输入学生的新信息:; coutna; coutn请输入学生的平时成绩:n; int us = InputScore(); coutn请输入学生的考试成绩:n; int ts = InputScore(); CStudent s(no,na,us,ts); stui=s; coutn修改信息成功!endl;coutnn按任意键返回.endl;getch(); void CStuDatabase:AnalyScore( ) / 对成绩进行统
20、计分析 system(cls); / 清屏 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;
21、 / 70(含70)-80(不含80) 分人数 case 6: c3+; break; / 60(含60)-70(不含70) 分人数 default: c4+; break; / 不及格人数 AveScore/=num;coutn学生成绩分布情况如下:nn; cout优秀(90分-100分)人数:c0,t占 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学生总人数为:numendl; coutn班级平均成绩为:AveScoreendl; coutn按任意键返回.endl; getch(); void CStuDatabase:SortStu( ) / 按学号从小到大对成绩单排序 int i, j,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1