基于C++如何实现职工管理系统

发布时间:2022-06-06 09:19:24 作者:zzz
来源:亿速云 阅读:157

基于C++如何实现职工管理系统

1. 引言

职工管理系统是一种常见的企业管理工具,用于管理员工的基本信息、薪资、考勤等数据。通过使用C++编程语言,我们可以实现一个简单而高效的职工管理系统。本文将详细介绍如何使用C++实现一个基本的职工管理系统,涵盖系统的设计、功能实现以及代码示例。

2. 系统设计

2.1 系统功能需求

一个基本的职工管理系统应具备以下功能:

  1. 添加职工信息:能够录入新职工的基本信息,如姓名、工号、部门、职位、薪资等。
  2. 删除职工信息:能够根据工号或其他唯一标识删除职工信息。
  3. 修改职工信息:能够根据工号或其他唯一标识修改职工信息。
  4. 查询职工信息:能够根据工号、姓名等条件查询职工信息。
  5. 显示所有职工信息:能够显示系统中所有职工的信息。
  6. 退出系统:能够安全退出系统。

2.2 数据结构设计

为了实现上述功能,我们需要设计一个合适的数据结构来存储职工信息。通常,我们可以使用结构体(struct)或类(class)来表示职工信息。

struct Employee {
    int id;          // 工号
    std::string name; // 姓名
    std::string department; // 部门
    std::string position;   // 职位
    double salary;          // 薪资
};

2.3 系统架构设计

系统的架构可以分为以下几个模块:

  1. 主菜单模块:提供用户交互界面,显示系统功能菜单。
  2. 职工信息管理模块:实现职工信息的添加、删除、修改、查询等功能。
  3. 数据存储模块:负责职工信息的存储与读取,可以使用文件或数据库。

3. 功能实现

3.1 主菜单模块

主菜单模块负责显示系统功能菜单,并根据用户的选择调用相应的功能模块。

void showMenu() {
    std::cout << "*****************************" << std::endl;
    std::cout << "* 欢迎使用职工管理系统 *" << std::endl;
    std::cout << "* 1. 添加职工信息 *" << std::endl;
    std::cout << "* 2. 删除职工信息 *" << std::endl;
    std::cout << "* 3. 修改职工信息 *" << std::endl;
    std::cout << "* 4. 查询职工信息 *" << std::endl;
    std::cout << "* 5. 显示所有职工信息 *" << std::endl;
    std::cout << "* 6. 退出系统 *" << std::endl;
    std::cout << "*****************************" << std::endl;
}

3.2 职工信息管理模块

3.2.1 添加职工信息

void addEmployee(std::vector<Employee>& employees) {
    Employee emp;
    std::cout << "请输入职工工号: ";
    std::cin >> emp.id;
    std::cout << "请输入职工姓名: ";
    std::cin >> emp.name;
    std::cout << "请输入职工部门: ";
    std::cin >> emp.department;
    std::cout << "请输入职工职位: ";
    std::cin >> emp.position;
    std::cout << "请输入职工薪资: ";
    std::cin >> emp.salary;

    employees.push_back(emp);
    std::cout << "职工信息添加成功!" << std::endl;
}

3.2.2 删除职工信息

void deleteEmployee(std::vector<Employee>& employees) {
    int id;
    std::cout << "请输入要删除的职工工号: ";
    std::cin >> id;

    auto it = std::find_if(employees.begin(), employees.end(), [id](const Employee& emp) {
        return emp.id == id;
    });

    if (it != employees.end()) {
        employees.erase(it);
        std::cout << "职工信息删除成功!" << std::endl;
    } else {
        std::cout << "未找到该职工信息!" << std::endl;
    }
}

3.2.3 修改职工信息

void modifyEmployee(std::vector<Employee>& employees) {
    int id;
    std::cout << "请输入要修改的职工工号: ";
    std::cin >> id;

    auto it = std::find_if(employees.begin(), employees.end(), [id](const Employee& emp) {
        return emp.id == id;
    });

    if (it != employees.end()) {
        std::cout << "请输入新的职工姓名: ";
        std::cin >> it->name;
        std::cout << "请输入新的职工部门: ";
        std::cin >> it->department;
        std::cout << "请输入新的职工职位: ";
        std::cin >> it->position;
        std::cout << "请输入新的职工薪资: ";
        std::cin >> it->salary;
        std::cout << "职工信息修改成功!" << std::endl;
    } else {
        std::cout << "未找到该职工信息!" << std::endl;
    }
}

