C++实现简单职工信息管理系统

yizhihongxing

C++实现简单职工信息管理系统攻略

1. 需求分析

简单职工信息管理系统需要实现以下功能:

  • 添加职工信息
  • 显示职工信息
  • 删除职工信息
  • 修改职工信息
  • 查找职工信息
  • 排序
  • 清空职工信息
  • 退出系统

2. 设计思路

2.1 类的设计

我们可以设计一个职工类,用于存储职工的信息,包括编号、姓名、部门编号、职位信息等。同时,我们还可以设计一个管理类,用于管理所有的职工信息,实现添加、删除、修改、查询等功能。

具体的,职工类的设计如下:

class Worker {
public:
    int m_Id; // 编号
    string m_Name; // 姓名
    int m_DeptId; // 部门编号
    virtual void showInfo() = 0; // 显示个人信息
    virtual string getDeptName() = 0;  // 获取岗位名称
};

管理类的设计如下:

class WorkerManager {
public:
    vector<Worker*> vWorker; // 容器保存职工信息
    void addWorker(); // 添加职工
    void showWorkerInfo(); // 显示职工信息
    void deleteWorker(); // 删除职工
    void modifyWorker(); // 修改职工信息
    void findWorker(); // 查找职工信息
    void sortWorker(); // 排序职工信息
    void cleanWorker(); // 清空所有职工信息
    void exitSystem(); // 退出管理系统
};

2.2 功能的实现

添加职工信息:

void WorkerManager::addWorker() {
    ...
}

显示职工信息:

void WorkerManager::showWorkerInfo() {
    ...
}

删除职工信息:

void WorkerManager::deleteWorker() {
    ...
}

修改职工信息:

void WorkerManager::modifyWorker() {
    ...
}

查找职工信息:

void WorkerManager::findWorker() {
    ...
}

排序职工信息:

void WorkerManager::sortWorker() {
    ...
}

清空职工信息:

void WorkerManager::cleanWorker() {
    ...
}

退出系统:

void WorkerManager::exitSystem() {
    ...
}

3. 代码实现

详细的代码实现请见附件中的代码文件。以下是添加职工信息和显示职工信息两个功能的示例说明。

示例1:添加职工信息

在实现添加职工信息功能时,我们首先需要定义一个输入职工信息的函数。

void add(EmployeeType etype) {
    int id = m_EmpManager.getMaxId() + 1;
    string name;
    int deptId = 0;
    string etypeInfo;
    if (etype == NormalEmp) {
        etypeInfo = "普通职工";
        deptId = 1;
    } else if (etype == ManagerEmp) {
        etypeInfo = "经理";
        deptId = 2;
    } else {
        etypeInfo = "老板";
        deptId = 3;
    }

    // 输入姓名
    cout << "请输入姓名:" << endl;
    cin >> name;

    // 创建职工对象
    Worker* worker = NULL;
    if (etype == NormalEmp) {
        worker = new Employee(id, name, deptId);
    } else if (etype == ManagerEmp) {
        worker = new Manager(id, name, deptId);
    } else {
        worker = new Boss(id, name, deptId);
    }

    // 添加职工到容器
    m_EmpManager.addWorker(worker);

    // 提示添加成功
    cout << etypeInfo << " 添加成功!" << endl;
}

其中,m_EmpManager是管理类的一个对象,用于管理所有的职工信息。职工对象的创建使用了工厂模式。

在主函数中,我们可以使用以下代码来实现添加职工信息的功能:

case 1: // 添加职工
{
    int selectAddType = 0;
    cout << "请输入职工类型:" << endl;
    cout << "1. 普通职工" << endl;
    cout << "2. 经理" << endl;
    cout << "3. 老板" << endl;

    cin >> selectAddType;

    add((EmployeeType)selectAddType);
    system("pause");
    system("cls");
    break;
}

示例2:显示职工信息

在实现显示所有职工信息的功能时,我们可以使用以下代码:

void WorkerManager::showWorkerInfo() {
    // 判断信息容器中是否有信息
    if (this->vWorker.size() == 0) {
        cout << "当前记录为空!" << endl;
        system("pause");
        system("cls");
        return;
    }
    for (vector<Worker*>::iterator it = this->vWorker.begin(); it != this->vWorker.end(); it++) {
        (*it)->showInfo();
    }
    system("pause");
    system("cls");
    return;
}

