高校人事档案管理系统设计方法和基本原理:一、问题描述(功能要求):某高校,主要人员有:在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。
现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。
要求:1) 添加删除功能:能根据学院人事的变动情况,添加删除记录;2) 查询功能:能根据编号和姓名进行查询;3) 编辑功能(高级):根据查询对相应的记录进行修改,并存储;4) 统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);5) 保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。
6) 人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
2、问题的解决方案:源代码#include<iostream>#include<fstream>#include<cstring>#include<iomanip>using namespace std;int k;class person{private:char num[10]; //编号char type[20]; //种类char name[20]; //姓名char sex[10]; //性别char age[10]; //年龄char staff[20]; //职务char zhichen[20]; //职称char zzmm[20]; //政治面貌char zgxl[20]; //最高学历char rzsj[20]; //任职时间char lysj[30]; //来院时间static int bianhao; //计数器public:void setperson(char *type1,char *name1,char *sex1,char *age1,char *staff1,char *zhichen1,char *zzmm1,char *zgxl1,char *rzsj1,char *lysj1);//构造函数static int& getbianhao() {return bianhao;}char * gettype() { return type;}char * getname() {return name;}char * getsex() {return sex;}char * getage() {return age;}char * getstaff() {return staff;}char * getzhichen() {return zhichen;}char * getzzmm() {return zzmm;}char * getzgxl() {return zgxl;}char * getrzsj() {return rzsj;}char * getlysj() {return lysj;}char * getnum() {return num;}void tjry();void find();void output();void del();void xiugai();void tongji();};person p[100];person pp[100];int k1;int person::bianhao=0;void person::setperson(char *type1,char *name1,char *sex1,char *age1,char *staff1,char *zhichen1,char *zzmm1,char *zgxl1,char *rzsj1,char *lysj1){int static j=1;strcpy(type,type1);strcpy(name,name1);strcpy(sex,sex1);strcpy(age,age1);strcpy(staff,staff1);strcpy(zhichen,zhichen1);strcpy(zzmm,zzmm1);strcpy(zgxl,zgxl1);strcpy(rzsj,rzsj1);strcpy(lysj,lysj1);bianhao++;ofstream file("添加人员.txt",ios_base::app); file<<p[j].getbianhao()<<endl;file<<p[j].gettype()<<endl;file<<p[j].getname()<<endl;file<<p[j].getsex()<<endl;file<<p[j].getage()<<endl;file<<p[j].getstaff()<<endl;file<<p[j].getzhichen()<<endl;file<<p[j].getzzmm()<<endl;file<<p[j].getzgxl()<<endl;file<<p[j].getrzsj()<<endl;file<<p[j].getlysj()<<endl;j++;file.close();}void person::tongji() //{int a=0;int b=0;int c=0;int d=0;int k=1;ifstream filem("添加人员.txt",ios_base::in); while(!filem.eof()){filem>>pp[k].getnum();filem>>pp[k].gettype();filem>>pp[k].getname();filem>>pp[k].getsex();filem>>pp[k].getage();filem>>pp[k].getstaff();filem>>pp[k].getzhichen();filem>>pp[k].getzzmm();filem>>pp[k].getzgxl();filem>>pp[k].getrzsj();filem>>pp[k].getlysj();if(strcmp(pp[k].gettype(),"行政人员")==0||strcmp(pp[k].gettype(),"教师")==0||strcmp(pp[k].gettype(),"一般员工")==0)a++;if(strcmp(pp[k].getzzmm(),"党员")==0)b++;if(strcmp(pp[k].getsex(),"nv")==0)c++;if(strcmp(pp[k].getzgxl(),"boshi")==0)d++;k++;}filem.close();cout<<"在职人数"<<setw(12)<<"党员人数"<<setw(12)<<"女工人数"<<setw(12)<<"高学历人数"<<endl;cout<<a<<setw(12)<<b<<setw(12)<<c<<setw(12)<<d<<endl;}void person::xiugai() //{int k=1;ifstream filem("添加人员.txt",ios_base::in);while(!filem.eof()){filem>>pp[k].getnum();filem>>pp[k].gettype();filem>>pp[k].getname();filem>>pp[k].getsex();filem>>pp[k].getage();filem>>pp[k].getstaff();filem>>pp[k].getzhichen();filem>>pp[k].getzzmm();filem>>pp[k].getzgxl();filem>>pp[k].getrzsj();filem>>pp[k].getlysj();k++;}filem.close();cout<<"请输入要修改的人的编号:"<<endl;int x,y;cin>>x;cout<<"请输入编号为"<<x<<"的人需要修改的项目的代号:"<<endl;cout<<"1:编号-2:人员类型-3:姓名-4:性别-5:年龄-6:职务-7:职称-8:政治面貌-9:最高学历-10:任职时间-11:来院时间"<<endl;cin>>y;switch(y){case 1:{cout<<"请输入新的编号"; cin>>pp[x].getnum() ;}break;case 2:{cout<<"请输入新的人员类型"; cin>>pp[x].gettype();} break;case 3:{cout<<"请输入新的姓名";cin>>pp[x].getname();}break;case 4:{cout<<"请输入新的性别";cin>>pp[x].getsex();}break;case 5:{cout<<"请输入新的年龄";cin>>pp[x].getage();}break;case 6:{cout<<"请输入新的职务";cin>>pp[x].getstaff();}break;case 7:{cout<<"请输入新的职称";cin>>pp[x].getzhichen();} break;case 8:{cout<<"请输入新的政治面貌";cin>>pp[x].getzzmm();} break;case 9:{cout<<"请输入新的最高学历";cin>>pp[x].getzgxl();} break;case 10:{cout<<"请输入新的任职时间";cin>>pp[x].getrzsj();} break;case 11:{cout<<"请输入新的来院时间";cin>>pp[x].getlysj();} break;}ofstream file1("添加人员.txt",ios_base::trunc);for(k=1;k<=bianhao;k++){file1<<pp[k].getnum()<<endl;file1<<pp[k].gettype()<<endl;file1<<pp[k].getname()<<endl;file1<<pp[k].getsex()<<endl;file1<<pp[k].getage()<<endl;file1<<pp[k].getstaff()<<endl;file1<<pp[k].getzhichen()<<endl;file1<<pp[k].getzzmm()<<endl;file1<<pp[k].getzgxl()<<endl;file1<<pp[k].getrzsj()<<endl;file1<<pp[k].getlysj()<<endl;}file1.close();cout<<"修改并保存完毕"<<endl;}void person::shancu() //{int z;ifstream filem("添加人员.txt",ios_base::in);int k=1;while(!filem.eof()){filem>>pp[k].getnum();filem>>pp[k].gettype();filem>>pp[k].getname();filem>>pp[k].getsex();filem>>pp[k].getage();filem>>pp[k].getstaff();filem>>pp[k].getzhichen();filem>>pp[k].getzzmm();filem>>pp[k].getzgxl();filem>>pp[k].getrzsj();filem>>pp[k].getlysj();k++;}filem.close();cout<<"请输入要被删除信息的人的编号:"<<endl;cin>>z;while(z<1||z>bianhao){cout<<"没有找到你要删除的人,请重新输入:"<<endl;cin>>z;} for(k=1;k<=bianhao;k++){if(z==k)continue;ofstream file2("添加人员.txt",ios_base::trunc);file2<<pp[k].getnum()<<endl;file2<<pp[k].gettype()<<endl;file2<<pp[k].getname()<<endl;file2<<pp[k].getsex()<<endl;file2<<pp[k].getage()<<endl;file2<<pp[k].getstaff()<<endl;file2<<pp[k].getzhichen()<<endl;file2<<pp[k].getzzmm()<<endl;file2<<pp[k].getzgxl()<<endl;file2<<pp[k].getrzsj()<<endl;file2<<pp[k].getlysj()<<endl;file2.close();}cout<<"删除记录完毕"<<endl;}void person::find() //{cout<<"1:按编号查询--2:按姓名查询-请选择(1-2)"<<endl;int m;cin>>m;while(m<1||m>2){cout<<"请重新输入(1-2)"<<endl;cin>>m;}switch(m){case 1:{char n[10];cout<<"请输入要查找的编号:";cin>>n;ifstream filem("添加人员.txt",ios_base::in);int k=1;cout<<"编号"<<setw(9)<<"人员类型"<<setw(5)<<"姓名"<<setw(5)<<"性别"<<setw(5)<<"年龄"<<setw(5)<<"职务"<<setw(5)<<"职称"<<setw(9)<<"政治面貌"<<setw(10)<<"最高学历"<<setw(10)<<"任职时间" <<setw(10)<<"来院时间"<<endl;while(!filem.eof()){filem>>pp[k].getnum();filem>>pp[k].getname();filem>>pp[k].getsex();filem>>pp[k].getage();filem>>pp[k].getstaff();filem>>pp[k].getzhichen();filem>>pp[k].getzzmm();filem>>pp[k].getzgxl();filem>>pp[k].getrzsj();filem>>pp[k].getlysj();if(strcmp(pp[k].getnum(),n)==0){cout<<pp[k].getnum()<<setw(9)<<pp[k].gettype()<<setw(5)<<pp[k].getnam e()<<setw(5)<<pp[k].getsex()<<setw(5)<<pp[k].getage()<<setw(5)<<pp[k].getstaff()<<setw(5)<<pp[k].getzhichen()<<setw(9)<<pp[k].getzzmm()<<setw(10)<<pp[k].getzgxl()<<setw(10)<<pp[k].getrzsj()<<setw(10)<<pp[k].getlysj()<<endl;break;} k++;if(filem.eof()){cout<<endl;cout<<" 警告:没有要查找的人!!!!!!!!!!";}}filem.close();} break;case 2:{char nname[20];cout<<"请输入要查找的姓名:";cin>>nname;ifstream filem("添加人员.txt",ios_base::in);int k=1;cout<<"编号"<<setw(9)<<"人员类型"<<setw(5)<<"姓名"<<setw(5)<<"性别"<<setw(5)<<"年龄"<<setw(5)<<"职务"<<setw(5)<<"职称"<<setw(9)<<"政治面貌"<<setw(10)<<"最高学历"<<setw(10)<<"任职时间" <<setw(10)<<"来院时间"<<endl;while(!filem.eof()){filem>>pp[k].getnum();filem>>pp[k].gettype();filem>>pp[k].getsex();filem>>pp[k].getage();filem>>pp[k].getstaff();filem>>pp[k].getzhichen();filem>>pp[k].getzzmm();filem>>pp[k].getzgxl();filem>>pp[k].getrzsj();filem>>pp[k].getlysj();if(strcmp(pp[k].getname(),nname)==0){cout<<pp[k].getnum()<<setw(9)<<pp[k].gettype()<<setw(5)<<pp[k].getnam e()<<setw(5)<<pp[k].getsex()<<setw(5)<<pp[k].getage()<<setw(5)<<pp[k].getstaff()<<setw(5)<<pp[k].getzhichen()<<setw(9)<<pp[k].getzzmm()<<setw(10)<<pp[k].getzgxl()<<setw(10)<<pp[k].getrzsj()<<setw(10)<<pp[k].getlysj()<<endl;break;} k++;if(filem.eof()){cout<<endl;cout<<" 警告:没有要查找的人!!!!!!!!!!";}}filem.close();}break;}}void person::tjry() //{int v,l=1;char type2[20];char name2[20];char sex2[10];char age2[10];char staff2[20];char zhichen2[20];char zzmm2[20];char zgxl2[20];char rzsj2[20];char lysj2[30];cout<<"请输入要添加的人数"<<endl;cin>>k;p[1].getbianhao()=pp[k1].getbianhao();v=bianhao;for(int i=v+1;i<=v+k;i++){cout<<"请输入第"<<l<<"个人的信息"<<endl;cout<<"人员类型"; cin>>type2;cout<<"姓名:"; cin>>name2;cout<<"性别:"; cin>>sex2;cout<<"年龄:"; cin>>age2;cout<<"职务:"; cin>>staff2;cout<<"职称:"; cin>>zhichen2;cout<<"政治面貌:"; cin>>zzmm2;cout<<"最高学历:"; cin>>zgxl2;cout<<"任职时间:"; cin>>rzsj2;cout<<"来院时间:"; cin>>lysj2;p[i].setperson(type2,name2,sex2,age2,staff2,zhichen2,zzmm2,zgxl2,rzsj 2,lysj2);l++;}}void person::output() //{ifstream filem("添加人员.txt",ios_base::in);int k=1;cout<<"编号"<<setw(9)<<"人员类型"<<setw(5)<<"姓名"<<setw(5)<<"性别" <<setw(5)<<"年龄"<<setw(5)<<"职务"<<setw(5)<<"职称"<<setw(9)<<"政治面貌"<<setw(10)<<"最高学历"<<setw(10)<<"任职时间" <<setw(10)<<"来院时间"<<endl;while(!filem.eof()){filem>>pp[k].getbianhao();filem>>pp[k].gettype();filem>>pp[k].getname();filem>>pp[k].getsex();filem>>pp[k].getage();filem>>pp[k].getstaff();filem>>pp[k].getzhichen();filem>>pp[k].getzzmm();filem>>pp[k].getzgxl();filem>>pp[k].getrzsj();filem>>pp[k].getlysj();cout<<pp[k].getbianhao()<<setw(9)<<pp[k].gettype()<<setw(5)<<pp[k].ge tname()<<setw(5)<<pp[k].getsex()<<setw(5)<<pp[k].getage()<<setw(5)<<pp[k].getstaff()<<setw(5)<<pp[k].getzhichen()<<setw(9)<<pp[k].getzzmm()<<setw(10)<<pp[k].getzgxl()<<setw(10)<<pp[k].getrzsj()<<setw(10)<<pp[k].getlysj()<<endl;k++;}k1=--k;filem.close();}void menu(){person pjk;int c;cout<<endl;cout<<"1.添加人员信息并保存"<<endl;cout<<"2.删除人员信息"<<endl;cout<<"3.修改人员信息"<<endl;cout<<"4.查询人员信息"<<endl;cout<<"5.统计人员信息"<<endl;cout<<"6.显示所有信息"<<endl;cout<<"7.退出"<<endl;cout<<" 请选择(1-7): "<<endl;cin>>c;switch(c){case 1: pjk.tjry();menu();break;case 2:pjk.del();menu(); break;case 3:pjk.xiugai();menu(); break;case 4:pjk.find() ;cout<<endl<<endl; menu();break;case 5:pjk.tongji();menu(); break;case 6:pjk.output();menu();break;case 7:exit(1);break;}}void main(){menu(); }。