员工有三种:
普通员工:基本工资
销售员工:基本工资,销售额的提成
销售经理:基本工资,销售额的提成,职位工资
注意:
1,这三个类是继承关系,类的数据成员有一部分是一样的,所以将类的数据成员设置为保护类型
2,基本工资是固定的,即每一个员工除了工号与姓名不同之外,他的基本工资都是一定的。所以这里需要使用构造函数的初始化,将基本工资定义为2000。
3,销售额的提成部分。提成比例是不变的,所以设置为静态成员,要注意静态成员的初始化,在类内声明,类外定义。
#include<bits/stdc++.h>
using namespace std;
class Employee
{
protected:
int number;
string name;
double basicSalary;
double money;
public:
Employee(int num=0,string na=" ",double basic=2000)
{
number=num;
name=na;
basicSalary=basic;
}
// Employee(){}
int getNum(){return number;}
string getNa(){return name;}
double getBasic(){return basicSalary;}
void input()
{
cout<<"请输入工号和姓名!"<<endl;
cin>>number>>name;
}
void pay()
{
money=basicSalary;
}
void print()
{
pay();
cout<<"一般员工的工资为:"<<money<<endl;
}
/*
friend istream & operator>>(istream &is,Employee& em)
{
is>>em.number>>em.name;
}
*/
};
class Salesman:public Employee
{
protected:
int sales;//销售额
static double commrate;
double money1;
public:
Salesman(int sal=0){sales=sal;}
void input()
{
Employee::input();
cout<<"本月个人销售额";
cin>>sales;
}
void pay()
{
money1=basicSalary+sales*commrate;
}
void print()
{
pay();
cout<<"销售员工的工资为:"<<money1<<endl;
}
};
double Salesman::commrate=0.0005;
class SalesManger:public Salesman
{
protected:
double jobSalary;
double money2;
public:
SalesManger(double jobs=3000)
{
jobSalary=jobs;
}
void input()
{
Employee::input();
cout<<"本月部门销售额:"<<endl;
cin>>sales;
}
void pay()
{
money2=basicSalary+jobSalary+sales*commrate;
}
void print()
{
pay();
cout<<"销售经理的工资为:"<<money2<<endl;
}
};
int main()
{
Employee em;
em.input();
//em.pay();
em.print();
Salesman sm;
sm.input();
//sm.pay();
sm.print();
SalesManger smm;
smm.input();
smm.print();
}