关于c++问题

下面程序有问题,请大侠根据题目和我编的改一下。最好说明一下,感激不尽。会加分的。
课程设计内容:
1.某学校职工,有从事行政工作的行政人员,有从事教学工作的教师,有兼有两者身份的辅导员。每种不同的人员工资的算法不同,行政人员根据级别拿固定工资,教师根据上课时数计算工资,辅导员两者兼有。
提示:
建立基类职工类,定义基本的属性与成员
行政人员与教师类从职工类继承
辅导员从行政人员与教师类共同派生,注意虚基类的设置。
计算工资的函数,设置为虚函数,不同的类有不同的计算方法,主函数中采用运行多态实现动态绑定。
#include<iostream>
#include<string>
using namespace std;

class worker{
public:
virtual void calculate(){
wage=2000;
cout<<"wage :"<<wage<<endl;}
virtual void work(){cout<<"职工"<<endl;}
void information(){cout<<"name:"<<name<<endl;
cout<<"id:"<<id<<endl;}
protected:
float wage;
string name;
string id;

};
class admonistration:virtual public worker{
public:
admonistration()
{cout<<"请输入名字"<<endl;
cin>>name;
cout<<"请输入编号"<<endl;
cin>>id;
cout<<"请输入奖金"<<endl;
cin>>bonus;}
void calculate(){
wage=2000+bonus;
cout<<"wage :"<<wage<<endl;};
void work(){cout<<"从事行政工作的行政人员"<<endl;}
private:
float bonus;
};
class teacher:virtual public worker{
public:
teacher(){cout<<"请输入名字"<<endl;
cin>>name;
cout<<"请输入编号"<<endl;
cin>>id;
cout<<"请输入课时"<<endl;
cin>>count;}
virtual void calculate(){
wage=2000+80*count;
cout<<"wage :"<<wage<<endl;

};
void work(){cout<<"从事教学工作的教师"<<endl;}
private:
int count;
};

class counstor: public admonistration,public teacher{
public:
counstor(){cout<<"请输入名字"<<endl;
cin>>name;
cout<<"请输入编号"<<endl;
cin>>id;
cout<<"请输入奖金"<<endl;
cin>>bonus;}
void calculate(){
wage=2000+bonus;
cout<<"wage :"<<wage<<endl;};
void work(){cout<<"兼有两者身份的辅导员"<<endl;}

private:
float bonus;
};
int main(){
teacher t();
admonistration a();
counstor c();
worker *pw[]={&t,&a,&c};
for(int f=0;f<3;f++)
{
pw[f]->calculate();
pw[f]->work();
pw[f]->information();
}
return 0;
}

我晕,我是对你无语了!!!
第一:程序格式没有搞好,格式不搞好,可读性降低,发现错误很难
第二:看你都是些什么错误:cout 少打一个C,一个类中还没有写完就顺手打了“}:” 好几个,自己找找这些不该有的错误吧
第三:难道你不知道在C++中不能用string 来定义变量吗?要定义字符串只能用字符数组的形式char car[];
第四:你说你最后在main()函数中定义对象在对象后面加括号什么意思?
下面是修改错误后的程序,我只是修改错误,没有把程序在功能完善方面做修改
#include<iostream.h>
#include<string.h>

class worker{

public:
virtual void calculate()
{
wage=2000;
cout<<"wage :"<<wage<<endl;
}
virtual void work()
{
cout<<"职工"<<endl;
}
void information()
{
cout<<"name:"<<name<<endl;
cout<<"id:"<<id<<endl;
}
protected:
float wage;
char name[20];
char id[20];

};

class admonistration:virtual public worker{

public:
admonistration(){
cout<<"请输入名字"<<endl;
cin>>name;
cout<<"请输入编号"<<endl;
cin>>id;
cout<<"请输入奖金"<<endl;
cin>>bonus;
}

void calculate()
{
wage=2000+bonus;
cout<<"wage :"<<wage<<endl;
}

void work()
{
cout<<"从事行政工作的行政人员"<<endl;
}

private:
float bonus;
};

class teacher:virtual public worker{

public:
teacher()
{
cout<<"请输入名字"<<endl;
cin>>name;
cout<<"请输入编号"<<endl;
cin>>id;
cout<<"请输入课时"<<endl;
cin>>count;
}

virtual void calculate()
{
wage=2000+80*count;
cout<<"wage :"<<wage<<endl;

}

void work()
{
cout<<"从事教学工作的教师"<<endl;
}

private:
int count;

};

class counstor: public admonistration,public teacher
{
public:
counstor()
{
cout<<"请输入名字"<<endl;
cin>>name;
cout<<"请输入编号"<<endl;
cin>>id;
cout<<"请输入奖金"<<endl;
cin>>bonus;
}
void calculate()
{
wage=2000+bonus;
cout<<"wage :"<<wage<<endl;
}
void work()
{
cout<<"兼有两者身份的辅导员"<<endl;
}

private:
float bonus;
};

int main()
{
teacher t;
admonistration a;
counstor c;
worker *pw[]={&t,&a,&c};
for(int f=0;f<3;f++)
{
pw[f]->calculate();
pw[f]->work();
pw[f]->information();
}
return 0;
}
对了,还给你提个建议,一般都是把类中的函数在类外实现的,一般只在类中声明而不实现。
温馨提示:答案为网友推荐,仅供参考
相似回答