1、设计题目:成绩管理系统设计要求实现如下功能:输入一个班级的学生基本信息(包括学号,姓名,性别,科目),对N门考试的成绩进行管理(例N=5)要求 :1.用户录入每个学生每门课程的分数;2.能够计算每个学生的各门功课总分和平均分,并按总分将成绩排序,显示每个学生的总分和排名;3.计算全班各门功课的平均分,显示没门课程中低于平均分的每一个学生的学号,姓名,性别,科目,成绩等信息;4。显示每门科目中,成绩在90分以上的学生信息。另外还输出每门科目中不及格的学生信息;5。能按姓名或者学号查找,增加,删除和保存各个学生的信息。6 文件操作源码:class.cpp文件:#includeiostream#in
2、cludefstreamincludestringusing namespace std;class Student private: int no; string name,sex; public: string getName()return name;string getSex()return sex; int getNo()return no; void setSex(string s)sex=s;void setNo(int sno)no=sno;void setName(string nam)name=nam; void show() cout”学号 :noendl; cout”姓
3、名 :”nameendl; cout性别 :sexendl; coutendl; void Init() string n; int num,s; cout”请输入学号:endl; cinnum; cout请输入姓名:”endl; cinn; cout”请选择性别:男 0,女 1s; no=num; name=n; string s1,s2; if(s=0)s1=”boy”;Student:setSex(s1); else s2=”girl”;Student:setSex(s2); ;class Classesprivate: string name;public: int number; S
4、tudent c100; int getNumber()return number; Student getStu()return c100; void setStudent(Student a100)c100=a100; void setNumber(int num)number=num; void Init() number=0; string nam; coutnam; cout请输入班级人数:endl; cinnumber; for(int i=0;inumber;i+) ci.Init(); ofstream out; out。open(”student.txt,ios::out);
5、 if(!out) cerr”文件打不开”endl; abort(); for(int i=0;inumber;i+)outci。getNo()” ”ci。getName()” ”ci。getSex()endl;out.close(); void searchByName() string nam; cout”请输入要查找的学生姓名:”nam; int i; for(i=0;inumber;i+) if(ci。getName()=nam) ci。show(); void serchByNo() int n; cout”请输入要查找的学号;”endl; cinn; int i; for(i=0;
6、i100;i+) if(ci.getNo()=n)ci。show();break; ;class Courseprivate: string name; int score;public: string getName()return name; void Init() string nam; cout请输入课程名:endl; cinnam; setName(nam); void setName(string nam)name=nam;class OpreatorCoupublic: Classes c1; Course co20; int Mark100100,StuAll100,n; vo
7、id setN(int nn)n=nn; int getN()return n; int getMark()return Mark100100; Course getCo()return co20; void IN() coutn; for(int i=0;in;i+) coi.Init(); ofstream outS; outS。open(”course.txt”,ios:out); if(!outS) cerr”文件打不开endl; abort(); for(int i=0;in;i+)outScoi.getName()endl;outS。close(); void input(Cour
8、se co20,int n,Student c, int number ) int s; for(int i=0;in;i+) for(int j=0;jnumber;j+) cout”请输入”cj.getName()的”s;if(s0|s100)cout你输入的成绩有误请重新输入!(成绩范围为0-100!)”endl; j=j1;else Markij=s; ofstream out; out。open(”score。txt,ios:out); if(!out) cerr文件打不开endl; abort(); for(int i=0;in;i+) outcoi。getName(); for(
9、int j=0;jnumber;j+) out” ”Markij ; outendl; out。close(); void CountStu(int Mark100100,int number,int n)for(int i=0;inumber;i+)int s=0;for(int j=0;jn;j+)s=s+Markji;StuAlli=s; void CountCouAvg(int Mark100100,Student c,int number,Course co,int n) float CouAll10; for(int i=0;in;i+) float s=0.0; for(int
10、j=0;jnumber;j+) s=s+Markij; CouAlli=s/n; for(int i=0;in;i+)coutcoi.getName()”的平均分是:”(CouAlli)endl; for(int i=0;in;i+) for(int j=0;jnumber;j+) if(MarkijCouAlli) coutcj.getName()的”coi.getName()成绩小于平均分.endl; void showUnpass(int Mark100100,Student c,int number,Course co,int n) for(int i=0;in;i+) for(int
11、 j=0;jnumber;j+) if(Markij60) coutcj。getName()的coi。getName()”成绩不及格!endl; void showGood(int Mark100100,Student c,int number,Course co,int n) for(int i=0;in;i+) for(int j=0;jnumber;j+) if(Markij90) coutcj。getName()”的”coi。getName()”成绩优秀!成绩为:Markijendl; void order(Student c,int number,int StuAll,int n)
12、for(int i=0;inumber;i+) int sum=0;Student stu; if(StuAlliStuAlli+1) sum=StuAlli; StuAlli=StuAlli+1; StuAlli+1=sum; stu=ci; ci=ci+1; ci+1=stu; for(int i=0;inumber;i+) coutci。getName()”的排名是:”(i+1) 总分:StuAlliendl; ofstream out; out。open(”studentscore.txt”,ios:out); if(!out) cerr文件打不开endl; abort(); for(
13、int i=0;inumber;i+)outci.getName()” ”StuAlli” (i+1)endl;out.close(); void Delete(int Mark100100,Student c,int number,int n) string na; cout请输入要删除的学生姓名:endl; cinna; for(int i=0;inumber;i+) if(ci.getName()=na) for(i;inumber;i+) ci=ci+1; for(int j=0;jn;j+) for(int k=i;knumber;k+) Markjk=Markjk+1; elsec
14、out”您要删除的学生不存在!”endl; cout删除成功!endl; void ReadText(Student c,int number,Course co,int n) char sname30,sex30; int sno; ifstream in(”student.txt”,ios:in); if(!in) cerrsnosnamesex; while(!in。eof() i=i+1; ci。setNo(sno); ci.setName(sname); ci.setSex(sex); insnosnamesex; c1。setStudent(c); c1。setNumber(i+1
15、); in。close(); char nam20; ifstream ins(”course。txt”,ios:in); if(!ins) cerr文件打不开”endl; abort(); int j=1; insnam; while(!ins.eof()) j+; coj。setName(nam); insnam; setN(j+1); ins。close(); cout”读取文件完毕,请继续操作!endl; ;主函数:#include”class。cpp”includeiostream void showMenue()cout”*学生成绩管理系统*”endl;cout请选择功能:endl
16、;cout”1 输入学生成绩”endl;cout”2 根据成绩排序输出。endl;cout”3 显示成绩大于90分的学生”endl;cout”4 显示不及格学生”endl;cout”5 按姓名查找”endl;cout”6 按学号查找endl;cout”7 显示成绩小于课程平均分的学生”endl;cout”8 删除学生信息”endl;cout”0 退出”endl;coutendl;void main()int choice,input ;cout请选择初始化方式:1.手动输入 2。从文件读取”endl;cininput;OpreatorCou op;if(input=1) op.c1。Init(
17、);op。IN();if(input=2)op.ReadText(op.c1。c,op。c1.getNumber(),op。co,op。getN(); do showMenue(); cinchoice; switch(choice) case 1: op。input(op。co,op.getN(),op。c1。c,op。c1。getNumber();break;case 2: op。CountStu(op。Mark,op.c1。getNumber(),op。getN(); op.order(op。c1。c,op。c1.getNumber(),(op.StuAll),op。getN()); b
18、reak; case 3: op。showGood(op。Mark,op。c1。c,op。c1。getNumber(),op.co,op.getN(); break; case 4: op.showUnpass(op。Mark,op。c1。c,op.c1。getNumber(),op。co,op。getN());break; case 5: op。c1.searchByName();break; case 6: op。c1。serchByNo(); break; case 7: op.CountCouAvg(op.Mark,op.c1.c,op。c1.getNumber(),op。co,op。getN());break;case 8: op。Delete(op。Mark,op。c1.c,op。c1.getNumber(),op.getN());break; case 0: break; default: cout”您输入的有误,请重新输入!endl; while(choice!=0);运行界面: