主题:关于组合类
[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]
问题好像很多的,本人新手,求修改,求指教
/*设计一个用于人事管理的"人员"类。由于考虑到通用性,这里只抽象出所有类型人员都具有
的属性:姓名、编号、性别、出生日期、身份证号等。其中"出生日期"声明为一个"日期"类内嵌字对象。
用成员函数实现对人员信息的录入和显示。*/
#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]
问题好像很多的,本人新手,求修改,求指教