c++课设(很久以前做的了)
“高校人员信息管理系统设计”
1、问题描述
某高校有四类员工:教师、实验员、行政人员,教师兼行政人员;共有的信息包括:编号、姓名、性别、年龄等。其中,教师还包含的信息有:所在系部、专业、职称;实验员还包含的信息有:所在实验室、职务;行政人员还包含的信息有:政治面貌、职务等。
2、功能要求
(1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
(2)查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
(3)显示功能:可显示当前系统中所有记录,每条记录占据一行。
(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
(5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。
(6)统计功能:能根据多种参数进行人员的统计。能统计四类人员数量以及总数,统计男、女员工的数量。
(7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。
(8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; class per { public://教师、实验员、行政人员,教师兼行政人员; int num,old; char name[20],ge[20]; void aa(); void bb() { cout<<num<<" "<<old<<" "<<name<<" "<<ge;//输出基类特点 } }; void per::aa() { cin>>per::num; cin>>per::old; cin>>per::name; cin>>per::ge; }//输入基类成员 class Teacher:public per //教师 { public: char dep[50],pro[50],tit[50]; void cc(){cin>>dep>>pro>>tit;} void dd(){cout<<dep<<" "<<pro<<" "<<tit<<endl;}//输入和输出; }; class Exper:public per //实验员 { public: char lab[50],work[50]; void ee(){cin>>lab>>work;} void ff(){cout<<lab<<" "<<work<<endl;}//输入和输出 }; class Ap:public per //行政人员 { public: char PL[20], pos[20]; void gg(){cin>>PL>>pos;} void hh(){cout<<PL<<" "<<pos<<endl;}//输入和输出 }; class TA:public Teacher { public: char PL[20], pos[20]; void gg(){cin>>PL>>pos;} void hh(){cout<<PL<<" "<<pos<<endl;} }; int main() { int i,in; Teacher tea[100]; Exper exp[100]; Ap ap[100]; TA ta[100]; int w1,w2,w3,w4; w1=w2=w3=w4=0; cout<<"----------------------------------\n"; cout<<"~**欢迎进入高校人员信息管理系统**~\n"; cout<<"~*********请输入指令*************~\n"; cout<<"~指令1: 添加人员信息 ~\n"; cout<<"~指令2: 输出所有人员信息 ~\n"; cout<<"~指令3: 查询人员信息 ~\n"; cout<<"~指令4: 修改人员信息 ~\n"; cout<<"~指令5: 删除人员信息 ~\n"; cout<<"~指令6: 输出人员总数和各类人数 ~\n"; cout<<"~指令7: 保存信息至桌面-test1 ~\n"; cout<<"~指令8: 结束程序 ~\n"; cout<<"请输入操作指令:\n"; while(cin>>in) { if(in<1||in>8){cout<<"指令错误,请重新输入指令";continue;} if(in==1) //添加信息 { int op; cout<<"请进行下一步指令: \n"; cout<<"指令1:添加教师信息 \n"; cout<<"指令2:添加实验员信息\n"; cout<<"指令3:添加行政员信息\n"; cout<<"指令4:添加教师兼行政员信息\n"; cin>>op; if(op<1||op>4){cout<<"指令错误,请重新输入指令";continue;} if(op==1) { if(w1>=100){cout<<"人员达到上限\n";continue;} tea[w1].aa(); tea[w1].cc(); for(i=0;i<w1;i++) { if(tea[w1].num==tea[i].num){ cout<<"数据重复添加!\n"; w1--;break; } } w1++; } if(op==2) { if(w2>=100){cout<<"人员达到上限\n";continue;} exp[w2].aa(); exp[w2].ee(); for(i=0;i<w2;i++) { if(exp[w2].num==exp[i].num){ cout<<"数据重复添加!\n"; w2--;break; } } w2++; } if(op==3) { if(w3>=100){cout<<"人员达到上限\n";continue;} ap[w3].aa(); ap[w3].gg(); for(i=0;i<w3;i++) { if(ap[w3].num==ap[i].num){ cout<<"数据重复添加!\n"; w3--;break; } } w3++; } if(op==4) { if(w4>=100){cout<<"人员达到上限\n";continue;} ta[w4].aa(); ta[w4].gg(); for(i=0;i<w4;i++) { if(ta[w4].num==ta[i].num) cout<<"数据重复添加!\n"; w4--;break; } w4++; } } if(in==2) //输出信息 { for(i=0;i<w1;i++) { tea[i].bb(); tea[i].dd(); } for(i=0;i<w2;i++) { exp[i].bb(); exp[i].ff(); } for(i=0;i<w3;i++) { ap[i].bb(); ap[i].hh(); } for(i=0;i<w4;i++) { ta[i].bb(); ta[i].hh(); } } if(in==3) //查询信息 { int sc; cout<<"继续输入指令: \n"; cout<<"指令1;根据编号查询\n"; cout<<"指令2:根据名字查询\n"; cout<<" 输入:"; cin>>sc; if(sc==1) { int bh,cnt; cnt=0; cout<<"输入编号:"; cin>>bh; for(i=0;i<w1;i++) { if(tea[i].num==bh) { tea[i].bb(); tea[i].dd(); cnt=1; } } for(i=0;i<w2;i++) { if(exp[i].num==bh) { exp[i].bb(); exp[i].ff(); cnt=1; } } for(i=0;i<w3;i++) { if(ap[i].num==bh) { ap[i].bb(); ap[i].hh(); cnt=1; } } for(i=0;i<w4;i++) { if(ta[i].num==bh) { ta[i].bb(); ta[i].hh(); cnt=1; } } if(cnt==0)cout<<"此编号不存在!\n"; } if(sc==2) { getchar(); cout<<"请输入名字\n"; int cnt=0; char bt[20]; gets(bt); for(i=0;i<w1;i++) { if(strcmp(tea[i].name,bt)==0) { tea[i].bb(); tea[i].dd(); cnt=1; } } for(i=0;i<w2;i++) { if(strcmp(exp[i].name,bt)==0) { exp[i].bb(); exp[i].ff(); cnt=1; } } for(i=0;i<w3;i++) { if(strcmp(ap[i].name,bt)==0) { ap[i].bb(); ap[i].hh(); cnt=1; } } for(i=0;i<w4;i++) { if(strcmp(ta[i].name,bt)==0) { ta[i].bb(); ta[i].hh(); cnt=1; } } if(cnt==0)cout<<"没有找到该名字匹配项!\n"; } } if(in==4) //修改信息。 { int cnt; int sb; cout<<"输入需要修改的编号;\n"; cin>>sb; for(i=0;i<w1;i++){ if(tea[i].num==sb) { cout<<"重新输入修改后的信息"; tea[i].aa(); tea[i].cc(); cnt=1; } } for(i=0;i<w2;i++){ if(exp[i].num==sb) { cout<<"重新输入修改后的信息"; exp[i].aa(); exp[i].ee(); cnt=1; } } for(i=0;i<w3;i++) { if(ap[i].num==sb) { cout<<"重新输入修改后的信息"; ap[i].aa(); ap[i].gg(); cnt=1; } } for(i=0;i<w4;i++) { if(ta[i].num==sb) { cout<<"重新输入修改后的信息"; ta[i].aa(); ta[i].gg(); cnt=1; } } if(cnt==0)cout<<"修改的人员不存在!\n"; } if(in==5) //删除人员信息 { int i; cout<<"请输入要删除的人员编号;\n"; int dele; cin>>dele; for(i=0;i<w1;i++) { if(tea[i].num==dele) { for(int j=i;j<w1-1;j++) tea[j]=tea[j+1]; w1--; } if(i==w1)cout<<"查无此人!\n"; } for(i=0;i<w2;i++) { if(exp[i].num==dele) { for(int j=i;j<w2-1;j++) exp[i]=exp[i+1]; w2--; } if(i==w2)cout<<"查无此人!\n"; } for(i=0;i<w3;i++) { if(ap[i].num==dele) { for(int j=i;j<w3-1;j++) ap[i]=ap[i+1]; w3--; } if(i==w3)cout<<"查无此人!\n"; } for(i=0;i<w4;i++) { if(ta[i].num==dele) { for(int j=i;j<w4-1;j++)ta[i]=ta[i+1]; w4--; } if(i==w4)cout<<"查无此人!\n"; } cout<<"删除成功!\n"; } if(in==6) { cout<<"人员总数:"<<w1+w2+w3+w4<<endl; cout<<"教师人员:"<<w1<<"\t"<<"实验员:"<<w2<<endl; cout<<"行政人员:"<<w3<<"\t"<<"教师兼行政人员:"<<endl; } if(in==7) { FILE *fl; fl=fopen("test.dat","w"); for(i=0;i<w1;i++) { fprintf(fl,"%d %s %d %s %s %s %s\n",tea[i].num,tea[i].name,tea[i].old,tea[i].ge,tea[i].dep,tea[i].pro,tea[i].tit); } for(i=0;i<w2;i++) { fprintf(fl,"%d %s %d %s %s %s\n",exp[i].num,exp[i].name,exp[i].old,exp[i].lab,exp[i].work); } for(i=0;i<w3;i++) { fprintf(fl,"%d %s %d %s %s %s\n",ap[i].num,ap[i].name,ap[i].old,ap[i].PL,ap[i].pos); } for(i=0;i<w4;i++) { fprintf(fl,"%d %s %d %s %s %s\n",ta[i].num,ta[i].name,ta[i].old,ta[i].PL,ta[i].pos,ta[i].pro,ta[i].tit); } fclose(fl); } if(in==8)break; cout<<"请输入操作指令:\n"; } cout<<"欢迎下次使用!\n"; }