C++编程题 有点麻烦,要求程序能在 VC6.0上编译,

试建立一个类Worker用于描述职工对象,具体要求如下:
(1)私有数据成员
unsigned int id: 职工号。
char name[11]:姓名
float wage: 工资。(最低值为符号常量,设为200)
int level: 技术等级(1~9级)
(2)公有成员函数
Worker ( ):构造函数,初始化数据成员为默认值(数值型成员均为0,字符型成员为空值)。
Worker (…):构造函数(自己定义参数),用参数初始化数据成员。
void infoList( ): 输出职工的各项信息。
void set( ): 从键盘输入新的数据,修改数据成员的值。接受输入前屏幕上显示提示输入哪些信息。
void addWage( ): 为职工增加工资并提升技术等级,每提升1级需增加150元。
(3)增加static变量和函数计算平均工资。
(4)设置友元函数bool CheckWage(...),根据id 检查每个Worker其工资与级别是否匹配。
(5)在主程序中定义N个Worker对象作为测试数据,完成对Worker类和程序的测试。每个成员函数至少被调用一次。
(6)在主程序中显示平均工资并调用CheckWage对每个工人工资与级别匹配情况作测试。
今晚11:30之前得提交 大家帮帮忙哈 伸手党。。直接给完整答案哈
1楼的程序编译有个错误,请看一下 多谢了

#include "iostream.h"
#define LOWWAGE 200 //工资最低值
class Worker
{
public:
Worker(){
id=0;
name[0]='\0';
wage=0.0;
level=1; //最底为1级
};
Worker(int _Id,char* _name,float _wage,int _level){
id=_Id;
strcpy(name,_name);
wage=_wage;
level=_level;
};
~Worker(){};
public:
void infoList(); //输出职工的各项信息。
void set(); //修改数据成员
void setWage(float fVal);
void addWage(); //增加工资并提升技术等级。
static void CalAveWage(int iNum,Worker(*pArray)[]); //计算平均工资
static void outAveWage();
private:
static float AveWage; //平均工资
unsigned int id; //职工号。
char name[11];//姓名
float wage; //工资。(最低值为符号常量,设为200)
int level; //技术等级(1~9级)
};
float Worker::AveWage=0.0;
void Worker::infoList()
{
cout<<"输出职工信息:"<<endl;
cout<<"\t职工号:"<<id<<endl;
cout<<"\t姓名:"<<name<<endl;
cout<<"\t工资:"<<wage<<endl;
cout<<"\t技术等级:"<<level<<endl;
}

void Worker::set()
{
cout<<"请输入 职工号:"<<endl;
scanf("%d",&id);
cout<<"请输入 姓名:"<<endl;
scanf("%s",&name);
cout<<"请输入 工资:"<<endl;
scanf("%f",&wage);
cout<<"请输入 技术等级:"<<endl;
scanf("%d",&level);
cout<<"完毕!"<<endl;
}

void Worker::addWage()
{
++level;
wage+=150;
}

void Worker::CalAveWage(int iNum,Worker(*pArray)[])
{
float fSum=0.0;
for (int i=0;i<iNum;++i)
{
fSum+=(*pArray)[i].wage;
}
AveWage=fSum/(float)iNum;
}

void Worker::setWage(float fVal)
{
wage=fVal;
}

