【项目开发 | C语言项目 | C语言薪资管理系统】

本项目是一个简单的薪资管理系统,旨在为用户提供方便的员工薪资管理功能,如添加、查询、修改、删除员工薪资信息等。系统通过命令行交互界面与用户进行交互,并使用 txt 文件存储员工数据。


一,开发环境需求

  • 操作系统:windows, linux

  • 开发环境工具:qt, vscode, visual studio

  • 技术要求

    • C 语言编程
    • 数据结构(如:数组)
    • 文件 I/O 操作
    • 命令行交互界面设计

二,功能说明

  • 添加员工信息:允许用户添加新的员工及其薪资信息。

  • 查询员工薪资:根据员工 ID 查询其薪资信息。

  • 修改员工薪资:根据员工 ID 修改其薪资信息。

  • 删除员工信息:根据员工 ID 删除其薪资信息。

  • 显示所有员工信息:显示当前所有员工的薪资信息。


三,功能实现

  • 添加员工信息
void addemployee() {if (current_employee_count >= MAX_EMPLOYEES) {printf("员工数量已达上限!\n");return;}Employee new_employee;printf("请输入员工工号:");scanf("%d", &new_employee.id);printf("请输入员工姓名:");scanf("%s", new_employee.name);printf("请输入员工基本工资:");scanf("%f", &new_employee.base_salary);printf("请输入员工奖金:");scanf("%f", &new_employee.bonus);new_employee.total_salary = new_employee.base_salary + new_employee.bonus;employees[current_employee_count] = new_employee;current_employee_count++;printf("员工信息已成功录入!\n");savetofile();  // 保存数据到文件
}
  • 查询员工薪资
void searchsalary() {int search_id;char search_name[50];int search_option;printf("1. 通过工号查询\n2. 通过姓名查询\n请选择查询方式:");scanf("%d", &search_option);int found = 0;if (search_option == 1) {printf("请输入员工工号:");scanf("%d", &search_id);for (int i = 0; i < current_employee_count; i++) {if (employees[i].id == search_id) {printf("姓名:%s, 基本工资:%f, 奖金:%f, 总薪资:%f\n",employees[i].name, employees[i].base_salary, employees[i].bonus, employees[i].total_salary);found = 1;break;}}} else if (search_option == 2) {printf("请输入员工姓名:");scanf("%s", search_name);for (int i = 0; i < current_employee_count; i++) {if (strcmp(employees[i].name, search_name) == 0) {printf("工号:%d, 基本工资:%f, 奖金:%f, 总薪资:%f\n",employees[i].id, employees[i].base_salary, employees[i].bonus, employees[i].total_salary);found = 1;break;}}}if (!found) {printf("未找到相关员工信息。\n");}
}
  • 修改员工薪资
