//275 8_8 .cpp
#include <iostream>
#include <cstring>
using namespace std;
class employee
{
protected:
char name[20];
int individualNo;
int grade;
float accumpay;
static int employeeNo;
public:
employee();
~employee();
virtual void pay()=0; //计算月薪函数(纯虚函数)
virtual void promote(int inc=0); //计算升级函数(虚函数)
void setname(char *);
char *Getname();
int GetindividualNo();
int Getgrade();
float Getaccumpay();
};
int employee::employeeNo = 1000;
employee::employee()
{
individualNo = employeeNo++;
grade = 1;
accumpay = 0;
}
employee::~employee()
{
}
void employee::promote(int inc)
{
grade += inc;
}
void employee::setname(char *names)
{
strcpy_s(name, names);
}
char *employee::Getname()
{
return name;
}
int employee::GetindividualNo()
{
return individualNo;
}
int employee::Getgrade()
{
return grade;
}
float employee::Getaccumpay()
{
return accumpay;
}
class technician :public employee
{
private:
float hourlyprice;
int workhours;
public:
technician();
void Setworkhours(int wh);
void pay();
void promote(int); //升级函数
};
technician::technician()
{
hourlyprice = 100;
}
void technician::Setworkhours(int wh)
{
workhours= wh;
}
void technician::pay()
{
accumpay = hourlyprice*workhours;
}
void technician::promote(int)
{
employee::promote(2); //调用基类升级函数
}
class salesman :virtual public employee
{
protected:
float comonrate;
float saleaccount;
public:
salesman();
void setsale(float sl);
void pay();
void promote(int); //升级函数
};
salesman::salesman()
{
comonrate = 0.4;
}
void salesman::setsale(float sl)
{
saleaccount = sl;
}
void salesman::pay()
{
accumpay = saleaccount*comonrate;
}
void salesman::promote(int)
{
employee::promote(3); //调用基类升级函数
}
class manager :virtual public employee
{
protected:
float money;
public:
manager();
void pay();
void promote(int); //升级函数
};
manager::manager()
{
money = 5000;
}
void manager::pay()
{
accumpay = money;
}
void manager::promote(int)
{
employee::promote(4); //调用基类升级函数
}
class salemanager :public salesman, public manager
{
public:
salemanager();
void pay();
void promote(int); //升级函数
};
salemanager::salemanager()
{
comonrate = 0.5;
money = 6000;
}
void salemanager::pay()
{
accumpay = money + saleaccount*comonrate;
}
void salemanager::promote(int)
{
employee::promote(5); //调用基类升级函数
}
int main()
{
technician t1;
salesman s1;
manager m1;
salemanager sm1;
char namestr[20];
employee *emp[4] = { &t1, &s1, &m1, &sm1 };
for (int i = 0; i < 4;i++)
{
cout << "请输入下一雇员的姓名:";
cin >> namestr;
emp[i]->setname(namestr);
emp[i]->promote();
}
cout << "请输入技术人员" << t1.Getname() << "的工作时长:";
int ww;
cin >> ww;
t1.Setworkhours(ww);
cout << "请输入推销员" << s1.Getname() << "的销售额:";
int w;
cin >> w;
s1.setsale(w);
cout << "请输入销售经理" << sm1.Getname() << "的销售额:";
int we;
cin >> we;
sm1.setsale(we);
for (int i = 0; i < 4;i++)
{
emp[i]->pay();
cout << emp[i]->Getname() << "编号" << emp[i]->GetindividualNo() << "级别为" << emp[i]->Getgrade() << "工资为" << emp[i]->Getaccumpay() << endl;
}
system("pause");
return 0;
}
人员信息管理
最新推荐文章于 2024-02-06 22:44:46 发布