基于C++泛型编程职工管理系统

基于C++泛型编程的职工管理系统需要实现以下功能:

  1. 实现职工的基本信息,包括职工号、姓名、性别、部门等信息的录入、修改、删除和展示功能。
  2. 实现职工的信息的按职工号、姓名、性别、部门等关键字进行查询的功能。
  3. 实现职工信息的读取和保存功能,以便于程序下次运行时可以直接读取上次信息。
  4. 实现按职工号、姓名、性别、部门等关键字进行职工的自然排序的功能。

下面是对应的实现过程:

设计职工类

需要设计一个职工类,记录职工的相关信息。

class Worker
{
public:
    int m_Id;     // 职工号
    string m_Name;    // 姓名
    int m_Sex;    // 性别:0表示女,1表示男
    int m_DeptId;    // 部门编号

    void showInfo();   // 显示个人信息
    void showMenu();   // 显示菜单
};

设计员工数组类

员工数组类用于操作职工信息。在类中使用泛型来实现不同类型数据的数组操作。为了实现动态扩容,需要通过模板定义数组容量。

template <class T>
class WorkerArray
{
public:
    WorkerArray(int capacity); // 构造函数
    ~WorkerArray();            // 析构函数

    void add(T val);       // 添加数据
    void remove(T val);    // 删除数据
    void edit(T val);      // 修改数据
    void sort();           // 自然排序
    void print();          // 显示数据

    int m_CurLength;    // 当前长度
    int m_Capacity;     // 总容量
    T *p_DataArr;       // 指向数据的指针
};

完成职工管理系统

在main函数中调用WorkerArray类来实现完整的职工管理系统。

int main()
{
    WorkerArray<Worker> arr(100);
    int select = 0;
    while (true)
    {
        arr.showMenu();

        cin >> select;
        switch (select)
        {
        case 1:     // 添加职工
            …
            break;
        case 2:     // 删除职工
            …
            break;
        case 3:     // 修改职工信息
            …
            break;
        case 4:     // 显示职工信息
            …
            break;
        case 5:     // 搜索职工信息
            …
            break;
        case 6:     // 读取文件
            …
            break;
        case 7:     // 保存文件
            …
            break;
        case 8:     // 自然排序
            …
            break;
        case 0:     // 退出系统
            return 0;
            break;
        default:
            system("cls");
            break;
        }
    }
    return 0;
}

以下是两条在职工管理系统中的示例说明:

示例1:添加职工

在职工管理系统中选择1,进入添加职工操作。输入职工信息后,调用了WorkerArray类中的add函数,把职工信息添加到职工数组中。

case 1:     // 添加职工
    {
        cout << "请输入职工个数:" << endl;
        int num = 0;
        cin >> num;
        if (num > 0)
        {
            for (int i = 0; i < num; i++)
            {
                int id;
                string name;
                int sex = 0;
                int did = 0;

                system("cls");
                cout << "请输入第 " << i + 1 << " 个职工的信息:" << endl;
                cout << "请输入职工号:" << endl;
                cin >> id;
                cout << "请输入姓名:" << endl;
                cin >> name;
                cout << "请输入性别(0/1):" << endl;
                cin >> sex;
                cout << "请输入岗位:" << endl;
                cin >> did;

                Worker worker;
                worker.m_Id = id;
                worker.m_Name = name;
                worker.m_Sex = sex;
                worker.m_DeptId = did;

                arr.add(worker);
            }
        }
        system("cls");
        break;
    }

示例2:按职工号查询职工信息

在职工管理系统中选择5,进入查询职工信息操作。在查询职工信息操作中,输入职工号后,调用了WorkerArray类中的print函数,从职工数组中查找职工信息并展示。

