// shiyan66.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include"iomanip"
#include"iostream"
using namespace std;
class Employee
{ public:
Employee(const long n,const char* N){number=n,*name=*N;};
virtual~Employee(){};
const char* getName(long n) const{};
const long getNumber() const{};
virtual double eamings() const=0;
virtual void print() const{cout<<"编号:"<
protected:
long number;
char *name;
};
class Manager: public Employee
{ public:
Manager(const long n,const char* N,double u ):Employee(n, N){monthlySalary=u;}
~Manager(){};
void setMonthlySalary(long n){number=n;};
virtual double eamings() const{return 0;};
virtual void print() const{cout
private:
double monthlySalary;
};
class HourlyWorker: public Employee
{ public:
HourlyWorker(const long n,const char* N,double=0.0, int=0):Employee(n, N){number=n,*name=*N;};
~HourlyWorker(){}
void setWage(double h){hours=h;};
void setHours(int w){wage=w;};
virtual double eamings() const{return hours*wage; };
virtual void print() const{cout
private:
double wage;
double hours;
};
class PieceWorker: public Employee
{ public:
PieceWorker(const long n,const char* N,double=0.0, int=0):Employee(n, N){number=n,*name=*N;};
~PieceWorker(){}
void setWage(double w){wagePerPiece=w;};
void setQuantity(int q){quantity=q;};
virtual double eamings() const{return wagePerPiece*quantity;};
virtual void print() const{cout
private:
double wagePerPiece;
int quantity;
};
int main()
{ cout
Manager m1(10135,"Cheng ShaoHua", 1200) ;
Manager m2(10201,"Yan HaiFeng",1000);
m2.setMonthlySalary ( 5300) ;
HourlyWorker hw1(30712,"Zhao XiaoMing",5,8*20) ;
HourlyWorker hw2(30649,"Gao DongSheng" ,6,98*8) ;
hw2.setWage(4.5) ;
hw2.setHours(10*30) ;
PieceWorker pw1(20382,"Xiu LiWei",0.5,2850) ;
PieceWorker pw2(20496,"Huang DongLin" ,1,23*10) ;
pw2.setWage(0.75);
pw2.setQuantity (1850);
Employee*basePtr;
basePtr=&m1 ; basePtr=&m2; basePtr=&hw1 ; basePtr=&hw2 ; basePtr=&pw1 ; basePtr=&pw2 ;
basePtr->print(); basePtr->print(); basePtr->print(); basePtr->print(); basePtr->print(); basePtr->print();
return 0;
}