【C语言期末】职工管理系统

news2024/9/26 3:32:13

本文资源:https://download.csdn.net/download/weixin_47040861/88805231


1.题目要求

职工管理系统
问题描述:对单位的职工进行管理,包括插入、删除、查找、排序等功能。
要求:职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。
(1) 新增一名职工:将新增职工对象存入职工数据文件中。
(2) 删除一名职工:从职工数据文件中删除一名职工对象。
(3) 查询:从职工数据文件中查询符合某些条件的职工。
(4) 修改:检索某个职工对象,对其某些属性进行修改。
(5) 排序:按某种需要对职工对象文件进行排序(冒泡、选择、插入排序等任选两种方法实现)。
实现提示:职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。
(1)由键盘输入职工对象,以文件方式保存,程序执行时先将文件读入内存。
(2) 对职工对象中的“姓名"按字典顺序进行排序。
(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。
测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。

2.实现效果

1.主页

2.添加职工 

3.删除职工

4.查询职工

5.修改职工

6.排序

3.功能介绍

1.主函数

整个系统通过一个循环,用户可以反复选择不同的功能,直到选择退出系统。每个功能都调用相应的函数来完成具体的操作。系统的数据存储和读写使用了 readOrCreateCSVsave 函数,用于从文件中读取数据并保存修改后的数据。

该系统通过结构体数组 struct Employee newEmp[20] 存储职工信息,每个职工信息包括姓名、性别、出生日期、工作时间、学历、职务、住址、电话等字段。整体上,这个系统提供了基本的职工管理功能,用户可以通过简单的交互完成相关操作。

2.添加

  • 函数接收两个参数,分别是指向结构体数组的指针 newEmp 和表示数组长度的指针 len
  • 首先,函数检查数组长度是否小于20,即是否还有空间可添加新的职工信息。
  • 如果数组长度小于20,那么用户将被提示输入新的职工信息。
  • 用户需要依次输入职工的编号、姓名、性别、出生日期、工作时间、学历、职务、住址和电话。
  • 输入完成后,数组的长度会增加,并输出一条添加成功的消息。
  • 最后,函数调用 save 函数将更新后的数据保存到文件中。

3.删除

  • 函数接收两个参数,分别是指向结构体数组的指针 newEmp 和表示数组长度的指针 len
  • 用户被提示输入要删除的职工编号。
  • 函数查找输入编号在数组中的索引,如果找到了匹配的职工信息,索引会被存储在 index 变量中,否则 index 保持为-1。
  • 如果找到了匹配的职工信息,函数会通过将后续的数据向前移动的方式实现删除操作。
  • 数组长度减1,表示删除了一条数据。
  • 输出一条删除成功的消息,并调用 save 函数保存更新后的数据到文件。
  • 如果未找到匹配的职工信息,输出未找到的消息。

4.查询

  • 函数接收两个参数,分别是指向结构体数组的指针 newEmp 和表示数组长度的指针 len
  • 用户被提示选择查询方式,可以选择按职工编号、姓名、性别、学历或职务进行查询。
  • 根据用户选择的方式,进入相应的分支进行查询。
  • 对于每一种查询方式,用户需要输入相应的查询条件(职工编号、姓名、性别、学历、职务)。
  • 函数遍历数组,查找匹配的数据,并输出相应的信息。
  • 如果找到了匹配的数据,输出职工的详细信息,包括职工编号、姓名、性别、出生日期、工作时间、学历、职务、住址和电话。
  • 如果未找到匹配的数据,输出相应的提示消息。

5.修改

  • 函数接收两个参数,分别是指向结构体数组的指针 newEmp 和表示数组长度的指针 len
  • 用户被提示输入要修改的职工编号。
  • 函数查找输入编号在数组中的索引,如果找到了匹配的职工信息,索引会被存储在 index 变量中,否则 index 保持为-1。
  • 如果找到了匹配的职工信息,用户被再次提示选择要修改的信息(姓名、性别、出生日期、工作时间、学历、职务、住址、电话)。
  • 根据用户的选择,进行相应的修改操作,用户需要输入新的信息。
  • 修改成功后,输出一条修改成功的消息,并调用 save 函数保存更新后的数据到文件。
  • 如果未找到匹配的职工信息,输出相应的未找到消息。

6.排序

  • 函数接收两个参数,分别是指向结构体数组的指针 newEmp 和表示数组长度的指针 len
  • 用户被提示选择排序方式,可以选择按姓名降序排序或按出生日期降序排序。
  • 根据用户的选择,进入相应的分支进行排序。
  • 对于每一种排序方式,函数使用冒泡排序算法对数组进行降序排序。
  • 冒泡排序是一种简单的排序算法,它会依次比较相邻的元素并交换,将较大的元素移到数组的末尾。
  • 在本代码中,按姓名降序排序时,比较使用 strcmp 函数,按出生日期降序排序时同样使用 strcmp 函数。
  • 排序完成后,输出相应的排序完成消息,并调用 save 函数保存更新后的数据到文件。
  • 如果用户选择了无效的排序方式,输出相应的无效选择消息。

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

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

相关文章

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul

第四章_Eureka服务注册与发现 1.Eureka基础知识 1.1Eureka工作流程-服务注册 1.2Eureka两大组件 2.单机Eureka构建步骤 IDEA生成EurekaServer端服务注册中心,类似于物业公司 EurekaClient端cloud-provider-payment8081将注册进EurekaServer成为服务提供者provide…

将结构体中的浮点数数据提取出来并发送至串口屏显示

1、由于项目中定义了一个结构体如下: typedef struct {uint16_t number;uint16_t LocationData;uint16_t PersonData; // _calendar_obj calendar; // uint16_t LiuLiang_Value;float LiuLiang_Value;_calendar_obj calendar_records; } Frame; 现需要将其中的flo…

新手从零开始学习数学建模论文写作(美赛论文临时抱佛脚篇)

本文记录于数学建模老哥视频的学习过程中。b站视频:http://【【零基础教程】老哥:数学建模算法、编程、写作和获奖指南全流程培训!】https://www.bilibili.com/video/BV1kC4y1a7Ee?p50&vd_sourceff53a726c62f94eda5f615bd4a62c458 目录…

一分钟教你搭建steam幻兽帕鲁服务器,稳定不卡

如何自建幻兽帕鲁服务器?基于阿里云服务器搭建幻兽帕鲁palworld服务器教程来了,一看就懂系列。本文是利用OOS中幻兽帕鲁扩展程序来一键部署幻兽帕鲁服务器,阿里云百科aliyunbaike.com分享官方基于阿里云服务器快速创建幻兽帕鲁服务器教程&…

2024年适合进入股市吗?北京想开股票账户找哪家证券公司交易佣金费用最低?

股市规则是指股票市场中的一系列规则和制度,用于监管和管理股票交易。以下是一些常见的股市规则: 证券法律法规:股市规则的基础是国家的证券法律法规,包括证券法、公司法等,用于规范股票发行、交易和上市等方面的法律规…

【紧耦合新范式】Think-on-Graph:解决大模型在医疗、法律、金融等垂直领域的幻觉

Think-on-Graph:解决大模型在医疗、法律、金融等垂直领域的幻觉 Think-on-Graph 原理ToG 算法步骤:想想再查,查查再想实验结果 论文:https://arxiv.org/abs/2307.07697 代码:https://github.com/IDEA-FinAI/ToG Think…

AI专题:2023年AI创意营销趋势白皮书

今天分享的是AI系列深度研究报告:《AI专题:2023年AI创意营销趋势白皮书》。 (报告出品方:蓝色光标集团销博特) 报告共计:65页 2022年10月 Stabili ty AI获得1.01亿美元融资 开源人工智能公司 StabilityA…

STM32CAN2进入bus off 模式

工作遇到的问题记录 无人机CAN2整个进不了中断,通过查看寄存器判定出CAN节点进入了bus off mode 为何进入bus off ,最后通过示波器看到整个CAN2总线波形就不对,总线出现了错误 Busoff的产生是一定是因为节点自身识别到自己发送错误&#xff…

Konva中滚动问题

现在有两个group,想要的效果时拖动绿的group时,红色group按照相同方向移动同样距离 可以在绿的group的拖动方法中 通过move方法 移动红色的group

零基础Vue框架上手;git,node,yarn安装

项目搭建环境: git安装:Git - 安装 Git (git-scm.com)(官网) 下载路径:Git - Downloading Package (git-scm.com);根据自己电脑下载相对应的安装包 ​ 点next ​ 点next,点到最后安装就行。…

人工智能基础-matplotlib基础

绘制图形 import numpy as np x np.linspace(0, 10, 100) y np.sin(x) import matplotlib as mpl import matplotlib.pyplot as plt plt.plot(x, y) plt.show()绘制多条曲线 siny y.copy() cosy np.cos(x) plt.plot(x, siny) plt.plot(x, cosy) plt.show()设置线条颜色 …

2024年第四届能源与环境工程国际会议(CoEEE 2024) | Ei Scopus检索

会议简介 Brief Introduction 2024年第四届能源与环境工程国际会议(CoEEE 2024) 会议时间:2024年5月22日-24日 召开地点:意大利米兰 大会官网:www.coeee.org CoEEE 2024将围绕“能源与环境工程”的最新研究领域而展开,为研究人员、…

ES6-数组的解构赋值

一、数组的解构赋值的规律 - 只要等号两边的模式相同,左边的变量就会被赋予对应的值二、数组的解构赋值的例子讲解 1)简单的示例(完整的解构赋值) 示例 //基本的模式匹配 // a,b,c依次和1,2&#xff0c…

CSS 外边距合并、塌陷和BFC

外边距合并 CSS中的外边距合并指的是当两个相邻元素都设置了上下外边距时,它们之间会发生重叠。这种现象被称为"margin collapsing"(外边距合并)或者"margin collapse"(外边距塌陷)。 可以看出上…

【PTA浙大版《C语言程序设计(第4版)》编程题】练习7-4 找出不是两个数组共有的元素(附测试点)

目录 输入格式: 输出格式: 输入样例: 输出样例: 代码呈现 测试点 给定两个整型数组,本题要求找出不是两者共有的元素。 输入格式: 输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数&a…

【DDD】学习笔记-代码模型的架构决策

代码模型属于软件架构的一部分,它是设计模型的进化与实现,体现出了代码模块(包)的结构层次。在架构视图中,代码模型甚至会作为其中的一个视图,通过它来展现模块的划分,并定义运行时实体与执行视…

Leetcode—203. 移除链表元素【简单】

2024每日刷题(一零九) Leetcode—203. 移除链表元素 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(n…

ffmpeg 时间裁剪之-ss -t与滤镜中trim=start=*:duration=*的区别和联系

背景 工作中遇到的呗。记下来贡着。 滤镜重置时间戳:setptsPTS-STARTPTS 在FFmpeg中,setptsPTS-STARTPTS是一种用于调整视频时间戳(PTS)的滤镜表达式。这个表达式通常用于视频编辑和处理过程中,用于修改视频的时间轴…

H5 加密(MD5 Base64 sha1)

1. 说明 很多的时候是避免不了注册登录这一关的,但是一般的注册是没有任何的难度的,无非就是一些简单的获取用户输入的数据,然后进行简单的校验以后调用接口,将数据发送到后端,完成一个简单的注册的流程,那…

代码随想录 Leetcode93. 复原 IP 地址

题目&#xff1a; 代码(首刷看解析 2024年2月3日&#xff09;&#xff1a; class Solution { public:vector<string> res;bool Enligible(string& s, int left, int right) {if (left > right) return false;if (s[left] 0 && left ! right) return fal…