小弟自己改的c++程序,没有错误,但是有个参数显示不对
公司人员信息管理系统,相信很多大学的同学都应该做过。。但是这次老师要求的是越简单越好。。说100多行就够了。。
小弟在网上找了个基本能用的框架,删减了2个成员函数,就剩下了一个计算工资的函数。。但是人员编号的显示却不行了,显示的是很大的数。以下是小弟的程序
#include<iostream.h>
#include<string.h>
class employee
{
protected:
char *name;
int individualempNo;
float accumpay;
static int employeeNo;
public:
employee();
~employee();
virtual void pay()=0;
};
class technician:public employee
{
private:
float hourlyrate;
int workhours;
public:
technician();
void pay();
};
class manager:virtual public employee
{
protected:
float monthlypay;
public:
manager();
void pay();
};
class salesman:virtual public employee
{
protected:
float commrate;
float sales;
public:
salesman();
void pay();
};
class salesmanager:public manager,public salesman
{
public:
salesmanager();
void pay();
};
int employee::employeeNo=1000;
employee::employee()
{
char namestr[50];
cout<<"请输入一个雇员的姓名:";
cin>>namestr;
name=new char[strlen(namestr)+1];
strcpy(name,namestr);
individualempNo++;
accumpay=0.0;
}
employee::~employee()
{
delete[]name;
}
technician::technician()
{
hourlyrate=100;
}
void technician::pay()
{cout<<"请输入"<<name<<"本月的工作时数:";
cin>>workhours;
accumpay=hourlyrate*workhours;
cout<<"技术人员"<<name<<"的编号是"<<individualempNo<<"本月工资"<<accumpay<<endl;
}
salesman::salesman()
{
commrate=0.04;
}
void salesman::pay()
{
cout<<"请输入"<<name<<"本月的销售额:";
cin>>sales;
accumpay=sales*commrate;
cout<<"销售人员"<<name<<"的编号是"<<individualempNo<<"本月工资"<<accumpay<<endl;
}
manager::manager()
{
monthlypay=8000;
}
void manager::pay()
{
accumpay=monthlypay;
cout<<"经理"<<name<<"的编号是"<<individualempNo<<"本月工资"<<accumpay<<endl;
}
salesmanager::salesmanager()
{
monthlypay=5000;
commrate=0.005;
}
void salesmanager::pay()
{
cout<<"请输入"<<employee::name<<"所管辖部门本月的销售总额";
cin>>sales;
accumpay=monthlypay+commrate*sales;
cout<<"销售经理"<<name<<"的编号是"<<individualempNo<<"本月工资"<<accumpay<<endl;
}
int main()
{cout<<" 公 司 人 事 管 理 系 统 "<<endl;
biaohao: cout<<"*************************************************************************"<<endl;
cout<<"* 0.exit 1.经理 2.技术人员 3.销售经理 4.销售人员 *"<<endl;
cout<<"请选择功能:"<<endl;
int a;
cin>> a;
switch(a)
{case 0:break;
case 1:{ manager m1;
employee* a;
a=&m1;
a->pay();
}goto biaohao;
break;
case 2:{technician t1;
employee* b;
b=&t1;
b->pay();
}goto biaohao;break;
case 3:{salesmanager sm1;
employee* c;
c=&sm1;
c->pay();
}goto biaohao;break;
case 4:{salesman s1;
employee* d;
d=&s1;
d->pay();
}goto biaohao;break;
default:cout<<"你输入有误,请重试!"<<endl;goto biaohao;break;
}
return 0;
}
编译,组建都没有问题。。但是输入人员名字后,编号不对,请大神们帮我看看啊。。悲剧得想发百度知道。。超过长度限制
[ 本帖最后由 tytge8 于 2011-12-15 20:28 编辑 ]