C语言实现简单职工信息管理系统

yizhihongxing

C语言实现简单职工信息管理系统

1. 系统功能

本职工信息管理系统主要实现以下功能:

  • 添加职工
  • 显示职工信息
  • 删除职工
  • 修改职工信息
  • 查找职工信息
  • 排序职工信息
  • 清空职工信息
  • 退出系统

2. 系统设计

本系统主要由以下几个部分组成:

  • 职工结构体定义
  • 菜单函数实现
  • 添加职工函数实现
  • 显示职工信息函数实现
  • 删除职工函数实现
  • 修改职工信息函数实现
  • 查找职工信息函数实现
  • 排序职工信息函数实现
  • 清空职工信息函数实现
  • 主函数实现

3. 代码实现

3.1 职工结构体定义

typedef struct Worker{
    int id;        // 职工编号
    char name[20]; // 职工姓名
    int age;       // 职工年龄
    int wage;      // 职工工资
}Worker;

3.2 菜单函数实现

void show_menu(){
    printf("**********************\n");
    printf("***** 1. 添加职工 *****\n");
    printf("***** 2. 显示职工 *****\n");
    printf("***** 3. 删除职工 *****\n");
    printf("***** 4. 修改职工 *****\n");
    printf("***** 5. 查找职工 *****\n");
    printf("***** 6. 排序职工 *****\n");
    printf("***** 7. 清空职工 *****\n");
    printf("***** 8. 退出系统 *****\n");
    printf("**********************\n");
}

3.3 添加职工函数实现

void add_worker(Worker* worker_arr, int* worker_num){
    printf("请输入职工编号:");
    scanf("%d", &(worker_arr[*worker_num].id));
    printf("请输入职工姓名:");
    scanf("%s", worker_arr[*worker_num].name);
    printf("请输入职工年龄:");
    scanf("%d", &(worker_arr[*worker_num].age));
    printf("请输入职工工资:");
    scanf("%d", &(worker_arr[*worker_num].wage));
    (*worker_num)++;
    printf("添加成功!\n");
}

3.4 显示职工信息函数实现

void show_workers(Worker* worker_arr, int worker_num){
    if(worker_num == 0){
        printf("系统中没有职工信息!\n");
        return;
    }
    printf("编号\t姓名\t年龄\t工资\n");
    for(int i = 0; i < worker_num; i++){
        printf("%d\t%s\t%d\t%d\n", worker_arr[i].id, worker_arr[i].name, worker_arr[i].age, worker_arr[i].wage);
    }
}

3.5 删除职工函数实现

void delete_worker(Worker* worker_arr, int* worker_num){
    int id;
    printf("请输入要删除的职工编号:");
    scanf("%d", &id);
    int find_idx = -1;
    for(int i = 0; i < *worker_num; i++){
        if(worker_arr[i].id == id){
            find_idx = i;
            break;
        }
    }
    if(find_idx == -1){
        printf("系统中找不到该职工信息!\n");
        return;
    }
    for(int i = find_idx; i < *worker_num - 1; i++){
        worker_arr[i] = worker_arr[i + 1];
    }
    (*worker_num)--;
    printf("删除职工成功!\n");
}

3.6 修改职工信息函数实现

void modify_worker(Worker* worker_arr, int worker_num){
    int id;
    printf("请输入要修改的职工编号:");
    scanf("%d", &id);
    int find_idx = -1;
    for(int i = 0; i < worker_num; i++){
        if(worker_arr[i].id == id){
            find_idx = i;
            break;
        }
    }
    if(find_idx == -1){
        printf("系统中找不到该职工信息!\n");
        return;
    }
    printf("职工当前信息为:姓名:%s 年龄:%d 工资:%d\n", worker_arr[find_idx].name, worker_arr[find_idx].age, worker_arr[find_idx].wage);
    printf("请输入职工新姓名:");
    scanf("%s", worker_arr[find_idx].name);
    printf("请输入职工新年龄:");
    scanf("%d", &(worker_arr[find_idx].age));
    printf("请输入职工新工资:");
    scanf("%d", &(worker_arr[find_idx].wage));
    printf("修改职工信息成功!\n");
}

