《2022年c++学生成绩管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年c++学生成绩管理系统 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、题目:设计一个类Cstudent,类中包含一个学生的基本数据如下:编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。并假设编号为整数,且从1 号往后连续编号;姓名为字符串,性别为字符。如:1 LiPing m 18 89 98 94 请采用 binary 文件形式,并使用随机读写处理方式,对自定义CStudent 类的对象数据进行储存与读写处理(即是说,总按具有连续编号num 为“序”来对文件中的各对象数据进行随机读写处理) 。并设计该类的成员函数,而且对输出运算符“”进行重载,使该运算符能够完成将一个学生的信息输出到屏幕上。要求成员函数完成以下功能:(1)从键盘输入一个学生的有关信息,
2、并将它们存入到数据文件中(按编号来确定写出位置) 。(2)按编号对学生信息进行检索并将检索结果显示在屏幕上。(3)按姓名对学生信息进行检索并将检索结果显示在屏幕上。(4)计算某编号学生的总成绩与平均成绩。(5)列出所有总成绩超过n 分的性别为s同学的有关信息(n,s 由用户从键盘输入) 。编程如下:#include #include #include #include /使用 exit 函数class CStudent private: int number; char name20,sex; double age,math,computer,English; public: CStudent
3、() CStudent(int num,char n20,char se,double ag,double ma,double com,double Eng) strcpy(name,n);number=num;sex=se;age=ag;math=ma;computer=com;English=Eng; friend ostream& operator(ostream&,CStudent&); friend void main(); /将 main 函数定义为友元函数,能够调用类中的私有数据成员; ostream& operator(ostream& output,CStudent& a)
4、/ 运算符重载 output 编号: a.numberendl; output 姓名: a.nameendl; output 性别: a.sexendl; output 年龄: a.ageendl; output 数学成绩 :a.mathendl; output 计算机成绩:puterendl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - output 外语成绩: a.Englishendl; outputendl; re
5、turn output; void main() cout请选择您需要的操作!endl; coutttt*endl; coutttt* 学生成绩管理系统*endl; coutttt*endl; coutttt*endl; coutttt* 0.输入数据*endl; coutttt* 1.增加数据*endl; coutttt* 2.修改数据*endl; coutttt* 3.按编号查询*endl; coutttt* 4.按姓名查询*endl; coutttt* 5.统计总成绩和平均成绩*endl; coutttt* 6.按成绩与性别查询*endl; coutttt* 7.退出系统*endl; c
6、outttt*endl; cout选择 0-7 数字进行操作!p; if(p=0&p=7) flag2=1; else cout指令错误!请重新输入:endl; while(flag2=0); do switch(p) case 0: /输入数据功能char c; int number; char name20,sex; double age,math,computer,English; do 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - -
7、- - - - cout 请输入编号 number; cout 请输入姓名 name; cout 请输入性别 (m/f)sex; cout 请输入年龄 age; cout 请输入数学成绩math; cout 请输入计算机成绩computer; cout 请输入外语成绩English; filej=new ofstream(c:student.dat,ios:ate|ios:binary); *filej编 号 number 姓 名 name 性 别 sex 年 龄age 数学成绩 math 计算机成绩 computer 外语成绩 Englishendl; j+; si=new CStudent
8、(number,name,sex,age,math,computer,English); i+; cout 数据输入成功,想继续输入吗?(y/n)c; flag2=0; do if(c!=y&c!=n) cout 指令错误!请重新输入:c; else flag2=1; while(flag2=0); while(c=y); break; case 1: /增加数据功能char c; int number; char name20,sex; double age,math,computer,English; do cout 请输入您要增加的学生的编号number; 名师资料总结 - - -精品资
9、料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - cout 请输入您要增加的学生的姓名name; cout 请输入您要增加的学生的性别(m/f)sex; cout 请输入您要增加的学生的年龄age; cout 请输入您要增加的学生的数学成绩math; cout 请输入您要增加的学生的计算机成绩computer; cout 请输入您要增加的学生的外语成绩English; filej=new ofstream(c:student.dat,ios:ate|ios:
10、binary); /使用随机读写处理方式在c 盘建立 binary 文件,使文件每次打开指针指向文件结尾*filej编 号 name 姓 名 number 性 别 sex 年 龄age 数学成绩 math 计算机成绩 computer 外语成绩 Englishendl; j+; si=new CStudent(number,name,sex,age,math,computer,English); i+; cout 数据输入成功,想继续输入吗?(y/n)c; flag2=0; do if(c!=y&c!=n) cout 指令错误!请重新输入:c; else flag2=1; while(flag
11、2=0); while(c=y); break; case 2: /修改数据功能char c; int num; char n20,se; double ag,ma,com,Eng; if(i=0) cout 管理系统中没有输入数据!endl; break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - do cout 请输入您要修改的学生的姓名n; for(int h=0;hname)=0) flag2=1; cout 请
12、输入新的编号num; cout 请输入新的性别(m/f)se; cout 请输入新的年龄ag; cout 请输入新的数学成绩ma; cout 请输入新的计算机成绩com; cout 请输入新的外语成绩Eng; sh-number=num; sh-sex=se; sh-age=ag; sh-math=ma; sh-computer=com; sh-English=Eng; cout 数据修改成功!; if(flag2=0) cout 您要修改的学生本来就不存在!请检查重新输入!endl; cout 想继续修改吗?(y/n)c; flag2=0; do if(c!=y&c!=n) cout 指令错
13、误!请重新输入:c; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - else flag2=1; while(flag2=0); while(c=y); break; case 3: /按编号查询功能 int n,j=0;char c; if(i=0) cout 管理系统中没有输入数据!endl; break; do int flag=0; cout 请输入您要查询的学生的编号:n; for(int j=0;jnumber=n
14、) flag=1; cout 您要查询的学生信息如下:endl; cout*sj; if(flag=0) cout 对不起!您要查询的学生不存在!endl; cout 想继续查询吗?(y/n)c; flag2=0; do if(c!=y&c!=n) cout指令错误!请重新输入:c; else flag2=1; while(flag2=0); while(c=y); break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - - - - - - - -
15、 case 4: /按姓名查询功能 char n20;int j=0;char c; if(i=0) cout 管理系统中没有输入数据!endl; break; do int flag=0; cout请输入您要查询的学生的姓名:n; for(int j=0;ji;j+) if(strcmp(n,(*sj).name)=0) flag=1; cout 您要查询的学生信息如下:endl; cout*sj; if(flag=0) cout对不起!您要查询的学生不存在!endl; cout想继续查询吗?(y/n)c; flag2=0; do if(c!=y&c!=n) cout 指令错误!请重新输入:
16、c; else flag2=1; while(flag2=0); while(c=y); break; case 5: /统计总成绩和平均成绩功能 int n,j=0;double sum,Average;char c; if(i=0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - - - - - - - cout 管理系统中没有输入数据!endl; break; do int flag=0; cout请输入您要查询的学生的编号:n; for(in
17、t j=0;jnumber=n) flag=1; sum=(*sj).math+(*sj).computer+(*sj).English; Average=sum/3; cout 您要查询的学生的总成绩:sumendl; cout 您要查询的学生的平均成绩:Averageendl; if(flag=0) cout对不起!您要查询的学生不存在!endl; cout想继续查询吗?(y/n)c; flag2=0; do if(c!=y&c!=n) cout 指令错误!请重新输入:c; else flag2=1; while(flag2=0); while(c=y); break; case 6: /
18、按成绩与性别查询功能 double x,sum;char k,c; if(i=0) cout 管理系统中没有输入数据!endl; break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - do int flag=0; cout请输入您要查询的学生的最低分数:x; cout请输入您要查询的学生的性别:k; for(int j=0;jx&k=sj-sex) flag=1; cout*sj; if(flag=0) cout对不起
19、!您要查询的学生不存在!endl; cout想继续查询吗?(y/n)c; flag2=0; do if(c!=y&c!=n) cout 指令错误!请重新输入:c; else flag2=1; while(flag2=0); while(c=y); break; case 7: /退出系统功能 exit(0); cout 您想继续进行其他操作吗?(y/n)w; if(w!=y&w!=n) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - cout 指令错误!请重新输入:endl; else flag4=1; while(flag4=0); if(w=y) cout 请输入操作代码(0.输入数据 /1.增加数据 /2.修改数据 /3.按编号查询 /4.按姓名查询 /5.统计总成绩和平均成绩/6.按成绩与性别查询/7.退出系统 )p; while(w=y); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -
限制150内