Expérience C ++ 06 (02) Polymorphisme du personnel universitaire

Description du titre
Le personnel d'un collège comprend des enseignants et du personnel administratif. Parmi eux, le personnel administratif a un salaire de base et une allocation de travail, et les enseignants ont un salaire de base et une allocation de classe (allocation de classe = heures de cours et rémunération horaire (yuan / heure)). On sait
que le salaire annuel du personnel administratif = salaire de base
12 +
le salaire annuel des enseignants de l' indemnité de poste = Salaire de base 12 + heures et heures de
définition du salaire de classe classe abstraite Classe de personne, les données membres ont un ID de poste, un nom, un salaire de base (type double); les fonctions membres ont un constructeur de paramètres, une fonction virtuelle ), pure fonction virtuelle calSalary (); Définissez la classe d'enseignants dérivés appartenant à l'État et la classe de personnel administratif de Person, et ajoutez les membres de données correspondants (tous deux de type double). Calculez et sortez le salaire annuel de divers membres du personnel.
La fonction principale définit la classe d'enseignant et les objets de classe du personnel administratif, dont les valeurs initiales sont saisies par le clavier, utilise le polymorphisme de C ++, utilise le pointeur de classe de base pour appeler la fonction virtuelle, calcule le salaire annuel de divers membres du personnel et sortie la
description d'entrée de l'
objet de classe du personnel administratif Valeur initiale La valeur initiale de l'
objet enseignant
Description de la sortie
Le numéro de poste, le nom et le salaire annuel de l'objet personnel administratif et enseignant
Échantillon d'entrée
1001 Zhao Yun 4500 1500
10003 Liu Xuande 6700120 50
Exemple de résultat
Numéro de poste: 1001
Nom: Zhao Yun
Salaire annuel: 55500
travailleurs Nombre: 10003
Nom: Liu Xuande
Salaire annuel: 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;
}

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44179485/article/details/105452268
conseillé
Classement