构造一个学校在册人员类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)
{
strcpy(IdPerson, id);
strcpy(Name, name);
Sex = sex;
Birthday = birthday;
strcpy(HomeAddress, homeadd);
}
Person::Person()
{
IdPerson[0] = '\0';
Name[0] = '\0';
Sex = mid;
Birthday = 0;
HomeAddress[0] = '\0';
}
Person::Person(Person &Ps)
{
strcpy(IdPerson, Ps.IdPerson);
strcpy(Name, Ps.Name);
Sex = Ps.Sex;
Birthday = Ps.Birthday;
strcpy(HomeAddress, Ps.HomeAddress);
}
Person::~Person()
{
}
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 ps;
ps.inputPerson();
ps.PrintPersonInfo();
return 0;
}
typedef struct
{
char id[65];
char name[25];
char sex;
char day[25];
char address[250]
} Person;
结构体可参考如上