//公司有四种职位 经理(Manager) 技术人员(Technician) 销售(SaleMan) 销售经理(SaleManager) //每增加一个人,工号加1 //薪资:经理 8000 技术人员

//公司有四种职位 经理(Manager) 技术人员(Technician) 销售(SaleMan) 销售经理(SaleManager)
//每增加一个人,工号加1
//薪资:经理 8000 技术人员 300/天 销售 总额*4% 销售经理 部门销售额*2%+4000
 

#include
#include
using namespace std;
static int num=0;    //静态全局变量,num为总员工数 
static double m_sum; //m_sum为所有销售人员销售的总销售额 

class Company
{
	protected:
		string m_name;  //姓名 
		int m_id;    //工号 
	public:
		Company();   //构造函数 
		virtual double get()=0;   //纯虚函数 ,打印信息 
};
Company::Company()
{
	num++;
	m_id=num;      //令工号从1开始计; 
}


class Manager:virtual public Company    //虚继承 
{
	protected:
		double m_salary;
	public:
		Manager(string name,double salary);
		double get();    //打印信息 
};
Manager::Manager(string name,double salary=8000)    //带默认参数的构造函数,默认参数必须放在函数的最后 
{
	m_name=name;
	m_salary=salary;
//	num++;
}
double Manager ::get() 
{
	cout<<"manager's name: "<get();             另一种写法; 
	SaleMan s ("limo",23223);
	s.get();
	SaleManager sm("dee");
	sm.get();
/*	srand(time(NULL));             这段注释掉的内容,在一些编译器上编译不通过。在虚拟机上可以编译通过 
	char name[20] = {0};           内容大概是:声明5个技术人员,10个销售人员,随机分配技术人员工作的天数, 
	Company *pt[5] = {0};                      随机分配销售人员销售的销售额 
	Company *ps[10] = {0};
	for (int i = 0; i < 5; i++)
	{
		sprintf(name, "Technician%d", i);
		pt[i] = new Technician(name, rand() % 22 + 1);    +1是为了防止出现工资为0的情况 
		pt[i]->get();
	}

	for (int i = 0; i < 10; i++)
	{
		sprintf(name, "S%d", i);
		ps[i] = new SaleMan(name, rand() % 200000);
		ps[i]->get();
	}
*/
	cout<<"总员工数:"<

 

运行结果:

//公司有四种职位 经理(Manager) 技术人员(Technician) 销售(SaleMan) 销售经理(SaleManager) //每增加一个人,工号加1 //薪资:经理 8000 技术人员_第1张图片

你可能感兴趣的:(//公司有四种职位 经理(Manager) 技术人员(Technician) 销售(SaleMan) 销售经理(SaleManager) //每增加一个人,工号加1 //薪资:经理 8000 技术人员)