【C++】C++ 职工信息管理系统(源码)【独一无二】

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


【C++】C++ 职工信息管理系统(源码)【独一无二】


目录

  • 【C++】C++ 职工信息管理系统(源码)【独一无二】
  • 一、设计要求
      • 1. 输入职工信息并保存
      • 2. 查询职工信息
      • 3. 职称统计
      • 4. 根据职称排序输出
      • 5. 根据工号修改职工信息
      • 6. 根据工号删除职工信息
      • 7. 显示功能菜单
      • 8. 加载职工信息
      • 9. 系统主函数
  • 二、设计思路
      • 1. 结构体设计
      • 2. 全局变量设计
      • 3. 功能菜单设计
      • 4. 输入职工信息并保存
      • 5. 加载职工信息
      • 6. 查询职工信息
        • 通过工号查询
        • 通过姓名或系部查询
      • 7. 职称统计
      • 8. 根据职称排序输出
      • 9. 根据工号修改职工信息
      • 10. 根据工号删除职工信息
      • 11. 主函数设计
  • 三、可视化分析


一、设计要求

1. 输入职工信息并保存

功能描述:允许用户输入新的职工信息,并将这些信息保存到系统内存和一个外部文件中。

2. 查询职工信息

功能描述:提供两种查询方式:

  • 通过工号查询:用户输入职工工号,系统显示对应职工的详细信息。
  • 通过姓名或系部查询:用户输入职工的姓名或所属系部,系统显示匹配的所有职工信息。

3. 职称统计

功能描述:统计每种职称的职工人数,并输出统计结果。

4. 根据职称排序输出

功能描述:根据职称对所有职工进行排序,并输出排序后的职工信息。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 职工 ” 获取。👈👈👈

5. 根据工号修改职工信息

功能描述:允许用户输入职工工号,并修改该职工的相关信息。

6. 根据工号删除职工信息

功能描述:允许用户输入职工工号,并删除该职工的信息。

7. 显示功能菜单

功能描述:显示职工管理系统的功能菜单,供用户选择操作。

8. 加载职工信息

功能描述:从外部文件中加载职工信息到系统内存,保证系统启动时能够读取之前保存的职工数据。

9. 系统主函数

功能描述:程序的入口,控制系统的运行流程,包括显示菜单和处理用户输入的操作。


二、设计思路

1. 结构体设计

代码首先定义了一个名为Employee的结构体,用于存储职工的基本信息。结构体包括以下字段:

struct Employee {string name;string gender;string id;string phone;string department;string title;
};

这种结构体的设计使得每个职工的信息都能被有序地存储和访问。

2. 全局变量设计

代码定义了一个全局变量employees,这是一个vector<Employee>类型,用于存储所有职工的信息。

vector<Employee> employees;

选择vector作为数据结构是因为它支持动态大小,并且提供了方便的元素添加和遍历功能。

3. 功能菜单设计

函数showMenu用于显示系统的主菜单。菜单包含了所有可供用户选择的功能选项,便于用户根据需求进行操作。

void showMenu() {cout << "职工管理系统菜单:" << endl;cout << "1. 输入职工信息并保存" << endl;cout << "2. 查询职工信息" << endl;cout << "3. 职称统计" << endl;cout << "4. 根据职称排序输出" << endl;cout << "5. 根据工号修改职工信息" << endl;cout << "6. 根据工号删除职工信息" << endl;cout << "0. 退出系统" << endl;
}

4. 输入职工信息并保存

函数inputEmployee实现了输入职工信息并保存到文件的功能。

void inputEmployee() {Employee emp;// 略...(至少10行代码)cin >> emp.title;employees.push_back(emp);ofstream outFile("employees.txt", ios::app);if (outFile.is_open()) {outFile << emp.name << " " << emp.gender << " " << emp.id << " "<< emp.phone << " " << emp.department << " " << emp.title << endl;outFile.close();cout << "职工信息已保存。" << endl;} else {cout << "无法打开文件。" << endl;}
}

5. 加载职工信息

函数loadEmployees用于从文件employees.txt中加载职工信息。

