您好,登录后才能下订单哦!
职工管理系统是一种常见的企业管理工具,用于管理员工的基本信息、薪资、考勤等数据。通过使用C++编程语言,我们可以实现一个简单而高效的职工管理系统。本文将详细介绍如何使用C++实现一个基本的职工管理系统,涵盖系统的设计、功能实现以及代码示例。
一个基本的职工管理系统应具备以下功能:
为了实现上述功能,我们需要设计一个合适的数据结构来存储职工信息。通常,我们可以使用结构体(struct
)或类(class
)来表示职工信息。
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;
}
在主程序中,我们将上述模块整合在一起,实现一个完整的职工管理系统。
#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;
}
通过本文的介绍,我们实现了一个基于C++的职工管理系统。该系统具备添加、删除、修改、查询和显示职工信息的功能,并且能够将职工信息保存到文件中。虽然这个系统相对简单,但它展示了如何使用C++进行基本的系统设计和开发。读者可以根据实际需求进一步扩展和优化该系统,例如增加更多的功能模块、使用数据库进行数据存储等。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。