用c++设计一个用于人事管理的 People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等。其中"出生日期"定义为一个"日期"类内嵌子对象。用成员函数实现对人员信息的录入和显示。 要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、带缺省形参值的成员函数。
时间: 2023-12-16 10:06:21 浏览: 85
下面是一个可能的实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
// 日期类
class Date {
public:
Date(int y = 1970, int m = 1, int d = 1) : year(y), month(m), day(d) {}
void display() const {
cout << year << "-" << month << "-" << day;
}
private:
int year;
int month;
int day;
};
// 人员类
class People {
public:
// 默认构造函数
People() : number(""), sex(""), id(""), birthday(Date()) {}
// 带参数的构造函数
People(string num, string s, string i, Date b) : number(num), sex(s), id(i), birthday(b) {}
// 拷贝构造函数
People(const People& p) : number(p.number), sex(p.sex), id(p.id), birthday(p.birthday) {}
// 析构函数
~People() {}
// 获取编号
inline string getNumber() const { return number; }
// 设置编号
void setNumber(const string& num) { number = num; }
// 获取性别
inline string getSex() const { return sex; }
// 设置性别
void setSex(const string& s) { sex = s; }
// 获取身份证号
inline string getId() const { return id; }
// 设置身份证号
void setId(const string& i) { id = i; }
// 获取出生日期
inline Date getBirthday() const { return birthday; }
// 设置出生日期
void setBirthday(const Date& b) { birthday = b; }
// 显示人员信息
void display() const {
cout << "编号:" << number << endl;
cout << "性别:" << sex << endl;
cout << "身份证号:" << id << endl;
cout << "出生日期:";
birthday.display();
cout << endl;
}
private:
string number; // 编号
string sex; // 性别
string id; // 身份证号
Date birthday; // 出生日期
};
int main() {
// 创建一个人员对象
People p("001", "男", "11010119800101001X", Date(1980, 1, 1));
// 显示人员信息
p.display();
return 0;
}
```
这个实现中,我们定义了一个`Date`类来表示日期,然后在`People`类中嵌入了一个`Date`对象作为出生日期。`People`类中包含构造函数、析构函数、拷贝构造函数,以及一些用于获取和设置人员信息的成员函数。其中`display()`函数用于显示人员信息。在`main()`函数中,我们创建了一个人员对象,并显示其信息。
阅读全文