1. 程式人生 > >某公司有老闆Boss、僱員Employee、小時工HourlyWorker和營銷人員CommWorker,他們的薪金計算方法如下:.........C++158頁6題

某公司有老闆Boss、僱員Employee、小時工HourlyWorker和營銷人員CommWorker,他們的薪金計算方法如下:.........C++158頁6題

#include<iostream>
#include<string.h>
using namespace std;
class person{
private:
char *name;
int number,age;
char sex;
static int len;  
public:
person(char *a,int b, int c,char d):number(b),age(c),sex(d){
len=strlen(a);
name=a;}
void getname(){
for(int i=0;i<len;i++)  
                cout << name[i];}
int getnumber(){return number;}
int getage(){return age;}
int getsex(){return sex;}
virtual double getpay()=0;
virtual void print(){cout<<"name:";  getname();  cout<<"\nnumeber:"<<getnumber()<<"\nage:"<<getage()<<"\nmoeny:"<<getpay()<<endl;}
};
int person::len=0;  
class Boss:public person{
private:
double year;
public:
Boss(char*a,int b, int c,char d,double f):person(a,b,c,d),year(f){};
virtual double getpay(){return year*15000;}
virtual void print(){cout<<"***name:";  getname();  cout<<"\nnumeber:"<<getnumber()<<"\nage:"<<getage()<<"\nyear:"<<year<<"\nmoeny:"<<getpay()<<endl;}
};
class Employee:public person{
private:
int month,award,money;
public:
Employee(char *a,int b,int c,char d,int e,int f,int g):person(a,b,c,d),month(e),award(f),money(g){}
int getmonth(){return month;}
void setmonth(int a){month=a;}
int getaward(){return award;}
void setaward(int a){award=a;}
virtual double getpay(){return money+award;}
virtual void print(){cout<<"***name:";  getname();  cout<<"\nnumeber:"<<getnumber()<<"\nage:"<<getage()<<"\nmonth:"<<month<<"\naward:"<<award<<"\nmoeny:"<<getpay()<<endl;}
};
class HourlyWorker:public person{
private:
int hour,M;
public:
HourlyWorker(char *a,int b,int c,char d,int e,int f):person(a,b,c,d),hour(e),M(f){}
int getM(){return M;}
void setM(int a){M=a;}
int gethour(){return hour;}
void sethour(int a){hour=a;}
virtual double getpay(){return hour*M;}
virtual void print(){cout<<"***name:";  getname();  cout<<"\nnumeber:"<<getnumber()<<"\nage:"<<getage()<<"\nhonur:"<<hour<<"\nÿÈÕСʱ¹¤×Ê:"<<M<<"\nmoeny:"<<getpay()<<endl;}
};
class CommWorker:public person{
private:
int lirun;
public:
CommWorker(char *a,int b,int c,char d,int e):person(a,b,c,d),lirun(e){}
int getlirun(){return lirun;}
void setlirun(int a){lirun=a;}
virtual double getpay(){return 1000+0.05*lirun;}
virtual void print(){cout<<"***name:";  getname();  cout<<"\nnumeber:"<<getnumber()<<"\nage:"<<getage()<<"\nmoeny:"<<getpay()<<"ÀûÈó:"<<lirun<<endl;}
};
void main()
{
Boss boss("boss",0,20,'m',1);
person *p;
p=&boss;
p->print();
Employee employee("aa",1,20,'m',2,2000,5000);
p=&employee;
p->print();
HourlyWorker hourlyWorker("bb",2,20,'m',100,20);
p=&hourlyWorker;
p->print();
CommWorker commWorker("cc",3,20,'m',50000);
p=&commWorker;
    p->print();
}