3.2.4 查询职工信息

void queryEmployee(const std::vector<Employee>& employees) {
    int id;
    std::cout << "请输入要查询的职工工号: ";
    std::cin >> id;

    auto it = std::find_if(employees.begin(), employees.end(), [id](const Employee& emp) {
        return emp.id == id;
    });

    if (it != employees.end()) {
        std::cout << "职工信息如下:" << std::endl;
        std::cout << "工号: " << it->id << std::endl;
        std::cout << "姓名: " << it->name << std::endl;
        std::cout << "部门: " << it->department << std::endl;
        std::cout << "职位: " << it->position << std::endl;
        std::cout << "薪资: " << it->salary << std::endl;
    } else {
        std::cout << "未找到该职工信息!" << std::endl;
    }
}

3.2.5 显示所有职工信息

void showAllEmployees(const std::vector<Employee>& employees) {
    if (employees.empty()) {
        std::cout << "当前没有职工信息!" << std::endl;
        return;
    }

    for (const auto& emp : employees) {
        std::cout << "工号: " << emp.id << ", 姓名: " << emp.name 
                  << ", 部门: " << emp.department << ", 职位: " << emp.position 
                  << ", 薪资: " << emp.salary << std::endl;
    }
}

3.3 数据存储模块

为了简化系统,我们可以将职工信息存储在文件中。以下是一个简单的文件读写实现:

void saveToFile(const std::vector<Employee>& employees, const std::string& filename) {
    std::ofstream ofs(filename);
    if (!ofs) {
        std::cerr << "文件打开失败!" << std::endl;
        return;
    }

    for (const auto& emp : employees) {
        ofs << emp.id << " " << emp.name << " " << emp.department 
            << " " << emp.position << " " << emp.salary << std::endl;
    }

    ofs.close();
    std::cout << "职工信息已保存到文件!" << std::endl;
}

void loadFromFile(std::vector<Employee>& employees, const std::string& filename) {
    std::ifstream ifs(filename);
    if (!ifs) {
        std::cerr << "文件打开失败!" << std::endl;
        return;
    }

    Employee emp;
    while (ifs >> emp.id >> emp.name >> emp.department >> emp.position >> emp.salary) {
        employees.push_back(emp);
    }

    ifs.close();
    std::cout << "职工信息已从文件加载!" << std::endl;
}

4. 主程序实现

在主程序中,我们将上述模块整合在一起,实现一个完整的职工管理系统。

#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
#include <string>

struct Employee {
    int id;
    std::string name;
    std::string department;
    std::string position;
    double salary;
};

void showMenu() {
    std::cout << "*****************************" << std::endl;
    std::cout << "* 欢迎使用职工管理系统 *" << std::endl;
    std::cout << "* 1. 添加职工信息 *" << std::endl;
    std::cout << "* 2. 删除职工信息 *" << std::endl;
    std::cout << "* 3. 修改职工信息 *" << std::endl;
    std::cout << "* 4. 查询职工信息 *" << std::endl;
    std::cout << "* 5. 显示所有职工信息 *" << std::endl;
    std::cout << "* 6. 退出系统 *" << std::endl;
    std::cout << "*****************************" << std::endl;
}

void addEmployee(std::vector<Employee>& employees) {
    Employee emp;
    std::cout << "请输入职工工号: ";
    std::cin >> emp.id;
    std::cout << "请输入职工姓名: ";
    std::cin >> emp.name;
    std::cout << "请输入职工部门: ";
    std::cin >> emp.department;
    std::cout << "请输入职工职位: ";
    std::cin >> emp.position;
    std::cout << "请输入职工薪资: ";
    std::cin >> emp.salary;

    employees.push_back(emp);
    std::cout << "职工信息添加成功!" << std::endl;
}

void deleteEmployee(std::vector<Employee>& employees) {
    int id;
    std::cout << "请输入要删除的职工工号: ";
    std::cin >> id;

    auto it = std::find_if(employees.begin(), employees.end(), [id](const Employee& emp) {
        return emp.id == id;
    });

    if (it != employees.end()) {
        employees.erase(it);
        std::cout << "职工信息删除成功!" << std::endl;
    } else {
        std::cout << "未找到该职工信息!" << std::endl;
    }
}

