1、管理系统需求
完整代码地址在最后。
职工管理系统可以用来管理公司内所有员工的信息。
公司中职工分为三类:
- 普通员工
- 经理
- 老板
显示信息时,需要显示职工编号、职工姓名、职工岗位、职责。
- 普通员工职责:完成经理交给的任务
- 经理职责:完成老板交给的任务并下发任务给员工
- 老板职责:管理公司所有事务
管理系统中需要实现的功能如下:
- 退出管理程序:退出当前管理系统
- 增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、部门编号
- 显示职工信息:显示公司内部所有职工的信息
- 删除离职职工:按照编号删除指定的职工
- 修改职工信息:按照编号修改职工个人信息
- 查找职工信息:按照编号或姓名查找职工个人信息
- 按照编号排序:按照职工编号,进行排序,排序规则由用户指定
- 清空所有文档:清空文件中记录的所有职工信息(清空前需要再次确认,防止误删)
2、创建项目
选择【空项目】
,点击下一步
输入项目名称,点击【创建】
添加新建项,并命名为职工管理系统
3、创建管理类
管理类负责的内容如下:
- 与用户的沟通菜单界面
- 与职工增删改查的操作
- 与文件的读写操作
3.1 创建文件
在头文件和源文件的文件夹下分别创建workerManager.h
和workerManager.cpp
文件
3.2 头文件的实现
#pragma once // 防止头文件重复包含
#include<iostream> // 包含输入输出流头文件
using namespace std; // 使用标准命名空间
class WorkerManager
{
public:
// 构造函数
WorkerManager();
// 析构函数
~WorkerManager();
};
3.3 WorkerManager.cpp实现
#include "workerManager.h"
WorkerManager::WorkerManager()
{
}
WorkerManager::~WorkerManager()
{
}
4、菜单功能
功能描述:与用户沟通的界面。
4.1 添加成员函数
在workerManager.h
头文件中,定义成员函数showMenu()
函数
#pragma once // 防止头文件重复包含
#include<iostream> // 包含输入输出流头文件
using namespace std; // 使用标准命名空间
class WorkerManager
{
public:
// 构造函数
WorkerManager();
// 展示菜单函数
void showMenu();
// 析构函数
~WorkerManager();
};
接着在workerManager.cpp
中实现showMenu()
函数
#include "workerManager.h"
WorkerManager::WorkerManager()
{
}
void WorkerManager::showMenu()
{
cout << " 欢迎使用职工管理系统 " << endl;
cout << "*************************************" << endl;
cout << "***** 【0】、推出管理系统 *****" << endl;
cout << "***** 【1】、增加职工信息 *****" << endl;
cout << "***** 【2】、显示职工信息 *****" << endl;
cout << "***** 【3】、删除离职职工 *****" << endl;
cout << "***** 【4】、修改职工信息 *****" << endl;
cout << "***** 【5】、查找职工信息 *****" << endl;
cout << "***** 【6】、按照编号排序 *****" << endl;
cout << "***** 【7】、清空所有文档 *****" << endl;
cout << "*************************************" << endl;
cout << endl;
}
WorkerManager::~WorkerManager()
{
}
最后,在职工管理系统.app
中,调用showMenu()
函数,可视化菜单
#include<iostream>
#include "workerManager.h"
using namespace std;
int main()
{
// 实例化管理者对象
WorkerManager wm;
wm.showMenu();
return 0;
}
运行结果如下图:
5、退出功能
5.1 退出功能接口
在main
函数中,提供分支选择,提供每个功能接口
代码实现:
#include<iostream>
#include "workerManager.h"
using namespace std;
int main()
{
// 实例化管理者对象
WorkerManager wm;
// 定义用户选择变量
int choice = 0;
while (true)
{
wm.showMenu();
cout << "——>请输入您的选择:" << endl;
// 接收用户的功能选择
cin >> choice;
switch (choice)
{
case 0: // 退出系统
wm.ExitSystem();
break;
case 1: // 增加职工
break;
case 2: // 显示职工
break;
case 3: // 删除职工
break;
case 4: // 修改职工
break;
case 5: // 查找职工
break;
case 6: // 排序职工
break;
case 7: // 清空所有文档
break;
default:
system("cls");
break;
}
}
return 0;
}
接着在workerManager.h
头文件中,声明退出系统函数ExitSystem()
// 退出系统
void ExitSystem();
5.2 实现退出功能
在workerManager.cpp
中,实现退出系统函数
void WorkerManager::ExitSystem()
{
cout << "【欢迎下次使用】" << endl << endl;
system("pause");
exit(0);
}
5.3 测试退出功能
在职工管理系统.cpp
中调用退出系统函数,测试退出功能
case 0: // 退出系统
wm.ExitSystem();
break;
6、创建职工类
6.1 创建职工抽象类
职工的分类:普通员工、经理、老板
将三种职工抽象到一个类worker
中,利用多态管理不同职工种类
职工的属性:编号、姓名、部门编号
职工的行为:岗位职责信息描述,获取岗位名称
在头文件文件夹下,创建文件
worker.h
,并且添加以下代码
#pragma once
#include<iostream>
#include<string>
using namespace std;
//职工抽象类
class Worker
{
public:
// 职工编号
int m_Id;
// 职工姓名
string m_Name;
// 部门编号
int m_DeptId;
// 显示个人信息。抽象类中不做任何实现
virtual void showInfo() = 0;
// 获取岗位名称
virtual string getDeptName() = 0;
};
6.2 创建普通员工类
在头文件夹和源文件夹下创建
empolyee.h
和employee.cpp
文件
employee.h
中代码如下:
#pragma once
#include <iostream>
using namespace std;
#include "worker.h"
// 普通员工类
class Employee :public Worker
{
public:
// 构造函数
Employee(int id, string name, int deptId);
// 重写
virtual void showInfo();
// 重写
virtual string getDeptName();
};
employee.cpp
代码如下:
#include "employee.h"
// 构造函数
Employee::Employee(int id, string name, int deptId)
{
this->m_Id = id;
this->m_Name = name;
this->m_DeptId = deptId;