【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;我们要推荐的是蛙学网。这个…

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. 派生类的默认成员函数 构造 拷贝构造 运算符重载 析…

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…

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…

Android View的绘制流程

1.不管是View的添加&#xff0c;还是调用View的刷新方法invalidate()或者requestLayout()&#xff0c;绘制都是从ViewRootImpl的scheduleTraversals()方法开始 void scheduleTraversals() {if (!mTraversalScheduled) {mTraversalScheduled true;mTraversalBarrier mHandler…

Linux中nohup(no hang up)不挂起,用于在系统后台不挂断地运行命令,即使退出终端也不会影响程序的运行。

nohup的英文全称是 no hang up&#xff0c;即“不挂起”。这个命令在Linux或Unix系统中非常有用&#xff0c;主要用于在系统后台不挂断地运行命令&#xff0c;即使退出终端也不会影响程序的运行。默认情况下&#xff08;非重定向时&#xff09;&#xff0c;nohup会将输出写入一…

C++之类与对象(1)

目录 前言 1.类的定义 1.1类定义的格式 1.2访问限定符 1.3类域 1.3.1类定义一个作用域 1.3.2类成员在类的作用域中 1.3.3在类体外定义成员 2.实例化 2.1实例化概念 2.2对象大小 3.this指针 4.选择题补充练习 结束语 前言 Hello&#xff0c;友友们&#xff0c;好久…

Linux安装mysql(超详细版)

步骤1&#xff1a;新建一个文件夹&#xff0c;专放从网络下载的文件 [rootiZ2zeh6vyxsq620zifz8jaZ home]#mkdir soft #在根目录下创建也可以 步骤2&#xff1a;切换目录&#xff0c;进入soft文件中 [rootiZ2zeh6vyxsq620zifz8jaZ /]# cd home/ #若第一步文件建在根目…

牛客周赛 Round 51

目录 A.小红的同余 B.小红的三倍数 C.小红充电 D.小红的gcd E.小红走矩阵 F.小红的数组 这次周赛题目比较简单&#xff0c;算法题也基本上是板子题&#xff0c;出得很好(&#xff5e;&#xffe3;▽&#xffe3;)&#xff5e; A.小红的同余 思路&#xff1a;签到题&am…