华科万维C++章节练习7_2

【程序设计】
---------------------------------------------------------

题目:

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

样例:

身份证号:320102811226161
姓名:朱海鹏
性别:男
出生年月日:1981年12月26日
家庭住址:南京市黄浦路1号
身份证号:320102811226161
姓名:朱海鹏
性别:男
出生年月日:1981年12月26日
家庭住址:南京市黄浦路1号
请输入身份证号,18位数字:
420111199401011234
请输入姓名:
张山
请输入性别m或w:
m
请输入生日,格式1986年8月18日写作19860818:
19940101
请输入地址:
武汉华中科技大学
身份证号:420111199401011234
姓名:张山
性别:男
出生年月日:1994年1月1日
家庭住址:武汉华中科技大学
请按任意键继续. . . 

代码如下:

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

class Person{
        char IdPerson[19];                        //身份证号,18位数字
        char Name[20];                                //姓名
        char Sex;                                //性别
        int Birthday;                                //生日,格式1986年8月18日写作19860818
        char HomeAddress[50];                //家庭地址
public:
        Person(char a[19],char b[20],char c,int d,char e[50]);
        Person(Person &);
        Person();
        ~Person();
       void PrintPersonInfo(); //输出人员信息
        void inputPerson();  //输入人员信息
       
};

/**********Program**********/
Person::Person()
{
	char Id[19]={0},Na[20]={0},Ho[50]={0};
	Sex=0;
	Birthday=0;
	strcpy(IdPerson,Id);
	strcpy(Name,Na);
	strcpy(HomeAddress,Ho);
}
//默认构造函数,用于构造对象(对象初始化)
Person::Person(char a[19],char b[20],char c,int d,char e[50])
   {
	   strcpy(IdPerson,a);
	   strcpy(Name,b);
	   Sex=c;
	   Birthday=d;
	   strcpy(HomeAddress,e);
   }
//构造函数,用于构造对象(对象初始化)
Person::Person(Person &p)
{
	strcpy(IdPerson,p.IdPerson);
	   strcpy(Name,p.Name);
	   Sex=p.Sex;
	   Birthday=p.Birthday;
	   strcpy(HomeAddress,p.HomeAddress);
}
//复制构造函数,用于构造对象(对象初始化)
Person::~Person(){}
//析构函数,执行完对象后delete自动调用析构函数后,释放内存
/**********  End  **********/
void Person::inputPerson(){
        
        cout<<"请输入身份证号,18位数字:"<<endl;
        cin.getline(IdPerson,19);
        cout<<"请输入姓名:"<<endl;
        cin.getline(Name,20);
        cout<<"请输入性别m或w:"<<endl;
        cin>>Sex;
        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=='m' ||Sex=='M')cout<<"男"<<'\n';
        else if(Sex=='w' ||Sex=='M')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","朱海鹏",'m',19811226,"南京市黄浦路1号"),
Ps2(Ps1),Ps3;
        Ps1.PrintPersonInfo();
        Ps2.PrintPersonInfo();
        Ps3.inputPerson();
        Ps3.PrintPersonInfo();
        return 0;
}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

季风13

谢谢认可

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值