3.7 查找职工信息函数实现

void find_worker(Worker* worker_arr, int worker_num){
    char name[20];
    printf("请输入要查找的职工姓名:");
    scanf("%s", name);
    int count = 0;
    for(int i = 0; i < worker_num; i++){
        if(strcmp(worker_arr[i].name, name) == 0){
            printf("职工信息为:编号:%d 姓名:%s 年龄:%d 工资:%d\n",
                    worker_arr[i].id, worker_arr[i].name, worker_arr[i].age, worker_arr[i].wage);
            count++;
        }
    }
    if(count == 0){
        printf("系统中找不到该职工信息!\n");
    }else{
        printf("共找到%d条职工信息\n", count);
    }
}

3.8 排序职工信息函数实现

void sort_worker(Worker* worker_arr, int worker_num){
    for(int i = 0; i < worker_num - 1; i++){
        for(int j = i + 1; j < worker_num; j++){
            if(worker_arr[i].id > worker_arr[j].id){
                Worker temp = worker_arr[i];
                worker_arr[i] = worker_arr[j];
                worker_arr[j] = temp;
            }
        }
    }
    printf("职工信息已排序!\n");
}

3.9 清空职工信息函数实现

void clear_worker(Worker* worker_arr, int* worker_num){
    *worker_num = 0;
    printf("职工信息已清空!\n");
}

3.10 主函数实现

int main(){
    int choice = 0;
    Worker worker_arr[SIZE];
    int worker_num = 0;
    while(1){
        show_menu();
        printf("请输入您的选择:");
        scanf("%d", &choice);
        switch(choice){
            case 1://添加职工
                add_worker(worker_arr, &worker_num);
                break;
            case 2://显示职工信息
                show_workers(worker_arr, worker_num);
                break;
            case 3://删除职工
                delete_worker(worker_arr, &worker_num);
                break;
            case 4://修改职工信息
                modify_worker(worker_arr, worker_num);
                break;
            case 5://查找职工信息
                find_worker(worker_arr, worker_num);
                break;
            case 6://排序职工信息
                sort_worker(worker_arr, worker_num);
                break;
            case 7://清空职工信息
                clear_worker(worker_arr, &worker_num);
                break;
            case 8://退出系统
                printf("欢迎下次使用!\n");
                exit(0);
                break;
            default:
                printf("输入有误,请重新输入!\n");
                break;
        }
        getchar();
        printf("请按回车键继续...\n");
        getchar();
        system("clear");//清屏命令,适用于 Linux 系统
    }
    return 0;
}

4. 示例

4.1 添加职工示例

输入:1

输出:

请输入职工编号:1001
请输入职工姓名:张三
请输入职工年龄:30
请输入职工工资:5000
添加成功!

4.2 显示职工信息示例

输入:2

输出:

编号  姓名  年龄  工资
1001  张三  30    5000

4.3 删除职工示例

输入:3

输出:

请输入要删除的职工编号:1001
删除职工成功!

4.4 修改职工信息示例

输入:4

输出:

请输入要修改的职工编号:1001
职工当前信息为:姓名:张三 年龄:30 工资:5000
请输入职工新姓名:李四
请输入职工新年龄:25
请输入职工新工资:6000
修改职工信息成功!

4.5 查找职工信息示例

输入:5

输出:

请输入要查找的职工姓名:李四
职工信息为:编号:1001 姓名:李四 年龄:25 工资:6000
共找到1条职工信息

4.6 排序职工信息示例

输入:6

输出:

职工信息已排序!

4.7 清空职工信息示例

输入:7

输出:

职工信息已清空!

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

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

