2.设计一个学校在册人员类(Person)。数据成员包括:身份证号(idc),姓名(name),性别(sex),生日(birth)和家庭地址(addr),数据类型根据需要自行设定。函数成员包括:人员信息的录入和显示,还包括构造函数与拷贝构造函数,其他成员函数也可自行添加。编写测试代码:
1)定义包含十个对象的数组,依次录入十个学生,
2)然后打印所有男生的信息。
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
class Person
{
string idc;
string name;
char sex;
string birth;
string addr;
public:
Person();
Person(Person &C);
void Input();
void PrintPerson();
char Getsex(){ return sex; }//查询性别
};
Person::Person()//构造函数
{
idc = "未输入身份证号";
name = "未输入姓名";
sex = '0';
birth = "未输入生日";
addr = "未输入地址";
}
void Person::Input() //录入
{
cout << "请输入身份证号:";
getline(cin, idc);
cout << "请输入姓名:";
getline(cin, name);
cout << "请输入性别(男:m 女:f):";
cin >> sex;
getchar();
cout << "请输入生日:";
getline(cin, birth);
cout << "请输入家庭住址:";
getline(cin, addr);
cout << "-------——————录入完毕——————————"<<endl<<endl;
}
Person::Person(Person &C) //拷贝函数
{
idc = C.idc;
name = C.name;
sex = C.sex;
birth = C.birth;
addr = C.addr;
}
void Person::PrintPerson() //打印
{
cout<< "身份证号:"<<idc<<endl;
cout << "姓名:"<<name<<endl;
cout << "性别(男:m 女:f):"<<sex<<endl;
cout << "生日:"<<birth<<endl;
cout << "家庭住址:"<<addr<<endl;
cout << "-------——————输出完毕——————————" << endl << endl;
}
int main()
{
Person Class1[10];
int i;
for (i = 0; i < 10; i++) //1、依次录入十个学生
{
Class1[i].Input();
}
//Class1[2] = Class1[0];
cout << "-------——————输出所有男生信息——————————" << endl;
for (i = 0; i < 10; i++) //2、输出所有男生
{
if (Class1[i].Getsex() == 'm')
{
Class1[i].PrintPerson();
}
}
system("PAUSE");
return 0;
}
测试数据:
110102201900001111
YUXI
f
2019.00.01
Beijing
110102199900002222
Zhang san
m
1999.00.02
xiamen
110102199900003333
Li si
m
1999.00.03
Xiamen
110102199900004444
Wang wu
m
1999.00.04
xiamen
110102199900005555
Shen liu
f
1999.00.05
xiamen
110102199900006666
Xiao qi
m
1999.00.06
Xiamen
110102199900007777
Xiao ba
f
1999.00.07
xiamen
110102199900008888
Xiao jiu
m
1999.00.08
xiamen
110102199900009999
Xiao xiao
m
1999.00.09
xiamen
110102199900001010
Wu ming
f
1999.00.10
xiamen