C语言课程设计题目一:职工信息管理系统设计

文章目录

  • 题目一:职工信息管理系统设计
  • 代码块
      • employeeManagement.h
      • employeeManage.c
      • test.c
  • 调试验证
      • 录入信息,并浏览
      • 验证职工号唯一
      • 保存职工信息,加载职工信息
      • 按职工号进行查询
      • 根据id删除职工
      • 修改职工信息

题目一:职工信息管理系统设计

职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
设计职工信息管理系统,功能包括:

  1. 系统以菜单方式工作。
  2. 职工信息录入功能(职工信息用文件保存)--输入。
  3. 职工信息浏览功能--输出。
  4. 职工信息查询功能--算法。
    • 按学历查询等。
    • 按职工号查询等。
  5. 职工信息删除、修改功能(可选项)。

代码块

在这里插入图片描述

employeeManagement.h

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>// 定义最大职工数量
#define MAX_EMPLOYEES 100//定义职工结构体
typedef struct {int id;				// 职工号char name[50];		// 姓名char gender[50];    // 性别int age;			// 年龄char education[50];	// 学历double salary;		// 工资char address[100];	// 地址char phone[20];		// 电话
}Employee;
// 显示菜单
void showMenu();
// 主菜单函数
void menu(Employee* employees, int* count);
// 打印单个职工信息
void printEmployee(Employee emp);
// 检查职工号是否唯一
int isIdUnique(Employee* employees, int count, int id);
// 添加职工信息
void addEmployee(Employee* employees, int* count);
// 显示所有职工信息
void displayEmployee(Employee* employees, int count);
// 按学历查询职工信息
void searchByEducation(Employee* employees, int count);
// 按职工号查询职工信息
void searchById(Employee* employees, int count);
// 删除职工信息
void deleteEmployee(Employee* employees, int* count);
// 修改职工信息
void modifyEmployee(Employee* employees, int count);
// 保存职工信息到文件
void saveToFile(Employee* employees, int count);
// 加载职工信息
void loadFromFile(Employee* employees, int* count);

employeeManage.c

