回 帖 发 新 帖 刷新版面

主题:关于组合类

[code=c]
/*设计一个用于人事管理的"人员"类。由于考虑到通用性,这里只抽象出所有类型人员都具有
的属性:姓名、编号、性别、出生日期、身份证号等。其中"出生日期"声明为一个"日期"类内嵌字对象。
用成员函数实现对人员信息的录入和显示。*/

#include <iostream>
#include <cstring>
using namespace std;

//////////////////////////日期类//////////////////////////////
class Birth
{
public:
    Birth(){Year=Month=Day=0;}
    Birth(int yy,int mm,int dd){Year=yy;Month=mm;Day=dd;}   //构造函数
    ~Birth(){};                                                //析构函数
    Birth(Birth &b);                                        //拷贝构造函数
    void SetYear(int yy){Year=yy;}
    void SetMonth(int mm){Month=mm;}
    void SetDay(int dd){Day=dd;}
    int GetYear(){return Year;}
    int GetMonth(){return Month;}
    int GetDay(){return Day;}

private:
    int Year,Month,Day;
};

Birth::Birth(Birth &b)                //拷贝构造函数
{
    Year=b.Year;
    Month=b.Month;
    Day=b.Day;
}

/////////////////////////人员类///////////////////////////
class Man
{
public:
    Man();                //构造函数
    Man(Birth newbirthday);
    ~Man(){};            //析构函数
    Man(Man &m);        //拷贝构造函数
    int GetNum();        //提取编号函数
    void SetName(char *name);            //设置姓名函数
    void SetSex(char *sex);                //设置性别函数
    void SetBir(int y,int m,int d);        //设置出生日期函数
    void SetID(char *id);                //设置身份证函数
    char* GetName();        //提取姓名函数
    char* GetSex();            //提取性别函数
    char* GetID();            //提取身份证函数
    char* GetBir();            //提取出生日期函数

private:
    int Num;        //编号
    char Name[20];        //姓名
    char Sex[10];        //性别
    Birth Bir;            //日期类
    char Date[20];        //出生日期
    char ID[20];        //身份证
    static int Sum;        //总人数
};

Man::Man()
{
    Num=Sum++;    //新输入员工编号为当前最大编号+1
}

Man::Man(Man &m)
{
    Num=m.Num;
    Name=m.Name;
    Sex=m.Sex;
    ID=m.ID;
}


int Man::GetNum()
{return Num;}

void Man::SetName(char *name)
{strcpy(Name,name);}

char* Man::GetName()
{return Name;}

void Man::SetSex(char *sex)
{strcpy(Sex,sex);}

char* Man::GetSex()
{return Sex;}

void Man::SetID(char *id)
{strcpy(ID,id);}

char* Man::GetID()
{return ID;}

void Man::SetBir(int y,int m,int d)
{Bir(y,m,d);}

char* Man::GetBir()
{
    strcat(Date,(char *)Bir.GetYear());
    strcat(Date,"-");
    strcat(Date,(char *)Bir.GetMonth());
    strcat(Date,"-");
    strcat(Date,(char *)Bir.GetDay());
    return Date;
}

//////////////////////主程序////////////////////////

int main()
{

    int n,year,month,day;
    char name[20],sex[10],id[20];
    Man stuff[100];
    
    cout<<"员工信息录入:"<<endl;
    cout<<"请输入需录入人数:"<<endl;
    cin>>n;

    for(int i=1;i<=n;i++)
    {
        cout<<"输入员工姓名:";
        cin>>name;
        stuff[i].SetName(name);
        cout<<"输入员工性别:";
        cin>>sex;
        stuff[i].SetSex(sex);
        cout<<"输入员工出生日期:";
        cin>>year>>month>>day;
        stuff[i].SetBir(year,month,day);
        cout<<"输入员工身份证号:";
        cin>>id;
        stuff[i].SetID(id);
    }
    
    cout<<"员工信息输出:"<<endl;
    for(i=1;i<=n;i++)
    {
        cout<<"员工编号:"<<stuff[i].GetNum<<endl;
        cout<<"员工姓名:"<<stuff[i].GetName<<endl;
        cout<<"员工性别:"<<stuff[i].GetSex<<endl;
        cout<<"员工出生日期:"<<stuff[i].GetBir<<endl;
        cout<<"员工身份证号:"<<stuff[i].GetID<<endl;
    }
    
return 0;
}[/code]

问题好像很多的,本人新手,求修改,求指教

回复列表 (共1个回复)

沙发

自己改好了.....

