关于组合类

kcs07 2011-11-19 05:54:33

/*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; //总人数
};

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;
}



问题好像很多,本人新手,求修改,求指教
...全文
100 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
kcs07 2011-11-19
  • 打赏
  • 举报
回复
懂了,谢谢
测试NULL 2011-11-19
  • 打赏
  • 举报
回复
改好了,你对照注释看看


/*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;
}

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