【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://xiahunao.cn/news/3248915.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

EXCEL的自定义功能

一、Excel文件获取 OFFICE中导入文本文件&#xff0c;CSV&#xff08;分隔符通常是逗号&#xff09;和TXT&#xff08;分隔符通常是Tab键&#xff0c;可以用记事本打开查看分隔符&#xff09;进入单元格&#xff0c;数据——获取外部数据——自文本。 WPS中数据——获取数据——…

Java学习高级四

JDK8开始&#xff0c;接口新增了三种形式的方法 接口的多继承 内部类 成员内部类 静态内部类 局部内部类 匿名内部类 import javax.swing.*; import java.awt.event.ActionEvent;public class Test {public static void main(String[] args) {// 扩展 内部类在开发中的真实使用…

408一战130+|暑假四门课复习经验+资料分享

刚好我有点发言权 408想要考高分&#xff0c;其实很简单&#xff0c;学会抓住主要矛盾&#xff01; 是吗是主要矛盾&#xff0c;大家都知道&#xff0c;408学科四门课&#xff0c;分别是数据结构&#xff0c;计算机组成原理&#xff0c;操作系统&#xff0c;计算机网络。那么4…

Python进阶(4)--正则表达式

正则表达式 在Python中&#xff0c;正则表达式&#xff08;Regular Expression&#xff0c;简称Regex&#xff09;是一种强大的文本处理工具&#xff0c;它允许你使用一种特殊的语法来匹配、查找、替换字符串中的文本。 在这之前&#xff0c;还记得之前我们是通过什么方法分割…

【Python实战因果推断】42_合成控制2

目录 Matrix Representation Synthetic Control as Horizontal Regression Matrix Representation 在上文中&#xff0c;我向大家展示了一个用矩阵表示面板数据的图像&#xff0c;其中一个维度是时间段&#xff0c;另一个维度表示单位。合成控制明确使用了该矩阵&#xff0c;…

SciPy,一个超级强大的 Python 库

大家好&#xff01;我是爱摸鱼的小鸿&#xff0c;关注我&#xff0c;收看每期的编程干货。 一个简单的库&#xff0c;也许能够开启我们的智慧之门&#xff0c; 一个普通的方法&#xff0c;也许能在危急时刻挽救我们于水深火热&#xff0c; 一个新颖的思维方式&#xff0c;也许能…

React 从入门到实战 一一开发环境基础搭建(小白篇)

React 从入门到实战一一开发环境基础搭建&#xff08;小白篇&#xff09; React 介绍什么是 react &#xff1f;react 主要功能react 框架特点 开发工具渲染测试 React 介绍 最近两年&#xff0c;react 也愈来愈火热&#xff0c;想要在里面分一杯羹&#xff0c;那肯定逃不过 r…

访问控制系列

目录 一、基本概念 1.客体与主体 2.引用监控器与引用验证机制 3.安全策略与安全模型 4.安全内核 5.可信计算基 二、访问矩阵 三、访问控制策略 1.主体属性 2.客体属性 3.授权者组成 4.访问控制粒度 5.主体、客体状态 6.历史记录和上下文环境 7.数据内容 8.决策…

【QGroundControl二次开发】二.使用QT编译QGC(Windows)

【QGroundControl二次开发】一.开发环境准备&#xff08;Windows&#xff09; 二. 使用QT编译QGC&#xff08;Windows&#xff09; 2.1 打开QT Creator&#xff0c;选择打开项目&#xff0c;打开之前下载的QGC项目源码。 编译器选择Desktop Qt 6.6.3 MSVC2019 64bit。 点击运…

第四章:服务-让客户端发现pod并与之通信

本章内容包括&#xff1a; 创建服务资源&#xff0c;利用单个地址访问一组pod发现集群中的服务将服务公开给外部客户端从集群内部连接外部服务控制pod与服务关联排除服务故障 上一章学习了如何通过ReplicaSet以及类似的资源部署运行pod的事。尽管特定的pod可以独立的应对外部刺…

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;好久…

使用Python Turtle绘制圣诞树和装饰

简介(❤ ω ❤) 在这篇文章中&#xff0c;我们将探索如何使用Python的Turtle模块来绘制一个充满节日气氛的圣诞树&#xff0c;以及一些可爱的装饰品。Turtle是一个受Logo语言启发的图形库&#xff0c;非常适合初学者学习编程和创建图形。 码农不是吗喽&#xff08;大学生版&…

SpringBoot以及swagger的基本使用

1、SpringBoot是什么&#xff1f; 一种快速开发、启动Spring的框架、脚手架 遵循“约定优于配置”的思想&#xff0c;使得能够快速创建和配置Spring应用 2、SpringBoot的核心特性 自动配置&#xff0c;一些依赖、默认配置都预设好了&#xff0c;减少了配置量起步依赖&#x…

实现给Nginx的指定站点开启目录浏览功能

一、问题描述 需要实现在浏览器上可以浏览Nginx部署网站内容并下载一些常用的软件安装包、文件资料等内容;并且针对一些文件夹或内容需要进行认证后才能查看;有一些格式类型的文件也不能够访问查看。 二、问题分析 1、实现浏览器上可以浏览下载文件内容; 2、针对一些文件…

Android Studio 不再支持windows 7

Android Studio 一打开就报错&#xff1a; 无法找到入口 无法定位程序输入点 CreateAppContainerProfle 于动态链接库USERENV.dII 上。 截图如下&#xff1a; 经调查&#xff0c;是因为系统版本不兼容。 我目前的电脑环境&#xff1a;windows 7,但是现在的Android Studio要…

四六级词汇小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;英语词汇管理&#xff0c;易错词管理&#xff0c;学习笔记管理&#xff0c;签到打卡管理&#xff0c;论坛管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;英语词汇&…

【C++】认识C++(一)

前言 &#x1f4da;作者简介&#xff1a;爱编程的小马&#xff0c;是一名大厂后端c程序员。 &#x1f4da;本文收录于c系列&#xff0c;本专栏主要是分享我所了解的c知识&#xff0c;带领大家慢慢从了解c到认识c&#xff0c;持续更新&#xff01; &#x1f4da;本文主要内容&a…

纵向倾斜角、横向倾斜角、全方面监测:输电线路杆塔倾斜在线监测装置

纵向倾斜角、横向倾斜角、全方面监测&#xff1a;输电线路杆塔倾斜在线监测装置 随着我国电网建设的不断加速和电力设施分布范围的扩大&#xff0c;杆塔作为电网的重要组成部分&#xff0c;其安全稳定运行对于保障电力供应具有至关重要的意义。然而&#xff0c;由于地质条件复…

transformer论文讲解

1.标题 作者 Transformer 开创了继 MLP 、CNN和 RN 之后的第四大类模型。200页综述&#xff08;来自评论区&#xff1a; https://arxiv.org/pdf/2108.07258.pdf &#xff09;建议将Transformer作为基础模型。 标题&#xff1a;XXX is all you need. 头条标题。 Attention i…

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

达梦数据库的系统视图v$sqltext 在达梦数据库&#xff08;DM Database&#xff09;中&#xff0c;V$SQLTEXT 是一个系统视图&#xff0c;用于显示当前正在执行或最近执行的SQL语句的文本信息。这个视图对于监控和分析数据库中的SQL活动非常有用&#xff0c;尤其是在需要调试性…