设计一个用于人事管理的People(人员)类。考虑到通用性,只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)、ntotalnumber(人员总数)。其中“人员总数”用静态成员变量表示,并用一个静态成员函数输出总人数;“出生日期”声明为一个“日期类(calendar)”成员对象,作为People(人员)类的封闭类对象。用成员函数实现对人信息的录入和显示。要求包括:构造函数和析构函数、复制构造函数、内敛成员函数、静态成员函数。
时间: 2023-05-28 19:02:31 浏览: 138
class People {
private:
int number;
char sex;
string id;
static int ntotalnumber;
calendar birthday;
public:
People();
People(int n, char s, string i, calendar c);
People(const People& p);
~People();
int getNumber() const { return number; }
char getSex() const { return sex; }
string getId() const { return id; }
calendar getBirthday() const { return birthday; }
void setNumber(int n) { number = n; }
void setSex(char s) { sex = s; }
void setId(string i) { id = i; }
void setBirthday(calendar c) { birthday = c; }
static void outputTotalNumber();
void input();
void display() const;
};
int People::ntotalnumber = 0;
inline People::People() {
number = 0;
sex = 'M';
id = "";
ntotalnumber++;
}
inline People::People(int n, char s, string i, calendar c)
: number(n), sex(s), id(i), birthday(c) {
ntotalnumber++;
}
inline People::People(const People& p) {
number = p.number;
sex = p.sex;
id = p.id;
birthday = p.birthday;
ntotalnumber++;
}
inline People::~People() {
ntotalnumber--;
}
inline void People::outputTotalNumber() {
cout << "Total number of people: " << ntotalnumber << endl;
}
void People::input() {
cout << "Please enter information for a person:" << endl;
cout << "Number: ";
cin >> number;
cout << "Sex: ";
cin >> sex;
cout << "ID: ";
cin >> id;
cout << "Birthday: ";
birthday.input();
ntotalnumber++;
}
void People::display() const {
cout << "Number: " << number << endl;
cout << "Sex: " << sex << endl;
cout << "ID: " << id << endl;
cout << "Birthday: ";
birthday.output();
}
int main() {
calendar c(1995, 7, 1);
People p1, p2(1, 'F', "123456789012345678", c), p3(p2);
p1.input();
p1.display();
p2.display();
p3.display();
People::outputTotalNumber();
return 0;
}
阅读全文