void modifysalary() {int modify_id;printf("请输入需要修改的员工工号:");scanf("%d", &modify_id);int found = 0;for (int i = 0; i < current_employee_count; i++) {if (employees[i].id == modify_id) {printf("当前工资:%f, 当前奖金:%f\n", employees[i].base_salary, employees[i].bonus);printf("请输入新的基本工资:");scanf("%f", &employees[i].base_salary);printf("请输入新的奖金:");scanf("%f", &employees[i].bonus);employees[i].total_salary = employees[i].base_salary + employees[i].bonus;printf("修改成功!\n");savetofile();  // 保存数据到文件found = 1;break;}}if (!found) {printf("未找到该工号的员工。\n");}
}
  • 删除员工信息
void deleteemployee() {int delete_id;printf("请输入需要删除的员工工号:");scanf("%d", &delete_id);int found = 0;for (int i = 0; i < current_employee_count; i++) {if (employees[i].id == delete_id) {for (int j = i; j < current_employee_count - 1; j++) {employees[j] = employees[j+1];}current_employee_count--;printf("删除成功!\n");savetofile();  // 保存数据到文件found = 1;break;}}if (!found) {printf("未找到该工号的员工。\n");}
}
  • 显示所有员工信息
void displayall() {printf("工号\t姓名\t基本工资\t奖金\t总薪资\n");printf("---------------------------------------------------\n");for (int i = 0; i < current_employee_count; i++) {printf("%d\t%s\t%f\t%f\t%f\n",employees[i].id, employees[i].name, employees[i].base_salary, employees[i].bonus, employees[i].total_salary);}
}

四,效果图

后续截图添加。


五,源码

代码已开源,可访问gitee下载。


六,总结

本项目为初学者提供了一个实际的 C 语言编程实践,涉及文件操作、数据结构设计和命令行交互界面的基本应用。希望此项目能对学习者有所帮助,并鼓励在此基础上进行更多的拓展和改进。

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

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

相关文章

多通道反向字典模型

方法 将单词的definition embedding输入Bi-LSTM模型&#xff0c;经过处理得到5个分数并加权求和得到最终的置信分数 最后对分数向量进行降序排序&#xff0c;得到word rank 代码实现&#xff1a; _, indices torch.sort(score, descendingTrue) 辅助信息 这是AAAI 2020的论…

从0开始深入理解并发、线程与等待通知机制(上)含大厂面试题

目录 一&#xff0c;基础概念 进程与线程 进程&#xff08;就是一代代码的执行程序&#xff0c;程序的实例&#xff09; 线程 大厂面试题&#xff1a;进程间的通信 CPU 核心数和线程数的关系 上下文切换&#xff08;Context switch&#xff09; 并行和并发 二&#xff0c;认识…

1.2.C++项目:仿muduo库实现并发服务器之时间轮的设计

文章目录 一、为什么要设计时间轮&#xff1f;&#xff08;一&#xff09;简单的秒级定时任务实现&#xff1a;&#xff08;二&#xff09;Linux提供给我们的定时器&#xff1a;1.原型2.例子 二、时间轮&#xff08;一&#xff09;思想&#xff08;一&#xff09;代码 一、为什…

jira 浏览器插件在问题列表页快速编辑问题标题

jira-issueTable-quicker 这是一个可以帮助我们在问题表格页快速编辑问题的浏览器插件 功能介绍 jira 不可否认是一个可以帮助有效提高工作效率的工具&#xff0c;但是我们在使用 jira 时使用问题表格可以让我们看到跟多的内容而不用关注细节&#xff0c;但是目前在问题表格页无…

Leetcode219. 存在重复元素 II

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给你一个整数数组 nums 和一个整数 k &#xff0c;判断数组中是否存在两个 不同的索引 i 和 j &#xff0c;满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在&#xff0c;返回 true &#xff1b…

SLAM从入门到精通(用python实现机器人运动控制)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在ROS下面&#xff0c;开发的方法很多&#xff0c;可以是c&#xff0c;可以是python。大部分接口操作类的应用&#xff0c;其实都可以用python来开…

2023年中国体育赛事行业现状及趋势分析:体育与科技逐步融合,推动产业高质量发展[图]

体育赛事运营是指组织体育赛事或获取赛事版权&#xff0c;并进行赛事推广营销、运营管理等一系列商业运作的运营活动。体育赛事运营相关业务主要包括赛事运营与营销、赛事版权运营两个部分。 体育赛事运营行业分类 资料来源&#xff1a;共研产业咨询&#xff08;共研网&#x…

力扣:119. 杨辉三角 II(Python3)

题目&#xff1a; 给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09…

算法通过村第十一关-位运算|黄金笔记|位运算压缩

文章目录 前言用4kb内存寻找重复元素总结 前言 提示&#xff1a;如果谁对你说了地狱般的话&#xff0c;就代表了他的心在地狱。你不需要相信那样的话&#xff0c;就算对方是你的父母也一样。 --高延秀《远看是蔚蓝的春天》 位运算有个很重要的作用就是能用比较小的空间存储比较…

JVM:经典垃圾收集器

经典垃圾收集器 如果说收集算法是内存回收的方法论&#xff0c;那垃圾收集器就是内存回收的实践者 《Java虚拟机规范》中对垃圾收集器应该如何实现并没有做出任何规定&#xff0c;因此不同的厂商、不同版本的虚拟机所包含的垃圾收集器都可能会有很大差别&#xff0c;不同的虚拟…

找不到msvcr110.dll丢失的解决方法-常见修复方法分享

在计算机使用过程中&#xff0c;我们可能会遇到 msvcr110.dll 丢失的问题。msvcr110.dll 是 Microsoft Visual C Redistributable 的一部分&#xff0c;是一个运行库文件&#xff0c;用于支持一些软件和游戏的运行。如果它丢失或损坏了&#xff0c;那么你就需要进行修复了。本文…

【Linux基础】Linux发展史

&#x1f449;系列专栏&#xff1a;【Linux基础】 &#x1f648;个人主页&#xff1a;sunny-ll 一、前言 本篇主要介绍Linux的发展历史&#xff0c;这里并不需要我们掌握&#xff0c;但是作为一个合格的Linux学习者与操作者&#xff0c;这些东西是需要了解的&#xff0c;而且…