C语言实现简单员工工资管理系统

yizhihongxing

C语言实现简单员工工资管理系统

简介

本文旨在介绍如何使用C语言实现一个简单的员工工资管理系统。该系统可以用于输入员工基本信息,录入工资数据和计算每个员工的工资。其主要功能模块包括:输入员工基本信息、录入工资数据、计算员工工资、显示员工工资信息。

基本功能

  1. 输入员工基本信息:包括员工的姓名、性别、年龄、工龄等信息。

示例代码:

```c
struct employee {
char name[20];
char gender[10];
int age;
int workExperience;
};

struct employee getEmployeeInfo() {
struct employee emp;
printf("请输入员工姓名:");
scanf("%s", emp.name);
printf("请输入员工性别:");
scanf("%s", emp.gender);
printf("请输入员工年龄:");
scanf("%d", &emp.age);
printf("请输入员工工龄:");
scanf("%d", &emp.workExperience);
return emp;
}
```

  1. 录入工资数据:针对每个月的具体情况,输入员工的基本工资、加班工资、津贴、罚款等数据。

示例代码:

```c
struct salary {
float basicSalary;
float overtimeSalary;
float allowance;
float fine;
};

struct salary getSalaryInfo() {
struct salary sal;
printf("请输入员工基本工资:");
scanf("%f", &sal.basicSalary);
printf("请输入员工加班工资:");
scanf("%f", &sal.overtimeSalary);
printf("请输入员工津贴:");
scanf("%f", &sal.allowance);
printf("请输入员工罚款:");
scanf("%f", &sal.fine);
return sal;
}
```

  1. 计算员工工资:根据录入的工资数据,计算员工的每月工资。

示例代码:

```c
struct employee_salary {
struct employee emp;
struct salary sal;
float totalSalary;
};

struct employee_salary calculateEmployeeSalary(struct employee emp, struct salary sal) {
struct employee_salary empSal;
empSal.emp = emp;
empSal.sal = sal;
empSal.totalSalary = sal.basicSalary + sal.overtimeSalary + sal.allowance - sal.fine;
return empSal;
}
```

  1. 显示员工工资信息:列出所有员工的工资信息。

示例代码:

c
void displayEmployeeSalary(struct employee_salary empSal) {
printf("员工姓名:%s\n", empSal.emp.name);
printf("员工性别:%s\n", empSal.emp.gender);
printf("员工年龄:%d\n", empSal.emp.age);
printf("员工工龄:%d\n", empSal.emp.workExperience);
printf("基本工资:%f\n", empSal.sal.basicSalary);
printf("加班工资:%f\n", empSal.sal.overtimeSalary);
printf("津贴:%f\n", empSal.sal.allowance);
printf("罚款:%f\n", empSal.sal.fine);
printf("总工资:%f\n", empSal.totalSalary);
}

流程

  1. 编写代码前,先确定系统的基本功能模块。
  2. 分别编写输入员工基本信息、录入工资数据、计算员工工资、显示员工工资信息的代码。
  3. 在主方法中实现四个模块的调用。
  4. 编译运行程序。

示例代码:

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

struct employee {
    char name[20];
    char gender[10];
    int age;
    int workExperience;
};

struct salary {
    float basicSalary;
    float overtimeSalary;
    float allowance;
    float fine;
};

struct employee_salary {
    struct employee emp;
    struct salary sal;
    float totalSalary;
};

struct employee getEmployeeInfo() {
    struct employee emp;
    printf("请输入员工姓名:");
    scanf("%s", emp.name);
    printf("请输入员工性别:");
    scanf("%s", emp.gender);
    printf("请输入员工年龄:");
    scanf("%d", &emp.age);
    printf("请输入员工工龄:");
    scanf("%d", &emp.workExperience);
    return emp;
}

struct salary getSalaryInfo() {
    struct salary sal;
    printf("请输入员工基本工资:");
    scanf("%f", &sal.basicSalary);
    printf("请输入员工加班工资:");
    scanf("%f", &sal.overtimeSalary);
    printf("请输入员工津贴:");
    scanf("%f", &sal.allowance);
    printf("请输入员工罚款:");
    scanf("%f", &sal.fine);
    return sal;
}

struct employee_salary calculateEmployeeSalary(struct employee emp, struct salary sal) {
    struct employee_salary empSal;
    empSal.emp = emp;
    empSal.sal = sal;
    empSal.totalSalary = sal.basicSalary + sal.overtimeSalary + sal.allowance - sal.fine;
    return empSal;
}

void displayEmployeeSalary(struct employee_salary empSal) {
    printf("员工姓名:%s\n", empSal.emp.name);
    printf("员工性别:%s\n", empSal.emp.gender);
    printf("员工年龄:%d\n", empSal.emp.age);
    printf("员工工龄:%d\n", empSal.emp.workExperience);
    printf("基本工资:%f\n", empSal.sal.basicSalary);
    printf("加班工资:%f\n", empSal.sal.overtimeSalary);
    printf("津贴:%f\n", empSal.sal.allowance);
    printf("罚款:%f\n", empSal.sal.fine);
    printf("总工资:%f\n", empSal.totalSalary);
}

