简单的学校人员名册管理

题目大概是这样的:编辑一个人员管理类并对其测试

人员信息有姓名 ,生日,ID,家庭住址,性别

成员函数有构造函数,复制构造函数,输入输出;

主函数对所有成员函数进行测试。

但是在编译的时候遇到了一些小细节上的错误下面总结一下经验:

staff有个数据是生日date.birth,这个如果需要把他定义成struct结构体作为类的成员的话,结构体的对象是没有参数列表的,所以在构造函数初始化的时候就不能用初始化列表来初始化结构体的数据,应该在大括号里逐个的赋值。如果把它写成类作为类的成员,date类有对数据的初始化的构造函数就可以在staff的构造函数中用初始化列表来初始化date.

完整代码如下:

#include<iostream>
#include<cstring>
using namespace std;
struct Date
{int year;
int month;
int day;
//Date(int year1=0,int month1=0,int day1=0):year(year1),month(month1),day(day1){}
};
class staff
{
	Date birth;
	char name[20];
	char id[20];
	char sex[10];
	char homeadd[30];
public:
staff(int y,int m,int d,char*pname,char*i,char *s,char*h)//:birth(y,m,d)
{
	birth.year=y;birth.month=m;birth.day=d;
	strcpy(name,pname);
	strcpy(id,i);
	strcpy(sex,s);
	strcpy(homeadd,h);
}
	staff(const staff&s)
	{
    strcpy(name,s.name);
	strcpy(id,s.id);
	strcpy(sex,s.sex);
	strcpy(homeadd,s.homeadd);
	}
	void input();
	void output();
};

void staff::input()
{	char pname[20],i[20],s[10],h[30];
    int y,m,d;
	cout<<"please input the name: ";cin>>pname;
	cout<<"please input the id; ";cin>>i;
	cout<<"the sex is; ";cin>>s;
	cout<<"the homeadd is :";cin>>h;
	strcpy(name,pname);
	strcpy(id,i);
	strcpy(sex,s);
	strcpy(homeadd,h);
	cout<<"the birthday of year,month and day:";
	cin>>y>>m>>d;
	birth.year=y;birth.month=m;birth.day=d;
}
void staff::output()
{
	cout<<"name:"<<name<<"\tid: "<<id<<"\tsex: "<<sex<<"\tbirth: "<<birth.year<<"-"<<birth.month<<"-"<<birth.day;
	cout<<"\thomeadd:"<<homeadd<<endl;
}
int main()
{

	staff s(1998,11,24,"sun","123","w","jinan");
	staff s2(s);
	s2.input();
	s2.output();
	return 0;
}//Date(int year1=0,int month1=0,int day1=0):year(year1),month(month1),day(day1){}
};
class staff
{
	Date birth;
	char name[20];
	char id[20];
	char sex[10];
	char homeadd[30];
public:
staff(int y,int m,int d,char*pname,char*i,char *s,char*h)//:birth(y,m,d)
{
	birth.year=y;birth.month=m;birth.day=d;
	strcpy(name,pname);
	strcpy(id,i);
	strcpy(sex,s);
	strcpy(homeadd,h);
}
	staff(const staff&s)
	{
    strcpy(name,s.name);
	strcpy(id,s.id);
	strcpy(sex,s.sex);
	strcpy(homeadd,s.homeadd);
	}
	void input();
	void output();
};

void staff::input()
{	char pname[20],i[20],s[10],h[30];
    int y,m,d;
	cout<<"please input the name: ";cin>>pname;
	cout<<"please input the id; ";cin>>i;
	cout<<"the sex is; ";cin>>s;
	cout<<"the homeadd is :";cin>>h;
	strcpy(name,pname);
	strcpy(id,i);
	strcpy(sex,s);
	strcpy(homeadd,h);
	cout<<"the birthday of year,month and day:";
	cin>>y>>m>>d;
	birth.year=y;birth.month=m;birth.day=d;
}
void staff::output()
{
	cout<<"name:"<<name<<"\tid: "<<id<<"\tsex: "<<sex<<"\tbirth: "<<birth.year<<"-"<<birth.month<<"-"<<birth.day;
	cout<<"\thomeadd:"<<homeadd<<endl;
}
int main()
{

	staff s(1998,11,24,"sun","123","w","jinan");
	staff s2(s);
	s2.input();
	s2.output();
	return 0;
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值