第四章作业

4_1

#ifndef _SCLASS4_1_CEMPLOYEE_H_
#define _SCLASS4_1_CEMPLOYEE_H_
#include <iostream>

using namespace std;
class CEmployee
{
public:
	CEmployee(float salary=2000)
	{
		m_salary=salary;
	}
	virtual ~CEmployee(){}
	void SetData()
	{
		cout<<"CEmployee's salary is:";
		cin>>m_salary;
	}
	virtual float Salary()const
	{
		return m_salary;
	}
	void ShowWage()const
	{
		cout<<"CEmployee's salary is"<<Salary()<<endl;
	}
protected:
	float m_salary;

};
class CSalesman:virtual public CEmployee
{
public:
	CSalesman(float salary=2000,float reward=0):CEmployee(salary)
	{
		m_reward=reward;
	}
	float Salary()
	{
		m_salary=m_salary+m_reward*0.05;
		return m_salary;
	}
	void SetData()
	{
		cout<<"CSaleman's reward is:";
		cin>>m_reward;
	}
	void ShowWage()
	{
		cout<<"CSaleman's salary is"<<Salary()<<endl;
	}
	~CSalesman(){}
private:
	float m_reward;
};
class CDeskman:virtual public CEmployee
{
public:
	CDeskman(float salary=2000,int rateOfAppear=0):CEmployee(salary)
	{
		m_rateOfAppear=rateOfAppear;
	}
	void ShowWage()//const 函数只能调用const的函数
	{
		cout<<"CDeskman's salary is"<<Salary()<<endl;
	}
	double Salary()
	{
		m_salary=m_salary+((m_rateOfAppear-m_rateOfAppear%8)/8)*100;
		return m_salary;
	}
	~CDeskman(){}
	void SetData()
	{
		cout<<"CDeskman's rateOfAppear is:";
		cin>>m_rateOfAppear;
	}
private:
	int m_rateOfAppear;
};
class CBuyer:virtual public CEmployee
{
public:
	CBuyer(float salary=2000,float reducedBuyReward=0):CEmployee(salary),m_reducedBuyReward((int)reducedBuyReward)
	{
		;
	}
	~CBuyer(){}
	float Salary()
	{
		m_reducedBuyReward=(m_reducedBuyReward-m_reducedBuyReward%100)/100;
		m_salary=m_salary+m_reducedBuyReward*10;
		return m_salary;
	}
	void SetData()
	{
		cout<<"CBuyer's reducedBuyReward is:";
		cin>>m_reducedBuyReward;
	}
	void ShowWage()
	{
		cout<<"CBuyer's salary is"<<Salary()<<endl;//pow函数
	}
private:
	float m_buyReward;
	int m_reducedBuyReward;
};
#endif

#include "sclass4_1_CEmployee.h"
void main()
{
	CEmployee employee;
	employee.ShowWage();
	CSalesman salesman;
	salesman.SetData();
	salesman.ShowWage();
	CDeskman deskman;
	deskman.SetData();
	deskman.ShowWage();
	CBuyer buyer;
	buyer.SetData();
	buyer.ShowWage();
}

4_3
#ifndef _SCLASS4_3_CEMPLOYEE_H_
#define _SCLASS4_3_CEMPLOYEE_H_
#include <iostream>