int main() {
    int numberOfEmployees;
    printf("请输入员工人数:");
    scanf("%d", &numberOfEmployees);

    struct employee_salary employeeSalaryArray[numberOfEmployees];

    for (int i = 0; i < numberOfEmployees; i++) {
        printf("请输入第 %d 个员工的信息:\n", i+1);
        struct employee emp = getEmployeeInfo();
        struct salary sal = getSalaryInfo();
        employeeSalaryArray[i] = calculateEmployeeSalary(emp, sal);
    }
    printf("\n\n");

    for (int i = 0; i < numberOfEmployees; i++) {
        displayEmployeeSalary(employeeSalaryArray[i]);
        printf("\n\n");
    }
}

总结

本文简要介绍了如何使用C语言实现一个简单的员工工资管理系统,包括输入员工基本信息、录入工资数据、计算员工工资、显示员工工资信息四个模块。在实现过程中,需要注意数据类型的定义和函数模块的调用。当然,还有很多需要完善的地方,例如数据存储、多种计算方法等。

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

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

相关文章

  • C++实现扫雷、排雷小游戏

    C++实现扫雷、排雷小游戏攻略 游戏介绍 扫雷是一种单人益智游戏,目标是在一个方块网格中排雷,并尽可能快的完成游戏。游戏规则如下: 在一个大小为M * N的矩阵中,有一些地雷分布在矩阵中,其他方块是空白的 玩家可以翻开其中一个空白方块,如果该方块旁边有雷,则游戏失败,否则该方块会显示周围的雷数 如果翻开的方块周围没有雷,则该方块的周围的方块也会被翻开,直到所…

    C 2023年5月24日
    00
  • mysql(5.6及以下)解析json的方法实例详解

    mysql(5.6及以下)解析json的方法实例详解 背景 在以往的开发中,我们通常使用MySQL来存储数据,然而在数据中存在着大量的json类型的数据,如何快速、便捷的解析json数据就变得尤为重要。本文将介绍Mysql(5.6及以下)中解析json类型数据的方法及实例。 操作步骤 使用JSON_EXTRACT()方法解析json数据 JSON_EXTRA…

    C 2023年5月23日
    00
  • 提高C++程序运行效率的10个简单方法

    提高C++程序运行效率的10个简单方法 在C++编程过程中,要保证程序的高效性和稳定性,下面提供了10个简单易行的方法来提高C++程序的运行效率。 1.使用合适的编译器 选择合适的编译器可以提高C++程序的运行速度。例如,使用gcc编译C++程序比使用Visual C++编译器的速度更快。 2.减少内存分配次数 频繁分配内存会降低程序的效率。使用内存池技术、…

    C 2023年5月22日
    00
  • C语言中如何通过指针参数返回值

    通过指针参数返回值在C语言中非常常见,通常用于需要同时返回多个值或需要改变传递给函数的参数值的情况。下面介绍一下如何通过指针参数返回值的完整攻略: 1. 定义函数时传递指针参数 通过指针参数返回值的核心方法就是在函数定义时传递一个指针或指针数组作为参数。这个指针指向想要返回的值。在函数内部,可以通过指针操作符(*)来读取或修改指针所指向的值。 以下是一个简单…

    C 2023年5月23日
    00
  • OPPO R1C手机怎么样?OPPO R1C全面评测

    OPPO R1C手机评测 硬件 外观设计 OPPO R1C外观采用玻璃和金属材质相结合的设计,相当抢眼,整体风格十分简洁大方。其中,反光玻璃面板非常亮丽,呈现出不同于其它手机的视觉冲击力。另外,机身尺寸合适,拿在手里使用非常舒适。 内部配置 OPPO R1C内部配备了骁龙615处理器+2GB内存+16GB机身存储,能够满足日常使用需求,运行流畅,游戏也可以较…

    C 2023年5月23日
    00
  • 菜鸟记录:c语言实现PAT甲级1004–Counting Leaves

        好消息:与上题的Emergency是同样的方法。坏消息:又错了&&c++真的比c方便太多太多。 A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child.…

    C语言 2023年4月17日
    00
  • C语言系统调用约定

    C语言系统调用约定 在C语言中,系统调用使得程序能够与操作系统进行交互,包括执行I/O操作、内存管理等等。C语言中的系统调用约定是指C语言程序如何调用操作系统提供的系统调用。在不同的操作系统中,系统调用的约定可能不同,因此我们需要针对不同的操作系统学习和使用不同的系统调用约定。 基本概念 在C语言中,我们可以使用syscall函数进行系统调用。syscall…

    C 2023年5月23日
    00
  • java中Class.forName的作用浅谈

    《Java中Class.forName的作用浅谈》 简介 在Java中,如果要使用一个类,通常需要先加载该类。类的加载可以分为三个阶段:加载、链接和初始化。其中,加载阶段包括找到对应的字节码文件,并把该字节码文件读入到内存中;链接阶段包括验证、准备和解析的过程;初始化阶段是类的静态变量和静态代码块首次被执行的阶段。 在某些情况下,我们需要在运行时动态地加载某…

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