研究生信息管理系统(C++实现)
设计一个研究生基本信息管理系统,实现对不一样学制的研究生包括:学术硕士和工程硕士的信息管理。定义一个基本的研究生类,基本信息包括:学号、姓名、性别、年龄、课程成绩。派生出学术硕士类,增长的属性包括:专业,发表论文(名称与级别(一、二、3)),能够多篇,最多3篇),论文成绩,总成绩。工程硕士增长的属性包括:领域,参与项目(名称与级别(A,B,C)),项目成绩,总成绩。计算方式以下ios
- 学术硕士论文成绩计算:各个级别的论文得分为:级别10,每一个学生论文最高90分。总成绩=课程成绩0.7+论文成绩*0.3。
- 工程硕士项目成绩计算:每一个学生只参与一项项目,各个级别得分:A级90,B级75,C级60,不参与项目得分为0。总成绩=课程成绩0.5+项目成绩0.5。
系统基本功能包括: - 数据文件管理功能:利用输入输出流建立新文件、打开新文件、保存文件。
- 计算与统计功能:可以打开已存在的数据表文件,对数据表中与某关键字匹配的相关记录进行数据统计(包括:总数、平均值、分段信息),例如:按总成绩得分段统计学生人数,以及所占百分比。可以计算每一个研究生的总成绩。
- 记录管理功能。(增减改查)
代码实现web
#include<iostream> #include<string> #include "fstream" #include<cstdlib> #include<windows.h> using namespace std; void enter(); void add(); void deleter(); void display(); void change(); void find(); void statical(); void initsystem(); void menu(); class Graduate { protected: int number; string name; char sex; int age; float score; }; struct Lunwen { string l_name; float l_rank; }; class Sci_gra:public Graduate { public: void set_sci(); void display(); void change(); friend void enter(); friend void add(); friend void deleter(); friend void display(); friend void change(); friend void find(); friend void statical(); friend void exit(); friend void initsystem(); private: string profess; int l_num; Lunwen l[3]; int l_sco; float all_sco; }; void Sci_gra::set_sci() { cin>>number>>name>>sex>>age>>score>>profess>>l_num; l_sco=0; for(int i=0;i<l_num;i++) { cin>>l[i].l_name>>l[i].l_rank; l_sco+=l[i].l_rank*10; } all_sco=0.7*score+0.3*l_sco; } void Sci_gra::display() { cout<<"学号:"<<number <<"\n姓名:"<<name <<"\n性别:"<<sex <<"\n年龄:"<<age <<"\n课程成绩:"<<score; for(int i=0;i<l_num;i++) { cout<<"\n论文"<<i <<"\n名称:"<<l[i].l_name <<"\n级别:"<<l[i].l_rank; } cout<<"\n论文成绩:"<<l_sco <<"\n总成绩:"<<all_sco<<endl; } void Sci_gra::change() { cout<<"请依次输入修改后该学术硕士的学号、姓名、性别、年龄、课程成绩、专业、发表论文篇数(并分别输入论文成绩及级别<1,2,3>)\n"; cin>>number>>name>>sex>>age>>score>>profess>>l_num; l_sco=0; for(int i=0;i<l_num;i++) { cin>>l[i].l_name>>l[i].l_rank; l_sco+=l[i].l_rank*10; } all_sco=0.7*score+0.3*l_sco; } class Pro_gra:public Graduate { public: void set_pro(); void display(); void change(); friend void enter(); friend void add(); friend void deleter(); friend void display(); friend void change(); friend void find(); friend void statical(); friend void exit(); friend void initsystem(); private: string domain; string pro_name; char pro_rank; float pro_sco; float all_scor; }; void Pro_gra::set_pro() { cin>>number>>name>>sex>>age>>score>>domain>>pro_name>>pro_rank; if(pro_rank=='A') pro_sco=90; else if(pro_rank=='B') pro_sco=75; else pro_sco=60; all_scor=0.5*score+0.5*pro_sco; } void Pro_gra::display() { cout<<"学号:"<<number <<"\n姓名:"<<name <<"\n性别:"<<sex <<"\n年龄:"<<age <<"\n课程成绩:"<<score <<"\n领域:"<<domain <<"\n参与项目名称:"<<pro_name <<"\n项目级别:"<<pro_rank <<"\n项目成绩:"<<pro_sco <<"\n总成绩:"<<all_scor<<endl; } void Pro_gra::change() { cout<<"请依次输入修改后该工程硕士的学号、姓名、性别、年龄、课程成绩、领域、参与项目(名称及级别<A,B,C>)\n"; cin>>number>>name>>sex>>age>>score>>domain>>pro_name>>pro_rank; if(pro_rank=='A') pro_sco=90; else if(pro_rank=='B') pro_sco=75; else pro_sco=60; all_scor=0.5*score+0.5*pro_sco; } int k; int m,n; Sci_gra s[10]; Pro_gra p[10]; void enter() { Sci_gra sci; Pro_gra pro; cout<<"请输入分别将要录入的学术硕士及工程硕士人数:\n"; cin>>m>>n; ofstream outfile1("研究生信息管理档案-学术硕士.txt",ios::app); ofstream outfile2("研究生信息管理档案-工程硕士.txt",ios::app); if(!outfile1) { cerr<<"open 研究生信息管理档案-学术硕士.txt error!\n"; exit(0); } if(!outfile2) { cerr<<"open 研究生信息管理档案-工程硕士.txt error!\n"; exit(0); } for(int i=0;i<m;i++) { cout<<"请依次输入这些学术硕士的学号、姓名、性别、年龄、课程成绩、专业、发表论文篇数(并分别输入论文成绩及级别<1,2,3>)\n"; s[i].set_sci(); outfile1<<"学号:"<<s[i].number <<"\n姓名:"<<s[i].name <<"\n性别:"<<s[i].sex <<"\n年龄:"<<s[i].age <<"\n课程成绩:"<<s[i].score; for(int j=0;j<s[i].l_num;j++) { outfile1<<"\n论文"<<j+1 <<"\n名称:"<<s[i].l[j].l_name <<"\n级别:"<<s[i].l[j].l_rank; } outfile1<<"\n论文成绩:"<<s[i].l_sco <<"\n总成绩:"<<s[i].all_sco<<endl; } for(int i=0;i<n;i++) { cout<<"请依次输入这些工程硕士的学号、姓名、性别、年龄、课程成绩、领域、参与项目(名称及级别<A,B,C>)\n"; p[i].set_pro(); outfile2<<"学号:"<<p[i].number <<"\n姓名:"<<p[i].name <<"\n性别:"<<p[i].sex <<"\n年龄:"<<p[i].age <<"\n课程成绩:"<<p[i].score <<"\n领域:"<<p[i].domain <<"\n参与项目名称:"<<p[i].pro_name <<"\n项目级别:"<<p[i].pro_rank <<"\n项目成绩:"<<p[i].pro_sco <<"\n总成绩:"<<p[i].all_scor<<endl; } outfile1.close(); outfile2.close(); system("cls"); cout<<"录入成功请选择:\n" <<"1.继续录入\n" <<"2.返回菜单\n" <<"3.退出系统\n"; cin>>k; system("cls"); switch(k) { case 1: enter();break; case 2: menu();break; case 3: exit(1);break; default: cout<<"error\n";break; } } void add() { int r=0,q=0; cout<<"请选择要增长的研究生类型:\n" <<"1.学术硕士\n" <<"2.工程硕士\n" <<"3.返回菜单\n"; cin>>k; system("cls"); switch(k) { case 1: { cout<<"请依次输入该学术硕士的学号、姓名、性别、年龄、课程成绩、专业、发表论文篇数(并分别输入论文成绩及级别<1,2,3>)\n"; s[m].set_sci(); ofstream outfile1("研究生信息管理档案-学术硕士.txt",ios::app); if(!outfile1) { cerr<<"open 研究生信息管理档案-学术硕士.txt error!\n"; exit(0); } outfile1<<"学号:"<<s[m].number <<"\n姓名:"<<s[m].name <<"\n性别:"<<s[m].sex <<"\n年龄:"<<s[m].age <<"\n课程成绩:"<<s[m].score; for(int j=0;j<s[m].l_num;j++) { outfile1<<"\n论文"<<j+1 <<"\n名称:"<<s[m].l[j].l_name <<"\n级别:"<<s[m].l[j].l_rank; } outfile1<<"\n论文成绩:"<<s[m].l_sco <<"\n总成绩:"<<s[m].all_sco<<endl; outfile1.close(); m++; break; } case 2: { cout<<"请依次输入该工程硕士的学号、姓名、性别、年龄、课程成绩、领域、参与项目(名称及级别<A,B,C>)\n"; ofstream outfile2("研究生信息管理档案-工程硕士.txt",ios::app); if(!outfile2) { cerr<<"open 研究生信息管理档案-工程硕士.txt error!\n"; exit(0); } p[n].set_pro(); outfile2<<"学号:"<<p[n].number <<"\n姓名:"<<p[n].name <<"\n性别:"<<p[n].sex <<"\n年龄:"<<p[n].age <<"\n课程成绩:"<<p[n].score <<"\n领域:"<<p[n].domain <<"\n参与项目名称:"<<p[n].pro_name <<"\n项目级别:"<<p[n].pro_rank <<"\n项目成绩:"<<p[n].pro_sco <<"\n总成绩:"<<p[n].all_scor<<endl; outfile2.close(); n++; break; } case 3: menu();break; default: cout<<"error\n";break; } cout<<"增长成功请选择:\n" <<"1.继续增长\n" <<"2.返回菜单\n" <<"3.退出系统\n"; cin>>k; system("cls"); switch(k) { case 1: add();break; case 2: menu();break; case 3: exit(1);break; default: cout<<"error\n";break; } } void deleter() { cout<<"请选择要删除的研究生类型:\n" <<"1.学术硕士\n" <<"2.工程硕士\n" <<"3.返回菜单\n"; cin>>k; system("cls"); int x=0; string str; switch(k) { case 1: { cout<<"请输入要删除的研究生名字:\n" ; cin>>str; for(int i=0;i<m;i++) if(s[i].name==str) { x=i; break; } if(x==-1) { cout<<"error 无此人\n"; break; } for(int i=x;i<m-1;i++) s[i]=s[i+1]; m--; break; } case 2: { cout<<"请输入要删除的研究生名字:\n" ; cin>>str; for(int i=0;i<m;i++) if(p[i].name==str) { x=i; break; } if(x==-1) { cout<<"error 无此人\n"; break; } for(int i=x;i<n-1;i++) p[i]=p[i+1]; n--; break; } default: cout<<"error\n";break; } system("cls"); cout<<"删除成功请选择:\n" <<"1.继续删除\n" <<"2.返回菜单\n" <<"3.退出系统\n"; cin>>k; system("cls"); switch(k) { case 1: deleter();break; case 2: menu();break; case 3: exit(1);break; default: cout<<"error\n";break; } } void display() { cout<<"学术硕士:\n"; for(int i=0;i<m;i++) s[i].display(); cout<<"工程硕士:\n"; for(int i=0;i<n;i++) p[i].display(); } void change() { cout<<"请选择要修改的研究生类型:\n" <<"1.学术硕士\n" <<"2.工程硕士\n" <<"3.返回菜单\n"; cin>>k; system("cls"); int x=-1; string str; switch(k) { case 1: { cout<<"请输入要修改的研究生名字:\n" ; cin>>str; for(int i=0;i<m;i++) if(s[i].name==str) { x=i; break; } if(x==-1) { cout<<"error 无此人\n"; break; } s[x].change(); } case 2: { cout<<"请输入要修改的研究生名字:\n" ; cin>>str; for(int i=0;i<m;i++) if(p[i].name==str) { x=i; break; } if(x==-1) { cout<<"error 无此人\n"; break; } p[x].change(); break; } default: cout<<"error\n";break; } system("cls"); cout<<"修改为功请选择:\n" <<"1.继续修改\n" <<"2.返回菜单\n" <<"3.退出系统\n"; cin>>k; system("cls"); switch(k) { case 1: change();break; case 2: menu();break; case 3: exit(1);break; default: cout<<"error\n";break; } } void find() { cout<<"请选择要查找的研究生类型:\n" <<"1.学术硕士\n" <<"2.工程硕士\n" <<"3.返回菜单\n"; cin>>k; system("cls"); int x=-1; string str; switch(k) { case 1: { cout<<"请输入要查找的研究生名字:\n" ; cin>>str; for(int i=0;i<m;i++) if(s[i].name==str) { x=i; break; } if(x==-1) { cout<<"无此人\n"; break; } s[x].display(); } case 2: { cout<<"请输入要查找的研究生名字:\n" ; cin>>str; for(int i=0;i<m;i++) if(p[i].name==str) { x=i; break; } if(x==-1) { cout<<"无此人\n"; break; } p[x].display(); break; } default: cout<<"error\n";break; } cout<<"查找成功请选择:\n" <<"1.继续查找\n" <<"2.返回菜单\n" <<"3.退出系统\n"; cin>>k; system("cls"); switch(k) { case 1: find();break; case 2: menu();break; case 3: exit(1);break; default: cout<<"error\n";break; } } void statical() { float sum; for(int i=0;i<m;i++) sum+=s[i].all_sco; cout<<"学术硕士共"<<m<<"人,平均分为"<<sum*1.0/m<<endl; for(int i=0;i<n;i++) sum+=p[i].all_scor; cout<<"工程硕士共"<<n<<"人,平均分为"<<sum*1.0/n<<endl; cout<<"已统计、请选择:\n" <<"1.返回菜单\n" <<"2.退出系统\n"; cin>>k; system("cls"); switch(k) { case 1: menu();break; case 2: exit(1);break; default: cout<<"error\n";break; } } void initsystem() { m=0; n=0; menu(); } void menu() { cout<<"***************************************************"<<endl; cout<<"*"<<" ****研究生管理系统**** "<<"*"<<endl; cout<<"*"<<" 1.研究生信息录入 "<<"*"<<endl; cout<<"*"<<" 2.研究生信息增长 "<<"*"<<endl; cout<<"*"<<" 3.研究生信息删除 "<<"*"<<endl; cout<<"*"<<" 4.研究生信息输出 "<<"*"<<endl; cout<<"*"<<" 5.研究生信息修改 "<<"*"<<endl; cout<<"*"<<" 6.研究生信息查找 "<<"*"<<endl; cout<<"*"<<" 7.研究生信息统计 "<<"*"<<endl; cout<<"*"<<" 8.退出系统 "<<"*"<<endl; cout<<"*"<<" 9.初始化该系统 "<<"*"<<endl; cout<<"***************************************************"<<endl; cout<<"请选择:"<<endl; cin>>k; system("cls"); switch(k) { case 1: enter();break; case 2: add();break; case 3: deleter();break; case 4: display();break; case 5: change();break; case 6: find();break; case 7: statical();break; case 8: exit(1);break; case 9: initsystem();break; default: cout<<"error\n";break; } } int main() { menu(); return 0; }
本文同步分享在 博客“使君杭千秋”(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。windows