资源描述
c++高校人事档案管理系统
23
2020年4月19日
资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。
高校人事档案管理系统
设计方法和基本原理:
一、 问题描述( 功能要求) :
某高校, 主要人员有: 在职人员( 行政人员、 教师、 一般员工) 、 退休人员、 返聘人员和临时工。现在, 需要存储这些人员的人事档案信息: 编号、 姓名、 性别、 年龄、 职务、 职称、 政治面貌、 最高学历、 任职时间、 来院时间。
要求:
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].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].getnum(),n)==0)
{
cout<<pp[k].getnum()<<setw(9)<<pp[k].gettype()<<setw(5)<<pp[k].getname()
<<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].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].getname(),nname)==0)
{
cout<<pp[k].getnum()<<setw(9)<<pp[k].gettype()<<setw(5)<<pp[k].getname()
<<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,rzsj2,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].getname()
<<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();
}
展开阅读全文