#include #include #include using namespace std; class CEmployee { private: char *m_pName; // 姓名 int m_nAge; // 年龄 float m_fSalary; // 薪水 public: // 构造函数和析构函数 CEmployee(char *pName = NULL, int age = 0, float salary = 0.0) : m_nAge(age), m_fSalary(salary) { if (pName != NULL) { m_pName = new char[strlen(pName) + 1]; strcpy(m_pName, pName); } else { m_pName = NULL; } } CEmployee(const CEmployee &emp) { m_pName = new char[strlen(emp.m_pName) + 1]; strcpy(m_pName, emp.m_pName); m_nAge = emp.m_nAge; m_fSalary = emp.m_fSalary; } ~CEmployee() { if (m_pName != NULL) { delete[] m_pName; } } // 其它成员函数 void SetName(char *name) { if (m_pName != NULL) { delete[] m_pName; } m_pName = new char[strlen(name) + 1]; strcpy(m_pName, name); } char *GetName() { return m_pName; } void SetAge(int age) { m_nAge = age; } int GetAge() { return m_nAge; } void SetSalary(float salary) { m_fSalary = salary; } float GetSalary() { return m_fSalary; } void Print() { cout << "姓名:" << m_pName << ",年龄:" << m_nAge << ",薪水:" << m_fSalary << endl; } }; class CManager : public CEmployee { private: int m_nLevel; // 级别 public: // 构造函数和析构函数 CManager(char *pName = NULL, int age = 0, float salary = 0.0, int nLevel = 0) : CEmployee(pName, age, salary), m_nLevel(nLevel) {} CManager(const CEmployee &emp, int level) : CEmployee(emp), m_nLevel(level) {} ~CManager() {} // 其它成员函数 void SetLevel(int level) { m_nLevel = level; } int GetLevel() { return m_nLevel; } void Print() { CEmployee::Print(); cout << "级别:" << m_nLevel << endl; } }; int main() { vector employees; vector managers; char name[50]; int age; float salary; int level; int numEmployees; // 输入雇员数量 cout << "请输入雇员数量:"; cin >> numEmployees; cin.ignore(); // 忽略输入缓冲区中的换行符 // 输入雇员信息 for (int i = 0; i < numEmployees; ++i) { cout << "请输入雇员姓名:"; cin.getline(name, 50); cout << "请输入雇员年龄:"; cin >> age; cout << "请输入雇员薪水:"; cin >> salary; cin.ignore(); // 忽略输入缓冲区中的换行符 // 创建雇员对象 CEmployee emp(name, age, salary); employees.push_back(emp); } // 输入管理者信息 cout << "请输入经理姓名:"; cin.getline(name, 50); cout << "请输入经理年龄:"; cin >> age; cout << "请输入经理薪水:"; cin >> salary; cout << "请输入经理级别:"; cin >> level; cin.ignore(); // 忽略输入缓冲区中的换行符 // 创建经理对象 CManager manager(name, age, salary, level); managers.push_back(manager); // 输出所有雇员信息 cout << "雇员信息:" << endl; for (int i = 0; i < employees.size(); ++i) { employees[i].Print(); } // 输出所有经理信息 cout << "经理信息:" << endl; for (int i = 0; i < managers.size(); ++i) { managers[i].Print(); } return 0; }