C语言实现职工管理系统

C语言实现职工管理系统完整攻略

1. 概述

C语言实现职工管理系统的主要目的是建立一个能够简单快速地管理职工信息的系统。该系统可以实现添加、删除、修改、查询职工信息等功能。

2. 设计思路

2.1 数据结构设计

我们可以使用如下的数据结构来存储职工信息:

typedef struct Employee
{
    int num;        // 职工编号
    char name[20];  // 职工姓名
    int age;        // 职工年龄
    char sex[5];    // 职工性别
    float salary;   // 职工工资
} Employee;

这个结构体定义了职工的一些基本信息,包括编号、姓名、年龄、性别和工资等。

2.2 界面设计

我们可以使用控制台命令行来实现职工管理系统的界面。通过在控制台输出不同的信息,来实现职工管理系统的各项功能。

3. 实现过程

3.1 主函数

在主函数中,我们可以首先定义一个数组来存储职工信息,然后通过读取文件的方式初始化数组。接下来,根据用户的选择,调用不同的函数来处理用户的输入。

示例代码:

int main()
{
    Employee emps[1000];
    int n = readFromFile("data.txt", emps);
    int choice;
    do
    {
        printf("===============\n");
        printf("请选择操作:\n");
        printf("1. 添加职工信息\n");
        printf("2. 删除职工信息\n");
        printf("3. 修改职工信息\n");
        printf("4. 查询职工信息\n");
        printf("5. 退出系统\n");
        printf("===============\n");
        scanf("%d", &choice);
        switch (choice)
        {
            case 1:
                addEmployee(emps, &n);
                break;
            case 2:
                deleteEmployee(emps, &n);
                break;
            case 3:
                modifyEmployee(emps, &n);
                break;
            case 4:
                queryEmployee(emps, n);
                break;
            case 5:
                printf("谢谢使用,下次再见!\n");
                return 0;
            default:
                printf("请输入正确的数字(1-5):\n");
                break;
        }
    } while (1);
}

3.2 添加职工信息

添加职工信息需要输入职工的基本信息,然后将该信息添加到数组中。

示例代码:

void addEmployee(Employee emps[], int *n)
{
    printf("请输入职工编号:\n");
    scanf("%d", &emps[*n].num);
    printf("请输入职工姓名:\n");
    scanf("%s", emps[*n].name);
    printf("请输入职工年龄:\n");
    scanf("%d", &emps[*n].age);
    printf("请输入职工性别:\n");
    scanf("%s", emps[*n].sex);
    printf("请输入职工工资:\n");
    scanf("%f", &emps[*n].salary);
    (*n)++;
    printf("添加成功!\n");
}

3.3 删除职工信息

删除职工信息需要输入职工的编号,然后在数组中查找该编号并删除该职工信息。

示例代码:

void deleteEmployee(Employee emps[], int *n)
{
    int num;
    printf("请输入需要删除的职工编号:\n");
    scanf("%d", &num);
    int i;
    for (i = 0; i < *n; i++)
    {
        if (emps[i].num == num)
        {
            int j;
            for (j = i; j < *n - 1; j++)
            {
                emps[j] = emps[j + 1];
            }
            (*n)--;
            printf("删除成功!\n");
            return;
        }
    }
    printf("职工编号不存在!\n");
}

3.4 修改职工信息

修改职工信息需要输入职工的编号,然后在数组中查找该编号并修改该职工信息的相关内容。

示例代码:

void modifyEmployee(Employee emps[], int *n)
{
    int num;
    printf("请输入需要修改的职工编号:\n");
    scanf("%d", &num);
    int i;
    for (i = 0; i < *n; i++)
    {
        if (emps[i].num == num)
        {
            printf("请输入职工姓名(原姓名:%s):\n", emps[i].name);
            scanf("%s", emps[i].name);
            printf("请输入职工年龄(原年龄:%d):\n", emps[i].age);
            scanf("%d", &emps[i].age);
            printf("请输入职工性别(原性别:%s):\n", emps[i].sex);
            scanf("%s", emps[i].sex);
            printf("请输入职工工资(原工资:%.2f):\n", emps[i].salary);
            scanf("%f", &emps[i].salary);
            printf("修改成功!\n");
            return;
        }
    }
    printf("职工编号不存在!\n");
}

3.5 查询职工信息

查询职工信息可以按照职工编号或者职工姓名来查询。

示例代码:

void queryEmployee(Employee emps[], int n)
{
    int choice;
    printf("请选择查询方式:\n");
    printf("1. 按照职工编号查询\n");
    printf("2. 按照职工姓名查询\n");
    scanf("%d", &choice);
    if (choice == 1)
    {
        int num;
        printf("请输入职工编号:\n");
        scanf("%d", &num);
        int i;
        for (i = 0; i < n; i++)
        {
            if (emps[i].num == num)
            {
                printf("职工编号:%d 姓名:%s 年龄:%d 性别:%s 工资:%.2f\n",
                       emps[i].num, emps[i].name, emps[i].age, emps[i].sex, emps[i].salary);
                return;
            }
        }
        printf("职工编号不存在!\n");
    }
    else if (choice == 2)
    {
        char name[20];
        printf("请输入职工姓名:\n");
        scanf("%s", name);
        int i;
        for (i = 0; i < n; i++)
        {
            if (strcmp(emps[i].name, name) == 0)
            {
                printf("职工编号:%d 姓名:%s 年龄:%d 性别:%s 工资:%.2f\n",
                       emps[i].num, emps[i].name, emps[i].age, emps[i].sex, emps[i].salary);
            }
        }
    }
    else
    {
        printf("请输入正确的数字(1-2):\n");
    }
}

