class employee //基类
{
protected:
char *name; //姓名
int individualEmpNo; //个人编号
int grade;//级别
float accumPay; //月薪总额
static int employeeNo; //本公司职员编号目前最大值
public:
employee(); //构造函数
~employee(); //析构函数
virtual void pay()=0; //计算月薪函数(纯虚函数)
virtual void promote(int increment=0);//升级函数(虚函数)
virtual void displayStatus()=0; //显示人员信息(纯虚函数)
};
class technician:public employee //兼职技术人员类
{
private:
float hourlyRate;//每小时酬金
int workHours;//当月工作时数
public:
technician();//构造函数
void promote(int); //升级函数
void pay(); //计算月薪函数
void displayStatus(); //显示人员信息
};
class salesman:virtual public employee //兼职推销员类
{
protected:
float CommRate; //按销售额提取酬金的百分比
float sales;//当月销售额
public:
salesman();//构造函数
void promote(int); //升级函数
void pay();//计算月薪函数
void displayStatus(); //显示人员信息
};
class manager:virtual public employee //经理类
{
protected:
float monthlyPay; //固定月薪数
public:
manager();//构造函数
void promote(int);//升级函数
void pay(); //计算月薪函数
void displayStatus(); //显示人员信息
};
class salesmanager:public manager,public salesman //销售经理类
{
public:
salesmanager();//构造函数
void promote(int); //升级函数 '
void pay();//计算月薪函数
void displayStatus();//显示人员信息
};
//empfunc.cpp
#include <iostream.h>
#include <string.h>
#include "employee.h"
int employee::employeeNo=1000;//员工编号基数为1000
employee::employee()
{
char namestr[50];//输人雇员姓名时首先临时存放在namestr中
cout<<"请输入下一个雇员的姓名:";
cin>>namestr;
name=newchar[strlen(namestr)+1]; //动态申请用于存放姓名的内存空间
strcpy(name,namestr);//将临时存放的姓名复制到name
individualEmpNo=employeeNo++;//新输入的员工,其编号为目前最大编号加l
grade=1;//级别初值为l
accumPay=0.0; //月薪总额初值为0
}
employee::~employee()
{
delete []name;//在析构函数中删除为存放姓名动态分配的内存空间
}
void employee::promote(int increment)
{
grade+=increment;//升级,提升的级数由increment指定
}
technician::technician()
{
hourlyRate=100; //每小时酬金100元
}
void technician::promote(int)
{
employee::promote(2); //调用基类的升级函数,升2级
}
void technician::pay()
{
cout<<"请输入"<<name<<"本月的工作时数:";
cin>>workHours;
accumPay=hourlyRate*workHours;//计算月薪,按小时计酬
cout<<"兼职技术人员"<<name<<"编号:"
<<individualEmpNo <<"本月工资:"<<accumPay<<endl;
}
void technician::displayStatus()
{
cout<<"兼职技术人员"<<name<<"编号:"
<<individualEmpNo<<"级别为:"<<grade
<<"级,已付本月工资:"<<accumPay<<endl;
}
salesman::salesman()
{
CommRate=0.04; //销售提成比例4%
}
void salesman::promote(int)
{
employee::promote(0);//调用基类的升级函数,升0级
}
void salseman::pay()
{
cout<<"请输人"<<name<<"本月的销售额:";
cin>>sales;
accumPay=sales*CommRate; //月薪二销售提成
cout<<"推销员"<<name<<"编号:"<<individualEmpNo
<<"本月工资:"<<accumPay<<endl;
}
void salesman::displaystatus()
{
cout<<"推销员"<<name<<"编号:"<<individualEmpNo
<<"级别为"<<grade<<"级,已付本月工资:"
<<accumPay<<endl;
}
manager::manager()
{
monthlyPay=8000; //固定月薪8000元
}
void manager::promote(int)
{
employee::promote(3); //调用基类的升级函数,升3级
}
void manager::pay()
{
accumPay=monthlyPay://月薪总额即固定月薪数
cout<<"经理"<<name<<"编号:"<<individualEmpNo
<<"本月工资:"<<accumPay<<endl;
}
void manager::displayStatus()
{
cout<<"经理"<<name<<"编号:"<<individualEmpNo
<<"级别为"<<grade<<"级,已付本月工资:"
<<accumPay<<endl;
}
salesmanager::salesmanager()
{
monthlyPay=5000;
commRate=0.005;
}
void salesmanager::promote(int)
{
employee::promote(2); //调用基类的升级函数,升2级
}
void salesmanager::pay()
{
cout<<"请输入"<<employee::name
<<"所管辖部门本月的销售总额:";
cin>>sales;
accumPay=monthlyPay+CommRate*sales; //月薪二固定月薪+销售提成
cout<<"销售经理"<<name<<"编号:"<<individualEmpNo
<<"本月工资:"<<accumPay<<endl;
}
void salesmanager::displayStatus()
{
cout<<"销售经理"<<name<<"编号:"<<individualEmpNo
<<"级别为"<<grade<<"级,已付本月工资:"
<<accumPay<<endl;
}
//8-7.cpp
#include <iostream.h>
#include "employee.h"
int main( )
{
manager m1;
technician t1;
salesmanager sm1;
salesman s1;
employee *emp[4]={&m1,&tl,&sml,&s1};//用指针数组的各元素存放各对象的地址
int i;
for(i=0;i<4;i++)
{ /*依次调用各派生类对象的成员函数,完成各自不同的升
级、计算月薪、显示信息功能。*/
emp[i]->promote();
emp[i]->pay();
emp[i]->displayStatus();
}
return O;
}
错误提示:F:\C程序\源程序\课程设计.cpp(64) : fatal error C1083: Cannot open include file: 'employee.h': No such file or directory
请问如何改正??谢谢!!