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++使用文件实现学生信息管理系统”的完整攻略进行详细讲解。 一、需求分析 学生信息管理系统需要实现以下功能: 添加学生信息 删除学生信息 修改学生信息 查询学生信息 显示所有学生信息 保存学生信息到文件中 从文件中读取学生信息 二、设计思路 定义学生信息结构体,包含姓名、学号、性别、年龄等属性。 定义主函数,包含循环菜单,实现添加、删除、修改…

    C 2023年5月23日
    00
  • c语言如何设置随机数及逐行解析

    下面详细讲解一下“c语言如何设置随机数及逐行解析”的攻略。 1. 设置C语言随机数 可以使用标准库函数rand()和srand()来生成随机数。 1.1 srand()函数 在使用随机数之前,应该先使用srand()函数来初始化随机数生成器。这是因为随机数是由一个伪随机数生成器生成的,这个伪随机数生成器的起始位置在每次程序启动时都是相同的。因此,如果不初始化…

    C 2023年5月22日
    00
  • 用c语言实现《狼人杀》游戏发牌系统

    让我来为您详细讲解“用c语言实现《狼人杀》游戏发牌系统”的完整攻略。 首先需要明确的是,狼人杀游戏中的牌有很多种,包括狼人牌、村民牌、预言家牌等等。每局游戏需要给每位玩家分配一个随机的牌,因此开发牌局发牌系统需要实现以下功能: 随机洗牌,保证每次发牌的牌序不同 根据牌的数量和玩家人数,将不同的牌分配给玩家 显示每个玩家的牌 下面是一个实现《狼人杀》游戏发牌系…

    C 2023年5月24日
    00
  • 微星4GB显存GTX 1050Ti游戏本深度图解评测+拆解图

    微星4GB显存GTX 1050Ti游戏本深度图解评测+拆解图攻略 1. 产品介绍 微星4GB显存GTX 1050Ti游戏本是一款性能出色、适合玩游戏的笔记本电脑。它配备了Intel i7-7700HQ四核处理器,拥有256GB固态硬盘和1TB机械硬盘,显卡是 NVIDIA GeForce GTX 1050Ti,而且内存为16GB DDR4。此外,它配有15.…

    C 2023年5月22日
    00
  • C++之string类对象的容量操作详解

    下面我将详细讲解一下“C++之string类对象的容量操作详解”的攻略。 容量操作详解 理解容量 在C++中,string类是一种非常实用的字符串处理类。string类中的容量操作可以帮助我们了解和控制该类的内存分配和管理。 容量通常包括字符串对象的大小、长度、容量等。在使用string类时,我们通常需要考虑它将占用的内存,并需要对内存进行优化管理。因此,理…

    C 2023年5月22日
    00
  • C语言函数指针数组实现计算器功能

    要实现一个简单的计算器,我们可以利用函数指针数组来实现。具体的代码实现,可以如下: 1. 定义函数指针 首先,我们需要定义四个函数,分别实现加、减、乘、除操作。然后,我们定义一个函数指针数组,用来存储这四个函数。 // 定义加、减、乘、除四个函数 int add(int a, int b) { return a+b; } int sub(int a, int…

    C 2023年5月24日
    00
  • 使用C语言如何输出逆序数

    想要在C语言中输出逆序数,我们可以使用一个循环结构和一些操作来实现。下面是使用C语言输出逆序数的完整攻略: 1. 按位取数 我们首先需要确定待逆序的数是多少,可以从用户输入中获取或者直接写入代码中。假设我们要逆序的数字是 $num$。 接下来我们要按位去取 $num$ 中的数字,可以通过使用取模和整数除法来实现。 通过依次取出 $num$ 的个位数、十位数、…

    C 2023年5月23日
    00
  • C 强制类型转换

    C 强制类型转换(Type Casting 或 Type Conversion)是将一种数据类型的值转换为另一种数据类型的过程。C 语言中有 4 种强制类型转换的方式,分别为: (type) expression (type) variable type(expression) type(variable) 其中,第一种和第三种方式是一致的,第二种和第四种方…

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