void modifyEmployee(std::vector<Employee>& employees) {
    int id;
    std::cout << "请输入要修改的职工工号: ";
    std::cin >> id;

    auto it = std::find_if(employees.begin(), employees.end(), [id](const Employee& emp) {
        return emp.id == id;
    });

    if (it != employees.end()) {
        std::cout << "请输入新的职工姓名: ";
        std::cin >> it->name;
        std::cout << "请输入新的职工部门: ";
        std::cin >> it->department;
        std::cout << "请输入新的职工职位: ";
        std::cin >> it->position;
        std::cout << "请输入新的职工薪资: ";
        std::cin >> it->salary;
        std::cout << "职工信息修改成功!" << std::endl;
    } else {
        std::cout << "未找到该职工信息!" << std::endl;
    }
}

void queryEmployee(const std::vector<Employee>& employees) {
    int id;
    std::cout << "请输入要查询的职工工号: ";
    std::cin >> id;

    auto it = std::find_if(employees.begin(), employees.end(), [id](const Employee& emp) {
        return emp.id == id;
    });

    if (it != employees.end()) {
        std::cout << "职工信息如下:" << std::endl;
        std::cout << "工号: " << it->id << std::endl;
        std::cout << "姓名: " << it->name << std::endl;
        std::cout << "部门: " << it->department << std::endl;
        std::cout << "职位: " << it->position << std::endl;
        std::cout << "薪资: " << it->salary << std::endl;
    } else {
        std::cout << "未找到该职工信息!" << std::endl;
    }
}

void showAllEmployees(const std::vector<Employee>& employees) {
    if (employees.empty()) {
        std::cout << "当前没有职工信息!" << std::endl;
        return;
    }

    for (const auto& emp : employees) {
        std::cout << "工号: " << emp.id << ", 姓名: " << emp.name 
                  << ", 部门: " << emp.department << ", 职位: " << emp.position 
                  << ", 薪资: " << emp.salary << std::endl;
    }
}

void saveToFile(const std::vector<Employee>& employees, const std::string& filename) {
    std::ofstream ofs(filename);
    if (!ofs) {
        std::cerr << "文件打开失败!" << std::endl;
        return;
    }

    for (const auto& emp : employees) {
        ofs << emp.id << " " << emp.name << " " << emp.department 
            << " " << emp.position << " " << emp.salary << std::endl;
    }

    ofs.close();
    std::cout << "职工信息已保存到文件!" << std::endl;
}

void loadFromFile(std::vector<Employee>& employees, const std::string& filename) {
    std::ifstream ifs(filename);
    if (!ifs) {
        std::cerr << "文件打开失败!" << std::endl;
        return;
    }

    Employee emp;
    while (ifs >> emp.id >> emp.name >> emp.department >> emp.position >> emp.salary) {
        employees.push_back(emp);
    }

    ifs.close();
    std::cout << "职工信息已从文件加载!" << std::endl;
}

int main() {
    std::vector<Employee> employees;
    std::string filename = "employees.txt";

    loadFromFile(employees, filename);

    int choice = 0;
    while (true) {
        showMenu();
        std::cout << "请输入您的选择: ";
        std::cin >> choice;

        switch (choice) {
            case 1:
                addEmployee(employees);
                break;
            case 2:
                deleteEmployee(employees);
                break;
            case 3:
                modifyEmployee(employees);
                break;
            case 4:
                queryEmployee(employees);
                break;
            case 5:
                showAllEmployees(employees);
                break;
            case 6:
                saveToFile(employees, filename);
                std::cout << "感谢使用职工管理系统,再见!" << std::endl;
                return 0;
            default:
                std::cout << "输入有误,请重新输入!" << std::endl;
                break;
        }
    }

    return 0;
}

5. 总结

通过本文的介绍,我们实现了一个基于C++的职工管理系统。该系统具备添加、删除、修改、查询和显示职工信息的功能,并且能够将职工信息保存到文件中。虽然这个系统相对简单,但它展示了如何使用C++进行基本的系统设计和开发。读者可以根据实际需求进一步扩展和优化该系统,例如增加更多的功能模块、使用数据库进行数据存储等。

推荐阅读:
  1. 如何用C++基于多态设计职工管理系统
  2. C语言实现职工管理系统

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:怎么用C语言结构体链表和指针实现学生管理系统

下一篇:vue中data里面的数据如何相互使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》