通过一段时间的学习,大概把c++的知识过了一遍,现在跟着黑马的教程做一个职工管理系统。
虽然是一个老到掉渣的经典程序了,基本上人人都会写一遍哈哈哈哈哈哈哈哈哈哈,但是我还是要写出来,记录一下,如此菜鸡的自己。
我会在这里加上一些自己的见解,当然有一部分是教程里面本身的笔记
程序的目录如下,想要看哪一部分可以直接跳转观看
文章目录
1 明确 管理系统需求
职工管理系统可以用来管理公司内所有员工的信息
本教程主要利用C++来实现一个基于多态的职工管理系统
公司中的职工分为三类:普通员工、经理、老板、显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责。
普通员工职责:完成经理交给的任务
经理职责:完成老板交给的任务,并下发任务给员工
老板职责:管理公司所有事物
管理系统中需要实现的功能如下:
- 退出管理程序: 退出当前管理系统
- 增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工的信息为:职工编号、姓名、部门编号
- 显示职工信息:显示公司内部所有职工的信息
- 删除离职员工: 按照编号删除指定的职工
- 修改职工信息:按照编号修改职员个人信息
- 查找职工信息: 按照职工的编号或者职工的姓名进行查找相关的人员信息
- 按照编号排序:按照职工编号,进行排序,排序规则由用户指定
- 清空所有文档:清空文件中记录的所有职工信息(清空之前需要再次确认,防止误操作)
页面展示哈哈哈哈哈哈哈哈哈哈:
看到这里,我在想没有前端的世界看起来确实没有这么美好,不多说,接着
2 创建项目
创建项目步骤如下:
我使用的是clion2020
第一步
没什么值得说的,无脑newProject就完事了
第二步
这里可以给自己的项目命名,注意了,请尽量使用英文
请尽量使用英文!!
如果不使用英文的话,有可能会导致某些莫名其妙的报错和bug,总之就是所有的名称都尽量使用英文,我将这个项目名称使用驼峰命名法将其命名为StaffManagementSystem,无脑机翻就完事了
创建完成!
新文件后面再添加,当然如果你看main.cpp名字不顺眼,可以改改名字
3 创建管理类
管理类负责的内容如下:
- 与用户的沟通菜单界面
- 对职工增产改查的操作
- 与文件的读写交互操作
3.1 创建文件
在文件夹下创建头文件workerManager.h和源文件workerManager.cpp
操作如下图:
这个是头文件的页面,源文件也是一样的,就不演示了
3.2 头文件的实现
在workerManager.h中设计管理类
代码如下:
#pragma once
#include<iostream>
using namespace std;
class WorkerManager{
public:
//构造函数
WorkerManager();
//析构函数
~WorkerManager();
};
3.3 源文件的实现
在workerManager.cpp中,将代码补全
代码如下:
#include "workerManger.h"
WorkerManager::WorkerManager() {}
WorkerManager::~WorkerManager() {}
至此,管理类创建完毕
4 菜单功能实现
功能描述:与用户的沟通界面
4.1 添加成员函数
在管理类workerManger.h中添加成员函数 void show_Menu();
4.2 菜单功能实现
在源文件中实现Show_Menu()函数
void WorkerManager::Show_Menu() {
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;
}
4.3 测试菜单功能
在main函数中输入下列代码
运行页面略
注意:编码一定要保持一致,不然会乱码
5 退出功能
5.1 提供功能接口
在main 函数中提供分支选择,提供每个功能·的接口
代码:
#include <iostream> //标准输入输出流
#include "workerManger.h"
using namespace std;
int main() {
//实例化管理者对象
WorkerManager wm;
int choice = 0;
while(true) {
//调用展示成员函数
wm.Show_Menu();
cout<<"请输入您要选择的功能"<<endl;
cin>> choice;
switch(choice) {
case 0://退出
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;
}
}
system("pause");
return 0;
}
5.2 实现退出功能
在workerManager.h中提供退出系统的成员函数 void exitSystem();
在workerManager.cpp中提供具体的功能实现
void WorkerManager::exitSystem() {
cout<<"欢迎下次使用"<<endl;
system("pause");
exit(0);
}
5.3 测试功能
在main函数的分支0中,调用退出程序的接口
case 0://退出
wm.exitSystem();
break;
6 创建职工类
6.1 创建职工抽象类
职工分为三类:员工、经理、老板
将三种职工都抽象到一个类中(worker),利用多态管理不同的职工种类
职工的共有特性为: 职工编号、职工姓名、职工所在部门编号
职工的行为为:岗位职责信息描述,获取岗位名称
首先,我们先创建头文件worker.h,并添加下列的代码
#pragma once
#include<iostream>
#include<string>
using namespace std;
//职工抽象基类
class Worker
{
public:
//显示个人信息
virtual void showInfo() = 0;
//获取岗位名称
virtual string getDeptName() = 0;
int m_Id; //职工编号
string m_Name; //职工姓名
int m_DeptId; //职工所在部门名称编号
};
6.2 创建普通员工类
普通员工类继承职工抽象类,并重写父类中的纯虚函数
接下来,我们分别创建头文件employee.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 dId);
//显示个人信息
virtual void showInfo();
//获取职工岗位名称
virtual string getDeptName();
};
employee.cpp中代码如下:
#include "employee.h"
Employee::Employee(int id, string name, int dId)
{
this->m_Id = id;
this->m_Name = name;
this->m