void Worker::outAveWage()
{
cout<<"平均工资为:"<<AveWage<<endl;
}
void main()
{
Worker w1;
w1.set();
w1.infoList();
Worker wArr[10];
for (int i=0;i<10;++i)
wArr[i].setWage(i*10);
w1.CalAveWage(10,(Worker (*)[])&wArr);
w1.outAveWage();
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-07
#include "iostream.h"
#include "stdio.h"
#include "string.h"
#define LOWWAGE 200.0 //工资最低值
class Worker
{

private:
static float sum; //平均工资
static int n;
unsigned int id; //职工号。
char name[11];//姓名
float wage; //工资。(最低值为符号常量,设为200)
int level; //技术等级(1~9级)
public:
Worker()
{
id=0;
name[0]='\0';
wage=0.0;
level=0; //最底为1级
n++;
}
Worker(int _Id,const char* _name,float _wage,int _level)
{
id=_Id;
strcpy(name,_name);
wage=_wage;
level=_level;
n++;
sum += wage;

}
~Worker(){ sum -= wage; n--;}
public:
void infoList(); //输出职工的各项信息。
void set(); //修改数据成员
void setWage(float fVal);
void addWage(); //增加工资并提升技术等级。
static void CalAveWage(); //计算平均工资
friend bool CheckWage(Worker &p);

};
float Worker::sum=0.0;
int Worker::n = 0;
void Worker::infoList()
{
printf("职 工 号:%d\n", id);
printf("姓 名:%s\n", name);
printf("工 资:%f\n", wage);
printf("技术等级:%d\n", level);

}

void Worker::set()
{
float prewage = wage;
printf("请输入修改信息\n");
printf("请输入职工号:");
scanf("%d",&id);
printf("请输入姓名:");
scanf("%s",&name);
printf("请输入 工资:");
scanf("%f",&wage);
printf("请输入 技术等级:");
scanf("%d",&level);
printf("修改成功\n");
sum += (wage - prewage);
}

void Worker::addWage()
{
if(level == 9)return;
level++;
if(level == 1)
{
wage = 200.0;
sum += 200.0;
}
else
{
wage += 150.0;
sum += 150.0;
}
}

void Worker::CalAveWage()
{
printf("Average Wage:%f\n", sum/n);

}

bool CheckWage(Worker &p)
{
if( 200+150*(p.level - 1) != p.wage)
return false;
else
return true;
}

void main()
{
char ans;
printf("\n********************* test program ********************\n");
printf("total worker number is 3\n\n");
Worker p[3];
for(int i = 0; i < 3; i++)
{
p[i].addWage();
}
Worker newcomer(2, "小王", 300.0, 1);
printf("New worker is added. Info below:\n");
newcomer.infoList();
newcomer.set();
if(CheckWage(newcomer) == false)
{
printf("Wage and level doesn't match. Fault items below:\n");
newcomer.infoList();
}

Worker::CalAveWage();
}
第2个回答  2010-12-08
你先学谭浩强的C 简单些 但是他的代码书写习惯不好 注意下
看完了再去看C primer plus(第五版) 之后你学什么就看你想做什么了
第3个回答  2010-12-07
#include <iostream>
#include <string>
#define Lowwage 200
#define N 3
using namespace std;
class Worker
{
public:
Worker();//默认初始状态
Worker(unsigned int a,char b[11],float c,int d);//定义时设置
~Worker();//析构函数
void infoList();//输入职工信息
void set();//输入设置职工信息
void addWage();//增加工资和等级
friend bool CheckWage(Worker &);//友元函数检查工资和等级是否合格
friend float AveWage(Worker a[]);//友元函数求职工的平均工资
void inputList();//输出职工信息
private:
unsigned int id;//职工号
char name[11];//姓名
float wage;//工资
int level;//技术等级
};
Worker::Worker()
{
id=0;
strcpy(name,NULL);
wage=Lowwage;
level=1;
}
Worker::Worker(unsigned int a,char b[11],float c,int d)
{
id =a;
strcpy(name,b);
wage=c;
level=d;
}//Worker() end
Worker::~Worker()
{
cout<<"Thank you using it!"<<endl;
}//~Worker() end
void Worker::inputList()
{
cout<<"职工号:";
cin>> id;
cout<<"姓名:";
cin>>name;
cout<<"工资:";
cin>>wage;
cout<<"技术等级:";
cin>>level;
}//inputLIst end
void Worker::infoList()
{
cout<<id<<"\t"<<name<<"\t"<<wage<<"\t"<<level<<endl;
}//infoList() end
void Worker::set()
{
int yes_no=1;
while(yes_no)
{
cout<<"请输入要修改的数据成员。1、职工号;2、姓名;3、工资;4、技术等级;5。不修改。\n每次只能修改一个数据成员"<<endl;
int i;
cin >>i;
while(i!=1&&i!=2&&i!=3&&i!=4&&i!=5)
{
cout<<"输入的数据有误,请重输!"<<endl;
cin>>i;
}
switch(i)
{
case 1:cout<<"请输入职工号:";
unsigned int _id;
cin>>_id;
id=_id;
break;
case 2:cout<<"请输入姓名:";
char _name[11];
cin>>_name;
strcpy(name,_name);
break;
case 3:cout<<"请输入工资:";
float _wage;
cin>>_wage;
wage=_wage;
break;
case 4:cout<<"请输入等级(1~9):";
int _level;
cin>>_level;
level=_level;
break;
default:
yes_no=0;
break;
}
}
}//sed9) end
void Worker::addWage()
{
id+=1;
wage+=150;
if(id>=10)
{
id=9;
wage-=150;
}
}//addWage() end
bool CheckWage(Worker & t)
{
return ((Lowwage+(t.level-1)*150)==t.wage)?1:0;
}//CheckWage() end
static float avewage=0;//平均工资
float AveWage(Worker a[])
{
for(int i=0;i<N;i++)
avewage+=a[i].wage;
avewage/=N;
return avewage;
}//求出平均工资
int main()
{
int testp,i;//要更改第几个职工;
Worker worker[N]=
{Worker(1,"lihua",400,2),
Worker(2,"zmj",500,2),
Worker(3,"yl",1500,7)
};
cout<<"\t 职工信息"<<endl;
cout<<"ID\t"<<"NAME\t"<<"WAGE\t"<<"LEVEL"<<endl;
for (i=0;i<N ;i++ )
{
worker[i].infoList();
if(CheckWage(worker[i]))
cout<<"合格"<<endl;
else
cout<<"不合格"<<endl;
}
cout<<"平均工资:"<<AveWage(worker)<<endl;
cout<<"要更改第几个职工(小于"<<N<<")"<<endl;
cin>>testp;
worker[testp-1].set();
cout<<"\t 职工信息"<<endl;
cout<<"ID\t"<<"NAME\t"<<"WAGE\t"<<"LEVEL"<<endl;
for(i=0;i<N;i++)
{
worker[i].infoList();
if(CheckWage(worker[i]))
cout<<"合格"<<endl;
else
cout<<"不合格"<<endl;
}
cout<<"平均工资:"<<AveWage(worker)<<endl;
cout<<"要加薪的员工是第几个(条件如上)"<<endl;
cin>>testp;
worker[testp-1].addWage();
cout<<"\t 职工信息"<<endl;
cout<<"ID\t"<<"NAME\t"<<"WAGE\t"<<"LEVEL"<<endl;
for(i=0;i<N;i++)
{
worker[i].infoList();
if(CheckWage(worker[i]))
cout<<"合格"<<endl;
else
cout<<"不合格"<<endl;
}
cout<<"平均工资:"<<AveWage(worker)<<endl;
return 0;
}

如何在Visual C++ 6.0环境下运行C程序
Visual C++ 6.0可以编译后缀为.c的C源程序,也可以编译后缀为.cpp的C++源程序。3 程序的编译:在编辑和保存了源文件以后,若需要对源文件进行编译。单击主菜单的“编译”,在其下拉菜单中选择“编译xx.c”项。在单击编译命令后,屏幕上出现一个对话框,如图所示,意思是此编译指令要求一个有效的项目...

简述在VC++6.0环境下运行一个C++源程序的步骤
1、首先,打开我们的VC++6.0编程软件,点击左上角的“文件”菜单,并选择“新建”。2、接着,选择“win32consoleapplication”(win32控制台程序)。3、然后,填写好工程的名称,以及创建的位置,并点击“确定”按钮。4、接着,在工程类型中选择“一个空工程”,然后,点击“完成”按钮。5、接着,...

devc++上编写的程序能在vc6.0上运行吗?
差不多就是上面说的,不过可能有一些代码的用法不同,修改一下就行了。早期的mingw也不是那么遵循C++规范,和VC6的半斤八两吧。

简单的C++语言 如何在VC++ 6.0上实现
没有你要写程序的地方 你就点击 左边的那个加号 它会再次出现加号 你一直点加号到他出现 main 为止 然后保留上面的#include "stdafx.h" 其他的都删了 就可以进行你要写的程序了

有关C++在VC6.0上的运行?
错误:编译器认为变量重复定义 这是老版本编译器的问题,新版本的C++编译器,将for循环内部定义的变量界定在for之内,出了for循环再使用就需要重新定义。所以代码本身是没问题的,在新版本可以通过,建议更换编译环境。

如何用Microsoft Visual C++6.0编写程序
1、在电脑桌面点击“Microsoft Visual C++”。2、打开Microsoft Visual C++,会出现如下弹窗,关闭即可。3、 点击“工具(T)”选项,在点击“选项(O)”。4、进入“选项(O)”界面后多次点击右上角的小箭头。5、多次点击右上角的小箭头进入“格式”界面后,设置自己喜欢的字体,大小,背景颜色,将Number...

c++6.0上写一个程序,运行时总出现Error spawning cl.exe?
“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\\VC98\\Bin”下面,你可以到相应的路径下找到这个应用程序。因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、...

C++编程问题,代码如下,用的是VC++6.0,编译没错,结果也出来。但是结果出...
int a[2],temp; 你定义两个空间,却要输入三个数,撑爆了(数组越界访问,溢出)!改大数组就好了 int a[20],temp;

如何用VC++6.0软件编程C语言
打开vc++,点击“文件”,点击“新建”,这时会出现一个框,点击框上的“文件”,然后点击“C++ Suorce File”,然后在“文件名”下面的输入框输入你的文件名称,如:文件.c\/文件.cpp(C语言后缀用.c,C++语言后缀用.cpp),然后在“位置”下的输入框选择你想把文件放的位置,然后点击“确定”就...

为啥在VC++6.0上执行C++程序老出现执行cl.exe错误 唉。。。求助求助_百...
如果以前没出现过,关闭vc6.0,重启后全部重新编译,如果以前就有,那就重装vc6吧

相似回答