题目描述
某学院的员工包括教师、行政人员。其中行政人员有基本工资和岗位津贴,教师有基本工资和课时津贴(课时津贴=课时量小时课酬(元/小时)),已知:
行政人员的年薪=基本工资12+岗位津贴
教师的年薪=基本工资12+课时量小时课酬
定义抽象类Person类,数据成员有工号、姓名、基本工资(double型);成员函数有带参构造函数、虚函数print()、纯虚函数calSalary();定义Person的公有派生类教师类、行政人员类,增加相应的数据成员(均为double型)。计算各类人员的年薪并输出。
主函数中定义教师类、行政人员类对象,其初始值均由键盘输入,利用C++的多态性,利用基类指针调用虚函数,计算各类人员的年薪并输出
输入描述
行政人员类对象的初始值
教师类对象的初始值
输出描述
行政人员类、教师类对象的工号、姓名、年薪
输入样例
1001 赵云 4500 1500
10003 刘玄德 6700 120 50
输出样例
工号:1001
姓名:赵云
年薪:55500
工号:10003
姓名:刘玄德
年薪:86400
#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
Person(int a, string b, double c);
virtual void print();
virtual void calSalary() = 0;
double GetWage()
{
return Wage;
}
private:
int Num;
string Name;
double Wage;
};
Person::Person(int a, string b, double c)
{
Num=a;
Name=b;
Wage=c;
}
void Person::print()
{
cout << "工号:" << Num << endl;
cout << "姓名:" << Name<< endl;
}
class Teacher : public Person
{
public:
Teacher(int a, string b, double c,double d,double e);
virtual void print();
void calSalary();
private:
double HourlyPay;
double Hours;
};
void Teacher::print()
{
Person::print();
Teacher::calSalary();
}
void Teacher::calSalary()
{
cout << "年薪:" << GetWage() * 12 + Hours * HourlyPay << endl;
}
Teacher::Teacher(int a, string b, double c,double d,double e):Person(a, b, c)
{
Hours=d;
HourlyPay=e;
}
class Administrator : public Person
{
public:
Administrator(int a, string b, double c, double d);
virtual void print();
void calSalary();
private:
double PostAllowance;
};
Administrator::Administrator(int a, string b, double c, double d) :Person(a, b, c)
{
PostAllowance = d;
}
void Administrator::calSalary()
{
cout << "年薪:" << GetWage() * 12 + PostAllowance << endl;
}
void Administrator::print()
{
Person::print();
Administrator::calSalary();
}
int main()
{
int Num1;
string Name1;
double Wage1;
double PostAllowance;
int Num2;
string Name2;
double Wage2;
double HourlyPay;
double Hours;
cin >> Num1 >> Name1 >> Wage1 >> PostAllowance >> Num2 >> Name2 >> Wage2 >> Hours >> HourlyPay;
Administrator A(Num1,Name1,Wage1,PostAllowance);
Teacher B(Num2, Name2, Wage2, Hours, HourlyPay);
Person *p1, *p2;
p1 = &A;
p2 = &B;
p1->print();
p2->print();
return 0;
}