在主函数中,我们可以使用以下代码来实现显示所有职工信息的功能:

case 2: // 显示职工
{
    manger.showWorkerInfo();
    break;
}

4. 总结

通过以上的设计和实现,我们可以实现一个简单的职工信息管理系统,可以方便地管理职工的信息,并且提供了添加、删除、修改、查询等各种功能,非常实用。同时,这个简单的管理系统也给我们演示了如何使用面向对象的思想进行程序设计,这对于我们提高程序设计的水平很有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现简单职工信息管理系统 - Python技术站

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

相关文章

  • thinkphp3.2同时连接两个数据库的简单方法

    想要在ThinkPHP 3.2中同时连接两个数据库,可以按照以下步骤进行: 1. 配置数据库连接参数 在ThinkPHP中,数据库连接参数是在./Application/Common/Conf/config.php文件中进行配置的。我们需要在这个文件中,将两个数据库的连接参数都进行配置。 以下是一个示例配置文件中同时连接两个MySQL数据库的配置代码: re…

    C 2023年5月23日
    00
  • 超级好用的轻量级JSON处理命令jq(最新推荐)

    让我来详细讲解一下“超级好用的轻量级JSON处理命令jq(最新推荐)”的完整攻略。 什么是jq jq是一款用于处理JSON文本的命令行工具。它是由Stephen Dolan开发的,可以帮助我们轻松地从JSON文本中提取特定部分的数据、修改JSON文本以及格式化输出等。 安装jq 在使用jq之前,首先需要安装它。jq的安装非常简单,只需要使用系统包管理器进行安…

    C 2023年5月23日
    00
  • JS中循环遍历数组的四种方式总结

    JS中循环遍历数组的四种方式总结 在JavaScript编程中,遍历数组是一个非常常见的操作。在本文中,我将介绍四种JS中循环遍历数组的方式,它们分别是: for循环 forEach()方法 map()方法 for…in循环 1. for循环 for循环是最基本也是最常用的JS中遍历数组的方法。它的语法如下: for(let i = 0; i < …

    C 2023年5月22日
    00
  • C++直接cout指针名的含义?

    当我们在C++中使用std::cout输出一个指针变量时,可以直接输出这个指针变量的名称,如下所示: int* p = new int(10); std::cout << p << std::endl; 这时输出直接的结果会是这个指针变量的地址值,而不是指针所指向的值或者其他内容。这样输出指针的地址值在某些情况下是有用的,比如如果想要…

    C 2023年5月30日
    00
  • Win8系统检测更新时出现8024401C提示的解决方法

    当Win8系统检测更新时出现8024401C提示时,可能由于以下原因导致: 未正确配置Internet Explorer(IE)代理设置。 安全防火墙或第三方杀毒软件阻止了系统更新。 Windows Update缓存已损坏。 以下是针对这三种可能原因的解决方案: 配置IE代理设置 步骤1:首先按下Win+R键,运行“Internet选项”。 步骤2:在“In…

    C 2023年5月23日
    00
  • C语言如何使用函数求素数和举例

    此处我将为您详细讲解关于C语言如何使用函数求素数的完整攻略。整个流程大致分为以下几步: 步骤一:编写函数判断素数 首先,我们需要编写一个函数来判断一个数是否是素数。可以将这个函数定义为:bool isPrime(int n),其中n是待判断的整数,返回值为布尔类型,表示n是否是素数。这个函数的实现过程如下: bool isPrime(int n) { if …

    C 2023年5月23日
    00
  • C 标准库 stdlib.h

    首先,stdlib.h 是C语言标准库中的一个头文件,提供了一组函数来执行与内存分配、进程控制、字符串转换、类型转换等有关的一般实用程序。下面是几个常用的函数: 1. malloc() 在堆上分配指定字节大小的内存。返回指向分配内存的指针。如果分配失败,返回NULL。 函数原型: void *malloc(size_t size); 示例: #include…

    C 2023年5月10日
    00
  • 解析Node.js异常处理中domain模块的使用方法

    解析Node.js异常处理中domain模块的使用方法 在Node.js中,异常处理是一个非常重要的话题,因为错误的产生是运行环境的本质。Node.js提供了一系列的异常处理工具来帮助我们处理错误,其中就包括domain模块。 什么是domain模块 domain模块是Node.js用于处理异步代码中错误的模块。它允许我们将多个异步操作绑定到一个错误处理上下…

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