⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 10_90.cpp

📁 《c++程序设计技能百练》源代码,内有99个实例。
💻 CPP
字号:
#include<iostream.h>
#include<string.h>
class employee
{
protected:
	int no;
	char *name;
	float salary;
	static int totalno;
public:
	virtual void pay()=0;
	virtual void display()=0;
	employee()
	{
		char temname[20];
        no=totalno++;
		cout<<"职工姓名:";
		cin>>temname;
		name=new char[strlen(temname)+1];
		strcpy(name,temname);
		salary=0;
	}
	~employee()
	{ 
		delete[] name;
	}
};
class technician:public employee
{
private:
	float hourlyrate;
	int workhours;
public:
	technician()
	{hourlyrate=100;}
	void pay()
	{
		cout<<name<<"本月工作时数:";
		cin>>workhours;
		salary=hourlyrate*workhours;
	}
	void display()
	{
		cout<<"兼职技术人员"<<name<<"(编号为"<<no\
			<<")"<<"本月工资:"<<salary<<endl;
	}
};
int employee::totalno=100;  //静态数据成员totalno在类外进行初始化
class saleman:virtual public employee
{
protected:
	float commrate;
	float sales;
public:
	saleman()
	{commrate=0.04f;}
	void pay()
	{
		cout<<name<<"本月销售额:";
		cin>>sales;
		salary=sales*commrate;
	}
	void display()
	{
		cout<<"销售员"<<name<<"(编号为"<<no<<")"\
			<<")"<<"本月工资:"<<salary<<endl;
	}
};
class manager:virtual public employee
{
protected:
	float monthlypay;
public:
	manager()
	{ 
		monthlypay=8000; 
	}
	void pay(){salary=monthlypay;}
	void display()
	{
		cout<<"经理"<<name<<"(编号为"<<no<<")"\
			<<")"<<"本月工资:"<<salary<<endl;
	}
};
class salesmanager:public manager,public saleman
{
public:
	salesmanager()
	{
		monthlypay=5000;
		commrate=0.005f;
	}
	void pay()
	{
		cout<<name<<"所管部门月销售量:";
		cin>>sales;
		salary=monthlypay+commrate*sales;
	}
	void display()
	{
		cout<<"销售经理"<<name<<"(编号为"<<no<<")"\
			<<")"<<"本月工资:"<<salary<<endl;
	}
};
void main()
{
	manager m1;
	technician t1;
	saleman s1;
	salesmanager sm1;
	employee* em[4]={&m1,&t1,&s1,&sm1};
	for(int i=0;i<4;i++)
	{
		em[i]->pay();
		em[i]->display();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -