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.mzph.cn/diannao/54693.shtml

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

相关文章

下水道内缺陷识别检测数据集 yolo数据集 共2300张

下水道内缺陷识别检测数据集 yolo数据集 共2300张 下水道内部缺陷识别数据集&#xff08;Sewer Interior Defect Recognition Dataset, SIDRD&#xff09; 摘要 SIDRD 是一个专门针对下水道内部缺陷识别的数据集&#xff0c;旨在为城市基础设施维护和管理提供一个标准化的训练…

VmWare安装虚拟机保姆级教程(centos7,虚拟机网络设置,虚拟机桌面显示)

VMWare下载&#xff1a; 下载 VMware Workstation Pro - VMware Customer Connect 安装包&#xff1a;&#xff08;16的版本&#xff09;免费&#xff01;&#xff08;一个赞就行&#xff09; 一直点下一步即可&#xff0c;注意修改一下安装位置就好 二、安装虚拟机 安装虚…

论文复现:考虑电网交互的风电、光伏与电池互补调度运行(MATLAB-Yalmip-Cplex全代码)

论文复现:考虑电网交互的风电、光伏与电池储能互补调度运行(MATLAB-Yalmip-Cplex全代码) 针对风电、光伏与电化学储能电站互补运行的问题,已有大量通过启发式算法寻优的案例,但工程上更注重实用性和普适性。Yalmip工具箱则是一种基于MATLAB平台的优化软件工具箱,被广泛应用…

[uni-app]小兔鲜-02项目首页

轮播图 轮播图组件需要在首页和分类页使用, 封装成通用组件 准备轮播图组件 <script setup lang"ts"> import type { BannerItem } from /types/home import { ref } from vue // 父组件的数据 defineProps<{list: BannerItem[] }>()// 高亮下标 const…

【React】Ant Design 5.x版本drawer抽屉黑边问题

环境 antd: ^5.14.1react: ^18 问题情况 <Drawer open{open} closable{false} mask{false} width{680}getContainer{props.getContainer || undefined}><p>Some contents...</p><p>Some contents...</p><p>Some contents...</p> …

时序数据库 TDengine 的入门体验和操作记录

时序数据库 TDengine 的学习和使用经验 什么是 TDengine &#xff1f;什么是时序数据 &#xff1f;使用RPM安装包部署默认的网络端口 TDengine 使用TDengine 命令行&#xff08;CLI&#xff09;taosBenchmark服务器内存需求删库跑路测试 使用体验文档纠错 什么是 TDengine &…

OpenAI GPT o1技术报告阅读(2)- 关于模型安全性的测试案例

✨报告阅读&#xff1a;使用大模型来学习推理(Reason) 首先是原文链接&#xff1a;https://openai.com/index/learning-to-reason-with-llms/ 接下来我们看一个简单的关于模型安全性的测试&#xff0c;当模型被问到一个有风险的话题时&#xff0c;会如何思考并回答用户呢&…

C++ | Leetcode C++题解之第421题数组中两个数的最大异或值

题目&#xff1a; 题解&#xff1a; struct Trie {// 左子树指向表示 0 的子节点Trie* left nullptr;// 右子树指向表示 1 的子节点Trie* right nullptr;Trie() {} };class Solution { private:// 字典树的根节点Trie* root new Trie();// 最高位的二进制位编号为 30static…

【linux】gcc makefile

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;linux笔记仓 目录 01.gcc如何完成02.gcc选项03.函数库与动静态链接静态链接动态链接库文件特点和用途动态链接版本和兼容性 04.makefile自动推导 01.gcc如何完成 预处理(进行宏替换) 预处理功能主要…

828华为云征文|使用Flexus X实例创建FDS+Nginx服务实现图片上传功能

一、Flexus X实例 什么是Flexus X实例呢&#xff0c;这是华为云最新推出的云服务器产品&#xff0c;如下图&#xff1a; 华为云推出的Flexus云服务器X系列&#xff0c;是在华为顶尖技术团队&#xff0c;特别是荣获国家科技进步奖的领军人物顾炯炯博士及其团队的主导下精心研发…

通过document获取节点元素

1.层级节点 <ul><li id"li1">1</li><li>2</li><li id"li3">3</li><li>4</li><li>5</li></ul><script>//获取id名为li1的元素赋值给li1let li1document.getElementById(li…

Java语言程序设计基础篇_编程练习题**18.34 (游戏:八皇后问题)

目录 题目&#xff1a;**18.34 (游戏:八皇后问题) 代码示例 代码解析 输出结果 使用文件 题目&#xff1a;**18.34 (游戏:八皇后问题) 八皇后问题是要找到一个解决方案&#xff0c;将一个皇后棋子放到棋盘上的每行中&#xff0c;并且两个皇后棋子之间不能相互攻击。编写个…

基于C#+SQL Server2005(WinForm)图书管理系统

图书管理系统 一、 首先把数据库脚本贴出来(数据库名为library) USE [library] GO /****** Object: Table [dbo].[books] Script Date: 06/12/2016 11:27:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[books]([bNum] [nvarchar](10…

宝塔部署vue项目出现的各种问题

使用宝塔面板&#xff0c;网站页面&#xff0c;构建php静态网页 问题一&#xff1a;图片等静态资源无法加载 找到真正请求的url&#xff0c; 然后在项目目录下面创建对应的目录&#xff0c;将资源放入 问题二&#xff1a;刷新出现404 在这里任意位置添加 ## 添加上这个配…

socket.io-client实现实前后端时通信功能

这里我使用的后端 基于node.js的koa框架 前端使用的是vite {"name": "hou","version": "1.0.0","description": "","main": "app.js","scripts": {"test": "echo …

ARM单片机的内存分布(重要)

ARM单片机的内存分布&#xff08;重要&#xff09; 一、S32K344的内存布局 MEMORY {int_pflash : ORIGIN 0x00400000, LENGTH 0x003D4000 /* 4096KB - 176KB (sBAF HSE)*/int_dflash : ORIGIN 0x10000000, LENGTH 0x00020000 /* 128KB …

BUUCTF [SCTF2019]电单车详解两种方法(python实现绝对原创)

使用audacity打开&#xff0c;发现是一段PT2242 信号 PT2242信号 有长有短&#xff0c;短的为0&#xff0c;长的为1化出来 这应该是截获电动车钥匙发射出的锁车信号 0 01110100101010100110 0010 0前四位为同步码0 。。。中间这20位为01110100101010100110为地址码0010为功…

不靠学历,不拼年资,怎么才能月入2W?

之前统计局发布了《2023年城镇单位就业人员年平均工资情况》&#xff0c;2023年全国城镇非私营单位和私营单位就业人员年平均工资分别为120698元和68340元。也就是说在去年非私营单位就业人员平均月薪1W&#xff0c;而私营单位就业人员平均月薪只有5.7K左右。 图源&#xff1a;…

两数之和、三数之和、四数之和

目录 两数之和 题目链接 题目描述 思路分析 代码实现 三数之和 题目链接 题目描述 思路分析 代码实现 四数之和 题目链接 题目描述 思路分析 代码实现 两数之和 题目链接 LCR 179. 查找总价格为目标值的两个商品 - 力扣&#xff08;LeetCode&#xff09; 题目…

EfficientFormer实战:使用EfficientFormerV2实现图像分类任务(一)

摘要 EfficientFormerV2是一种通过重新思考ViT设计选择和引入细粒度联合搜索策略而开发出的新型移动视觉骨干网络。它结合了卷积和变换器的优势&#xff0c;通过一系列高效的设计改进和搜索方法&#xff0c;实现了在移动设备上既轻又快且保持高性能的目标。这一成果为在资源受…