人员信息管理

//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;

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值