| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 835 人关注过本帖
标题:[求助]该程序有一个错误,怎么改?
只看楼主 加入收藏
orangehaitun
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-1-2
收藏
 问题点数:0 回复次数:6 
[求助]该程序有一个错误,怎么改?

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
请问如何改正??谢谢!!

搜索更多相关主题的帖子: 月薪 函数 int employee void 
2007-01-02 23:00
nalnait
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-12-29
收藏
得分:0 
1、里面有好多细节没注意,如大小写
2、构造函数的继承还存在问题

2007-01-03 07:50
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
收藏
得分:0 


F:\C程序\源程序\课程设计.cpp(64) : fatal error C1083: Cannot open include file: 'employee.h': No such file or directory

翻译一下你就知道了:
无法打开文件:'emplyee.h':文件不存在


2007-01-03 11:20
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 
或许从http://bbs.bc-cn.net/viewthread.php?tid=113706 可以找到你要的答案。

Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-01-03 12:03
墨岛
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-7-25
收藏
得分:0 

#ifndef EMPLOYEE_H
#define EMPLOYEE_H
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();//显示人员信息
};
#endif

#include <iostream.h>
#include <string.h>
#include "employee.h"

int employee::employeeNo=1000;//员工编号基数为1000

employee::employee()
{
char namestr[50];//输人雇员姓名时首先临时存放在namestr中
cout<<"请输入下一个雇员的姓名:";
cin>>namestr;
name=new char[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=float(0.04); //销售提成比例4%
}

void salesman::promote(int)
{
employee::promote(0);//调用基类的升级函数,升0级
}

void salesman::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.005f;
}

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;
}


#include <iostream.h>
#include "employee.h"

int main( )
{
manager m1;
technician t1;
salesmanager sm1;
salesman s1;
employee * emp[4]={&m1,&t1,&sm1,&s1};//用指针数组的各元素存放各对象的地址
int i;
for(i=0;i<4;i++)
{
emp[i]->promote();
emp[i]->pay();
emp[i]->displayStatus();
}
return 0;
}


2007-01-03 18:55
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 
楼上的在"employee.h"文件尾要加     #endif

try new catch
2007-03-18 14:18
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 

//employee.h
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
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();//显示人员信息
};
#endif

//main.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=new char[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=float(0.04); //销售提成比例4%
}

void salesman::promote(int)
{
employee::promote(0);//调用基类的升级函数,升0级
}

void salesman::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.005f;
}

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;
}

int main( )
{
manager m1;
technician t1;
salesmanager sm1;
salesman s1;
employee * emp[4]={&m1,&t1,&sm1,&s1};//用指针数组的各元素存放各对象的地址
int i;
for(i=0;i<4;i++)
{
emp[i]->promote();
emp[i]->pay();
emp[i]->displayStatus();
}
return 0;
}

这样也行.


Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-03-18 14:38
快速回复:[求助]该程序有一个错误,怎么改?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016879 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved