C&C++   发布时间:2022-04-13  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了职工管理系统(代码回顾1)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

该项目综合的知识点较多,包括内存管理,面向对象的三大特性封装、继承、多态都有涉及到,而且包括文件操作,现分别进行总结。

0、项目需求如下:

职工管理系统(代码回顾1)

1、主函数框架

 1 int main()
 2 {
 3     //实例化管理者对象
 4     WorkerManager wm;
 5     //用户选择
 6     int choice = 0;
 7     while (true)
 8     {
 9         wm.ShowMenu();
10         cout << "请输入您的选择: " << endl;
11         cin >> choice;
12         switch (choice)
13         {
14         case 0://退出系统
15             wm.ExitSystem();
16             break;
17         case 1://添加职工
18             wm.AddEmp();
19             break;
20         case 2://显示职工
21             wm.Show_Emp();
22             break;
23         case 3://删除职工
24             wm.Del_Emp();
25             break;
26         case 4://修改职工
27             wm.Mod_Emp();
28             break;
29         case 5://查找职工
30             wm.Find_Emp();
31             break;
32         case 6://排序职工
33             wm.Sort_Emp();
34             break;
35         case 7://清空文件
36             wm.Clean_File();
37             break;
38         default:
39             system("cls");//清屏
40             break;
41         }
42     }
43     system("pause");
44     return 0;
45 }

2、创建管理类

管理类负责的内容包括:与用户交互的菜单界面、对职工增删改查的操作、与文件读写交互

其中的各属性和行为在程序完成的过程中逐渐添加

#pragma once
#include <iostream>
#include "worker.h"
using namespace std;

class WorkerManager
{
public:
    //构造函数
    WorkerManager();

    //展示菜单
    void ShowMenu();

    //退出系统
    void ExitSystem();

    //记录职工人数
    int m_EmpNum;

    //职工数组指针
    Worker** m_EmpArray;

    //添加职工函数
    void AddEmp();

    //保存文件函数
    void Save();

    //标志文件是否为空
    bool FileIsEmpty;

    //文件非空,获取职工人数
    int get_EmpNum();

    //文件非空,初始化函数
    void init_Emp();

    //显示职工
    void Show_Emp();

    //删除职工
    void Del_Emp();

    //修改职工信息
    void Mod_Emp();

    //查找职工
    void Find_Emp();

    //检测职工是否存在,存在返回位置,不存在返回-1
    int IsExit(int id);

    //按照职工编号排序
    void Sort_Emp();

    //清空文件
    void Clean_File();

    //析构函数
    ~WorkerManager();

};

3、抽象职工基类和三种具体职工派生类

需求中具体的职工分为三类:普通职工、经理、老板,可以考虑创建一个抽象的职工类,里面包含着需要的属性和行为,成员函数均为纯虚函数,子类通过继承然后重写基类的虚函数,去创建相应的派生类。创建的抽象类如下:

 6 //设计worker抽象类
 7 class Worker
 8 {
 9 public:
10     //岗位信息描述
11     virtual void ShowInfo() = 0;
12     //获取岗位名称
13     virtual string GetDeptName() = 0;
14     int m_ID;
15     string m_Name;
16     int m_DeptID;
17 };

通过继承,创建普通职工类,经理类,老板类如下:

(文件只编译一次,包含父类的头文件,添加的成员函数包括自身的构造函数、重写父类的虚函数,在头文件中只做声明,去源文件中实现)

 7 class Employee : public Worker
 8 {
 9 public:
10     //构造函数
11     Employee(int id, string name, int deptid);
12     //岗位信息描述
13     virtual void ShowInfo();
14     //获取岗位名称
15     virtual string GetDeptName();
16 };
 7 class Manager : public Worker
 8 {
 9 public:
10     //构造函数
11     Manager(int id, string name, int deptid);
12     //岗位信息描述
13     virtual void ShowInfo();
14     //获取岗位名称
15     virtual string GetDeptName();
16 };
 7 class Boss : public Worker
 8 {
 9 public:
10     //构造函数
11     Boss(int id, string name, int deptid);
12     //岗位信息描述
13     virtual void ShowInfo();
14     //获取岗位名称
15     virtual string GetDeptName();
16 };

以普通职工为例,源文件为:

构造函数中初始化职工编号、姓名等属性,采用有参构造的方式,传入的职工编号、姓名等赋值给对象的属性

成员函数有展示岗位信息函数,以及获取岗位名称函数

 1 #include "employee.h"
 2 //构造函数
 3 Employee::Employee(int id, string name, int deptid)
 4 {
 5     this->m_ID = id;
 6     this->m_Name = name;
 7     this->m_DeptID = deptid;
 8 }
 9 //岗位信息描述
10 void Employee::ShowInfo()
11 {
12     cout << "职工编号: " << this->m_ID
13         << "\t职工姓名: " << this->m_Name
14         << "\t部门编号: " << this->GetDeptName()
15         << "\t职责是完成老板交代的任务" << endl;
16 }
17 //获取岗位名称
18 string Employee::GetDeptName()
19 {
20     return "职工";
21 }

 

大佬总结

以上是大佬教程为你收集整理的职工管理系统(代码回顾1)全部内容,希望文章能够帮你解决职工管理系统(代码回顾1)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: