Person

设计一个学校在册人员类(Person)。数据成员包括:身份证号(IdPerson),姓名(Name), 性别(Sex),生日(Birthday)和家庭住址(HomeAddress)。成员函数包括人员信息的录入 和显示。还包括构造函数与拷贝构造函数。设计一个合适的初始值。 解:本题为指出构造函数等的调用,加了一些提示语句。

#include<iostream>
#include<cstring>

using namespace std;
enum Tsex{mid,man,woman};

class Person
{
	char IdPerson[19];	//身份证号,18位数字
	char Name[20];	//姓名
	Tsex Sex;	//性别
	int Birthday;	//生日,格式1986年8月18日写作19860818 
	char HomeAddress[50];	//家庭地址
public:
	Person(char *,char *,Tsex,int,char *); Person(Person &);
	Person();
	~Person();
	void PrintPersonInfo();
	void inputPerson();
	//其他接口函数
};

Person::Person(char *id,char *name,Tsex sex,int birthday,char *homeadd)
{
	cout<<"构造Person"<<endl; 
	strcpy(IdPerson,id); 
	strcpy(Name,name); 
	Sex=sex;
	Birthday=birthday;
	strcpy(HomeAddress,homeadd);
}

Person::Person()
{
	cout<<"缺省构造Person"<<endl;
	IdPerson[0]='\0';
	Name[0]='\0';
	Sex=mid; 
	Birthday=0;
	HomeAddress[0]='\0';
}

Person::Person(Person & Ps)
{
	cout<<"拷贝构造Person"<<endl; 
	strcpy(IdPerson,Ps.IdPerson); 
	strcpy(Name,Ps.Name); 
	Sex=Ps.Sex; 
	Birthday=Ps.Birthday;
	strcpy(HomeAddress,Ps.HomeAddress);
} 
Person::~Person()
{
	cout<<"析构Person"<<endl;
}

void Person::inputPerson()
{ 
	char ch; 
	cout<<"请输入身份证号,18位数字:"<<endl; cin.getline(IdPerson,19); 
	cout<<"请输入姓名:"<<endl; cin.getline(Name,20); 
	cout<<"请输入性别m或w:"<<endl;
	cin>>ch;
	if(ch=='m') Sex=man; 
	else Sex=woman; 
	cout<<"请输入生日,格式1986年8月18日写作19860818:"<<endl; cin>>Birthday;
	cin.get();	//吸收回车符,否则地址输不进去 
	cout<<"请输入地址:"<<endl; cin.getline(HomeAddress,50);
}

void Person::PrintPersonInfo()
{ 
	int i; 
	cout<<"身份证号:"<<IdPerson<<'\n'<<"姓名:"<<Name<<'\n'<<"性别:"; 
	if(Sex==man)cout<<"男"<<'\n';
	else if(Sex==woman)cout<<"女"<<'\n';
	else cout<<" "<<'\n'; 
	cout<<"出生年月日:"; 
	i=Birthday; 
	cout<<i/10000<<"年"; 
	i=i%10000;
	cout<<i/100<<"月"<<i%100<<"日"<<'\n'<<"家庭住址:"<<HomeAddress<<'\n';
}


int main()
{
	Person	Ps1("320102811226161","朱海鹏",man,19811226,"南京市黄浦路1号"), Ps2(Ps1),Ps3;
	Ps1.PrintPersonInfo();
	Ps2.PrintPersonInfo();
	Ps3.inputPerson();
	Ps3.PrintPersonInfo(); 
	return 0;
}

运行结果!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值