类的继承与派生定义与使用

3.某公司财务部需要开发一个计算雇员工资的程序。该公司有3类员工,工人的工资为每小
时工资额(通过成员函数设定)乘当月工作时数(通过成员函数设定)再加上工龄工资;销售员
工资为每小时工资额(通过成员函数设定)乘当月工作时数(通过成员函数设定)加上销售额提
成再加上工龄工资,其中销售额提成等于该销售员当月售出商品金额(通过成员函数设定)的1%;
管理人员工资为基本工资 1 000 元再加上工龄工资。工龄工资就是雇员在该公司工作的工龄每增
加一年,月工资就增加 35 元。请用面向对象方法分析、设计这个程序,并用 C++语言写出完整
程序。
【参考答案】/biancheng4_3.cpp:类的继承与派生定义与使用/
#include
#include
using namespace std;
class Employee
{
protected:
char name[30];
int working_years;
public:
Employee(char nm,int wy)
{
strcpy(name,nm);
working_years=wy;
}
char * GetName( ) {return name;}
float ComputePay( ) {return 35.0f
working_years;}
};
class Worker:public Employee
{
float hours,wage;
public:
Worker(char *nm,int wy):Employee(nm,wy)
{
hours=0;
wage=0;
}

void SetHours(float hrs) {hours=hrs;}
void SetWage(float wg) {wage=wg;}
float ComputePay( ) { return Employee::ComputePay( )+wage*hours;}
};
class SalesPerson:public Worker
{ float sales_made;
public:
SalesPerson(char nm,int wg):Worker(nm,wg)
{ sales_made=0;}
void SetSales(float sl) {sales_made=sl;}
float ComputePay( )
{ return Worker::ComputePay( )+0.01f
sales_made;}
};
class Manager:public Employee
{
float salary;
public:
Manager(char *nm,int wy):Employee(nm,wy)
{ salary=0; }
void SetSalary(float sl) {salary=sl;}
float ComputePay( )
{ return Employee::ComputePay( )+salary;}
};
void main( )
{ Worker Zhang(“Zhang wei”,8);
Zhang.SetHours(181.5f);
Zhang.SetWage(9.5f);
cout<<“Salary for “<<Zhang.GetName( )<<” is :”;
cout<<Zhang.ComputePay( )<<"\n";
SalesPerson Wang(“Wang min”,11);
Wang.SetSales(38750.85f);
Wang.SetHours(198.7f);
Wang.SetWage(10.1f);
cout<<“Salary for “<<Wang.GetName( )<<” is :”;
cout<<Wang.ComputePay( )<<"\n";
Manager He(“He jun”,25);
He.SetSalary(567.5f);
cout<<“Salary for “<<He.GetName( )<<” is :”;
cout<<He.ComputePay( )<<"\n";
}

猜你喜欢

转载自blog.csdn.net/AR_Pai/article/details/110950800
今日推荐