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日

相关文章

  • 详解C#byte数组怎么传入C

    要将C#编写的byte数组传入C语言程序中,需要进行一定的处理和转换。下面是具体的步骤: 1. 编写C语言函数 首先,我们需要在C文件中编写对应的函数,接收C#传入的byte数组,并进行适当的处理。下面是一个简单的示例: // 这里是C语言的函数定义,名字可以自取 void processByteArray(unsigned char *byte_array…

    C 2023年5月23日
    00
  • Windows7开机提示checking file system on c的两种原因分析

    下面是“Windows7开机提示checking file system on c的两种原因分析”的完整攻略。 1. 背景介绍 “checking file system on c”是较为常见的Windows7开机提示之一,意味着系统正在检查C盘文件系统,通常会伴随着进度百分比的显示。检查文件系统是系统自我保护的一种机制,目的是检查磁盘上的文件系统以确保数据…

    C 2023年5月23日
    00
  • C语言用指针支持栈

    C语言用指针支持栈的完整使用攻略 栈是一种常见的数据结构,在C语言中可以使用指针来支持栈。下面是用指针实现栈的完整使用攻略: 数据结构 栈是一种后进先出(LIFO)的数据结构,可以用数组或链表实现。这里我们使用数组实现栈。 定义栈结构体: #define MAXSIZE 10 // 栈的容量 typedef struct stack { int data[M…

    C 2023年5月9日
    00
  • C语言 文件的随机读写详解及示例代码

    C语言文件的随机读写是一项重要的编程技巧,可以帮助你在处理大型文件时准确地定位和读取其中特定的数据。下面,我将为您提供完整的攻略,涉及的内容包括: 打开文件并定义文件指针; 利用fread()函数进行随机读取文件; 利用fwrite()函数进行随机写入文件; 通过fclose()函数关闭文件。 打开文件并定义文件指针 在C语言中,打开文件需要使用fopen(…

    C 2023年5月24日
    00
  • 从零学习构造系统之bazel示例详解

    从零学习构造系统之bazel示例详解 简介 本文将详细讲解使用bazel构建系统的过程。Bazel是由Google开发的构建工具,其目的是为了更快、更可靠地构建软件。Bazel不仅支持多种语言的构建,如Java、C++、Python等等,而且具有增量构建和缓存等强大的功能。 安装Bazel 首先,我们需要安装Bazel。可以在Bazel的官方网站(https…

    C 2023年5月23日
    00
  • C语言和Objective C的区别

    下面是详细讲解“C语言和ObjectiveC的区别”的完整使用攻略。 C语言和Objective-C的区别 概述 C语言是一种面向过程的编程语言,它没有面向对象的特性,而Objective-C则是C语言的扩展,增加了面向对象的特性。Objective-C是苹果公司的官方语言,主要用于iOS和MacOSX操作系统的开发。 区别 语法差异 C语言使用结构体来实现…

    C 2023年5月10日
    00
  • Python解析JSON对象的全过程记录

    Python解析JSON对象的全过程记录 什么是JSON格式 JSON(JavaScript Object Notation)是JavaScript对象表示法。它是一种轻量级的数据交换格式。JSON是一种数据格式,类似于XML格式,但是更加轻量级,易于阅读和编写。JSON格式数据在存储和传输数据时具有很大的优势。JSON格式是由JavaScript语言发展而…

    C 2023年5月23日
    00
  • python数据封装json格式数据

    下面是关于Python数据封装为JSON格式数据的完整攻略。 什么是JSON格式数据 JSON(JavaScript Object Notation)是一种轻量级的文本数据交换格式,易于阅读和编写,同时也易于机器解析和生成,基于JavaScript语言的一个子集,可以表示数据结构、字符串、数字、布尔值以及null。 Python数据封装为JSON格式数据 在…

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