管理系统做出来了,现在还想加一个统计,求教。
其中行政人员只有职务和级别,教师只有职务和职称,一般员工只有职务,退休人员则没有职务、级别、职称,但有退休时间。
统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);
[code] #include <fstream> //对外存文件的输入输出操作
#include <iostream>
using namespace std;
int q=1;
class person
{
public:
int num; //编号
char name[10]; //姓名
char sex[4]; //性别
char zzmm[20]; //政治面貌
int age; //年龄
char zgxl[20]; //最高学历
char rzsj[20]; //任职时间
char lysj[30]; //来院时间
int gz; //工资
virtual void show()
{
cout<<"编号"<<num<<endl;
cout<<"姓名"<<name<<endl;
cout<<"性别"<<sex<<endl;
cout<<"政治面貌"<<zzmm<<endl;
cout<<"年龄"<<age<<endl;
cout<<"最高学历"<<zgxl<<endl;
cout<<"任职时间"<<rzsj<<endl;
cout<<"来院时间"<<lysj<<endl;
cout<<"工资"<<gz<<endl;
}
virtual void Book(int n)
{
num = ++n ;
cout<<"姓名:";cin>>name;
cout<<"性别:";cin>>sex;
cout<<"政治面貌:";cin>>zzmm;
cout<<"年龄:";cin>>age;
cout<<"最高学历:";cin>>zgxl;
cout<<"任职时间:";cin>>rzsj;
cout<<"来院时间:";cin>>lysj;
cout<<"工资:";cin>>gz;
}
virtual void save(fstream &c) //保存到文件c中
{
c<<num<<" "<<name<<" "<<sex<<" "<<zzmm<<" "<<age<<" "<<zgxl<<" "<<rzsj<<" "<<lysj<<" "<<gz<<" ";
}
virtual void Load(fstream &c) //从文件c中导出数据
{
c>>num>>name>>sex>>zzmm>>age>>zgxl>>rzsj>>lysj>>gz;
}
};
class teacher : virtual public person //派生出的教师类
{
public:
char title[20];
char zhiwu[10];
void show()
{
person::show();
cout<<"教师"<<endl;
cout<<"职称"<<title<<endl;
cout<<"职务"<<zhiwu<<endl;
}
void Book(int n)
{
cout<<"\n请输入教师信息:"<<endl;
person::Book(n);
cout<<"职称:";cin>>title;
cout<<"职务:";cin>>zhiwu;
}
virtual void save(fstream &c) //保存到文件c中
{
person::save(c);
c<<title<<" "<<zhiwu<<endl;
}
virtual void Load(fstream &c) //从文件c中导出数据
{
person::Load(c);
c>>title>>zhiwu;
}
};
class xingzheng:virtual public person //行政人员类
{
public:
char zhiwu[20];
char jibie[10];
void show()
{
person::show();
cout<<"行政人员"<<endl;
cout<<"职务"<<zhiwu<<endl;
cout<<"级别"<<jibie<<endl;
}
void Book(int n)
{
cout<<"\n请输入行政人员信息:"<<endl;
person::Book(n);
cout<<"职称:";cin>>zhiwu;
cout<<"级别:";cin>>jibie;
}
virtual void save(fstream &c) //保存到文件c中
{
person::save(c);
c<<zhiwu<<" "<<jibie<<endl;
}
virtual void Load(fstream &c) //从文件c中导出数据
{
person::Load(c);
c>>zhiwu>>jibie;
}
};
class yibang:virtual public person //一般员工
{
public:
char zhiwu[20];
void show()
{
person::show();
cout<<"一般员工"<<endl;
cout<<"职务"<<zhiwu<<endl;
}
void Book(int n)
{
cout<<"\n请输入一般员工信息:"<<endl;
person::Book(n);
cout<<"职务:";cin>>zhiwu;
}
virtual void save(fstream &c) //保存到文件c中
{
person::save(c);
c<<zhiwu<<endl;
}
virtual void Load(fstream &c) //从文件c中导出数据
{
person::Load(c);
c>>zhiwu;
}
};
class tuixiu:virtual public person //退休人员类
{
public:
char time[20];
void show()
{
person::show();
cout<<"退休人员"<<endl;
cout<<"退休时间"<<time<<endl;
}
void Book(int n)
{
cout<<"\n请输入退休人员信息:"<<endl;
person::Book(n);
cout<<"退休时间:";cin>>time;
}
virtual void save(fstream &c) //保存到文件c中
{
person::save(c);
c<<time<<endl;
}
virtual void Load(fstream &c) //从文件c中导出数据
{
person::Load(c);
c>>time;
}
};
teacher t[100];
xingzheng x[100];
yibang y[100];
tuixiu u[100];
int ti=0,xi=0,yi=0,ui=0;
int num=0;
int Search(int number,int &i)
{
for(i=0;i<ti;i++)
{
if(t[i].num==number)
return 1;
}
for(i=0;i<xi;i++)
{
if(x[i].num==number)
return 2;
}
for(i=0;i<yi;i++)
{
if(y[i].num==number)
return 3;
}
for(i=0;i<ui;i++)
{
if(u[i].num==number)
return 4;
}
return 0;
}
//显示函数,
void Display(int c)
{
int i;
if(c==1)
{
for(i=0;i<ti;i++)
{
t[i].show();
}
}
else if(c==2)
{
for(i=0;i<xi;i++)
{x[i].show();}
}
else if(c==3)
{
for(i=0;i<yi;i++)
{y[i].show();}
}
else if(c==4)
{
for(i=0;i<ui;i++)
{u[i].show();}
}
else
{
cout<<"输入错误!"<<endl;
system("PAUSE");
}
}
//输入存储档案
void BookIn()
{
while(1)
{
cout<<"*************************"<<endl;
cout<<"请输入存储档案人员类型:1、教师; 2、行政人员; 3、一般员工; 4、 退休人员"<<endl;
int c;
cin>>c;
if(c==1)
{
t[ti].Book(num++);
ti++;
}
else if(c==2)
{
x[xi].Book(num++);
xi++;
}
else if(c==3)
{
y[yi].Book(num++);
yi++;
}
else if(c==4)
{
u[ui].Book(num++);
ui++;
}
else
{
cout<<"输入有误!"<<endl;
system("PAUSE");
}
cout<<"是否继续存储:Y继续,其他退出"<<endl;
char x;
cin>>x;
if(x!='y' && x!='Y')
break;
}
}
//查询档案
void BookOut()
{
int i;
while(1)
{
int c;
cout<<"*************************"<<endl;
cout<<"1、直接输入编号"<<endl;
cout<<"2、按类型查询"<<endl;
cout<<"请输入您的选择: ?"<<endl;
cin>>c;
if(c!=1 && c!=2)
{
cout<<"输入错误!"<<endl;
system("PAUSE");
}
else
{
if(c==2) //显示
{
cout<<"请您选择查询类型:1、教师; 2、行政人员; 3、一般员工; 4、 退休人员"<<endl;
cin>>c;
Display(c);
}
cout<<"请选择要查询编号:";
int number;
cin>>number;
int test = Search(number,i); //查找编号
if(test==0)
{
cout<<"没有找到这个员工!"<<endl;
system("PAUSE");
}
else if(test==1)
{t[i].show();}
else if(test==2)
{x[i].show();}
else if(test==3)
{y[i].show();}
else if(test==4)
{u[i].show();}
}
cout<<"是否继续:Y继续,其他退出"<<endl;
char x;
cin>>x;
if(x!='y' && x!='Y')
break;
}
}
//修改
void Modify()
{
while(1)
{
int number,i;
cout<<"*************************"<<endl;
cout<<"请输入要修改员工编号:";
cin>>number;
int test = Search(number,i);
if(test==0)
{
cout<<"没有找到这个员工!"<<endl;
system("PAUSE");
}
else if(test==1)
{
t[i].Book(number);
}
else if(test==2)
{
x[i].Book(number);
}
else if(test==3)
{
y[i].Book(number);
}
else if(test==4)
{
u[i].Book(number);
}
cout<<"是否继续修改:Y继续,其他退出"<<endl;
char x;
cin>>x;
if(x!='y' && x!='Y')
break;
}
}
void shanchu()
{
int i;
while(1)
{
int c;
cout<<"*************************"<<endl;
cout<<"1、按输入编号删除"<<endl;
cout<<"2、按人员类型删除"<<endl;
cout<<"请输入您的选择: 1-2"<<endl;
cin>>c;
if(c!=1 && c!=2)
{
cout<<"输入错误!"<<endl;
system("PAUSE");
}
else
{
if(c==2) //显示库存信息
{
cout<<"请选择您要出库的产品类型:1、教师; 2、行政人员; 3、一般员工; 4、退休员工"<<endl;
cin>>c;
Display(c);
}
cout<<"请选择要删除人员的编号:";
int number;
cin>>number;
int test = Search(number,i); //查找
if(test==0)
{
cout<<"没有这个产品!"<<endl;
system("PAUSE");
}
else if(test==1)
{
t[i]=t[--ti]; //信息清除
cout<<"编号为:"<<number<<"的教师已经删除"<<endl;
}
else if(test==2)
{
x[i]=x[--xi]; //信息清除
cout<<"编号为:"<<number<<"的行政人员已经删除"<<endl;
}
else if(test==3)
{
y[i]=y[--yi]; //信息清除
cout<<"编号为:"<<number<<"的一般员工已经删除"<<endl;
}
else if(test==4)
{
u[i]=u[--ui]; //信息清除
cout<<"编号为:"<<number<<"的退休员工已经删除"<<endl;
}
}
cout<<"是否继续删除:Y继续,其他退出"<<endl;
char x;
cin>>x;
if(x!='y' && x!='Y')
break;
}
}
void tongji()
{
while(1)
{
int v,i;
int z=0;
cout<<"请输入要统计的类型:1.在职人员 2.党员 3.女性员工 4.高学历人员 5.高职称人员"<<endl;
int s;
cin>>s;
if(s==1)
{
v=xi+ti+yi;
cout<<"在职人员数:"<<v<<endl;
}
else if(s==2)
{
for(i=0;i<xi;i++)
{
if(strcmp(x[i].zzmm,"党员")==0)
z++;
}
for(i=0;i<ti;i++)
{
if(strcmp(t[i].zzmm,"党员")==0)
z++;
}
for(i=0;i<yi;i++)
{
if(strcmp(y[i].zzmm,"党员")==0)
z++;
}
for(i=0;i<ui;i++)
{
if(strcmp(u[i].zzmm,"党员")==0)
z++;
}
cout<<"党员数:"<<z<<endl;
}
else if(s==3)
{
for(i=0;i<xi;i++)
{
if(strcmp(x[i].sex,"女")==0)
z++;
}
for(i=0;i<ti;i++)
{
if(strcmp(t[i].sex,"女")==0)
z++;
}
for(i=0;i<yi;i++)
{
if(strcmp(y[i].sex,"女")==0)
z++;
}
for(i=0;i<ui;i++)
{
if(strcmp(u[i].sex,"女")==0)
z++;
}
cout<<"女性员工:"<<z<<endl;
}
else if(s==4)
{
for(i=0;i<xi;i++)
{
if(strcmp(x[i].zgxl,"博士后")==0||strcmp(x[i].zgxl,"博士后")==0
||strcmp(x[i].zgxl,"硕士")==0)
z++;
}
for(i=0;i<ti;i++)
{
if(strcmp(t[i].zgxl,"博士")==0||strcmp(t[i].zgxl,"博士后")==0
||strcmp(t[i].zgxl,"硕士")==0)
z++;
}
for(i=0;i<yi;i++)
{
if(strcmp(y[i].zgxl,"博士")==0||strcmp(y[i].zgxl,"博士后")==0
||strcmp(y[i].zgxl,"硕士")==0)
z++;
}
for(i=0;i<ui;i++)
{
if(strcmp(u[i].zgxl,"博士")==0||strcmp(u[i].zgxl,"博士后")==0
||strcmp(u[i].zgxl,"硕士")==0)
z++;
}
cout<<"高学历人员:"<<z<<endl;
}
else if(s==5)
{
for(i=0;i<ti;i++)
{
if(strcmp(t[i].title,"教授")==0||strcmp(t[i].title,"副教授")==0)
z++;
}
cout<<"高职称人员:"<<z<<endl;
}
else
{
cout<<"统计错误!"<<endl;
system("PAUSE");
}
cout<<"是否继续统计:Y继续、其他退出"<<endl;
char x;
cin>>x;
if(x!='y' && x!='Y')
break;
}
}
void FileLoad() //信息读取
{
int i;
fstream file;
file.open("mydata.dat", ios::in); //打开保存数据的文件
if(!file)
return; //文件不存在则返回
file>>num; //读取已有编号
file>>ti; //读入教师数量
for(i=0;i<ti;i++)
t[i].Load(file);
file>>xi; //读入行政人员数
for(i=0;i<xi;i++)
x[i].Load(file);
file>>yi; //读入一般员工数
for(i=0;i<yi;i++)
y[i].Load(file);
file>>ui; //读入退休人员数
for(i=0;i<ui;i++)
u[i].Load(file);
file.close(); //文件关闭
}
void FileSave() //信息保存
{
int i;
fstream file;
file.open("mydata.dat", ios::out);
file<<num<<endl; //记录编号
file<<ti<<endl; //记录教师的数量
for(i=0;i<ti;i++) //保存教师信息
t[i].save(file);
file<<xi<<endl; //记录行政人员的数量
for(i=0;i<xi;i++) //保存行政人员信息
x[i].save(file);
file<<yi<<endl; //记录一般员工的数量
for(i=0;i<yi;i++) //保存一般员工信息
y[i].save(file);
file<<ui<<endl; //记录退休人员的数量
for(i=0;i<ui;i++) //退休人员信息
u[i].save(file);
file.close();
}
void main()
{
while(1)
{
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;
cout<<"****************************************************"<<endl;
int c;
cin>>c;
if(c==1)
{
BookIn();//添加
}
else if(c==2)
{
BookOut();//查找
}
else if(c==3)
{
Modify();//修改
}
else if(c==4)
{
shanchu();//删除数据
}
else if(c==5)
{
tongji();//统计
}
else if (c==6)
{
FileSave();//数据保存
}
else if(c==7)
{break;}//退出选项
else
{
cout<<"输入错误!"<<endl;
system("PAUSE");
}
}
}
/code]
[此贴子已经被作者于2015-12-15 23:06编辑过]