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日

相关文章

  • Redis的数据存储及String类型的实现

    Redis是一款开源的高性能缓存系统,支持多种数据类型的存储,其中String类型是最简单的一种数据类型,并且使用最频繁。本文将从Redis的数据存储及String类型的实现两方面进行详细介绍。 Redis的数据存储 Redis的数据存储采用的是键值对的方式,其中键只能是字符串类型,值则可以是以下五种数据类型之一:String、List、Hash、Set、S…

    C 2023年5月22日
    00
  • C/C++实现个人收支系统的示例代码

    让我详细讲解一下“C/C++实现个人收支系统的示例代码”的完整攻略。 首先,我们需要了解个人收支系统的功能需求,一般来说,个人收支系统至少需要提供如下的功能: 记录收入支出的日期、金额和说明; 查询某一日期段内的收入和支出总额; 查询某一日期段内的收入和支出详情; 查询某一个时间点的余额; 导出收支记录。 接下来,我们可以按照模块拆分的方式逐一实现这些功能。…

    C 2023年5月23日
    00
  • C语言中如何进行文件操作?

    当我们需要在C语言程序中读取或写入文件时,我们需要使用文件操作。在C语言中,文件操作可以通过C标准库中的文件处理函数来实现。下面是文件操作的完整攻略: 打开文件 我们首先需要使用fopen()函数打开一个文件。这个函数的语法为: FILE *fopen(const char *filename, const char *mode); 其中,filename参…

    C 2023年4月27日
    00
  • 详解如何用alpine镜像做一个最小的镜像并运行c++程序

    当我们需要构建一个最小化的镜像时,通常会选择使用Alpine镜像。Alpine是一个轻量级的Linux发行版,使用musl libc作为其C库以及busybox作为其Unix工具的集合。在开发环境中使用它可以减少不必要的依赖,从而得到一个精简的镜像。 下面是使用Alpine镜像构建最小化镜像并运行C++程序的详细攻略: 步骤一:准备工作 1. 安装Docke…

    C 2023年5月23日
    00
  • PHP局部异常因子算法-Local Outlier Factor(LOF)算法的具体实现解析

    PHP局部异常因子算法-Local Outlier Factor(LOF)算法的具体实现解析 什么是Local Outlier Factor(LOF)算法 Local Outlier Factor,即局部异常因子算法,是一种用于检测数据集中的异常值的非监督学习算法。它可以发现在数据集中位置比较突出且与其相邻数据点比较远的点。 LOF算法可以对离散数据集进行处…

    C 2023年5月22日
    00
  • 首款医学智能手环c+手环使用图文教程

    首款医学智能手环c+手环使用图文教程 什么是首款医学智能手环c+ 首款医学智能手环c+是一款能够监测用户健康状况的智能手环,它能够测量用户的心率、血氧、血压等多项指标,同时还支持日常步数、距离、卡路里消耗等数据的统计。手环还具有防丢功能,支持闹钟提醒、来电提醒、信息提醒等功能。 如何使用首款医学智能手环c+ 以下是手环使用流程的详细说明: 第一步:购买手环并…

    C 2023年5月22日
    00
  • 到底如何呢?富士康Ligtning&USB-C数据线测评

    制定测试方案 在进行富士康Ligtning&USB-C数据线的测评之前,需要制定测试方案。主要需要测试以下几点: 兼容性 传输速度 做工质量 安全性能 兼容性测试 取一个iOS设备,如iPhone,连接富士康Ligtning&USB-C数据线,测试手机是否能够正常充电和传输数据。同样的,取一个安卓设备连接USB-C接口进行测试,检查是否能正常…

    C 2023年5月23日
    00
  • 一般故障排除步骤与方法

    一般故障排除步骤与方法是指在出现问题时,根据既定的步骤和方法,对系统进行排查、诊断和修复。以下是一般故障排除步骤与方法的完整攻略: 1.确认问题 提供详细信息,例如发生时间、出现的错误提示信息、是否有日志记录等。 尝试重复问题并确定是否一致。 确定问题的严重程度和影响范围。 2.收集信息 查看系统文件(日志文件、配置文件等)以及系统状态(CPU、内存)。 确…

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