C++利用多态实现职工管理系统(项目开发)攻略
介绍
在本项目中,我们将使用C++多态机制来实现一个职工管理系统。对于不同类型的职工,我们将采用不同的数据结构进行存储。并且我们将使用纯虚函数和虚函数来实现基类和派生类之间的协作和交互,使得职工管理系统具有良好的扩展性和可维护性。
开发步骤
确定项目需求和功能
在开发项目之前,我们需要确定项目的需求和功能,这可以帮助我们有更加明确的目标和规划。在职工管理系统中,我们需要实现如下的功能:
- 添加职工
- 显示职工信息
- 删除职工
- 修改职工信息
- 查找职工
- 排序职工
- 清空所有文档
设计职工类的结构体
在本项目中,我们需要对职工进行分类,包括经理、普通员工和老板等。因此,我们需需要使用面向对象的思想,设计出不同的职工类,并且让它们都从一个基类继承而来。这样,我们就可以使用多态来实现职工管理系统。
下面是基类的职工类结构体:
class Worker
{
public:
int m_Id; //id
string m_Name; //姓名
int m_DeptId; //部门编号
//显示个人信息
virtual void showInfo() = 0;
//获取岗位名称
virtual string getDeptName() = 0;
};
我们可以看到,基类中有m_Id、m_Name和m_DeptId属性,分别表示职工的编号、姓名和所在部门的编号。函数showInfo和getDeptName是纯虚函数,应当由派生类去实现。
设计派生类
在Worker基类中,我们定义了两个纯虚函数,分别是showInfo和getDeptName。这两个函数都应当由派生类去实现,因为不同的职工具有不同的信息展示和岗位名称。
下面是经理类的实现:
class Manager : public Worker
{
public:
Manager(int id, string name, int dId);
// 显示个人信息
virtual void showInfo();
// 获取岗位名称
virtual string getDeptName();
};
我们可以看到,经理类从Worker基类继承而来,实现了showInfo和getDeptName函数。为了让经理类有自己的特点,我们可以添加一些自己的属性。
实现职工管理类
职工管理类用于实现所有职工的管理,包括添加、删除、修改和查找职工等功能,这些功能都在职工管理类中实现。另外,我们还需要使用容器来保存和管理所有的职工对象,比如使用vector容器。
class WorkerManager
{
public:
// 构造函数
WorkerManager();
// 显示菜单
void showMenu();
// 退出菜单
void exitSystem();
// 添加职工
void addEmp();
// 显示职工
void showEmp();
// 删除职工
void delEmp();
// 修改职工
void modEmp();
// 查找职工
void findEmp();
// 排序职工
void sortEmp();
// 删除所有文档
void cleanFile();
// 总人数
int getEmpNum();
// 析构函数
~WorkerManager();
};
示例1:添加职工
在职工管理系统中,添加职工是一个非常常见的操作。在这个操作中,我们需要输入职工的基本信息,比如姓名、编号、部门等。然后,通过判断职工的类型来创建不同的职工对象,比如Manager、Employee和Boss等。
void WorkerManager::addEmp()
{
cout << "请输入添加职工的数量:" << endl;
int addNum = 0;
cin >> addNum
if (addNum > 0)
{
int length = this->m_EmpArray.size();
for (int i = 0; i < addNum; i++)
{
int id;
string name;
int dSelect;
cout << "请输入第" << i + 1 << "个新职工的编号:" << endl;
cin >> id;
cout << "请输入第" << i + 1 << "个新职工的姓名:" << endl;
cin >> name;
cout << "请输入第" << i + 1 << "个新职工的岗位:" << endl;
cout << "1. 普通员工" << endl;
cout << "2. 经理" << endl;
cout << "3. 老板" << endl;
cin >> dSelect;
Worker* worker = NULL;
switch (dSelect)
{
case 1:
worker = new Employee(id, name, dSelect);
break;
case 2:
worker = new Manager(id, name, dSelect);
break;
case 3:
worker = new Boss(id, name, dSelect);
break;
default:
break;
}
this->m_EmpArray.push_back(worker);
}
cout << "成功添加了" << addNum << "名新职工" << endl;
this->m_FileIsEmpty = false;
}
else
{
cout << "输入数据有误,请输入正确的数据!" << endl;
}
}
示例2:删除职工
在职工管理系统中,删除职工是另外一个重要的操作。在这个操作中,我们需要输入职工的编号,然后通过判断编号找到要删除的职工对象,最后将其从容器中删除即可。
void WorkerManager::delEmp()
{
if (this->m_FileIsEmpty) {
cout << "文件不存在或者记录为空!" << endl;
return;
}
else {
int id;
cout << "请输入想要删除的职工编号:" << endl;
cin >> id;
vector<Worker *> ::iterator it = this->m_EmpArray.begin();
bool isExist = false;
while (it != m_EmpArray.end())
{
//找到编号相等的职工
if ( (*it)->m_Id == id )
{
cout << "找到职工,信息如下:" << endl;
cout << "职工编号:" << (*it)->m_Id
<< ",职工姓名:" << (*it)->m_Name
<< ",职工职位:" << (*it)->getDeptName()
<< ",职工岗位:" << (*it)->m_DeptId << endl;
cout << "确认是否删除该职工?" << endl;
cout << "1、确认" << endl;
cout << "2、取消" << endl;
int select = 0;
cin >> select;
if (select == 1)
{
//找到之后执行删除操作
//释放内存里面职工对象 并且删除
delete (*it);
this->m_EmpArray.erase(it);
cout << "删除成功!" << endl;
this->save();
}
isExist = true;
break;
}
it++;
}
if (!isExist)
{
cout << "未找到该职工信息!" << endl;
}
}
}
总结
以上是C++利用多态实现职工管理系统(项目开发)的攻略,其中讲述了实现职工类的结构体、设计派生类和实现职工管理类等内容。职工管理系统是一个比较典型的多态应用场景,借助于多态,我们可以方便地对不同类型的职工进行管理和操作,大大提高了代码的可维护性和复用率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++利用多态实现职工管理系统(项目开发) - Python技术站