void loadEmployees() {ifstream inFile("employees.txt");if (inFile.is_open()) {// 略...(至少10行代码)inFile.close();}
}

6. 查询职工信息

系统提供了两种查询方式:通过工号查询和通过姓名或系部查询。

通过工号查询
void searchById(const string &id) {for (const auto &emp : employees) {// 略...(至少10行代码)cout << "未找到该工号的职工信息。" << endl;
}
通过姓名或系部查询
void searchByNameOrDepartment(const string &nameOrDept) {for (const auto &emp : employees) {// 略...(至少10行代码)}

7. 职称统计

函数countTitles用于统计每种职称的职工人数。

void countTitles() {map<string, int> titleCount;for (const auto &emp : employees) {// 略...(至少10行代码)cout << "职称: " << entry.first << ", 人数: " << entry.second << endl;}
}

8. 根据职称排序输出

函数sortByTitle实现了根据职称排序并输出职工信息的功能。

void sortByTitle() {sort(employees.begin(), employees.end(), [](const Employee &a, const Employee &b) {return a.title < b.title;});// 略...(至少10行代码)}
}

9. 根据工号修改职工信息

函数modifyById实现了根据工号修改职工信息的功能。

void modifyById(const string &id) {// 略...(至少10行代码)}cout << "未找到该工号的职工信息。" << endl;
}

10. 根据工号删除职工信息

函数deleteById实现了根据工号删除职工信息的功能。

void deleteById(const string &id) {auto it = remove_if(employees.begin(), employees.end(), [&id](const Employee &emp) {return emp.id == id;});// 略...(至少10行代码)} else {cout << "未找到该工号的职工信息。" << endl;}
}

11. 主函数设计

主函数main是程序的入口。

int main() {loadEmployees();int choice;do {showMenu();cout << "选择功能: ";cin >> choice;switch (choice) {case 1:inputEmployee();break;case 2: {// 略...(至少10行代码)case 0:cout << "退出系统。" << endl;break;default:cout << "无效的选择,请重新输入。" << endl;break;}} while (choice != 0);return 0;
}

主函数首先调用loadEmployees函数加载职工信息,然后进入一个do-while循环,不断显示菜单并根据用户的选择调用相应的函数处理用户请求。用户可以通过输入相应的数字选择功能,输入0退出系统。通过使用switch-case结构,主函数能够清晰地根据用户的输入调用相应的功能函数。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 职工 ” 获取。👈👈👈


三、可视化分析

在这里插入图片描述

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 职工 ” 获取。👈👈👈

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 职工 ” 获取。👈👈👈

在这里插入图片描述

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 职工 ” 获取。👈👈👈

在这里插入图片描述

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 职工 ” 获取。👈👈👈


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/47650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++系列-Vector模拟实现(补充)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 迭代器失效 这篇文章是基于上一篇的Vector的模拟实现的补充知识点&#xff0c;首先我们需要重点关注的便是迭代器失效的问题。 void test_vector3(){std::vector<int> v…

【C++】类与对象的学习(中)

目录 一、默认成员函数&#xff1a; 二、构造函数&#xff1a; 1、定义&#xff1a; 2、理解&#xff1a; 三、析构函数&#xff1a; 1、定义&#xff1a; 2、理解&#xff1a; 四、拷贝构造&#xff1a; 1、定义&#xff1a; 2、理解&#xff1a; 五、运算符的重载&…

抖音视频素材是哪里找的?热门的抖音素材网站分享

抖音视频创作高手们&#xff0c;你们是否在寻找下一个爆款视频的完美素材&#xff1f;今天&#xff0c;我将为你们介绍几个优质的视频素材网站&#xff0c;确保你们能在素材的海洋中轻松找到那最耀眼的“珍珠”&#xff01; 蛙学网 首先&#xff0c;我们要推荐的是蛙学网。这个…

[C/C++入门][for]23、求阶乘

阶乘 一个正整数的阶乘是所有小于及等于该数的正整数的积&#xff0c;并且0的阶乘为1。 自然数n的阶乘写作n!。 即n!123...(n-1)n。阶乘亦可以递归方式定义&#xff1a;0!1&#xff0c;n!(n-1)!n。 例如&#xff0c;5的阶乘&#xff08;记作5!&#xff09;等于5 * 4 * 3 * …

Go语言并发编程-同步和锁

同步和锁 概述 同步是并发编程的基本要素之一&#xff0c;我们通过channel可以完成多个goroutine间数据和信号的同步。 除了channel外&#xff0c;我们还可以使用go的官方同步包sync&#xff0c;sync/atomic 完成一些基础的同步功能。主要包含同步数据、锁、原子操作等。 一…

13. C++继承 | 详解 | 虚拟继承及底层实现

目录 1.定义 1.1继承的概念 1.2 继承的定义 2. 对象赋值转换 3. 继承中的作用域 a. 隐藏/重定义 (Hiding/Redefinition) b. 重载 (Overloading) c. 重写/覆盖 (Overriding) d. 编译报错 (Compilation Error) 4. 派生类的默认成员函数 构造 拷贝构造 运算符重载 析…

Android 14 开机时间优化措施

Android开机优化系列文档-CSDN博客 Android 14 开机时间优化措施汇总-CSDN博客Android 14 开机时间优化措施-CSDN博客根据systrace报告优化系统时需要关注的指标和优化策略-CSDN博客Android系统上常见的性能优化工具-CSDN博客Android上如何使用perfetto分析systrace-CSDN博客A…

python __getattr__与__getattribute__的区别

python __getattr__与__getattribute__的区别 在Python中,__getattr__和__getattribute__都是用于访问对象属性的特殊方法,但它们在实现和使用上有一些重要的区别。 1. __getattr__ __getattr__ 是一个在访问对象的属性时被调用的特殊方法。它接收一个属性名作为参数,并在…

win11将bat文件固定到“开始“屏幕

一、为bat文件创建快捷方式 (假设bat文件的全名为运行脚本.bat) 右键bat文件&#xff0c;点击显示更多选项 右键菜单选择发送到(N)-桌面快捷方式 二、获取快捷方式的路径 返回桌面&#xff0c;选中创建好的快捷方式&#xff0c;按AltEnter&#xff0c;切换到安全选项卡 鼠…

JCR一区级 | Matlab实现PSO-Transformer-LSTM多变量回归预测

JCR一区级 | Matlab实现PSO-Transformer-LSTM多变量回归预测 目录 JCR一区级 | Matlab实现PSO-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现PSO-Transformer-LSTM多变量回归预测&#xff0c;粒子群优化Transformer结合LST…

DCMM认证|DCMM认证需要怎么做?

DCMM&#xff08;Data Center Management Methodology&#xff09;是由中国信息通信研究院&#xff08;CAICT&#xff09;推出的一种数据中心管理方法论。想要进行DCMM认证&#xff0c;可以按照以下步骤进行&#xff1a; 1.了解DCMM认证标准&#xff1a;详细了解DCMM认证标准的…

C++--find

find 在[first,last)区间找第一个等于val的元素。 template<class InputIterator, class T> InputIterator find(InputIterator first,//起始迭代器 InputIterator last, //结束迭代器 const T& val); //需要查找的值 源码剖析 template<class InputI…

Nginx的核心功能

1. Nginx的核心功能 1.1 nginx反向代理功能 正向代理 代理的为客户端&#xff0c;对于服务器不知道真实客户的信息。例如&#xff1a;翻墙软件 反向代理服务器 代理的为服务器端。对于客户来说不知道服务器的信息。例如&#xff1a;nginx 项目部署图 web项目部署的虚拟机和Ng…

鸿蒙语言基础类库:【@system.notification (通知消息)】

通知消息 说明&#xff1a; 从API Version 7 开始&#xff0c;该接口不再维护&#xff0c;推荐使用新接口[ohos.notification]。本模块首批接口从API version 3开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import notification fro…

httpx 的使用

httpx 是一个可以支持 HTTP/2.0 的库 还有一个是&#xff1a; hyper 库 这里有一个由HTTP/2.0的网站&#xff1a; https://spa16.scrape.center/ 使用 requests 库 进行爬取 import requests url https://spa16.scrape.center/ response requests.get(url) print(response…

达梦数据库的系统视图v$arch_file

达梦数据库的系统视图v$arch_file 在达梦数据库中&#xff0c;V$ARCH_FILE 是一个动态性能视图&#xff0c;用于显示当前数据库的归档日志文件信息。这个视图可以帮助数据库管理员监控和管理归档日志文件&#xff0c;确保数据库的备份和恢复过程顺利进行。 查询本地归档日志信…

Unity UGUI Image Maskable

在Unity的UGUI系统中&#xff0c;Maskable属性用于控制UI元素是否受到父级遮罩组件的影响。以下是关于这个属性的详细说明和如何使用&#xff1a; Maskable属性 Maskable属性&#xff1a; 当你在GameObject上添加一个Image组件&#xff08;比如UI面板或按钮&#xff09;时&…

ctfshow-web入门-php特性(web127-web131)

目录 1、web127 2、web128 3、web129 4、web130 5、web131 1、web127 代码审计&#xff1a; $ctf_show md5($flag); 将 $flag 变量进行 MD5 哈希运算&#xff0c;并将结果赋值给 $ctf_show。 $url $_SERVER[QUERY_STRING]; 获取当前请求的查询字符串&#xff08;que…

开源防病毒工具--ClamAV

产品文档&#xff1a;简介 - ClamAV 文档 开源地址&#xff1a;Cisco-Talos/clamav&#xff1a;ClamAV - 文档在这里&#xff1a;https://docs.clamav.net (github.com) 一、引言 ClamAV&#xff08;Clam AntiVirus&#xff09;是一个开源的防病毒工具&#xff0c;广泛应用…

【算法专题】归并排序

目录 1. 排序数组 2. 交易逆序对的总数 3. 计算右侧小于当前元素的个数 4. 翻转对 总结 1. 排序数组 912. 排序数组 - 力扣&#xff08;LeetCode&#xff09; 今天我们使用归并排序来对数组进行排序&#xff0c;实际上&#xff0c;归并排序和快速排序是有一定相似之处的&a…