using namespace std;
class CEmployee
{
public:
	CEmployee(float salary=2000)
	{
		m_salary=salary;
	}
	virtual ~CEmployee(){}
	void SetData()
	{
		cout<<"CEmployee's salary is:";
		cin>>m_salary;
	}
	virtual float Salary()const
	{
		return m_salary;
	}
	void ShowWage()const
	{
		cout<<"CEmployee's salary is"<<Salary()<<endl;
	}
protected:
	float m_salary;

};
class CSalesman:virtual public CEmployee
{
public:
	CSalesman(float salary=2000,float reward=0):CEmployee(salary)
	{
		m_reward=reward;
	}
	float Salary()
	{
		m_salary=m_salary+m_reward*0.05;
		return m_salary;
	}
	void SetData()
	{
		cout<<"CSaleman's reward is:";
		cin>>m_reward;
	}
	void ShowWage()
	{
		cout<<"CSaleman's salary is"<<Salary()<<endl;
	}
	~CSalesman(){}
protected:
	float m_reward;
};
class CDeskman:virtual public CEmployee
{
public:
	CDeskman(float salary=2000,int rateOfAppear=0):CEmployee(salary)
	{
		m_rateOfAppear=rateOfAppear;
	}
	void ShowWage()//const 函数只能调用const的函数
	{
		cout<<"CDeskman's salary is"<<Salary()<<endl;
	}
	double Salary()
	{
		m_salary=m_salary+((m_rateOfAppear-m_rateOfAppear%8)/8)*100;
		return m_salary;
	}
	~CDeskman(){}
	void SetData()
	{
		cout<<"CDeskman's rateOfAppear is:";
		cin>>m_rateOfAppear;
	}
protected:
	int m_rateOfAppear;
};
class CBuyer:virtual public CEmployee
{
public:
	CBuyer(float salary=2000,float reducedBuyReward=0):CEmployee(salary),m_reducedBuyReward((int)reducedBuyReward)
	{
		;
	}
	~CBuyer(){}
	float Salary()
	{
		m_reducedBuyReward=(m_reducedBuyReward-m_reducedBuyReward%100)/100;
		m_salary=m_salary+m_reducedBuyReward*10;
		return m_salary;
	}
	void SetData()
	{
		cout<<"CBuyer's reducedBuyReward is:";
		cin>>m_reducedBuyReward;
	}
	void ShowWage()
	{
		cout<<"CBuyer's salary is"<<Salary()<<endl;//pow函数
	}
protected:
	float m_buyReward;
	int m_reducedBuyReward;
};
class CManager:virtual public CSalesman,virtual public CDeskman,virtual public CBuyer
{
public:
	CManager(float salary=2000,float reward=0,int rateOfAppear=0,float reducedBuyReward=0):CSalesman(salary,reward),CDeskman(salary,rateOfAppear),CBuyer(salary,reducedBuyReward)
	{
		;
	}
	~CManager(){};
	float Salary()
	{
		m_reward=m_reward*0.05+CBuyer::Salary()-2000;
		m_salary=2000;
		cout<<"reward"<<m_reward<<endl;
		m_salary=m_reward+CDeskman::Salary();
		cout<<"salary"<<m_salary<<endl;
		return m_salary;
	}
	void ShowWage()
	{
		cout<<"Manager's salary is:"<<Salary()<<endl;
	}
	void SetData()
	{
		cout<<"Manager's reward is:";
		cin>>m_reward;
		cout<<"Manager's rateOfAppear is:";
		cin>>m_rateOfAppear;
		cout<<"Manager's reducedBuyReward is:";
		cin>>m_reducedBuyReward;
	}
};
#endif

#include "sclass4_3_CEmployee.h"
void main()
{
	CEmployee employee;
	employee.ShowWage();
	CSalesman salesman;
	salesman.SetData();
	salesman.ShowWage();
	CDeskman deskman;
	deskman.SetData();
	deskman.ShowWage();
	CBuyer buyer;
	buyer.SetData();
	buyer.ShowWage();
	CManager manager;
	manager.SetData();
	manager.ShowWage();
}

4_4
#include "sclass4_4_CEmployee.h"
float CSalesman:: GetSumOfReward()
{
	return sumOfReward;
}

int CBuyer::GetSumOfReducedBuyReward()
{
	return sumOfReducedBuyReward;
}

#ifndef _SCLASS4_4_CEMPLOYEE_H_
#define _SCLASS4_4_CEMPLOYEE_H_
#include <iostream>
#include <cmath>
#include <cctype>

using namespace std;

class CEmployee
{
public:
	CEmployee(float salary=2000)
	{
		m_salary=salary;
	}
	virtual ~CEmployee(){}
	void SetData()
	{
		cout<<"CEmployee's salary is:";
		cin>>m_salary;
	}
	virtual float Salary()const
	{
		return m_salary;
	}
	void ShowWage()const
	{
		cout<<"CEmployee's salary is"<<Salary()<<endl;
	}
protected:
	float m_salary;

};

class CSalesman:virtual public CEmployee
{
public:
	CSalesman(float salary=2000,float reward=0):CEmployee(salary)//只有创建对象时才用到
	{
		m_reward=reward;
	}
	float Salary()
	{
		m_salary=m_salary+m_reward*0.05;
		return m_salary;
	}
	void SetData()
	{
		cout<<"CSaleman's reward is:";
		cin>>m_reward;
		sumOfReward+=m_reward;
	}
	void ShowWage()
	{
		cout<<"CSaleman's salary is"<<Salary()<<endl;
	}
	~CSalesman(){}
protected:
	float m_reward;
public:
	static float sumOfReward;
	static float GetSumOfReward()//静态数据成员函数直接在类内定义
	{
		return sumOfReward;
	}
};
float CSalesman::sumOfReward=0;//不写static当类的静态数据成员在类外定义时不写static

class CDeskman:virtual public CEmployee
{
public:
	CDeskman(float salary=2000,int rateOfAppear=0):CEmployee(salary)
	{
		m_rateOfAppear=rateOfAppear;
	}
	void ShowWage()//const 函数只能调用const的函数
	{
		cout<<"CDeskman's salary is"<<Salary()<<endl;
	}
	double Salary()
	{
		m_salary=m_salary+((m_rateOfAppear-m_rateOfAppear%8)/8)*100;
		return m_salary;
	}
	~CDeskman(){}
	void SetData()
	{
		cout<<"CDeskman's rateOfAppear is:";
		cin>>m_rateOfAppear;
	}
protected:
	int m_rateOfAppear;
};