相关文章

  • 计时器的time_t和clock_t 的两种实现方法(推荐)

    计时器的time_t和clock_t的两种实现方法(推荐) 计时器是一个非常实用的工具,在很多应用场景中都得到了广泛的应用。time_t和clock_t是两种常见的计时器类型,它们都可以用于测量时间的长度。本文将详细介绍这两种类型的实现方法,以供大家参考。 time_t的实现方法 time_t是标准C库中的一种数据类型,它代表了从1970年1月1日零时整到给…

    C 2023年5月23日
    00
  • 基于c++ ege图形库实现五子棋游戏

    基于C++ ege图形库实现五子棋游戏攻略 五子棋游戏是一种非常经典的桌面游戏,为了帮助大家更好地了解如何使用C++ ege图形库实现五子棋游戏,本文将提供一份详细的攻略。 前置知识 在阅读本攻略之前,你应该已经有了一些C++的基础知识。同时,你需要了解ege图形库的基本用法,包括绘制图形、鼠标事件等。 实现步骤 1. 绘制棋盘 在绘制棋盘之前,我们需要先确…

    C 2023年5月22日
    00
  • 深入理解C++的对象模型

    深入理解C++的对象模型 什么是C++的对象模型? C++是一种面向对象的编程语言,对象模型是C++类的组织方式,通过对象模型,C++实现了封装、继承和多态等面向对象的特性。 在C++中,每个对象都包含一个虚函数表指针,这个指针指向一个虚函数表,其中存储着该类对象的虚函数的地址。而类中的非静态数据成员则按照其声明的顺序依次排列在对象内存中。 C++的内存布局…

    C 2023年5月22日
    00
  • C语言变长数组 struct中char data[0]的用法详解

    针对你提出的问题,“C语言变长数组 struct中char data[0]的用法详解”,我将整理一份完整攻略,希望能够帮到你。 什么是变长数组 变长数组(Variable Length Array,VLA)是C语言中一种较为特殊的数组类型,它的长度是在运行时动态确定的。具体地,变长数组的长度可以根据程序运行时的需要进行调整。 需要注意的是,变长数组并不是标准…

    C 2023年5月30日
    00
  • 简介C/C++预处理器的一些工作

    下面是详细的攻略: 简介C/C++预处理器的一些工作 预处理器是一种在编译源代码之前执行的程序,它实现了一些特殊的功能,例如宏替换、条件编译以及包含文件等操作。下面我们将详细讲解C/C++预处理器的一些工作。 宏替换 宏替换是预处理器的一个重要功能,它可以将代码中的宏名称替换为相应的宏值。宏定义可以使用#define关键字进行定义,例如: #define P…

    C 2023年5月23日
    00
  • C++深入探究类与对象之友元与运算符重载

    C++深入探究类与对象之友元与运算符重载 友元(friend)是 C++ 中比较特殊的概念,它可以使一个类中的非成员函数访问类的私有成员,非常适合于一些特殊的应用场景。本文将深入讲解 C++ 中友元的使用方法并结合示例进行说明。 友元的概念 在 C++ 中,我们可以使用关键字 friend 定义友元,其作用是允许其他类或者函数访问该类的私有成员。简而言之,友…

    C 2023年5月22日
    00
  • .cgd是什么文件,cgd文件用什么程序打开和删除的方法

    .cgd是一个加密的文件格式,通常是由“加密工具”或“加密驱动器”创建的。这种文件格式被用于保护个人或机密的数据,如个人照片、视频、文档等。 CGD文件格式 .cgd文件格式使用AES 256位进行加密,这使得文件在被传输或存储时变得更加安全可靠。 打开CGD文件 .cgd文件必须通过相应的软件才能被打开。这些软件被称为“加密工具”或“加密驱动器”。 我们推…

    C 2023年5月23日
    00
  • VS Code C++环境的搭建过程

    下面是VS Code C++环境的搭建过程。 环境准备 首先需要安装以下软件:- Visual Studio Code:https://code.visualstudio.com/- MinGW:http://www.mingw.org/ 安装过程不再赘述,安装好以上软件后,我们可以开始配置VS Code C++环境。 配置C++环境 打开Visual St…

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