【C语言课程设计】员工信息管理系统
员工信息管理系统
在日常的企业管理中,员工信息的管理显得尤为重要。为了提高员工信息管理的效率,我们设计并实现了一个简单的员工信息管理系统。该系统主要使用C语言编写,具备输入、显示、查询、更新(增加、删除、修改)、读取文件和保存文件等功能。
系统功能
1. 输入员工信息
该功能允许用户输入多名员工的信息,包括姓名、工号、性别、联系电话、学历、职位和薪资。输入信息时需按特定格式一次性输入多项内容,并用空格分隔。输入的信息会被存储在一个全局的员工数组中。
void input_info() {int numToAdd;printf("请输入要添加的员工数量:");scanf("%d", &numToAdd);clearBuffer();if (numToAdd <= 0 || numToAdd > 100 - numEmployees) {printf("输入数量无效或超出可添加的最大数量。\n");return;}printf("请依次输入每位员工的姓名 工号 性别 联系电话 学历 职位 薪资,用空格分隔:\n");for (int i = 0; i < numToAdd; ++i) {struct Employee newEmployee;if (scanf("%s %d %s %s %s %s %f",newEmployee.name, &newEmployee.emp_id, newEmployee.gender,newEmployee.phone, newEmployee.education, newEmployee.position,&newEmployee.salary) != 7) {printf("输入格式错误,请重新输入。\n");clearBuffer();return;}clearBuffer();employees[numEmployees++] = newEmployee;}printf("员工信息输入成功!\n");
}
2. 显示员工信息
该功能按照分页的形式显示所有员工的信息,每页显示5名员工。如果员工数量较多,可以通过按Enter键翻页查看下一页的员工信息。
void display_info() {if (numEmployees == 0) {printf("没有员工信息可以显示。\n");return;}int page = 1;int itemsPerPage = 5;int totalPages = (numEmployees + itemsPerPage - 1) / itemsPerPage;while (page <= totalPages) {printf("第%d页,共%d页\n", page, totalPages);int start = (page - 1) * itemsPerPage;int end = start + itemsPerPage;if (end > numEmployees) {end = numEmployees;}for (int i = start; i < end; ++i) {printf("姓名: %s, 工号: %d, 性别: %s, 联系电话: %s, 学历: %s, 职位: %s, 薪资: %.2f\n",employees[i].name, employees[i].emp_id, employees[i].gender,employees[i].phone, employees[i].education, employees[i].position,employees[i].salary);}if (page < totalPages) {printf("按 Enter 键查看下一页...\n");getchar();}++page;}
}
3. 查询员工信息
该功能支持按工号、姓名和薪资三种方式查询员工信息。用户可以根据自己的需求选择相应的查询方式,并输入对应的查询条件。系统会显示符合条件的员工信息。
void search_info() {if (numEmployees == 0) {printf("没有员工信息可以查询。\n");return;}int searchOption;printf("请选择查询方式:1.按工号 2.按姓名 3.按薪资\n");scanf("%d", &searchOption);clearBuffer();if (searchOption == 1) {int empId;printf("请输入要查询的员工工号: ");scanf("%d", &empId);clearBuffer();int found = 0;for (int i = 0; i < numEmployees; ++i) {if (employees[i].emp_id == empId) {found = 1;printf("员工信息如下:\n");printf("姓名: %s, 工号: %d, 性别: %s, 联系电话: %s, 学历: %s, 职位: %s, 薪资: %.2f\n",employees[i].name, employees[i].emp_id, employees[i].gender,employees[i].phone, employees[i].education, employees[i].position,employees[i].salary);break;}}if (!found) {printf("未找到工号为%d的员工。\n", empId);}} else if (searchOption == 2) {char name[50];printf("请输入要查询的员工姓名: ");scanf("%s", name);clearBuffer();int found = 0;for (int i = 0; i < numEmployees; ++i) {if (strcmp(employees[i].name, name) == 0) {found = 1;printf("员工信息如下:\n");printf("姓名: %s, 工号: %d, 性别: %s, 联系电话: %s, 学历: %s, 职位: %s, 薪资: %.2f\n",employees[i].name, employees[i].emp_id, employees[i].gender,employees[i].phone, employees[i].education, employees[i].position,employees[i].salary);}}if (!found) {printf("未找到姓名为%s的员工。\n", name);}} else if (searchOption == 3) {float salary;printf("请输入要查询的员工薪资: ");scanf("%f", &salary);clearBuffer();int found = 0;for (int i = 0; i < numEmployees; ++i) {if (employees[i].salary == salary) {found = 1;printf("员工信息如下:\n");printf("姓名: %s, 工号: %d, 性别: %s, 联系电话: %s, 学历: %s, 职位: %s, 薪资: %.2f\n",employees[i].name, employees[i].emp_id, employees[i].gender,employees[i].phone, employees[i].education, employees[i].position,employees[i].salary);}}if (!found) {printf("未找到薪资为%.2f的员工。\n", salary);}} else {printf("无效的查询选项。\n");}
}
4. 更新员工信息
更新员工信息功能包括增加、删除和修改三种操作。用户可以根据提示选择对应的操作,并输入相应的信息进行更新。
void update_info() {int updateOption;printf("请选择更新方式:1.增加 2.删除 3.修改\n");scanf("%d", &updateOption);clearBuffer();switch (updateOption) {case 1:add_info();break;case 2:delete_info();break;case 3:modify_info();break;default:printf("无效的更新选项。\n");break;}
}
5. 读取文件信息
该功能用于从文件中读取员工信息,并将读取到的信息存储到全局员工数组中。读取成功后,会显示相应提示信息。
void read_info() {FILE* file = fopen("employee_data.txt", "r");if (file == NULL) {printf("无法打开文件或文件不存在。\n");return;}numEmployees = 0;while (fscanf(file, "%s %d %s %s %s %s %f",employees[numEmployees].name, &employees[numEmployees].emp_id,employees[numEmployees].gender, employees[numEmployees].phone,employees[numEmployees].education, employees[numEmployees].position,&employees[numEmployees].salary) == 7) {numEmployees++;if (numEmployees >= 100) {printf("警告:员工信息数量超过程序允许的最大值。\n");break;}}fclose(file);printf("员工信息从文件中读取成功!\n");
}
6. 保存文件信息
该功能用于将当前存储的员工信息保存到文件中。保存成功后,会显示相应提示信息。
void save_info() {FILE* file = fopen("employee_data.txt", "w");if (file == NULL) {printf("无法打开文件来保存员工信息。\n");return;}for (int i = 0; i < numEmployees; ++i) {fprintf(file, "%s %d %s %s %s %s %.2f\n",employees[i].name, employees[i].emp_id, employees[i].gender,employees[i].phone, employees[i].education, employees[i].position,employees[i].salary);}fclose(file);printf("员工信息成功保存到文件中!\n");
}
7. 清空缓冲区
该功能用于清空输入缓冲区,避免因缓冲区中的多余字符影响后续的输入操作。
void clearBuffer() {int c;while ((c = getchar()) != '\n' && c != EOF);
}
系统主界面
系统通过一个主菜单界面来引导用户进行操作。用户可以根据提示输入相应的操作序号来执行对应的功能。主菜单界面如下所示:
int main() {int a = 0;printf("\n\n*********************【员工信息管理系统】***************\n");do {printf("********** 1:员工信息输入 **********\n");printf("********** 2:员工信息显示 **********\n");printf("********** 3:员工信息查询 **********\n");printf("********** 4:员工信息更新-增/改/删 **********\n");printf("********** 5:读取文件信息 **********\n");printf("********** 0:保存并退出系统 **********\n");printf("请输入需要进行的操作序号:");scanf("%d", &a);clearBuffer();switch (a) {case 1:input_info();break;case 2:display_info();break;case 3:search_info();break;case 4:update_info();break;case 5:read_info();break;case 0:save_info();printf("保存并退出系统。\n");break;default:printf("无效的操作序号,请重新输入。\n");break;}} while (a != 0);return 0;
}
通过上述功能和代码,我们实现了一个简单而实用的员工信息管理系统。该系统不仅可以有效地管理员工信息,还具备良好的用户交互体验。未来可以根据实际需求进行功能扩展和优化。
如有课程设计需求 请私聊作者
相关文章:
【C语言课程设计】员工信息管理系统
员工信息管理系统 在日常的企业管理中,员工信息的管理显得尤为重要。为了提高员工信息管理的效率,我们设计并实现了一个简单的员工信息管理系统。该系统主要使用C语言编写,具备输入、显示、查询、更新(增加、删除、修改ÿ…...

「动态规划」如何求最长递增子序列的长度?
300. 最长递增子序列https://leetcode.cn/problems/longest-increasing-subsequence/description/ 给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其…...
深度神经网络DNN概念科普
深度神经网络DNN概念科普 深度神经网络(Deep Neural Network, DNN)是机器学习领域中一类具有多层结构的神经网络模型,它能够通过学习数据中的复杂模式来解决非线性问题。下面是对深度神经网络的详细解析: 基本组成部分 输入层&…...

Tomcat WEB站点部署
目录 1、使用war包部署web站点 2、自定义默认网站目录 3、部署开源站点(jspgou商城) 对主机192.168.226.22操作 对主机192.168.226.20操作 上线的代码有两种方式: 第一种方式是直接将程序目录放在webapps目录下面,这种方式…...
IPv6 中 MAC 33:33 的由来
一、33:33 由来 1. RFC9542 - 2024-05-02 Note IANA allocates addresses under the IANA OUI (00-00-5E) as explained in [RFC9542]. Unicast addresses under the IANA OUI start with 00-00-5E, while multicast addresses under the IANA OUI start with 01-00-5E. In t…...

告别手动邮件处理:使用imbox库轻松管理你的收件箱
imbox库简介: imbox是一个强大的Python库,专为与IMAP服务器交互而设计.IMAP(Internet Message Access Protocol)是一种用于电子邮件的标准协议,允许用户在远程服务器上管理邮件.imbox库通过IMAP协议与邮件服务器通信,帮助用户轻松地读取、搜索…...

Ubuntu 18.04 安装 PCL 1.14.1
在进行科研项目时,我们常常需要将 C 和 Python 结合起来编程。然而,每次将 PCL(Point Cloud Library)的内容添加到 CMakeLists.txt 文件中时都会报错。在深入分析后,我们推测可能是当前使用的 PCL 1.8 版本与现有程序不…...

公司logo设计大全怎么找?直接帮你设计logo
公司logo设计大全怎么找?在品牌塑造的过程中,Logo无疑是至关重要的一环。一个优秀的Logo不仅能够有效传达公司的核心理念和品牌形象,还能在消费者心中留下深刻的印象。然而,对于许多初创公司或小型企业来说,制作出适合…...
如何调整C#中数组的大小
前言 数组存储多个相同类型的一种非常常用的数据结构。它长度是固定,也就是数组一旦创建大小就固定了。C# 数组不支持动态长度。那在C#中是否有方法可以调整数组大小呢?本文将通过示例介绍一种调整一维数组大小的方法。 方法 数组实例是从 System.Arr…...

通过言语和非言语检索线索描绘睡眠中的记忆再激活茗创科技茗创科技
摘要 睡眠通过重新激活新形成的记忆痕迹来巩固记忆。研究睡眠中记忆再激活的一种方法是让睡眠中的大脑再次暴露于听觉检索线索(定向记忆再激活范式)。然而,记忆线索的声学特性在多大程度上影响定向记忆再激活的有效性,目前还没有得到充分探索。本研究通…...
MDPI旗下SSCI最新影响因子目录出炉!“水刊“Sustainability表现如何?
本周投稿推荐 SSCI • 1区,4.0-5.0(无需返修,提交可录) EI • 各领域沾边均可(2天录用) CNKI • 7天录用-检索(急录友好) SCI&EI • 4区生物医学类,0.1-0.5&…...

Matlab基础篇:数据输入输出
前言 数据输入和输出是 Matlab 数据分析和处理的核心部分。良好的数据输入输出能够提高工作效率,并确保数据处理的准确性。本文将详细介绍 Matlab 数据输入输出的各种方法,包括导入和导出数据、数据处理和数据可视化。 一、导入数据 Matlab 提供了多种方…...

MySQL字典数据库设计与实现 ---项目实战
软件准备✍:Mysql与Navicat可视化命令大全 ----项目实战 文章前言部分 目录 一.摘要 二.设计内容 三.项目实现 一.摘要 本项目关注于字典数据库表结构的设计和数据管理。通过现有的sql文件,实现system_dict_type和system_dict_data两个数据表。随后…...

python数据分析——数据预处理
数据预处理 前言一、查看数据数据表的基本信息查看info()示例 查看数据表的大小shape()示例 数据格式的查看type()dtype()dtypes()示例一示例二 查看具体的数据分布describe()示例 二…...

【Python】使用matplotlib绘制图形(曲线图、条形图、饼图等)
文章目录 一、什么是matplotlib二、matplotlib 支持的图形三、如何使用matplotlib1. 安装matplotlib2. 导入matplotlib.pyplot3. 准备数据4. 绘制图形5. 定制图形6. 显示或保存图形7. (可选)使用subplots创建多个子图注意事项: 四、常见图形使…...
vue下载本地xls模版静态文件
需求导入的下载模版不想放在服务器放在前端本地下载静态资源最简单的方式直接访问 public 文件夹下的文件 方法一:使用静态文件路径 将文件放在 public 文件夹中: 把你的文件从 src/assets 移动到 public 文件夹。例如:public/template.xls。…...
手机开热点,里面的WPA2-Personal和WPA3-Personal的区别
WPA2-Personal和WPA3-Personal这两种协议都是用来保护无线网络安全的,但它们在加密强度和安全性方面有所不同。 WPA2-Personal (Wi-Fi Protected Access 2) WPA2是目前最广泛使用的Wi-Fi安全标准之一。它使用AES(Advanced Encryption Standard…...

算法课程笔记——点积叉积
算法课程笔记——点积叉积...

详解 | DigiCert EV代码签名证书
简介 DigiCert EV 代码签名证书是一种高级别的代码签名证书,它不仅提供了标准代码签名证书的所有安全特性,还增加了额外的身份验证流程,以确保软件开发者或发布者的身份得到最严格验证。这对于提升软件的信任度、防止恶意篡改和确保下载安全…...

pdf压缩大小,PDF压缩大小不影响清晰度
你是否曾为PDF文件过大而烦恼?想要分享或上传文件时,却因为它的体积而束手无策?别担心,今天我将为大家分享一些简单实用的 PDF 压缩技巧,让你的文件轻松压缩pdf。 打开“轻云处理pdf官网”, 的网站。然后上…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...

若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...