#include"employeeManagement.h"// 显示菜单
void showMenu() {printf("\n");printf("+--------------------------+\n");printf("|    职工信息管理系统       |\n");printf("+--------------------------+\n");printf("|  1. 录入职工信息         |\n");printf("|  2. 浏览职工信息         |\n");printf("|  3. 按学历查询职工信息   |\n");printf("|  4. 按职工号查询职工信息 |\n");printf("|  5. 删除职工信息         |\n");printf("|  6. 修改职工信息         |\n");printf("|  7. 保存并退出           |\n");printf("+-------------------------+\n");printf("请选择操作: ");
}
// 主菜单函数
void menu(Employee* employees, int* count) {int choice;while (1) {showMenu();scanf("%d", &choice);switch (choice) {case 1://printf("录入职工信息\n");addEmployee(employees, count);break;case 2://printf("浏览职工信息\n");displayEmployee(employees, *count);break;case 3://printf("按学历查询职工信息\n");searchByEducation(employees, *count);break;case 4://printf("按职工号查询职工信息\n");searchById(employees, *count);break;case 5://printf("删除职工信息\n");deleteEmployee(employees, count);break;case 6://printf("修改职工信息\n");modifyEmployee(employees, *count);break;case 7://printf("退出\n");saveToFile(employees, *count);return;default:printf("无效的选择,请重新输入。\n");}}
}
// 打印单个职工信息
void printEmployee(Employee emp) {printf("职工号: %d\n", emp.id);printf("姓名: %s\n", emp.name);printf("性别: %s\n", emp.gender);printf("年龄: %d\n", emp.age);printf("学历: %s\n", emp.education);printf("工资: %.2f\n", emp.salary);printf("地址: %s\n", emp.address);printf("电话: %s\n", emp.phone);printf("\n");
}
// 检查职工号是否唯一
int isIdUnique(Employee* employees, int count, int id) {for (int i = 0; i < count; i++) {if (employees[i].id == id) {return 0;	//职工号不唯一}}return 1;//职工号唯一
}
// 添加职工信息
void addEmployee(Employee* employees, int* count) {if (*count >= MAX_EMPLOYEES) {printf("已达到最大容量,无法添加更多职工。\n");return;}Employee* emp = &employees[*count];int id;printf("请输入职工号: ");scanf("%d", &id);if (!isIdUnique(employees, *count, id)) {printf("职工号已存在,请重新输入。\n");return;}emp->id = id;printf("请输入姓名: ");scanf("%s", emp->name);printf("请输入性别: ");scanf("%s", emp->gender);printf("请输入年龄: ");scanf("%d", &emp->age);printf("请输入学历: ");scanf("%s", emp->education);printf("请输入工资: ");scanf("%lf", &emp->salary);printf("请输入地址: ");scanf("%s", emp->address);printf("请输入电话: ");scanf("%s", emp->phone);(*count)++;printf("职工 %s 信息录入成功\n", emp->name);}
// 显示所有职工信息
void displayEmployee(Employee* employees, int count) {for (int i = 0; i < count; i++) {printEmployee(employees[i]);}
}
// 按学历查询职工信息
void searchByEducation(Employee* employees, int count) {char education[50];printf("请输入学历进行查询:");scanf("%s", education);int found = 0;for (int i = 0; i < count; i++) {if (strcmp(employees[i].education, education) == 0) {printEmployee(employees[i]);found = 1;}}if (!found) {printf("没有找到符合条件的职工。\n");}
}
// 按职工号查询职工信息
void searchById(Employee* employees, int count) {int id;printf("请输入职工号进行查询: ");scanf("%d", &id);for (int i = 0; i < count; i++) {if (employees[i].id == id) {printEmployee(employees[i]);return;}}printf("没有找到该职工号的职工信息。\n");
}
// 删除职工信息
void deleteEmployee(Employee* employees, int* count) {int id;printf("请输入要删除的职工号: ");scanf("%d", &id);for (int i = 0; i < *count; i++) {if (employees[i].id == id) {//将要删除的职工信息后移for (int j = i; j < *count - 1; j++) {employees[j] = employees[j + 1];}(*count)--;//总数减一printf("职工号 %d 的信息已经删除。\n", id);return;}}printf("没有找到该职工号的职工信息,无法删除。\n");
}
// 修改职工信息
void modifyEmployee(Employee* employees, int count) {int id;printf("请输入要修改的职工号:");scanf("%d", &id);for (int i = 0; i < count; i++) {if (employees[i].id == id) {// 提示用户输入新的信息printf("请输入新的姓名: ");scanf("%s", employees[i].name);printf("请输入新的性别: ");scanf("%s", employees[i].gender);printf("请输入新的年龄: ");scanf("%d", &employees[i].age);printf("请输入新的学历: ");scanf("%s", employees[i].education);printf("请输入新的工资: ");scanf("%lf", &employees[i].salary);printf("请输入新的地址: ");scanf("%s", employees[i].address);printf("请输入新的电话: ");scanf("%s", employees[i].phone);printf("职工号 %d 的信息已修改。\n", id);return;}}printf("没有找到该职工号的职工信息,无法修改。\n");
}
// 保存职工信息到文件
void saveToFile(Employee* employees, int count) {FILE* file = fopen("employees.txt", "w");if (file == NULL) {printf("无法打开文件。\n");return;}for (int i = 0; i < count; i++) {Employee* emp = &employees[i];fprintf(file, "%d %s %s %d %s %.2f %s %s\n",emp->id, emp->name, emp->gender, emp->age,emp->education, emp->salary, emp->address, emp->phone);}fclose(file);printf("职工信息保存成功。\n");
}
// 加载职工信息
void loadFromFile(Employee* employees, int* count) {FILE* file = fopen("employees.txt", "r");if (file == NULL) {printf("无法打开文件。\n");return;}*count = 0;while (*count < MAX_EMPLOYEES && fscanf(file, "%d %s %s %d %s %lf %s %s",&employees[*count].id,employees[*count].name,employees[*count].gender,&employees[*count].age,employees[*count].education,&employees[*count].salary,employees[*count].address,employees[*count].phone) == 8) {(*count)++;}fclose(file);printf("从文件加载了 %d 条记录。\n", *count);
}

test.c

#include"employeeManagement.h"
int main() {Employee employees[MAX_EMPLOYEES];int count = 0;loadFromFile(employees, &count);menu(employees, &count);return 0;
}

调试验证

录入信息,并浏览

在这里插入图片描述
在这里插入图片描述

验证职工号唯一

在这里插入图片描述

保存职工信息,加载职工信息

在这里插入图片描述

在这里插入图片描述

按职工号进行查询

在这里插入图片描述

根据id删除职工

在这里插入图片描述

修改职工信息

在这里插入图片描述

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

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

相关文章

安全鞋防护功能大揭秘,轻松选购就看这一篇!

在日常生活和工作中&#xff0c;安全始终是我们不可忽视的重要一环。尤其对于需要频繁接触危险环境的劳动者而言&#xff0c;一双合格的安全鞋&#xff0c;不仅是工作的必需品&#xff0c;更是守护双脚安全的坚实盾牌。然而&#xff0c;面对市场上琳琅满目的安全鞋&#xff0c;…

服务器安装SG15扩展全版本(宝塔+任意服务器通用)完整教程

服务器安装SG15扩展全版本&#xff08;宝塔任意服务器通用&#xff09;完整教程 前言教程包括宝塔演示结尾文章声明 前言 这篇文章介绍了在服务器上安装 SG15 扩展全版本的步骤&#xff0c;以宝塔为平台&#xff0c;适用于任意服务器。作者为了保护免费插件不被盗卖&#xff0…

【网络安全】公钥密码体制

1. 公钥密码体制概述 1.1 基本概念 公钥密码体制&#xff0c;又称为非对称密码体制&#xff0c;是一种基于数学函数的加密方式&#xff0c;它使用一对公钥和私钥来进行加密和解密。公钥用于加密&#xff0c;私钥用于解密。这种体制提供了一种安全的通信方式&#xff0c;因此在…

Python GUI 编程:tkinter 初学者入门指南——标签

在本文中&#xff0c;您将了解 Tkinter Label 小部件以及如何使用它在屏幕上显示文本或图像。 Tkinter Label 即标签&#xff0c;用于在屏幕上显示文本或图像。 常规语法&#xff1a; label tk.Label(master, **options) 下面显示了一个基本的窗口程序框架&#xff0c;我们…

NVM 使用过程问题记录

1、nvm install 安装node报错 Node.js v14.9.0 is not yet released or is not available. 网络错误 nvm ls available查看可安装node列表&#xff0c;如果显示为空 执行 nvm node_mirror https://npmmirror.com/mirrors/node/ nvm npm_mirror https://npmmirror.com/mirr…

百度在线翻译神器?这3款工具让你秒变语言达人!

在数字化的今天&#xff0c;我们早已离不开在线翻译工具了&#xff01;从日常的简单翻译到专业级的文献翻译&#xff0c;这些翻译工具就像是我们的“翻译官”&#xff0c;为我们的生活带来了便利&#xff1b;在这里&#xff0c;我给大家分享一下我的百度在线翻译使用感受&#…

计算曲线4s1-2的斜率

在行列可自由变换的条件下&#xff0c;平面上的4点结构只有16个 3点结构只有6个 2点结构只有3个 这次将4点结构化成3点结构&#xff0c;再化成2点结构4s1-3-2&#xff0c;并比较4s1-3-2的变化规律。 (A,B)---6*n*2---(0,1)(1,0) 分类A和B&#xff0c;A是16个4点结构&#xff…

沙漠光伏可视化:高效监控与优化管理

利用图扑可视化技术实时监测沙漠光伏系统的运行状态&#xff0c;提升数据透明度与故障响应速度&#xff0c;实现能源资源的最优利用和管理。

MATLAB案例 | 沪深股市收益率的二元Copula模型

沪深股市收益率的二元Copula模型 1. 案例描述2.实现流程2.1 确定随机变量的边缘分布2.1.1 参数法计算流程2.1.2 非参数法 2.2 选取适当的Copula函数2.3 参数估计 3. 完整代码参考资料 1. 案例描述 现有上海和深圳股市同时期日开盘价、最高价、最低价、收盘价、收益率等数据,跨…

[笔记]某川电机变频器指标与参数

变频器是进行电机控制的一个参考源&#xff0c;所有这些电机厂商的产品中提及的功能模块&#xff0c;项点&#xff0c;都需要关注。 某些功能点&#xff0c;自定义的分类&#xff0c;都是一些可以用作参考和进一步扩展的一些基本的技术点。软硬件接口&#xff0c;可以在设计自…

经验——CLion通过SSH远程开发__imx6ull的linux开发

CLion&#xff1a;2024.2.2 引言 初学嵌入式linux开发看的是正点原子的imx6ull教学视频&#xff0c;使用的是VS Code。虽然VS Code的代码补全和界面还可以&#xff0c;也能使用诸如通义灵码等插件&#xff0c;但相比之下&#xff0c;CLion更为出色。 虽然在嵌入式Linux开发里&a…

怎样才能远程了解在iPhone、iPad上看了什么网站、用了什么APP?

有不少家长在网上吐槽&#xff1a; ——自家小孩每天抱着手机看&#xff0c;一看就两三个小时&#xff0c;到底在看什么&#xff1f; ——没有不允许小孩玩手机&#xff0c;但他一玩就一整天&#xff0c;用什么户外活动、家庭活动都吸引不回来。 ——每次问小孩在手机上看什…

Python酷玩之旅_如何在Centos8顺利安装Python最新版(3.12)

全文导览 前言Q&#xff1a;如何在Centos8顺利安装Python最新版一. 下载安装包1.1 wget1.2. 官网下载 二. 执行安装2.1. 检查环境2.2. 安装依赖2.3. 解压tgz包2.4. 编译2.5. 安装2.6. 设置环境变量2.6.1 编辑/etc/profile2.6.2 激活生效 三. 操作示例3.1. helloworld 结语 前言…

研一上课计划2024/9/23有感

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、需要认真上课的1.应用数理统计&#xff08;开卷考试&#xff09;2.最优化方法&#xff08;开卷考试&#xff09;3.跨文化交际&#xff08;主题演讲20课堂讨…

基于微信小程序的童装商城的设计与实现+ssm论文源码调试讲解

2 系统开发环境 2.1微信开发者工具 微信开发者工具现在已经被小程序开发团队开发运行&#xff0c;目前微信开发者工具任然在不断的完善中&#xff0c;在开发小程序时经常要不断的更新。可以使用微信扫码登陆开发者工具&#xff0c;开发者工具将使用这个微信帐号的信息进行小程…

【设计模式-迭代】

定义 迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;用于提供一种顺序访问集合对象元素的方式&#xff0c;而不暴露该对象的内部表示。通过迭代器&#xff0c;客户端可以在不需要了解集合实现的细节的情况下遍历集合中的元素。 UML图 …

基于TRIZ理论的创新设计流程是怎样的?

TRIZ&#xff08;TheoryofInventiveProblemSolving&#xff09;&#xff0c;即发明问题解决理论&#xff0c;是一套基于知识的、面向设计者的系统化创新方法学。Altshuller通过对数百万份专利文献的研究&#xff0c;发现了技术问题解决过程中的普遍模式和规律&#xff0c;从而建…

Cloudera安装指南:新手也能轻松搞定!

回顾&#xff1a;之前《深度挖掘&#xff5c;Cloudera安装不再难&#xff01;基础环境搭建全解析》中&#xff0c;我们深入探讨了如何在企业环境中精心准备系统环境&#xff0c;为大数据平台Cloudera 搭建奠定坚实基础。今天&#xff0c;我们将正式进行Cloudera Manager的下载安…

网络PPP协议802.11协议以太网协议IPV4协议在思科模拟器的实现

1&#xff09;PPP协议 1. 选择2620系列交换机&#xff0c;添加WIC-2t模块&#xff0c;具有两个serial串行接口&#xff1b; 2.Router>enable:进入特权模式 Router#configure terminal&#xff1a;全局配置模式 Enter configuration commands, one per line. End with CNTL…

低成本搭建企业专属云电脑 贝锐向日葵推出私有化云电脑服务

作为一种硬件虚拟化技术&#xff0c;云电脑的优势是十分显著的&#xff0c;比如可以随时随地访问&#xff0c;拥有较高的性能、无需我们购买昂贵的实体硬件、计算资源可以按需灵活拓展等等。 如今&#xff0c;越来越多的企业也开始认识到云电脑所带来的优势&#xff0c;将云电…