C++ 人员管理系统:设计 People 类实现人员信息录入和显示

本示例展示了如何使用 C++ 语言设计一个名为 People 的类,用于管理人员信息,包括编号、性别、出生日期和身份证号。示例包含类成员函数、构造函数、析构函数、拷贝构造函数、内联函数、类组合和友元函数等内容。

1. 设计 Date 类

首先,设计一个名为 Date 的类来表示日期,它包含年、月、日三个私有成员变量,并提供三个公有成员函数获取年、月、日的值。

class Date {
private:
    int year;
    int month;
    int day;
public:
    Date(int y = 0, int m = 0, int d = 0) : year(y), month(m), day(d) {}
    inline int getYear() const { return year; }
    inline int getMonth() const { return month; }
    inline int getDay() const { return day; }
};

2. 设计 People 类

接下来,设计一个名为 People 的类,包含编号、性别、出生日期和身份证号四个成员变量。其中,出生日期使用 Date 类对象作为成员变量,表示类的组合。

class People {
private:
    int number;
    char sex;
    Date birthday;
    char* id;
public:
    // 构造函数
    People(int n = 0, char s = ' ', const Date& b = Date(), const char* i = "") : number(n), sex(s), birthday(b), id(new char[strlen(i) + 1]) {
        strcpy(id, i);
    }
    // 析构函数
    ~People() { delete[] id; }
    // 拷贝构造函数
    People(const People& p) : number(p.number), sex(p.sex), birthday(p.birthday), id(new char[strlen(p.id) + 1]) {
        strcpy(id, p.id);
    }
    // 获取编号
    inline int getNumber() const { return number; }
    // 获取性别
    inline char getSex() const { return sex; }
    // 获取出生日期
    inline const Date& getBirthday() const { return birthday; }
    // 获取身份证号
    inline const char* getId() const { return id; }
    // 显示人员信息
    void display() const {
        cout << '编号:' << number << endl;
        cout << '性别:' << sex << endl;
        cout << '出生日期:' << birthday.getYear() << '年' << birthday.getMonth() << '月' << birthday.getDay() << '日' << endl;
        cout << '身份证号:' << id << endl;
    }
    // 重载 << 运算符,实现对人员信息的输出
    friend ostream& operator<<(ostream& os, const People& p) {
        os << '编号:' << p.number << endl;
        os << '性别:' << p.sex << endl;
        os << '出生日期:' << p.birthday.getYear() << '年' << p.birthday.getMonth() << '月' << p.birthday.getDay() << '日' << endl;
        os << '身份证号:' << p.id << endl;
        return os;
    }
};

3. 代码解释

  • Date 类:

    • 使用内联函数 getYear()getMonth()getDay() 获取年、月、日的值。
  • People 类:

    • 使用构造函数初始化成员变量,并使用 new 操作符动态分配内存存储身份证号字符串。
    • 使用析构函数释放动态分配的内存。
    • 使用拷贝构造函数实现对象深拷贝,避免浅拷贝带来的错误。
    • 使用内联函数 getNumber()getSex()getBirthday()getId() 获取成员变量的值。
    • 使用 display() 函数输出人员信息。
    • 重载 << 运算符,实现对人员信息的输出,使其能够像普通数据类型一样使用 cout 输出。

4. 代码使用示例

int main() {
    // 创建 Date 对象,表示出生日期
    Date birth(1990, 1, 1);
    // 创建 People 对象,初始化人员信息
    People p(1, '男', birth, "123456789012345678");
    // 使用 << 运算符输出人员信息
    cout << p << endl;
    // 使用 display() 函数输出人员信息
    p.display();
    return 0;
}

5. 总结

本示例展示了如何使用 C++ 语言设计一个名为 People 的类,用于管理人员信息,并包含了常见的类成员函数、构造函数、析构函数、拷贝构造函数、内联函数、类组合和友元函数等内容。通过学习本示例,你可以更好地理解 C++ 类和对象的创建和使用。

C++ 人员管理系统:设计 People 类实现人员信息录入和显示

原文地址: https://www.cveoy.top/t/topic/nizX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录