C语言实现职工工资管理系统的示例代码

下面是对于“C语言实现职工工资管理系统的示例代码”的完整攻略,包含了过程、示例说明以及代码实现:

1. 需求分析

该工资管理系统主要包括以下功能:

  1. 录入职工信息
  2. 查询职工信息
  3. 删除职工信息
  4. 修改职工信息
  5. 计算职工工资

根据上述需求,我们可以将职工信息抽象为一个结构体,包括工号、姓名、性别、年龄、基本工资等成员变量。通过调用各种函数实现各项功能,并将所有信息存储在文件中。

2. 代码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXSIZE 100

// 定义职工信息结构体
struct Employee {
    char id[10];
    char name[20];
    char sex[5];
    int age;
    double baseSalary;
};

// 初始化职工数组
struct Employee employees[MAXSIZE];
int size = 0;

// 显示主菜单
void showMenu() {
    printf("====== 工资管理系统 ======\n");
    printf("1. 录入职工信息\n");
    printf("2. 查询职工信息\n");
    printf("3. 删除职工信息\n");
    printf("4. 修改职工信息\n");
    printf("5. 计算职工工资\n");
    printf("6. 退出系统\n");
    printf("==========================\n");
    printf("请选择操作选项:");
}

// 录入职工信息
void addEmployee() {
    printf("\n====== 录入职工信息 ======\n");

    // 输入职工信息
    printf("请输入工号:");
    scanf("%s", employees[size].id);

    printf("请输入姓名:");
    scanf("%s", employees[size].name);

    printf("请输入性别:");
    scanf("%s", employees[size].sex);

    printf("请输入年龄:");
    scanf("%d", &employees[size].age);

    printf("请输入基本工资:");
    scanf("%lf", &employees[size].baseSalary);

    size++;

    printf("\n录入成功!\n");
}

// 查询职工信息
void showEmployee() {
    printf("\n====== 查询职工信息 ======\n");

    // 输入要查询的工号
    char id[10];
    printf("请输入要查询的工号:");
    scanf("%s", id);

    // 查找职工信息
    int i;
    for (i = 0; i < size; i++) {
        if (strcmp(employees[i].id, id) == 0) {
            printf("工号:%s\n", employees[i].id);
            printf("姓名:%s\n", employees[i].name);
            printf("性别:%s\n", employees[i].sex);
            printf("年龄:%d\n", employees[i].age);
            printf("基本工资:%lf\n", employees[i].baseSalary);
            printf("\n");
            return;
        }
    }

    // 没有找到该职工
    printf("职工不存在!\n");
}

// 删除职工信息
void deleteEmployee() {
    printf("\n====== 删除职工信息 ======\n");

    // 输入要删除的工号
    char id[10];
    printf("请输入要删除的工号:");
    scanf("%s", id);

    // 查找要删除的职工信息
    int i;
    for (i = 0; i < size; i++) {
        if (strcmp(employees[i].id, id) == 0) {
            // 将该职工后面的所有职工前移
            memcpy(&employees[i], &employees[i+1], sizeof(struct Employee) * (size - 1 - i));
            size--;
            printf("删除成功!\n");
            return;
        }
    }

    // 没有找到要删除的职工
    printf("职工不存在!\n");
}

// 修改职工信息
void modifyEmployee() {
    printf("\n====== 修改职工信息 ======\n");

    // 输入要修改的工号
    char id[10];
    printf("请输入要修改的工号:");
    scanf("%s", id);

    // 查找要修改的职工信息
    int i;
    for (i = 0; i < size; i++) {
        if (strcmp(employees[i].id, id) == 0) {
            printf("原始工号:%s\n", employees[i].id);

            // 输入修改后的职工信息
            printf("请输入新工号:");
            scanf("%s", employees[i].id);

            printf("请输入新姓名:");
            scanf("%s", employees[i].name);

            printf("请输入新性别:");
            scanf("%s", employees[i].sex);

            printf("请输入新年龄:");
            scanf("%d", &employees[i].age);

            printf("请输入新基本工资:");
            scanf("%lf", &employees[i].baseSalary);

            printf("修改成功!\n");
            return;
        }
    }

    // 没有找到要修改的职工
    printf("职工不存在!\n");
}

// 计算职工工资
void calculateSalary() {
    printf("\n====== 计算职工工资 ======\n");

    // 输入要计算工资的工号
    char id[10];
    printf("请输入要计算工资的工号:");
    scanf("%s", id);

    // 查找要计算工资的职工信息
    int i;
    for (i = 0; i < size; i++) {
        if (strcmp(employees[i].id, id) == 0) {
            double bonus, tax, totalSalary;
            printf("请输入绩效奖金:");
            scanf("%lf", &bonus);

            totalSalary = employees[i].baseSalary + bonus;
            if (totalSalary < 3000) {
                tax = totalSalary * 0.1;
            } else if (totalSalary < 5000) {
                tax = totalSalary * 0.15;
            } else {
                tax = totalSalary * 0.2;
            }

            double actualSalary = totalSalary - tax;
            printf("应发工资:%lf\n", totalSalary);
            printf("所得税:%lf\n", tax);
            printf("实发工资:%lf\n", actualSalary);
            return;
        }
    }

    // 没有找到要计算工资的职工
    printf("职工不存在!\n");
}

