设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等。其中"出生日期"定义为一个"日期"类内嵌子对象。用成员函数实现对人员信息的录入和显示。(类中需包括:构造函数、析构函数、拷贝构造函数、内联成员函数、带缺省形参值的成员函数等。)
时间: 2023-12-15 12:07:11 浏览: 75
设计一个人类person,包括人员编号和姓名等数据成员以及相关的成员函数
下面是一个简单的人事管理的People类的实现,实现了对人员信息的录入和显示:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Date {
public:
Date(int year = 1900, int month = 1, int day = 1) : year_(year), month_(month), day_(day) {}
friend ostream& operator<<(ostream& os, const Date& date) {
os << date.year_ << "-" << date.month_ << "-" << date.day_;
return os;
}
private:
int year_;
int month_;
int day_;
};
class People {
public:
People(int number = 0, char sex = 'M', const Date& birthday = Date(), const string& id = "") :
number_(number), sex_(sex), birthday_(birthday), id_(id) {}
People(const People& p) : number_(p.number_), sex_(p.sex_), birthday_(p.birthday_), id_(p.id_) {}
~People() {}
inline void setNumber(int number) { number_ = number; }
inline int getNumber() const { return number_; }
inline void setSex(char sex) { sex_ = sex; }
inline char getSex() const { return sex_; }
inline void setBirthday(const Date& birthday) { birthday_ = birthday; }
inline Date getBirthday() const { return birthday_; }
inline void setId(const string& id) { id_ = id; }
inline string getId() const { return id_; }
void input();
void output() const;
private:
int number_;
char sex_;
Date birthday_;
string id_;
};
void People::input() {
cout << "请输入人员编号:";
cin >> number_;
cout << "请输入人员性别(M/F):";
cin >> sex_;
cout << "请输入出生日期(YYYY-MM-DD):";
int year, month, day;
char dash;
cin >> year >> dash >> month >> dash >> day;
birthday_ = Date(year, month, day);
cout << "请输入身份证号:";
cin >> id_;
}
void People::output() const {
cout << "编号:" << number_ << endl;
cout << "性别:" << sex_ << endl;
cout << "出生日期:" << birthday_ << endl;
cout << "身份证号:" << id_ << endl;
}
int main() {
People p1;
p1.input();
p1.output();
return 0;
}
```
在上面的实现中,我们定义了一个`Date`类作为`People`类的一个内嵌子对象,用于表示出生日期。`People`类定义了五个私有成员变量:`number_`、`sex_`、`birthday_`和`id_`,分别表示人员编号、性别、出生日期和身份证号。类中定义了构造函数、析构函数和拷贝构造函数,以及一些用于设置和获取私有成员变量的成员函数。`input()`函数用于从标准输入流中读取人员信息,`output()`函数用于将人员信息输出到标准输出流中。在`main()`函数中,我们创建了一个`People`对象并调用`input()`和`output()`函数来录入和显示人员信息。
阅读全文