用C++的类写职工管理系统
时间: 2023-09-28 11:14:03 浏览: 39
以下是一个使用 C++ 类实现职工管理系统的例子:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Staff {
public:
virtual void display() = 0;
virtual int get_level() = 0;
};
class Technician : public Staff {
public:
Technician(int id, string name, int level) : _id(id), _name(name), _level(level) {}
void display() {
cout << "ID: " << _id << " Name: " << _name << " Level: " << _level << endl;
}
int get_level() {
return _level;
}
private:
int _id;
string _name;
int _level;
};
class Manager : public Staff {
public:
Manager(int id, string name, int level) : _id(id), _name(name), _level(level) {}
void display() {
cout << "ID: " << _id << " Name: " << _name << " Level: " << _level << endl;
}
int get_level() {
return _level;
}
private:
int _id;
string _name;
int _level;
};
class StaffManager {
public:
void add_staff(Staff* staff) {
_staffs.push_back(staff);
}
void display_all() {
for (auto p : _staffs) {
p->display();
}
}
void sort_by_level() {
sort(_staffs.begin(), _staffs.end(), [](Staff* a, Staff* b) -> bool {
return a->get_level() < b->get_level();
});
}
private:
vector<Staff*> _staffs;
};
int main() {
StaffManager manager;
Technician* t1 = new Technician(1, "Jack", 3);
Technician* t2 = new Technician(2, "Tom", 2);
Manager* m1 = new Manager(3, "Lucy", 1);
manager.add_staff(t1);
manager.add_staff(t2);
manager.add_staff(m1);
manager.display_all();
manager.sort_by_level();
manager.display_all();
return 0;
}
```
这个例子中,定义了一个 `Staff` 虚基类,其中包含了两个纯虚函数 `display()` 和 `get_level()`。然后定义了两个派生类 `Technician` 和 `Manager`,它们都继承了 `Staff` 类,并实现了 `display()` 和 `get_level()` 函数。
接着定义了 `StaffManager` 类,用于管理职工。这个类中包含了一个 `_staffs` 私有成员变量,用于存储所有的职工。它包含了三个公有函数:
- `add_staff()`:用于向 `_staffs` 中添加职工。
- `display_all()`:用于显示所有职工的信息。
- `sort_by_level()`:用于按照职工等级对职工进行排序。
最后在 `main()` 函数中,定义了 `Technician` 和 `Manager` 类型的变量,并将它们添加到 `StaffManager` 中,然后分别调用 `display_all()` 和 `sort_by_level()` 函数,来显示和排序职工信息。