#include
#include
using namespace std;
//Person类的定义
class Person
{
public:
Person(string num,string n,string s)
{
number=num;
name=n;
sex=s;
salary=0;
}
protected:
string number;
string name;
string sex;
double salary;
};
/********* Begin *********/
//教师Teacher类的定义
class Teacher:virtual public Person
{
public:
Teacher(string num,string n,string s,int h,string t):
Person(num,n,s)
{
title=t;
teaching_hours=h;
salary=0;
}
void pay();
protected:
int teaching_hours;
string title;
double salary;
};
void Teacher::pay()
{
if(title=="助教")
{
salary=3500+20*teaching_hours;
}
else if(title=="讲师")
{
salary=4500+30*teaching_hours;
}
else if(title=="副教授")
{
salary=5500+40*teaching_hours;
}
else
{
salary=6500+50*teaching_hours;
}
}
//职员Staff类的定义
class Staff:virtual public Person
{
public:
Staff(string num,string n,string s,int h,string t,string p):
Person(num,n,s)
{
position=p;
salary=0;
}
void pay();
protected:
string position;
double salary;
};
void Staff::pay()
{
if(position=="副科级")
{
salary+=500;
}
else if(position=="科级")
{
salary+=1000;
}
else if(position=="副处级")
{
salary+=1500;
}
else
{
salary+=2000;
}
}
//双肩挑Staff_Teacher类的定义
class Staff_Teacher:public Teacher,public Staff
{
public:
Staff_Teacher(string num,string n,string s,int h,string t,string p):
Person(num,n,s),Teacher(num,n,s,h,t),Staff(num,n,s,h,t,p)
{
}
void pay();
void show()
{
cout<<"工号:"<<number<<endl;
cout<<"姓名:"<<name<<endl;
cout<<"性别:"<<sex<<endl;
cout<<"职称:"<<title<<endl;
cout<<"职位:"<<position<<endl;
cout<<"工资:"<<sum<<endl;
}
protected:
double sum;
double salary;
};
void Staff_Teacher::pay()
{
Staff::pay();
if(title=="助教")
{
sum=salary+3500+20teaching_hours;
}
else if(title=="讲师")
{
sum=salary+4500+30teaching_hours;
}
else if(title=="副教授")
{
sum=salary+5500+40teaching_hours;
}
else
{
sum=salary+6500+50teaching_hours;
}
}
/********* End*********/