3.6 读写文件

程序退出之前需要将数组中的数据写入文件,以便下次启动程序时能够继续使用。

示例代码:

int readFromFile(char *filename, Employee emps[])
{
    FILE *fp = fopen(filename, "r");
    if (fp == NULL)
    {
        return 0;
    }
    int n = 0;
    while (!feof(fp))
    {
        fscanf(fp, "%d %s %d %s %f", &emps[n].num, emps[n].name, &emps[n].age, emps[n].sex, &emps[n].salary);
        n++;
    }
    fclose(fp);
    return n;
}

void writeToFile(char *filename, Employee emps[], int n)
{
    FILE *fp = fopen(filename, "w");
    int i;
    for (i = 0; i < n; i++)
    {
        fprintf(fp, "%d %s %d %s %f\n", emps[i].num, emps[i].name, emps[i].age, emps[i].sex, emps[i].salary);
    }
    fclose(fp);
}

4. 总结

本文主要介绍了如何使用C语言实现职工管理系统,包括数据结构设计、界面设计和主要功能的实现过程。通过这个例子,我们可以更好地理解C语言的基本语法和编程思路。在开发过程中,也可以根据实际情况进行修改和扩展,让程序更加实用和高效。

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

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

相关文章

  • 在SpringBoot中注入RedisTemplate实例异常的解决方案

    在SpringBoot中注入RedisTemplate实例异常的解决方案: 导入 Redis Starter 依赖 在 Spring Boot 项目的 pom.xml 文件中,添加 Redis Starter 依赖。 <dependency> <groupId>org.springframework.boot</groupId&…

    C 2023年5月22日
    00
  • C++实现图书管理系统最新版

    C++实现图书管理系统最新版 简介 本文将会详细讲解如何使用C++实现一个简单的图书管理系统。此系统模拟了图书馆的基本管理功能,具有管理图书、借阅图书、归还图书等功能。 实现步骤 创建一个C++项目,并在项目中新建一个名为 book.h 的头文件。 在 book.h 中定义一个 Book 结构体,包含以下属性:* int book_id:图书编号* stri…

    C 2023年5月23日
    00
  • 黑客帝国数字雨效果VC6源代码分享

    标题:黑客帝国数字雨效果VC6源代码分享 简介 黑客帝国数字雨效果是一种很有趣的效果,本篇文章将分享数字雨效果VC6源代码,这是一篇针对VC6的C++代码,可供初学者学习参考。 实现过程 我们需要在VC6中建立一个win32应用程序。 步骤一:设置窗口 首先,我们需要设置窗口的大小和标题。这个可以在WimMain函数中完成。如下所示: int WINAPI …

    C 2023年5月24日
    00
  • Cocos2d-x中获取系统时间和随机数实例

    获取系统时间: 在 Cocos2d-x 中获取系统时间可以使用 C++ 标准库中的 ctime 头文件,用 std::time() 函数获取当前系统时间的时间戳,再将时间戳转换为字符串以实现格式化输出。 示例代码: #include <ctime> #include <string> … std::time_t now = std…

    C 2023年5月30日
    00
  • c++调用windows键盘代码详情

    简介 c++语言可以通过Win32 API调用Windows键盘代码,以实现对Windows系统的键盘控制。本文将详细介绍c++调用Windows键盘代码的实现方法,并给出两个示例说明。 实现方法 c++调用Windows键盘代码主要基于以下两个Win32 API: keybd_event:模拟按下或释放一个键,且可以模拟组合键 SendInput:将输入事…

    C 2023年5月24日
    00
  • C语言全面细致讲解文件操作

    C语言全面细致讲解文件操作攻略 为了进行文件操作,C语言提供了丰富的库函数,其中包括了对文件的读写操作、文件指针的移动、文件属性的获取等操作。在本攻略中,我们将讲解C语言中的文件操作,涵盖文件的打开、读写、关闭等方面,以及常用的文件指针操作和文件属性获取。 文件的打开 在C语言中,文件的打开通常使用fopen()函数,具体的使用方法如下: FILE *fop…

    C 2023年5月23日
    00
  • 02-VS调试以及Qt基本使用

    VS调试以及Qt基本使用 1.汇编语言 1.1 VS中C语言嵌套汇编代码(了解) #include <stdio.h> int main() { //定义整型变量a, b, c int a; int b; int c; __asm { mov a, 3 //3的值放在a对应内存的位置 mov b, 4 //4的值放在b对应内存的位置 mov ea…

    C语言 2023年4月18日
    00
  • c语言中回调函数的使用以及实际作用详析

    C语言中回调函数的使用以及实际作用详析 什么是回调函数 回调函数是一种通过函数指针调用的函数。当函数需要特定的行为时,可以将一个函数指针(回调函数)作为参数传递给另一个函数。当该函数发生相应的事件时,调用这个函数指针,从而使回调函数执行。 回调函数的作用 回调函数在C语言中广泛使用,主要作用是在特定事件发生时执行自定义的操作。比如,当我们使用标准库函数qso…

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