老师留了个C++的考题,秋知道,救命!
#定义员工_H
//员工. h
员工类别
{
受保护:
char name[20];//名称
int individualEmpNo//个人号码
int等级;//级别
双倍累积工资;//月薪总额
int标签;
静态int employeeNo//本公司当前最大员工人数。
公共:
员工();//构造函数
~ employee();//析构函数
虚拟void pay();//计算月薪函数(虚函数)
虚拟void提升(int increment = 0);//升级功能(虚拟功能)
void set name(char *);//设置名称函数
char * GetName();//提取名称函数
int GetindividualEmpNo();//选择编号功能
int Getgrade();//提取级别函数
double GetaccumPay();//提取月薪函数
void Tg();
int Gettag();
void add(char *na,int code,int gr,double p);
};
类技师:公职人员//兼职技师。
{
私人:
双hourlyRate//每小时费用
int workHours//当月工作时间
公共:
技术员();//构造函数
void setwork hours(int wh);//设置工作时间功能
void pay();//计算月薪功能
void promote(int);//升级功能
};
销售员类:虚拟公职人员//兼职销售员类
{
受保护:
双倍CommRate//按销售额提取提成酬金。
双倍销售;//当月销售额
公共:
销售员();//构造函数
void set sales(double s 1);//设置销售功能
void pay();//计算月薪功能
void promote(int);//升级功能
};
Classmanager:虚拟公共雇员//经理类
{
受保护:
双月付款;
公共:
manager();//构造函数
void pay();//计算月薪功能
void promote(int);//升级功能
};
类销售经理:公共经理、公共销售员//销售经理
{
公共:
sales manager();//构造函数
void pay();//计算月薪功能
void promote(int);//升级功能
};
类数据库//雇员数据类
{
私人:
int top
员工阅读[100];
公共:
database();//从employee.txt读取员工信息,读取[]。
int addemp (char *na,int code,int gr,double p);//增加人员
员工*查询(int empid);
employee * query 1(char empna[20]);
void disp();//员工信息显示
void clear();
~ Database();//像在employee.txt中一样读取read[]中的信息
};
#endif
//员工. cpp
# include & ltiostream & gt
# include & ltcstring & gt
#包含“employee.h”
# include & ltfstream & gt
使用命名空间std
int employee::employee no = 1000;//员工人数基数为1000。
//成员函数的类外定义
员工::员工()
{
individual empno = employee no++;//新输入的员工编号是当前最大编号加上1。
等级= 1;//级别的初始值是1。
accumPay = 0.0//月薪总额的初始值为0
}
void employee::add(char *na,int code,int gr,double pay)
{
tag = 0;
set name(na);individualEmpNo = codegrade = graccumPay = pay
}
void雇员::pay(){ };
员工::~员工()
{}
作废员工::提升(整数递增)
{等级+=增量;}//升级,升级级别由增量指定。
void员工::集合名称(char * names)
{ strcpy(姓名,姓名);}//设置名称
char * employee::GetName()
{返回姓名;}//选择成员名称
int employee::GetindividualEmpNo()
{ return individualEmpNo}
int employee::Getgrade()
{返回等级;}//选择成员级别
双重雇员::GetaccumPay()
{ return accumPay}//提取月薪
技术员::技术员()
{ hourly rate = 100;}//每小时奖励100。
void technician::setwork hours(int wh)
{ workHours = wh}//设置工作时间
作废技术人员::支付()
{ accum pay = hourly rate *(double)work hours;}//算月薪,按小时发工资。
作废技术员::提升(整数)
{员工::晋升(2);}//调用基类升级函数升级到二级。
推销员:推销员
{ CommRate = 0.04}//销售佣金比例为4%
void sales::set sales(double s 1)
{ sales = s 1;}//设置销售金额
void salesman::pay()
{ accumPay = sales * CommRate}//月薪=销售提成
void salesman::promote(int)
{ employee::promote(0);}//调用基类升级函数升级到0级。
经理::经理()
{ monthlyPay = 8000}//固定月薪8000元。
void manager::pay()
{ accumPay = monthlyPay}//月薪总额为固定月薪。
void manager::promote(int)
{员工::晋升(3);}//调用基类升级函数升级到三级。
销售经理::销售经理()
{
monthlyPay = 5000
CommRate = 0.005
}
void salesmanager::pay()
{
accum pay =(double)monthly pay+CommRate * sales;
}
void salesmanager::promote(int)
{ employee::promote(1);}//调用基类升级函数升级到1级别。
int employee::Gettag()
{返回标签;}
void员工::Tg()
{
tag = 1;
}
Database::Database()//从employee.txt读取员工信息以读取[]。
{
员工的;
top =-1;
fstream文件(“employee.txt”,IOs::in);
while (1)
{
file . read((char *)& amp;s,sizeof(s));
如果(!文件)中断;
top++;
read[top]= s;
}
file . close();
}
Int database:: add EMP (char * na,int code,int gr,double p)//增加雇员。
{
employee * EMP = query 1(na);
if(emp==NULL)
{
top++;
阅读【顶部】。add(na,code,gr,p);
返回1;
}返回0;
}
雇员*数据库::查询(int empid)
{
for(int I = 0;我& lt= topi++)
如果(读[我]。GetindividualEmpNo()= = empid & amp;& amp读[我]。Gettag()==0)
返回& amp改为[I];
返回NULL
}
雇员*数据库::query1(char empna[20])
{
for(int I = 0;我& lt= topi++)
if (strcmp(读作[i].GetName(),empna)= = 0 & amp;& amp读[我]。Gettag()==0)
返回& amp改为[I];
返回NULL
}
void base::disp()//员工信息显示
{
for(int I = 0;我& lt= topi++)
{
cout & lt& lt"名称:"
如果(读[我]。get grade()= = 1)cout & lt;& lt"标题:"
else if(读[i]。get grade()= = 2)cout & lt;& lt"标题:"
else if(读[i]。get grade()= = 3)cout & lt;& lt"标题:"
else cout & lt& lt"标题:"
cout & lt& lt"薪水:"
}
}
void数据库::clear()
{ top =-1;
}
数据库::~Database() //像在employee.txt中一样读取read[]中的信息
{
fstream文件(“employee.txt”,IOs::out);
for(int I = 0;我& lt= topi++)
如果(读[我]。Gettag()==0)
file . write((char *)& amp;read[i],sizeof(read[I]);
file . close();
}
//rygl.cpp
# include & ltiostream.h & gt
# include & ltcstring & gt
#包含“employee.h”
# include & ltfstream & gt
void main()
{
经理m;
技术员t;
销售经理sm;
销售员s;
字符名[20],键[20];
int码,wh;
双am;
员工* emp
数据库数据;
int i,k,j=0,kk = 3;
while(kk)
{
cout & lt& lt“请输入密码(您还有”
CIN & gt;& gt关键;kk-;
if(strcmp(key," sm 0903410 ")= = 0)break;
else cout & lt& lt" O (︶ ︶)唉,密码错了!"& lt& ltendl
if(kk = = 0){ cout & lt;& lt“你不能再进入这个系统了!(_)/~ ~拜拜”;退出(0);}
}
do { system(" cls ");
cout & lt& lt“**************欢迎使用人事管理系统* * * * * * * * * * * * * * * * * *”& lt;& ltendl
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!1.进入!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!2.增加!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!3.找到它!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!4.删除!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!5输出!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!6.不干了!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!"& lt& ltendl
cout & lt& lt”请选择您的操作:“;CIN & gt;& gt我;
开关(一)
{
案例1:data . clear();
do { system(" cls ");
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!1.经理!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!2.兼职技师!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!3.销售经理!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!4.兼职促销!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!5.返回上一级菜单!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!"& lt& ltendl
cout & lt& lt”请选择您的操作:“;CIN & gt;& gtk;
开关(k)
{
案例1:cout & lt;& lt"请输入名字:";CIN & gt;& gt姓名;m .集合名称(名称);m . promote(0);m . pay();data.addemp(m.GetName()、m.GetindividualEmpNo()、m.Getgrade()、m . GetaccumPay());打破;
案例2:cout & lt;& lt"请输入名字:";CIN & gt;& gt姓名;cout & lt& lt“请输入他这个月的工作时间:“;CIN & gt;& gtwh;t . setwork hours(wh);t .集合名称(名称);t . promote(0);t . pay();data.addemp(t.GetName()、t.GetindividualEmpNo()、t.Getgrade()、t . GetaccumPay());打破;
案例三:cout & lt& lt"请输入名字:";CIN & gt;& gt姓名;cout & lt& lt“请输入他所在部门本月的总销售额”:CIN & gt;& gtam;sm。set sales(am);sm。SetName(名称);sm . promote(0);sm . pay();data.addemp(sm。GetName(),sm。GetindividualEmpNo(),sm。Getgrade(),sm。GetaccumPay());打破;
案例4:cout & lt;& lt"请输入名字:";CIN & gt;& gt姓名;cout & lt& lt"请输入他这个月的总销售额:";CIN & gt;& gtam;美国set sales(am);s .集合名称(名称);s . promote(0);s . pay();data.addemp(s.GetName()、s . GetindividualEmpNo()、s.Getgrade()、s . GetaccumPay());打破;
默认值:cout & lt& lt" ~ ~ o(& gt;_ & lt)o~~错了!”& lt& ltendl打破;
案例五:破;
}
}while(k!=5);打破;
案例二:
do { system(" cls ");
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!1.经理!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!2.兼职技师!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!3.销售经理!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!4.兼职促销!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!5.返回上一级菜单!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!"& lt& ltendl
cout & lt& lt请选择要添加的类型:“;CIN & gt;& gtk;
开关(k)
{
案例1:cout & lt;& lt"请输入名字:";CIN & gt;& gt姓名;m .集合名称(名称);m . promote(0);m . pay();data.addemp(m.GetName()、m.GetindividualEmpNo()、m.Getgrade()、m . GetaccumPay());打破;
案例2:cout & lt;& lt"请输入名字:";CIN & gt;& gt姓名;cout & lt& lt“请输入他这个月的工作时间:“;CIN & gt;& gtwh;t . setwork hours(wh);t .集合名称(名称);t . promote(0);t . pay();data.addemp(t.GetName()、t.GetindividualEmpNo()、t.Getgrade()、t . GetaccumPay());打破;
案例三:cout & lt& lt"请输入名字:";CIN & gt;& gt姓名;cout & lt& lt“请输入他所在部门本月的总销售额”:CIN & gt;& gtam;sm。set sales(am);sm。SetName(名称);sm . promote(0);sm . pay();data.addemp(sm。GetName(),sm。GetindividualEmpNo(),sm。Getgrade(),sm。GetaccumPay());打破;
案例4:cout & lt;& lt"请输入名字:";CIN & gt;& gt姓名;cout & lt& lt"请输入他这个月的总销售额:";CIN & gt;& gtam;美国set sales(am);s .集合名称(名称);s . promote(0);s . pay();data.addemp(s.GetName()、s . GetindividualEmpNo()、s.Getgrade()、s . GetaccumPay());打破;
案例五:破;
默认值:cout & lt& lt" ~ ~ o(& gt;_ & lt)o~~错了!”& lt& ltendl打破;
}
}while(k!=5);打破;
案例三:
做{
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!1.名字!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!2.号!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!3返回上一级菜单!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!"& lt& ltendl
cout & lt& lt请选择您的搜索方法:;CIN & gt;& gtk;
开关(k)
{
案例1:cout & lt;& lt"请输入您要查找的名称:";CIN & gt;& gt姓名;
emp=data.query1(姓名);
if(EMP = = NULL){ cout & lt;& lt" ~ ~ o(& gt;_ & lt)o~~没有这个人”< & ltendl打破;}
else cout & lt& lt"名称:"
案例2:cout & lt;& lt"请输入您要查找的号码:";CIN & gt;& gt代码;
emp=data.query(代码);
if(EMP = = NULL){ cout & lt;& lt" ~ ~ o(& gt;_ & lt)o~~没有这个人”< & ltendl打破;}
else cout & lt& lt"名称:"
案例三:破;
默认值:cout & lt& lt" ~ ~ o(& gt;_ & lt)o~~错了!”& lt& ltendl打破;
}
}while(k!=3);打破;
案例4:
do { system(" cls ");
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!1.名字!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!2.号!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!3返回上一级菜单!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!"& lt& ltendl
cout & lt& lt请选择删除方法:;CIN & gt;& gtk;
开关(k)
{
案例1:cout & lt;& lt"请输入您要删除的名称:";CIN & gt;& gt姓名;
emp=data.query1(姓名);
if(EMP = = NULL){ cout & lt;& lt" ~ ~ o(& gt;_ & lt)o~~没有这个人”< & ltendl打破;}
EMP->;TG();打破;
案例2:cout & lt;& lt"请输入您要删除的号码:";CIN & gt;& gt代码;
emp=data.query(代码);
if(EMP = = NULL){ cout & lt;& lt" ~ ~ o(& gt;_ & lt)o~~没有这个人”< & ltendl打破;}
EMP->;TG();
打破;
案例三:破;
默认值:cout & lt& lt" ~ ~ o(& gt;_ & lt)o~~错了!”& lt& ltendl打破;
}
}while(k!=3);打破;
案例五:data . disp();系统(“暂停”);打破;
案例6:cout & lt;& lt"(_)/~ ~拜拜" < & ltendl打破;
默认值:cout & lt& lt" ~ ~ o(& gt;_ & lt)o~~错了!”& lt& ltendl打破;
}
}而(我!=6);
}
和你们差不多,我们去年的课程,改改就行了。