128 lines
3.5 KiB
C++
128 lines
3.5 KiB
C++
|
#include <iostream>
|
||
|
#include <cstring>
|
||
|
#include <vector>
|
||
|
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
|
||
|
<CEmployee> employees;
|
||
|
vector<CManager> 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;
|
||
|
}
|