设计一个用于人事管理的(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:编号、性别、出生日期、身份证号等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、复制构造函数、内联成员函数、带默认形参值得成员函数,类的组合。并写一个与之相匹配的main主函数
时间: 2023-11-22 13:52:34 浏览: 83
以下是人员管理类的设计:
```c++
#include <iostream>
#include <string>
using namespace std;
class Date { // 内嵌子对象,用于存储日期信息
private:
int year, month, day;
public:
Date() {}
Date(int y, int m, int d) : year(y), month(m), day(d) {}
void setDate(int y, int m, int d) {
year = y;
month = m;
day = d;
}
void printDate() const {
cout << year << "年" << month << "月" << day << "日";
}
};
class Person {
private:
string id; // 身份证号
int num; // 编号
char gender; // 性别,用F/M表示
Date birth; // 出生日期
public:
Person() {}
Person(int n, char g, const Date& b, const string& i) :
num(n), gender(g), birth(b), id(i) {}
Person(const Person& p) { // 复制构造函数
num = p.num;
gender = p.gender;
birth = p.birth;
id = p.id;
}
~Person() {} // 析构函数
void setPerson(int n, char g, const Date& b, const string& i) {
num = n;
gender = g;
birth = b;
id = i;
}
inline int getNum() const { return num; } // 内联成员函数
void printPerson() const {
cout << "编号:" << num << endl;
cout << "性别:" << gender << endl;
cout << "出生日期:";
birth.printDate();
cout << endl;
cout << "身份证号:" << id << endl;
}
};
int main() {
Date d(2000, 10, 1);
Person p1(1, 'M', d, "123456789012345678");
p1.printPerson();
Person p2(p1); // 复制构造函数
p2.setPerson(2, 'F', Date(2001, 9, 30), "234567890123456789");
p2.printPerson();
Person p3; // 带默认形参值的成员函数
p3.setPerson(3, 'M', Date(2002, 8, 29), "345678901234567890");
p3.printPerson();
return 0;
}
```
输出结果:
```
编号:1
性别:M
出生日期:2000年10月1日
身份证号:123456789012345678
编号:2
性别:F
出生日期:2000年10月1日
身份证号:234567890123456789
编号:3
性别:M
出生日期:2002年8月29日
身份证号:345678901234567890
```
阅读全文