class CBuyer:virtual public CEmployee
{
public:
	CBuyer(float salary=2000,float reducedBuyReward=0):CEmployee(salary),m_reducedBuyReward((int)reducedBuyReward)
	{
		;
	}
	~CBuyer(){}
	float Salary()
	{
		m_reducedBuyReward=(m_reducedBuyReward-m_reducedBuyReward%100)/100;
		m_salary=m_salary+m_reducedBuyReward*10;
		return m_salary;
	}
	void SetData()
	{
		cout<<"CBuyer's reducedBuyReward is:";
		cin>>m_reducedBuyReward;
		sumOfReducedBuyReward+=m_reducedBuyReward;
	}
	void ShowWage()
	{
		cout<<"CBuyer's salary is"<<Salary()<<endl;//pow函数
	}
protected:
	int m_reducedBuyReward;
public:
	static int sumOfReducedBuyReward;
	static int GetSumOfReducedBuyReward()//静态数据成员函数直接在类内定义
	{
		return sumOfReducedBuyReward;
	}
};
int CBuyer::sumOfReducedBuyReward=0;

class CManager:virtual public CSalesman,virtual public CDeskman,virtual public CBuyer
{
public:
	CManager(float salary=2000,float reward=0,int rateOfAppear=0,float reducedBuyReward=0):CSalesman(salary,reward),CDeskman(salary,rateOfAppear),CBuyer(salary,reducedBuyReward)
	{
		;
	}
	~CManager(){};
	float Salary()
	{
		m_reward=m_reward*0.05+CBuyer::Salary()-2000;
		m_salary=2000;
		cout<<"reward"<<m_reward<<endl;
		//cout<<"SumOfReward:"<<CSalesman::GetSumOfReward()<<endl;
		//cout<<"SumOfReducedBuyReward"<<CBuyer::GetSumOfReducedBuyReward()<<endl;
		m_salary=m_reward+CDeskman::Salary()+0.008*CSalesman::GetSumOfReward()+0.015*CBuyer::GetSumOfReducedBuyReward();
		cout<<"salary"<<m_salary<<endl;
		return m_salary;
	}
	void ShowWage()
	{
		cout<<"Manager's salary is:"<<Salary()<<endl;
	}
	void SetData()
	{
		cout<<"Manager's reward is:";
		cin>>m_reward;
		cout<<"Manager's rateOfAppear is:";
		cin>>m_rateOfAppear;
		cout<<"Manager's reducedBuyReward is:";
		cin>>m_reducedBuyReward;
	}
};
#endif

#include "sclass4_4_CEmployee.h"

char determination()
{
	char c;
	while(c=cin.get())
	{
		if(isalpha(c))
			break;
	}
	return c;
} 
void main()
{
	cout<<"if input the data of salesman, please input y or Y."<<endl;
	cout<<"if input the data of salesman:";
	char a;
	a=determination();
	CSalesman salesman;
	while(a=='Y'||a=='y')
	{
	salesman.SetData();
	cout<<"if input the data of salesman:";
	a=determination();
	}
	cout<<"Sum of reward is:"<<CSalesman::GetSumOfReward()<<endl;
	cout<<"if input the data of buyer, please input y or Y."<<endl;
	cout<<"if input the data of buyer?";
	a=determination();
	while(a=='Y'||a=='y')
	{
	CBuyer buyer;
	buyer.SetData();
	cout<<"if input the data of buyer?";
	a=determination();
	}
	cout<<"Sum of reducedBuyReward:"<<CBuyer::GetSumOfReducedBuyReward()<<endl;
	CManager manager;
	manager.SetData();
	manager.ShowWage();
}

4_5
#include "sclass4_5_CPerson.h"
void CPerson::Show()const
{
	cout<<"age:"<<m_age<<"	name:"<<m_name<<"	address:"<<m_address<<endl;
}
void CStudent::Show()const
{
	cout<<"age:"<<m_age<<"	name:"<<m_name<<"	address:"<<m_address<<"	grade:"<<m_grade<<endl;
}

#ifndef _SCLASS4_5_CPERSON_H_
#define _SCLASS4_5_CPERSON_H_
#include <iostream>
#include <string>
using namespace std;

class CPerson
{
public:
	CPerson(int age,string name,string address):m_age(age),m_name(name)
	{
		m_address=new string(address);//m_address是string类的指针,m_address本身是一个指针地址,要用cout显示它的内容则用*m_address
		
		cout<<"address:"<<*m_address<<endl;
	}
	virtual ~CPerson()
	{
		delete m_address;
		cout<<"~CPerson"<<endl;
	}
	virtual void Show()const;//虚函数在声明时候不需要加上virtual
protected:
	string m_name;
	int m_age;
	string *m_address;
};

class CStudent:virtual public CPerson
{
public:
	CStudent(int age,string name,string address,string grade):CPerson(age,name,address),m_grade(grade)
	{
		;
	}
	~CStudent()
	{
		cout<<"~CStudent"<<endl;
	}
	void Show()const;
private:
	string m_grade;
};
#endif

#include "sclass4_5_CPerson.h"
void main()
{
	CPerson *p=new CStudent(19,"zhang_san","SiChuan_University","grade_one");//创建一个CStudent的动态对象
	if(NULL==p)
	{
		exit(0);//参数0表示非正常退出程序
	}
	p->Show();
	delete p;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值