《2022年小型学生信息管理系统. .pdf》由会员分享,可在线阅读,更多相关《2022年小型学生信息管理系统. .pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、编写一个小型的学生信息管理系统,可以对中学生, 大学生你, 研究生的信息进行简单的管理。每个学生类都包含学生名,成绩 1, 成绩 2, 成绩 3 和平均成绩, 其中平均成绩为 (1+2+3)/3。每类学生还有区别于其他类学生的特殊信息,例如中学生有家长,大学生有专业,研究生有导师。要求通过本系统实现以下功能:1 输入学生的基本信息2 根据学生名查询某个学生的信息3 计算并显示某个学生的平均成绩要求屏幕显示如下: *欢迎使用 * *小型学生信息管理系统* 1.输入学生信息2.查询学生信息并显示3.计算平均成绩并显示4.退出请您选择( 1-4) :*按学生类别进行管理* *学生类别选择* 1 中学
2、生类2 大学生类3 研究生类4 退出请您选择学生类别:1 学生名:王大兵成绩 1: 80 成绩 2 89 成绩 3 90 家长:王大林信息存储成功!是否继续输入(y/n)? *欢迎使用 * *小型学生信息管理系统* 5.输入学生信息6.查询学生信息并显示7.计算平均成绩并显示8.退出请您选择( 1-4) :2 *按学生类别进行管理* *学生类别选择* 1 中学生类2 大学生类3 研究生类4 退出请您选择学生类别:1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页
3、 - - - - - - - - - 请输入要查询的学生名:王大兵所要查看的学生信息:学生类别号: 1 学生名:王大兵成绩 1: 80 成绩 2 89 成绩 3 90 家长:王大林* 是否继续查询(y/n)? 1.0 版本代码如下:/*/ /* Author:Tiger Date:6/13/2013 Function:小型信息管理系统Version:1.0 */ /*/ #include #include #include /学生基类class Student protected: char name20;/姓名float score1,score2,score3;/成绩 1、2、 3、pub
4、lic: void getname(char a); void set(); void show(); void average(); ; void Student:getname(char a) strcpy(a,name); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 13 页 - - - - - - - - - void Student:show() cout学生姓名: namen 成绩 1:score1n 成绩 2:score2n 成绩 3:score3n;
5、void Student:set() coutname; coutscore1; coutscore2; coutscore3; void Student:average() cout姓名: nameendl; cout平均成绩: (score1+score2+score3)/3endl; /中学生类class Middle_school_student:public Student protected: char householder20;/ 家长public: Middle_school_student(); void set(); void show(); ; Middle_schoo
6、l_student:Middle_school_student() strcpy(name,张三 ); score1=0; score2=0; score3=0; strcpy(householder,李四 ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - - - void Middle_school_student:set() Student:set(); couthouseholder; void Middle_school_
7、student:show() Student:show(); cout家长: householderendl; /大学生类class University_student:public Student char profession20;/ 专业public: University_student(); void set(); void show(); ; University_student:University_student() strcpy(name,张三 ); score1=0; score2=0; score3=0; strcpy(profession, 无); void Univ
8、ersity_student:set() Student:set(); coutprofession; void University_student:show() Student:show(); cout专业: professionendl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - /研究生类class Postgraduate:public Student char tutor20; public: Postgra
9、duate(); void set(); void show(); ; Postgraduate:Postgraduate() strcpy(name,张三 ); score1=0; score2=0; score3=0; strcpy(tutor, 李四 ); void Postgraduate:set() Student:set(); couttutor; void Postgraduate:show() Student:show(); cout导师: tutorendl; /菜单界面int menu() int x; cout*欢迎使用 *endl; cout*小型学生信息管理系统*en
10、dl; cout1 、输入学生信息n2 、查询学生信息并显示n 3、计算平均成绩并显示n4 、退出 nx; return x; /管理界面int manage() int x; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - cout*按学生类别进行管理*endl; cout*学生类别选择*endl; cout1 中学生类 n2 大学生类 n 3 研究生类 n4 退出 nx; return x; /创建一个Middle_sch
11、ool_student Middle_school_student newmiddle() Middle_school_student m; m.set(); return m; /将 Middle_school_student 对象写进D:middle.txt void writeMiddle(Middle_school_student &m) fstream ft; ft.open(D:middle.txt,ios:out|ios:app); if (!ft) cout 不能打开文件!endl; return ; ft.write(char*)&m,sizeof(Middle_school
12、_student); ft.close(); /读取一个Middle_school_student 对象void readMiddle(int j)/*j=1进入查询学生信息、j=2 查询学生平均成绩*/ Middle_school_student s; fstream ft; char temp120,temp220; couttemp1; ft.open(D:middle.txt,ios:in); if (!ft) cout 不能打开文件!endl; return ; /计算 Middle_school_student 记录的个数Num ft.seekp(0,ios:end); 名师资料总
13、结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 13 页 - - - - - - - - - long Num=ft.tellp()/sizeof(Middle_school_student); for (int i=0;iNum;i+) ft.seekp(sizeof(Middle_school_student)*i); ft.read(char*)&s,sizeof(Middle_school_student); s.getname(temp2); int tbb=strcmp
14、(temp1,temp2); if (!tbb) if(j=1)s.show();break; else if(j=2)s.average();break; else cout 错误! endl;break; cout没有该学生!endl; ft.close(); /创建一个University_student University_student newuniversity() University_student u; u.set(); return u; /将 University_student 对象写进D:university.txt void writeUniversity(Uni
15、versity_student &u) fstream ft; ft.open(D:university.txt,ios:out|ios:app); if (!ft) cout 不能打开文件!endl; return ; ft.write(char*)&u,sizeof(University_student); ft.close(); /读取一个University_student 对象void readUniversity(int j)/*j=1进入查询学生信息、j=2 查询学生平均成绩*/ University_student s; 名师资料总结 - - -精品资料欢迎下载 - - - -
16、 - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 13 页 - - - - - - - - - fstream ft; char temp120,temp220; couttemp1; ft.open(D:university.txt,ios:in); if (!ft) cout 不能打开文件!endl; return ; /计算 University_student 记录的个数ft.seekp(0,ios:end); long Num=ft.tellp()/sizeof(University_student); for (in
17、t i=0;iNum;i+) ft.seekp(sizeof(University_student)*i); ft.read(char*)&s,sizeof(University_student); s.getname(temp2); int tbb=strcmp(temp1,temp2); if (!tbb) if(j=1)s.show();break; else if(j=2)s.average();break; else cout 错误! endl;break; cout没有该学生!endl; ft.close(); /创建一个Postgraduate Postgraduate newp
18、ostgraduate() Postgraduate p; p.set(); return p; /将 Postgraduate对象写进 D:postgraduate.txt void writePostgraduate(Postgraduate &p) fstream ft; ft.open(D:postgraduate.txt,ios:out|ios:app); if (!ft) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 13 页 - - - - - - - -
19、 - cout 不能打开文件!endl; return ; ft.write(char*)&p,sizeof(Postgraduate); ft.close(); /读取一个Postgraduate对象void readPostgraduate(int j)/*j=1进入查询学生信息、j=2 查询学生平均成绩*/ Postgraduate s; fstream ft; char temp120,temp220; couttemp1; ft.open(D:postgraduate.txt,ios:in); if (!ft) cout 不能打开文件!endl; return ; /计算 Postg
20、raduate记录的个数ft.seekp(0,ios:end); long Num=ft.tellp()/sizeof(Postgraduate); for (int i=0;iNum;i+) ft.seekp(sizeof(Postgraduate)*i); ft.read(char*)&s,sizeof(Postgraduate); s.getname(temp2); int tbb=strcmp(temp1,temp2); if (!tbb) if(j=1)s.show();break; else if(j=2)s.average();break; else cout 错误! endl;
21、break; cout没有该学生!endl; ft.close(); /判断函数、判断是否继续输入void check_enter(int i)/*i的取值决定输入的学生的类型*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 13 页 - - - - - - - - - char ce; coutce; if (ce=y) switch(i) case 1: writeMiddle(newmiddle(); check_enter(i); break; case 2:
22、 writeUniversity(newuniversity(); check_enter(i); break; case 3: writePostgraduate(newpostgraduate(); check_enter(i); break; default: cout 错误! endl; break; else if(ce=n)return; else cout输入错误! endl; /判断函数、判断是否继续查询void check_find(int i)/*i的值决定查询的学生的类型*/ char cf; cout是否继续查询(y/n)?cf; if (cf=y) switch(i)
23、 case 1: readMiddle(1); check_find(i); break; case 2: readUniversity(1); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 13 页 - - - - - - - - - check_find(i); break; case 3: readPostgraduate(1); check_find(i); break; default: cout 错误! endl; break; else if(cf=n)
24、return; else cout 输入错误! endl; /判断函数、判断是否继续查询void check_average(int i)/*i的值决定查询的学生的类型*/ char ca; cout是否继续查询(y/n)?ca; if (ca=y) switch(i) case 1: readMiddle(2); check_find(i); break; case 2: readUniversity(2); check_find(i); break; case 3: readPostgraduate(2); check_find(i); break; default: cout 错误! e
25、ndl; break; else if(ca=n)return; else cout 输入错误! endl; void window() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 13 页 - - - - - - - - - switch (menu() case 1:switch(manage() case 1: writeMiddle(newmiddle(); check_enter(1); break; case 2: writeUniversity(new
26、university(); check_enter(2); break; case 3: writePostgraduate(newpostgraduate(); check_enter(3); break; case 4:break; default:cout 输入错误 endl;break; window();break; case 2:switch(manage() case 1: readMiddle(1); check_find(1); break; case 2: readUniversity(1); check_find(2); break; case 3: readPostgr
27、aduate(1); check_find(3); break; case 4:break; default:cout 输入错误 endl;break; window();break; case 3:switch(manage() case 1: readMiddle(2); check_average(1); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 13 页 - - - - - - - - - break; case 2: readUniversity(2);
28、 check_average(2); break; case 3: readPostgraduate(2); check_average(3); break; default:cout 输入错误 endl;break; window();break; case 4: cout 已退出! endl; break; default: cout 输入错误 endl; break; int main() window(); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 13 页 - - - - - - - - -