case 5:     // 搜索职工信息
    {
        cout << "请输入搜索方式:" << endl;
        cout << "1 -- 按职工号搜索" << endl;
        cout << "2 -- 按姓名搜索" << endl;
        cout << "3 -- 按性别搜索" << endl;
        int select = 0;
        cin >> select;
        if (select == SEARCH_BY_ID)
        {
            int id;
            cout << "请输入职工号:" << endl;
            cin >> id;
            int index = arr.getIndexById(id);

            if (index == -1)
            {
                cout << "查无此人!" << endl;
            }
            else
            {
                arr.p_DataArr[index].showInfo();
            }
        }
        system("cls");
        break;
    }

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于C++泛型编程职工管理系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C++键盘记录程序代码

    C++键盘记录程序代码攻略 简介 键盘记录程序可以记录用户在键盘上输入的所有内容,包括敲击的键和输入的文字。在开发键盘记录程序时,我们需要了解底层的键盘输入原理和如何获取键盘输入事件。在本文中,我们将演示如何使用C++语言编写一个简单的键盘记录程序。 实现步骤 步骤1:打开键盘输入设备 在Windows操作系统中,键盘输入设备通常被称为“HID(Human …

    C 2023年5月23日
    00
  • VSCode launch.json配置详细教程

    首先,我们需要了解什么是VSCode的launch.json文件。launch.json是配置VSCode调试器的文件,在这个文件中,我们可以设置如何运行我们的代码、哪些文件需要调试、以及如何传递命令行参数等等。 接下来,让我们通过以下步骤创建一个新的launch.json文件: 在VSCode中打开你的项目文件夹。 打开调试器工具栏。(快捷键F5) 在工具…

    C 2023年5月23日
    00
  • Java日常练习题,每天进步一点点(47)

    首先对于题目“Java日常练习题,每天进步一点点(47)”,实际上这是一道Java语言练习题目的系列。根据具体的题目内容,需要我们运用Java语言的各种知识和技能进行解答。 这道题目的具体细节我不清楚,但我可以提供一些通用的解题思路和攻略: 仔细阅读题目要求,理解题目要求并思考解题思路; 如果不确定自己的思路是否正确,可以手动进行编写或者借助IDE进行运行调…

    C 2023年5月23日
    00
  • 谈谈C++学习之Pair的使用方法

    下面是关于C++学习之Pair的使用方法的完整攻略。 什么是Pair C++中的Pair是一种特殊的容器,用于将两个数据项组合成一对,具有类似于key-value的键值对结构,分别被称为first和second,可以用于较为简便的存储和访问数据。 使用方法 在使用Pair前需要引入头文件#include <utility>。 定义一个Pair 通…

    C 2023年5月22日
    00
  • 微软Surface Laptop 4怎么样 微软Surface Laptop 4详细评测

    微软Surface Laptop 4怎么样 微软Surface Laptop 4详细评测 微软Surface Laptop 4于2021年4月13日发布,作为Surface Laptop系列的第四代产品,定位在轻薄便携的高性能笔记本市场。下面我们详细评测一下这款产品。 设计与外观 微软Surface Laptop 4有两种尺寸可选,分别是13.5英寸和15英…

    C 2023年5月23日
    00
  • 关于 Python json中load和loads区别

    关于 Python json中load和loads区别 在Python中使用Json模块解析Json时,经常会用到json.load()和json.loads(),这两个方法都可以将Json格式的字符串转化为Python能够识别的对象,但是它们却有一定的区别。 1. json.load() json.load()方法可以从一个文件对象中读取数据,并将其解析为…

    C 2023年5月23日
    00
  • 小米4c怎么样?小米4c搭载骁龙808和Type-C

    当谈到小米4c时,我们需要关注它的配置和性能。小米4c主打设计良好且价格亲民的特点,它的主要优势在于骁龙808处理器和Type-C接口。 小米4c搭载骁龙808处理器 小米4c搭载了骁龙808处理器,它是高通推出的一款六核心处理器,其中两个大核心时钟频率高达1.8GHz,剩下的四个小核心时钟频率为1.4GHz。 骁龙808处理器采用了Adreno 418 G…

    C 2023年5月23日
    00
  • Win10预览版19042升级后浏览器网页异常内容显示不全怎么办?

    对于Win10预览版19042升级后浏览器网页异常内容显示不全的情况,可能是因为升级过程中出现了一些问题导致系统出现了一些错误,或者是因为浏览器插件以及设置的问题所导致的。以下是处理该问题的完整攻略。 步骤一:更新浏览器插件 第一步需要检查浏览器是否有最新版本的插件可用,如果有,则需要更新插件以解决可能出现的兼容性问题。比如,用户在使用谷歌浏览器时,可以按照…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部