/*4-10. 设计一个用于人事管理的"人员"类。由于考虑到通用性,这里只抽象出所有类型人员都具有
的属性:姓名、编号、性别、出生日期、身份证号等。其中"出生日期"声明为一个"日期"类内嵌子对象。
用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联
成员函数、带默认形参值的成员函数、类的组合。*/

#include <iostream>
#include <cstring>
using namespace std;

//////////////////////////日期类//////////////////////////////
class Birth
{
public:
    Birth(){Year=Month=Day=0;}
    Birth(int yy,int mm,int dd){Year=yy;Month=mm;Day=dd;}   //构造函数
    ~Birth(){};                                                //析构函数
    Birth(Birth &b);                                        //拷贝构造函数
    void SetYear(int yy){Year=yy;}
    void SetMonth(int mm){Month=mm;}
    void SetDay(int dd){Day=dd;}
    int GetYear(){return Year;}
    int GetMonth(){return Month;}
    int GetDay(){return Day;}
    
private:
    int Year,Month,Day;
};

Birth::Birth(Birth &b)                //拷贝构造函数
{
    Year=b.Year;
    Month=b.Month;
    Day=b.Day;
}

/////////////////////////人员类///////////////////////////
class Man
{
public:
    Man();                //构造函数
    Man(Birth newbirthday);
    ~Man(){};            //析构函数
    Man(Man &m);        //拷贝构造函数
    int GetNum();        //提取编号函数
    void SetName(char *name);            //设置姓名函数
    void SetSex(char *sex);                //设置性别函数
    void SetBir(int y,int m,int d);        //设置出生日期函数
    void SetID(char *id);                //设置身份证函数
    char* GetName();        //提取姓名函数
    char* GetSex();            //提取性别函数
    char* GetID();            //提取身份证函数
    char* GetBir();            //提取出生日期函数
    
private:
    int Num;        //编号
    char Name[20];        //姓名
    char Sex[10];        //性别
    Birth Bir;            //日期类
    char Date[20];        //出生日期
    char ID[20];        //身份证
    static int Sum;        //总人数
};

int Man::Sum = 0;

Man::Man()
{
    Num=Sum++;    //新输入员工编号为当前最大编号+1
}

Man::Man(Man &m)
{
    Num=m.Num;
    strcpy(Name, m.Name);    
    strcpy(Sex, m.Sex);        
    strcpy(ID, m.ID);        
}

int Man::GetNum()
{
    return Num;
}

void Man::SetName(char *name)
{
    strcpy(Name,name);
}

char* Man::GetName()
{
    return Name;
}

void Man::SetSex(char *sex)
{
    strcpy(Sex,sex);
}

char* Man::GetSex()
{
    return Sex;
}

void Man::SetID(char *id)
{
    strcpy(ID,id);
}

char* Man::GetID()
{
    return ID;
}

void Man::SetBir(int y,int m,int d)
{
    Bir.SetYear(y);           
    Bir.SetMonth(m);           
    Bir.SetDay(d);              
}

char* Man::GetBir()
{
    sprintf(Date, "%d-%d-%d", Bir.GetYear(), Bir.GetMonth(), Bir.GetDay());          
    return Date;
}

//////////////////////主程序////////////////////////

int main()
{
    
    int n,year,month,day;
    char name[20],sex[10],id[20];
    Man stuff[100];
    
    cout<<"员工信息录入:"<<endl;
    cout<<"请输入需录入人数:"<<endl;
    cin>>n;
    
    for(int i=1;i<=n;i++)
    {
        cout<<"输入员工姓名:";
        cin>>name;
        stuff[i].SetName(name);
        cout<<"输入员工性别:";
        cin>>sex;
        stuff[i].SetSex(sex);
        cout<<"输入员工出生日期(年 月 日):";
        cin>>year>>month>>day;
        stuff[i].SetBir(year,month,day);
        cout<<"输入员工身份证号:";
        cin>>id;
        stuff[i].SetID(id);
    }
    
    cout<<"员工信息输出:"<<endl;
    for(i=1;i<=n;i++)
    {
        cout<<"员工编号:"<<stuff[i].GetNum()<<endl;            
        cout<<"员工姓名:"<<stuff[i].GetName()<<endl;          
        cout<<"员工性别:"<<stuff[i].GetSex()<<endl;            
        cout<<"员工出生日期:"<<stuff[i].GetBir()<<endl;          
        cout<<"员工身份证号:"<<stuff[i].GetID()<<endl;          
    }
    
    return 0;
}

我来回复

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