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日

相关文章

  • C++简单集合类的实现方法

    C++简单集合类的实现方法 什么是集合类? 集合类是数据结构中的一种,用来存储一组相同类型的数据项。集合类可以快速的对其中的数据进行添加、删除、查找、排序等操作。在C++中,STL中的集合类就是其中之一。 集合类实现原理 在实现一个集合类时,我们可以使用数组、链表、哈希表等数据结构。不过,在这里我们使用了一个常用的数据结构:红黑树。 红黑树是一种自平衡二叉搜…

    C 2023年5月23日
    00
  • Linux中生成Core Dump系统异常信息记录文件的教程

    生成Core Dump文件一般用于分析程序在运行过程中出现的异常情况,其中包含了详细的系统异常信息。下面是在Linux系统中生成Core Dump文件的教程: 1. 设置ulimit值 在生成Core Dump文件前,要先设置ulimit值,其中ulimit -c设置生成Core Dump文件的大小(单位:KB),ulimit -S -c 0表示不生成任何C…

    C 2023年5月23日
    00
  • 求斐波那契(Fibonacci)数列通项的七种实现方法

    求斐波那契数列通项的七种实现方法 方法一:递归 斐波那契数列的递推公式为:F(n) = F(n-1) + F(n-2),为了求得第 n 个斐波那契数,可以通过递归求解,但是递归实现时间复杂度为 O(2^n),随着 n 的增大,运行效率会非常低下。 def fib_recursion(n): if n <= 1: return n return fib_…

    C 2023年5月22日
    00
  • C语言库的封装和使用方法总结

    C语言库的封装和使用方法总结 C语言是一门非常强大的编程语言,但是它并没有像Java或Python这样的大量内置函数和库。因此,在C语言中,我们需要使用一些标准库和第三方库,来帮助我们更便捷地进行编程。 C语言库的封装方法 C语言库的封装,一般需要我们按照以下步骤进行: 封装函数 封装结构体 封装头文件 其中,封装函数是最为常见的。我们可以把一些常用的函数进…

    C 2023年5月23日
    00
  • C语言实现简单猜数字小游戏

    C语言实现简单猜数字小游戏攻略 游戏规则 在这个简单的猜数字小游戏中,计算机会随机生成一个1到100之间的数字,玩家需要通过不断猜测来猜出这个数字。每猜一个数字,计算机都会告诉玩家这个数字是猜大了还是猜小了,直到玩家猜中为止。 实现步骤 步骤一:获取随机数 使用C语言标准库stdlib.h中的rand()函数来获取一个1到100之间的随机数,这可以通过调用r…

    C 2023年5月23日
    00
  • 你知道C++中new和delete为什么要匹配使用吗

    当我们在使用 C++ 时,经常使用 new 和 delete 这两个运算符来进行动态内存的分配和释放。而这两个函数必须要配对使用。 为什么要匹配使用new和delete 在使用 new 分配内存时,系统会分配一块合适大小的内存空间,并返回一个指向该空间的指针。这时如果使用 delete 将该指针所指向的内存释放掉,但是如果后续仍然有程序对该指针进行操作,就会…

    C 2023年5月22日
    00
  • C++中string类的常用方法实例总结

    C++中string类的常用方法实例总结 1. 概述 在C++中,字符串类型数据可以使用char数组和string类来实现。虽然char数组是C语言中常用的字符串表示方式,但是由于其操作起来非常麻烦,因此C++中更推荐使用string类。 C++中的string类提供了多种方法来处理字符串数据。本文将从常用方法的角度,总结并讲解C++中string类的一些常…

    C 2023年5月23日
    00
  • 如何用C语言画一个“圣诞树”

    下面是如何用C语言画一个圣诞树的攻略: 步骤一:准备工作 新建一个C语言文件,例如“christmas_tree.c”; 导入所需的头文件; 示例代码: #include<stdio.h> #include<windows.h> 步骤二:绘制圣诞树的主体 定义圣诞树的高度和底部宽度,例如height和width; 循环绘制每一行的叶子…

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