int main() {
    int option;

    while (1) {
        // 显示主菜单
        showMenu();

        // 获取用户输入的操作选项
        scanf("%d", &option);

        // 根据用户选择执行不同的操作
        switch (option) {
            case 1:
                addEmployee();
                break;

            case 2:
                showEmployee();
                break;

            case 3:
                deleteEmployee();
                break;

            case 4:
                modifyEmployee();
                break;

            case 5:
                calculateSalary();
                break;

            case 6:
                printf("\n再见!\n");
                return 0;

            default:
                printf("\n非法的操作选项,请重新选择!\n");
                break;
        }
    }
}

3. 示例说明

示例1:录入职工信息

====== 工资管理系统 ======
1. 录入职工信息
2. 查询职工信息
3. 删除职工信息
4. 修改职工信息
5. 计算职工工资
6. 退出系统
==========================
请选择操作选项:1

====== 录入职工信息 ======
请输入工号:1001
请输入姓名:张三
请输入性别:男
请输入年龄:25
请输入基本工资:3000

录入成功!

示例2:查询职工信息

====== 工资管理系统 ======
1. 录入职工信息
2. 查询职工信息
3. 删除职工信息
4. 修改职工信息
5. 计算职工工资
6. 退出系统
==========================
请选择操作选项:2

====== 查询职工信息 ======
请输入要查询的工号:1001
工号:1001
姓名:张三
性别:男
年龄:25
基本工资:3000.000000

以上就是C语言实现职工工资管理系统的示例代码及攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现职工工资管理系统的示例代码 - Python技术站

(1)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C语言实现外卖管理系统

    C语言实现外卖管理系统 系统介绍 外卖管理系统主要包括用户管理、商品管理、订单管理和数据统计模块。它可以实现用户注册、登录和下单,管理员可以发布商品,接收和处理订单,并统计每日、每周、每月和每年的收益情况。 实现步骤 1. 设计数据库 使用SQLite作为数据库,设计以下三张数据表: users表,记录用户信息,包括用户名、密码、手机号等; orders表,…

    C 2023年5月23日
    00
  • Python学习之MRO方法搜索顺序

    Python学习之MRO方法搜索顺序 MRO方法(Method Resolution Order)是Python中解决多继承问题的一种算法,它用于确定继承类中方法的调用顺序。在Python中,当我们调用某个方法时,解释器会先从该对象的类中查找是否有该方法,如果没有,就从其父类中查找,依次往上查找,直到找到为止。 什么是MRO方法搜索顺序? 在Python中,…

    C 2023年5月23日
    00
  • C语言实现简单猜数字游戏

    下面是详细的攻略过程: 猜数字游戏简介 猜数字游戏是一款非常经典的游戏,游戏规则简单,操作易学,玩家只需按照游戏提示猜测对应的数字即可,是入门级程序设计的绝佳选择。 下面,我们就来介绍一下使用C语言实现猜数字游戏的完整攻略: 实现步骤 1.首先,打开C语言编译器,创建一个新的工程。 2.在代码文件中,需要先引入需要用到的头文件: #include <s…

    C 2023年5月23日
    00
  • 浅析json与jsonp区别及通过ajax获得json数据后格式的转换

    下面就详细讲解一下关于“浅析json与jsonp区别及通过ajax获得json数据后格式的转换”的攻略。 一、JSON与JSONP的区别 1. JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,这种文本格式很容易被人类阅读和编写,同时也很容易被机器解析和生成。在现代web应用中…

    C 2023年5月23日
    00
  • C++ 单例模式的几种实现方式研究

    C++单例模式的几种实现方式研究 什么是单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,它保证了一个类仅有一个实例,并提供一个全局访问点。 单例模式的应用场景 单例模式在以下情况下被广泛应用: 需要频繁创建对象,但创建的对象又非常耗费系统资源。 系统只需要一个实例对象,如系统日志、系统文件等。 当多个实例存在时会导致访问的内…

    C 2023年5月22日
    00
  • win10下VSCode+CMake+Clang+GCC环境搭建教程图解

    以下是“win10下VSCode+CMake+Clang+GCC环境搭建教程图解”的完整攻略。 简介 Visual Studio Code是一款非常流行的开源跨平台代码编辑器。而CMake、Clang和GCC则是C/C++开发中用到的重要工具和库,它们能够优化代码编译、调试等方面的问题。在win10系统下配置VS Code+CMake+Clang+GCC环境…

    C 2023年5月23日
    00
  • C#实现简单的计算器小程序

    C#实现简单的计算器小程序 简介 本教程旨在介绍如何使用C#编写一个简单的计算器小程序。本教程所需环境为Visual Studio 2019。 步骤 1. 创建新工程 首先,我们需要创建一个新的C#控制台应用程序工程,步骤如下: 打开Visual Studio 2019并选择“创建新项目”。 在“创建项目”窗口中选择“控制台应用程序”。 为您的应用程序命名,…

    C 2023年5月30日
    00
  • C语言模拟实现密码输入的示例代码

    下面是关于“C语言模拟实现密码输入的示例代码”的完整攻略。 一、问题描述及解决思路 在C语言中,实现密码输入的方式一般是通过scanf或gets函数来实现。但这两种方式都有一个共同的问题,就是在输入密码时,密码会被明文显示在屏幕上,存在安全隐患。因此,为了提高系统的安全性,可以使用一些特殊的函数来模拟实现密码输入功能。 在C语言中,实现密码输入可以借助于Wi…

    C 2023年5月24日
    00
合作推广
合作推广
分享本页
返回顶部