学生成绩单管理系统源代码呕心沥血整理版.docx
- 文档编号:29805976
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:17
- 大小:19.69KB
学生成绩单管理系统源代码呕心沥血整理版.docx
《学生成绩单管理系统源代码呕心沥血整理版.docx》由会员分享,可在线阅读,更多相关《学生成绩单管理系统源代码呕心沥血整理版.docx(17页珍藏版)》请在冰豆网上搜索。
学生成绩单管理系统源代码呕心沥血整理版
学生成绩单管理系统
利用面向对象编程方法设计一个学生成绩单管理系统,要求实现以下功能:
●录入(添加)学生信息:
学号、姓名、平时成绩和考试成绩,系统自动计算总评成绩(平时成绩占20%,考试成绩占80%).可以一次录入多名学生的信息。
●查询学生成绩:
输入要查询的学生的学号,查询该学生的信息并显示。
●显示学生成绩单:
按学号顺序显示学生成绩单。
●删除学生信息:
输入要删除的学生的学号,得到用户确认后,删除该学生的信息.
●修改学生信息:
输入要修改的学生的学号,显示该学生的原有信息,用户输入修改后的信息。
●对成绩进行统计分析:
可以对总成绩进行统计分析,分别统计出各个成绩段的人数和比例,本课程班级平均成绩等。
实验步骤如下:
1.创建项目
创建一个Win32ConsoleApplication,项目名为“StudentScore"。
2.定义学生类CStudent
(1)新建一个“C/C++HeaderFile”,文件名为“student.h”,代码如下:
//student.h 学生类的定义
classCStudent{
public:
CStudent(char*id=”",char*na=”",intus=0,intts=0);//构造函数
CStudent(constCStudent&s); //拷贝构造函数
~CStudent();
char*GetID(); //获取学生的学号
doubleGetTotalScore(); //获取总评成绩
staticvoidTableHead(); //输出表头
voidDisplay(); //显示学生信息
private:
charID[5]; //学号
charname[10]; //姓名
intUsualScore; //平时成绩
intTestScore; //考试成绩
doubleTotalScore; //总评成绩
voidCalcTotalScore(); //计算总评成绩
};
(2)新建一个“C++SourceFile”,文件名为“student。
cpp”,代码如下:
//student。
cpp 学生类的成员函数实现
#include〈iomanip。
h>
#include〈string。
h>
#include”student。
h"
CStudent:
:
CStudent(char*id,char*na,intus,intts) //构造函数
{
strcpy(ID,id);
strcpy(name,na);
UsualScore=us;
TestScore=ts;
CalcTotalScore();
}
CStudent:
:
CStudent(constCStudent&s) //拷贝构造函数
{
strcpy(ID,s。
ID);
strcpy(name,s.name);
UsualScore=s.UsualScore;
TestScore=s。
TestScore;
TotalScore=s。
TotalScore;
}
CStudent:
:
~CStudent()
{ }
char*CStudent:
:
GetID() //取得学生的学号
{ returnID;}
doubleCStudent:
:
GetTotalScore() //获取总成绩
{ returnTotalScore;}
voidCStudent:
:
TableHead() //输出学生信息表头
{
cout〈 〈<"平时成绩”< } voidCStudent: : Display()//显示学生信息 { cout〈 〈〈setw(10)〈 } voidCStudent: : CalcTotalScore() //计算总成绩 { TotalScore=UsualScore*0。 2+TestScore*0。 8; } 3.定义成绩单类CStuDataBase (1)新建一个“C/C++HeaderFile”,文件名为“StuDataBase.h",代码如下: //StuDataBase.h 定义成绩单类,用来管理所有学生的成绩信息 #include”student。 h” constintMaxStuNum=51; //班级学生人数最多50人 classCStuDatabase{ public: CStuDatabase(); //构造函数,从文件中读入学生成绩信息 ~CStuDatabase(); //析构函数,将学生成绩信息写入到文件中 voidListScore(); //显示成绩单,输出所有学生信息 voidSelectStuInfo(); //查询学生信息 voidAddStuInfo(); //添加学生成绩 voidDelStuInfo(); //删除学生信息 voidEditStuInfo(); //修改学生信息 voidAnalyScore(); //对成绩进行统计分析 voidStuDBM(int); //成绩库维护 intFunctionMenu(); //功能菜单 private: intnum; //学生人数 CStudentstu[MaxStuNum]; //学生数组,stu[0]不用 intSearchStu(constchar*id); //查找指定学号的学生 voidSortStu(); //按学号从小到大对成绩单排序 }; (2)新建一个“C++SourceFile”,文件名为“StuDataBase.cpp”,代码如下: //StuDataBase。 cpp成绩单类的实现 #include〈fstream.h〉 #include〈string.h〉 #include #include〈iomanip。 h> #include #include"StuDataBase.h” intInputScore() //输入百分制成绩 { intscore; cin>〉score; while(score〈0||score>100) { cout〈〈"成绩超出范围,请重新输入百分制成绩(0--—100分): ”; cin〉〉score; } returnscore; } CStuDatabase: : CStuDatabase() //从文件中读入学生信息 { CStudents; //学生对象 num=0; fstreamStuFile; //该文件用来保存学生信息 StuFile。 open(”StuInfo.dat”,ios: : in); if(! StuFile) { cout〈〈"文件StuInfo.dat不能打开! \n”; return; } StuFile。 read((char*)&s,sizeof(s)); while(! StuFile.eof()) { num++; stu[num]=s; StuFile。 read((char*)&s,sizeof(s)); } StuFile。 close(); } CStuDatabase: : ~CStuDatabase() //将学生信息写入到文件中 { fstreamStuFile; //该文件用来保存学生信息 StuFile.open(”StuInfo。 dat”,ios: : out); if(! StuFile) { cout〈<"文件StuInfo。 dat不能创建! \n"; return; } for(inti=1;i〈=num;i++) { StuFile。 write((char*)&stu[i],sizeof(stu[i])); } StuFile.close(); } intCStuDatabase: : SearchStu(constchar*id) //查找指定学号的学生 { for(inti=1;i<=num;i++) if(strcmp(stu[i]。 GetID(),id)==0) returni; return—1; } intCStuDatabase: : FunctionMenu() //功能菜单 { intFuncNum; //保存操作编号 system("cls”); //清屏 cout〈〈”\n\n\n”; cout〈〈setw(20)<〈’’<<"**********************************\n\n\n"; cout<〈setw(24)〈<''〈<”请选择要进行的操作: \n\n"; cout〈 〈 〈〈setw(28)〈〈’’〈〈”3-——添加学生信息\n\n” 〈〈setw(28)<〈''<〈”4---删除学生信息\n\n" < <〈setw(28)〈〈'’〈<”6——-对成绩进行统计分析\n\n” 〈 cout〈〈setw(20)〈<’’<〈”**********************************\n\n\n”; cin>〉FuncNum; while(FuncNum〈0||FuncNum>6) { cout〈〈"请重新选择要进行的操作: ”<〈endl; cin>>FuncNum; } returnFuncNum; } voidCStuDatabase: : StuDBM(intFuncNum)//成绩维护 { switch(FuncNum) { case1: SelectStuInfo(); break; //查询学生成绩 case2: ListScore();break; //显示成绩单 case3: AddStuInfo(); break; //添加学生信息 case4: DelStuInfo();break; //删除学生信息 case5: EditStuInfo(); break; //修改学生信息 case6: AnalyScore(); break; //对成绩进行统计分析 } } voidCStuDatabase: : SelectStuInfo() //查询学生信息 { system("cls”); //清屏 charno[5]; //临时保存学号 cout〈〈”\n请输入要查询的学生学号: ”〈〈endl; cin〉〉no; inti=SearchStu(no); if(i==—1) { cout<〈”\n你查找的学生不存在! \n"; } else { cout〈〈"\n你所查找的学生成绩如下: \n\n"; CStudent: : TableHead(); //输出表头 stu[i].Display(); } cout〈〈”\n按任意键返回。 。 .."<〈endl; getch(); } voidCStuDatabase: : ListScore()//显示成绩单 { system(”cls"); //清屏 if(num==0) { cout<<"当前还没有学生成绩! \n"; } else { SortStu();//按学号对成绩单排序 CStudent: : TableHead(); //输出表头 for(inti=1;i<=num;i++) stu[i]。 Display(); cout〈<”\n共有”<〈num〈<”条学生成绩信息\n”; } cout〈<”\n显示成绩完毕! \n\n按任意键返回..。 ."〈〈endl; getch(); } voidCStuDatabase: : AddStuInfo()//添加学生成绩 { system(”cls"); //清屏 charno[5]; //临时保存学号 cout<〈"请输入要添加的学生的学号(输入—1结束): "; cin〉〉no; while(strcmp(no,"—1")! =0) { inti=SearchStu(no); while(i! =-1) { cout〈<”\n你添加的学生已存在! \n请重新输入学号(—1结束): ”; cin〉〉no; if(strcmp(no,”—1”)==0) { cout〈<”\n本次操作完成! \n\n按任意键返回.。 。 。 ”< getch(); return; } i=SearchStu(no); } num++; charna[10]; cout<〈"\n请输入要添加的学生的姓名: ”; cin>>na; cout〈〈”\n请输入要添加的学生的平时成绩: \n”; intus=InputScore(); cout〈<”\n请输入要添加的学生的考试成绩: \n”; intts=InputScore(); CStudents(no,na,us,ts); stu[num]=s; cout〈〈”\n\n请输入要添加的学生的学号(输入—1结束): ”; cin〉〉no; } cout〈〈”\n本次操作完成! \n\n按任意键返回。 ...”<〈endl; getch(); } voidCStuDatabase: : DelStuInfo()//删除学生信息模块 { system("cls”); //清屏 charno[5]; //临时保存学号 cout<〈"\n请输入要删除的学生学号: ”〈〈endl; cin>〉no; inti=SearchStu(no); if(i==-1) { cout<<”\n你要删除的学生不存在! \n”; } else { cout〈〈”\n您所删除的学生信息如下: \n\n"; CStudent: : TableHead(); //输出表头 stu[i]。 Display(); charanser; cout〈〈”\n是否真的要删除该学生? (Y/N): ”; cin〉>anser; if(anser==’y’||anser==’Y’) { for(intj=i+1;j〈=num;j++) stu[j-1]=stu[j]; num—-; cout<〈"\n删除信息成功! "〈 } } cout〈〈”\n\n按任意键返回。 .。 .”〈〈endl; getch(); } voidCStuDatabase: : EditStuInfo()//修改学生信息模块 { system("cls"); //清屏 charno[5]; //临时保存学号 cout<〈”\n请输入要修改的学生学号: "〈〈endl; cin>>no; inti=SearchStu(no); if(i==—1) { cout<〈”\n你要修改的学生不存在! \n"; } else { cout<〈"\n您所修改的学生成绩如下: \n\n"; CStudent: : TableHead(); //输出表头 stu[i].Display(); cout〈〈"\n请输入学生的新信息: ”; cout〈<"\n请输入学生的姓名: "; charna[10]; cin>>na; cout〈<”\n请输入学生的平时成绩: \n”; intus=InputScore(); cout〈〈”\n请输入学生的考试成绩: \n”; intts=InputScore(); CStudents(no,na,us,ts); stu[i]=s; cout〈<”\n修改信息成功! ”<〈endl; } cout<<”\n\n按任意键返回。 。 .。 ”<〈endl; getch(); } voidCStuDatabase: : AnalyScore()//对成绩进行统计分析 { system(”cls”); //清屏 intc[5]={0}; //用来保存各个分数段的人数 doubleAveScore=0; //用来保存所有学生的平均成绩 doublets; //临时保存总评成绩 for(inti=1;i<=num;i++) { ts=stu[i].GetTotalScore(); AveScore+=ts; switch(int(ts/10)){ case10: case9: c[0]++; break; //90(含90)分以上人数 case8: c[1]++; break; //80(含80)—-—90(不含90)分人数 case7: c[2]++; break; //70(含70)———80(不含80)分人数 case6: c[3]++; break; //60(含60)---70(不含70)分人数 default: c[4]++; break; //不及格人数 } } AveScore/=num; cout〈<"\n学生成绩分布情况如下: \n\n”; cout<〈”优秀(90分--—100分)人数: "〈 <〈double(c[0])/num*100<<”%\n\n”; cout〈〈”良好(80分—--89分)人数: ”< 〈 cout<〈”中等(70分--—79分)人数: ”〈〈c[2]<<”,\t占" 〈〈double(c[2])/num*100<<"%\n\n”; cout〈<”及格(60分———69分)人数: ”〈〈c[3]〈〈",\t占” 〈〈double(c[3])/num*100〈〈”%\n\n”; cout〈〈"不及格(60分以下)人数: " 〈〈c[4]<〈”,\t占"〈〈double(c[4])/num*100〈〈"%\n\n”; cout〈〈"学生总人数为: ”< cout〈〈”\n班级平均成绩为: ”〈 cout<〈"\n按任意键返回。 。 .。 ”〈〈endl; getch(); } voidCStuDatabase: : SortStu() //按学号从小到大对成绩单排序 { in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩单 管理 系统 源代码 呕心沥血 整理