回 帖 发 新 帖 刷新版面

主题:求教  要求

设计一:
1.某单位的职工工资包括基本工资Wage,岗位津贴Subsidy,房租Rent,水费WaterFee,电费ElecFee。设计是实现工资管理的类Salary,该类的形式如下:

Class Salary{
Double Wage,Subsidy,Rent,WaterFee,ElecFee;
Pulic:
  Salary(……){初始化工资数据的各分项}
  Salary(){初始化工资数据的各分项数据为0}
  Void setXX(double f){xx=f;}
  Double getXX(){return xx;}
  Double RealSalary()  //计算实发工资
};
其中,成员函数setXX用于设置工资的各分项数据,成员函数getXX用于获取工资各分项数据,xx代表Wage,Subsidy等数据成员。
实发工资=Wage+Subsidy-Rent-WaterFee-ElecFee
编写程序完善该类的设计,并写出测试该类成员函数的主函数main。

2.设计工人类Worker,它具有姓名name,年龄age,工作部门Dept,工资salary等数据成员。其中,Salary使用上题上定义的类。完成Worker类的设计,并统计工人的人数,编写测试程序进行测试。
//头文件
#include<iostream>
using namespace std;
class Worker;
class Salary
{
   void    Salary(void)//初始化工资数据的各分项数据为0
    {
        Wage=0;
        Subsidy=0;
        Rent=0;
        WaterFee=0;
        ElecFee=0;
    }
    friend class Worker;

public:
    double Wage,Subsidy,Rent,WaterFee,ElecFee;
    
    void setWage()
    {
        cout<<"请输入基本工资:"<<endl;
        cin>>Wage;
    } 
    void setSubsidy()
    {
        cout<<"请输入岗位津贴:"<<endl;
        cin>>Subsidy;
    }
    void setRent()
    {
        cout<<"请输入房租:"<<endl;
        cin>>Rent;
    }
    void setWaterFee()
    {
        cout<<"请输入水费:"<<endl;
        cin>>WaterFee;
    }
    void setElecFee()
    {
        cout<<"请输入电费:"<<endl;
        cin>>ElecFee;
    }
    
