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

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日

相关文章

  • springboot 全局异常处理和统一响应对象的处理方式

    Spring Boot 全局异常处理和统一响应对象的处理方式攻略 在 Spring Boot 应用程序中,异常处理是一个非常重要的部分。为了提高异常处理的效率,我们可以采用全局异常处理和统一响应对象的处理方式。在本篇文章中,我们将为大家介绍如何实现这样一个功能。 全局异常处理 通常情况下,我们会为每个 Controller 编写异常处理,这种方式效率非常低。…

    C 2023年5月22日
    00
  • C C++中实参和参数的区别

    C/C++中实参和参数的区别 在C/C++中,函数的参数有两种:形式参数和实际参数。这篇文章将会讲解这两种参数的区别,以及它们在函数调用和定义中的使用方法。 形式参数和实际参数 形式参数 在函数定义时,参数列表中声明的参数被称为形式参数。它们在函数内部作为局部变量使用,函数被调用时,会将实际参数的值传递给形式参数,以便在函数内部使用。 函数定义时形式参数的语…

    C 2023年5月10日
    00
  • C语言实现时区转换函数的实例

    C语言实现时区转换函数的实例 时区转换是编程中经常需要的一个功能。本文将为大家介绍如何使用C语言实现时区转换函数的实例,帮助大家快速掌握时区转换的实现方法。 什么是时区转换? 时区转换是将一个时间从一个时区转换到另一个时区的过程。由于地球是由多个时区组成的,因此如果在不同的时区中,同一时间点实际上在时钟上会显示不同的时间。时区转换可以让我们方便地在不同的时区…

    C 2023年5月23日
    00
  • Android实现城市选择三级联动

    Android实现城市选择三级联动攻略 在Android开发中,有时会需要实现城市选择功能,而且还需要支持三级联动,即选择省份后展示该省份下的市区列表,选择城市后展示该城市下的县区列表。这里提供一份Android实现城市选择三级联动的攻略。 一、搭建数据源 实现城市选择三级联动首先需要有一个完整的城市数据源,可以采用第三方库提供的数据,也可以自己搭建。以下是…

    C 2023年5月23日
    00
  • 一篇文章了解c++中的new和delete

    一篇文章了解C++中的new和delete 什么是new和delete 在C++中,当我们需要动态地分配内存,即在程序运行时才能确定需要分配的内存大小时,我们可以使用new和delete关键字来完成内存的申请和释放操作。 new关键字用于在堆上分配内存,而delete关键字则用于释放该内存。 new的使用方法 new的语法格式为: 指针变量 = new 数据…

    C 2023年5月23日
    00
  • Visual Studio Code (vscode) 配置C、C++环境/编写运行C、C++的教程详解(主要Windows、简要Linux)

    具体来讲,如何配置Visual Studio Code的C/C++编译环境呢?以下是详细的步骤和示例。 配置Visual Studio Code的C/C++编译环境 步骤1:安装编译器 在Windows中,常用的C/C++编译器有Microsoft Visual C++和MinGW。在操作系统为Linux时,可以使用GCC。 在Windows中安装Visua…

    C 2023年5月22日
    00
  • JavaScript调用C语言的几种方式

    JavaScript调用C语言的几种方式: WebAssembly(wasm) WebAssembly 是一个可以在多种语言中使用的虚拟机,可以进行跨编程语言的编译,目前已经成为最流行的实现方式。我们可以使用 C、C++、Rust 等语言编写 WebAssembly 模块,然后在 JavaScript 中以相似的语法引用。 示例: 下面是 C 语言示例代码,…

    C 2023年5月24日
    00
  • C语言代码规范

    一、问题引入 初入编程世界,我们不知道什么叫做好代码。一切以实现功能和快速上线项目为主,但编程经验增加,发现代码越来越难写,越来越难改。导致这样的原因是没有遵循一般性的编程规则或则没有良好的编程风格。俗话说:“无规矩不成方圆”,在编程水平上来后,就更应该遵循规则。 傻瓜都能写出计算机可以理解的代码。唯有能写出人类容易理解的代码的,才是优秀的程序员 好代码的检…

    C语言 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部