ssy/c++上机2.cpp
2024-08-05 23:12:46 +08:00

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;
}