    double getWage()
    {
        return Wage;
    }
    double getSubsidy()
    {
        return Subsidy;
    }
    double getRent()
    {
        return Rent;
    }
    double getWaterFee()
    {
        return WaterFee;
    }
    double getElecFee()
    {
        return ElecFee;
    }
    void RealSalary()//计算实发工资
    {
        cout<<"实法工资:"<<Wage+Subsidy-Rent-WaterFee-ElecFee<<endl;
    }
};//姓名name,年龄age,工作部门Dept,工资salary等
class Worker
{
public:
    char a,b;
    char c;
    void name()
    {
        cout<<"输入姓名:"<<endl;
        cin>>a;
    }
    void age()
    {
        cout<<"输入年龄:"<<endl;
        cin>>b;
        namber++;
    }
    void Dept()
    {
        cout<<"工作部门:"<<endl;
        cin>>c;
    }
    void out()
    {
        cout<<a<<endl;
        cout<<namber<<endl;
        cout<<"年龄:"<<b<<"工作部门:"<<c<<endl;
    }
    double salary()
    {
        void RealSalary();
    }
    static int namber;
};
int Worker::namber=0;
实现文件
#include"wage.h"
void main()
{
    Worker m;
    Salary n;
    char i='y';
    while(i==y)
    {
        m.name();
        m.age();
        m.Dept();
        n.getWare();
        n.getSubsidy();
        n.getRent();
        n.getWaterFee();
        n.getElecFee();
        m.out();
        n.RealSalary();
        cout<<"如果仍有记录按'y',否任意键退出:"<<endl;
        cin>>i;
    }

运行有错,,求教啊

回复列表 (共6个回复)

沙发

没有这个头文件wage.h
同时类中 初始化 
怎么能这样写的呢
 void    Salary(void)//初始化工资数据的各分项数据为0
    {
        Wage=0;
        Subsidy=0;
        Rent=0;
        WaterFee=0;
        ElecFee=0;
    }
应该在PUBLIC中初始化 构造函数撒

板凳

只是抛开题目本身的错误。。 
改过来以后再看看

3 楼

抛开你类的写法
while(i==y)这是怎么回事……用了个没定义的变量y……

4 楼

void RealSalary()//计算实发工资
    {
        cout<<"实法工资:"<<Wage+Subsidy-Rent-WaterFee-ElecFee<<endl;//输出文本居然有错别字
    }


    char a,b;
    char c;//这里让我很诧异,人的名字居然可以用1个字符来存储的,string类听说过没……
    static int namber;//请问你是不是想拼number呢,另外这个变量基本上就没被用到嘛……如果你想用这个程序做一堆人的管理,整个写法就有问题,不是你加个变量就能管许多许多人了

最后也是最严重的一个代码风格不良之处:所有属性都写在public里了,这样还要class做什么呢?你所有的属性都不真正需要外部直接调用啊,应该写在private里
总结:lz请一定好好看书,很多东西书里还是有的

5 楼

创建头文件wage.h
#include<iostream>
#include<string.h>
using namespace std;
class Worker;
class Salary
{
private:
    float s;
    float Wage,Subsidy,Rent,WaterFee,ElecFee;
public:
 Salary()//初始化工资数据的各分项数据为0
    {
        Wage=0;
        Subsidy=0;
        Rent=0;
        WaterFee=0;
        ElecFee=0;
    }
    friend class Worker;
    void setWage()
    {
        cout<<"请输入基本工资:"<<endl;
        cin>>Wage;
    } 
    void setSubsidy()
    {
        cout<<"请输入岗位津贴:"<<endl;
        cin>>Subsidy;
    }
    void setRent()
    {
        cout<<"请输入房租:"<<endl;
        cin>>Rent;
    }
    void setWaterFee()
    {
        cout<<"请输入水费:"<<endl;
        cin>>WaterFee;
    }
    void setElecFee()
    {
        cout<<"请输入电费:"<<endl;
        cin>>ElecFee;
    }
    

    }
      RealSalary()//计算实发工资
    {
          s=Wage+Subsidy-Rent-WaterFee-ElecFee;
          cout<<"实际工资:"<<s<<endl;
    }
};//姓名name,年龄age,工作部门Dept,工资salary等
class Worker
{
public:
    Worker()
    {}
    ~Worker()
    {}
    
    void name()
    {
        cout<<"输入姓名:"<<endl;
        cin>>a;
        number++;
    }
    void age()
    {
        cout<<"输入年龄:"<<endl;
        cin>>b;
        
    }
    void Dept()
    {
        cout<<"工作部门:"<<endl;
        cin>>c;
    }
    void out()
    {
        cout<<a<<endl;
        cout<<"编号:"<<number<<endl;
        cout<<"年龄:"<<b<<"工作部门:"<<c<<endl;
    }
    double salary()
    {
        void RealSalary();
    }
private:
    char a[10]
    int b;
    char c[20];
    static int namber;
};
int Worker::namber=0;
主测文件
#include"wage.h"
void main()
{
    Worker m;
    Salary n;
    char i='y';
    while(i=='y')
    {
        m.name();
        m.age();
        m.Dept();
        n.getWare();
        n.getSubsidy();
        n.getRent();
        n.getWaterFee();
        n.getElecFee();
        m.out();
        n.RealSalary();
        cout<<"如果仍有记录按'y',否任意键退出:"<<endl;
        cin>>i;
    }

我改了,为什么有
:\zonghe1\gongzijiesuan\wage.h(50) : error C2065: 's' : undeclared identifier
f:\zonghe1\gongzijiesuan\wage.h(50) : error C2065: 'Wage' : undeclared identifier
f:\zonghe1\gongzijiesuan\wage.h(50) : error C2065: 'Subsidy' : undeclared identifier
f:\zonghe1\gongzijiesuan\wage.h(50) : error C2065: 'Rent' : undeclared identifier
f:\zonghe1\gongzijiesuan\wage.h(50) : error C2065: 'WaterFee' : undeclared identifier
f:\zonghe1\gongzijiesuan\wage.h(50) : error C2065: 'ElecFee' : undeclared identifier
这些没有声名呢,我明明声明了啊,求教啊




6 楼


班忙在看一下啊,

我来回复

您尚未登录,请登录后再回复。点此登录或注册