您的位置:首页 > 其它

小公司的经典管理系统

2017-03-03 21:47 197 查看
问题的提出:编写一个小公司的工资管理系统。该公司主要有4类人员:经理、兼职技术人员、销售员和销售经理。要求存储并显示每类人员的编号(从100起编号)、姓名和月薪,同时给出在创建每一类对象时构造函数的执行顺序(月薪计算方法为:经理固定月薪8000元,兼职技术人员100元/小时,销售员为当月销售额的4%,销售经理保底工资5000元另加其所管部门销售额的5%),要求用虚函数实现。

/*问题的提出:编写一个小公司的工资管理系统。
该公司主要有4类人员:经理、兼职技术人员、销售员和销售经理。
要求存储并显示每类人员的编号(从100起编号)、姓名和月薪,
同时给出在创建每一类对象时构造函数的执行顺序(月薪计算方法为:
经理固定月薪8000元,兼职技术人员100元/小时,销售员为当月销售额的4%,
销售经理保底工资5000元另加其所管部门销售额的5%),
要求用虚函数实现。*/
#include<iostream.h>
#include<string.h>
class employee//暂时当你是公司的雇员类
{
protected:
int no;
char *name;
float salary;
static int totalno;
public:
virtual void pay()=0;
virtual void display()=0;
employee()//跟类同名,这是构造函数
{
char temname[20];
no=totalno++;
cout<<"职工姓名:";
cin>>temname;
name=new char[strlen(temname)+1];
strcpy(name,temname);
salary=0;
}
//到目前为止,数据成员已经全部初始化
~employee()
{
delete[] name;//只有你申请了内存
}
};
//兼职技术类
class technician:public employee
{
private:
float hourlyrate;
int workhours;
public:
technician()
{hourlyrate=100;}
void pay()
{
cout<<name<<"本月工作时数:";
cin>>workhours;
salary=hourlyrate*workhours;
}
void display()
{
cout<<"兼职技术人员"<<name<<"(编号为"<<no\
<<")"<<"本月工资:"<<salary<<endl;
}
};
int employee::totalno=100; //静态数据成员totalno在类外进行初始化
//然后就是销售员类
class saleman:virtual public employee
{
protected:
float commrate;
float sales;
public:
saleman()
{commrate=0.04f;}
void pay()
{
cout<<name<<"本月销售额:";
cin>>sales;
salary=sales*commrate;
}
void display()
{
cout<<"销售员"<<name<<"(编号为"<<no<<")"\
<<")"<<"本月工资:"<<salary<<endl;
}
};
//到经理类啦
class manager:virtual public employee
{
protected:
float monthlypay;
public:
manager()
{
monthlypay=8000;
}
void pay(){salary=monthlypay;}
void display()
{
cout<<"经理"<<name<<"(编号为"<<no<<")"\
<<")"<<"本月工资:"<<salary<<endl;
}
};
//到销售经理啦
class salesmanager:public manager,public saleman
{
public:
salesmanager()
{
monthlypay=5000;
commrate=0.05f;
}
void pay()
{
cout<<name<<"所管部门月销售量:";
cin>>sales;
salary=monthlypay+commrate*sales;
}
void display()
{
cout<<"销售经理"<<name<<"(编号为"<<no<<")"\
<<")"<<"本月工资:"<<salary<<endl;
}
};
//编写主函数
void main()

{
manager m1;
technician t1;
saleman s1;
salesmanager sm1;
employee* em[4]={&m1,&t1,&s1,&sm1};
for(int i=0;i<4;i++)
{
em[i]->pay();
em[i]->display();
}
}
看一下结果怎样?

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: