C++案例二:职工管理系统

1、管理系统需求

完整代码地址在最后。

职工管理系统可以用来管理公司内所有员工的信息。

公司中职工分为三类:

  • 普通员工
  • 经理
  • 老板

显示信息时,需要显示职工编号、职工姓名、职工岗位、职责。

  1. 普通员工职责:完成经理交给的任务
  2. 经理职责:完成老板交给的任务并下发任务给员工
  3. 老板职责:管理公司所有事务

管理系统中需要实现的功能如下:

  • 退出管理程序:退出当前管理系统
  • 增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、部门编号
  • 显示职工信息:显示公司内部所有职工的信息
  • 删除离职职工:按照编号删除指定的职工
  • 修改职工信息:按照编号修改职工个人信息
  • 查找职工信息:按照编号或姓名查找职工个人信息
  • 按照编号排序:按照职工编号,进行排序,排序规则由用户指定
  • 清空所有文档:清空文件中记录的所有职工信息(清空前需要再次确认,防止误删)

2、创建项目

选择【空项目】,点击下一步

在这里插入图片描述

输入项目名称,点击【创建】

在这里插入图片描述

添加新建项,并命名为职工管理系统

在这里插入图片描述

3、创建管理类

管理类负责的内容如下:

  • 与用户的沟通菜单界面
  • 与职工增删改查的操作
  • 与文件的读写操作

3.1 创建文件

在头文件和源文件的文件夹下分别创建workerManager.hworkerManager.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.hemployee.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;

相关推荐

  1. C++图书管理案例

    2024-06-12 12:56:01       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-12 12:56:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-12 12:56:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-12 12:56:01       82 阅读
  4. Python语言-面向对象

    2024-06-12 12:56:01       91 阅读

热门阅读

  1. 在 Jupyter 编辑函数(Edit function in Jupyter)

    2024-06-12 12:56:01       32 阅读
  2. python API自动化(接口自动化简单封装与Logging应用)

    2024-06-12 12:56:01       26 阅读
  3. 《计算机组成原理》期末复习题节选

    2024-06-12 12:56:01       31 阅读
  4. C# range

    2024-06-12 12:56:01       32 阅读
  5. git使用http协议时免密pull和push方法

    2024-06-12 12:56:01       27 阅读
  6. nginx的rewrite功能介绍

    2024-06-12 12:56:01       31 阅读
  7. Elasticsearch6.7版本,内网中其他电脑无法连接

    2024-06-12 12:56:01       24 阅读
  8. Elasticsearch分析器与分词器:定制文本处理流程

    2024-06-12 12:56:01       30 阅读
  9. Web前端网页设计笔试:深入剖析与技巧攻略

    2024-06-12 12:56:01       31 阅读
  10. 匿名函数、lambda匿名函数 ( Everything is up to us!)

    2024-06-12 12:56:01       28 阅读