学生信息管理系统

学生信息管理系统

该系统使用了一维以及二维数组进行数据存储,switch case进行主菜单的选择,ids作为学生的主键,for循环进行对学生信息的打印输出,循环遍历进行学号的匹配来查询相应学生的信息。删除学生信息是在查询的基础上将查询到的学生用下一个学生的信息覆盖,依此来进行学生信息的删除。修改按照学号查找到学生信息,在键入新的信息将其覆盖。

详细代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (int argc, const char *argv[]) {
    // 定义最大学生数量
    int max_students = 100;
    
    // 定义学生信息存储的数组和变量
    int ids[1000];
    char names[100][50];
    char classes[100][20];
    int num_students = 0;
    int choice, id, index;

    // 主菜单
    while (1) {
        printf("----------------------------------\n");
        printf("----------1.查看所有学生信息------\n");
        printf("----------2.增加学生信息----------\n");
        printf("----------3.删除学生信息----------\n");
        printf("----------4.修改学生信息----------\n");
        printf("----------5.查找学生信息----------\n");
        printf("----------6.退出------------------\n");
        printf("----------------------------------\n");

        printf("请输入序号:\n");
        scanf("%d", &choice);

        switch (choice) {
            case 1: // 查看所有学生信息
                if (num_students == 0) {
                    printf("没有学生信息\n");
                } else {
                    for (int i = 0; i < num_students; i++) {
                        printf("ID: %d, 姓名: %s, 班级: %s\n", ids[i], names[i], classes[i]);
                    }
                }
                break;

            case 2: // 增加学生信息
                {
                    int count;
                    printf("请输入要添加的学生数量 (最大 %d): ", max_students - num_students);
                    scanf("%d", &count);

                    if (count > 0 && count <= max_students - num_students) {
                        for (int i = 0; i < count; i++) {
                            printf("输入第 %d 个学生信息\n", num_students + 1);
                            printf("请输入学生ID: ");
                            scanf("%d", &ids[num_students]);
                            printf("请输入学生姓名: ");
                            scanf("%s", names[num_students]);
                            printf("请输入学生班级: ");
                            scanf("%s", classes[num_students]);
                            num_students++;
                        }
                        printf("学生信息已添加\n");
                    } else {
                        printf("输入数量无效,最多只能添加 %d 个学生\n", max_students - num_students);
                    }
                }
                break;

            case 3: // 删除学生信息
                // 显示所有学生信息
                if (num_students == 0) {
                    printf("没有学生信息\n");
                } else {
                    printf("当前所有学生信息:\n");
                    for (int i = 0; i < num_students; i++) {
                        printf("ID: %d, 姓名: %s, 班级: %s\n", ids[i], names[i], classes[i]);
                    }
                }

                printf("请输入要删除的学生ID: ");
                scanf("%d", &id);
                {
                    int found = 0;
                    for (index = 0; index < num_students; index++) {
                        if (ids[index] == id) {
                            for (int i = index; i < num_students - 1; i++) {
                                ids[i] = ids[i + 1];
                                strcpy(names[i], names[i + 1]);
                                strcpy(classes[i], classes[i + 1]);
                            }
                            num_students--;
                            printf("学生信息已删除\n");
                            found = 1;
                            break;
                        }
                    }
                    if (!found) {
                        printf("未找到学生ID为 %d 的学生\n", id);
                    }
                }
                break;

            case 4: // 修改学生信息
                printf("请输入要修改的学生ID: ");
                scanf("%d", &id);
                {
                    int found = 0;
                    for (index = 0; index < num_students; index++) {
                        if (ids[index] == id) {
                            printf("请输入新的学生姓名: ");
                            scanf("%s", names[index]);
                            printf("请输入新的学生班级: ");
                            scanf("%s", classes[index]);
                            printf("学生信息已更新\n");
                            found = 1;
                            break;
                        }
                    }
                    if (!found) {
                        printf("未找到学生ID为 %d 的学生\n", id);
                    }
                }
                break;

            case 5: // 查找学生信息
                printf("请输入要查找的学生ID: ");
                scanf("%d", &id);
                {
                    int found = 0;
                    for (index = 0; index < num_students; index++) {
                        if (ids[index] == id) {
                            printf("学生ID: %d, 姓名: %s, 班级: %s\n", ids[index], names[index], classes[index]);
                            found = 1;
                            break;
                        }
                    }
                    if (!found) {
                        printf("未找到学生ID为 %d 的学生\n", id);
                    }
                }
                break;

            case 6: // 退出
                return 0;

            default:
                printf("无效的选择,请重新输入\n");
        }
    }

    return 0;
}

演示:

----------------------------------
----------1.查看所有学生信息------
----------2.增加学生信息----------
----------3.删除学生信息----------
----------4.修改学生信息----------
----------5.查找学生信息----------
----------6.退出------------------
----------------------------------
请输入序号:
1
没有学生信息
----------------------------------
----------1.查看所有学生信息------
----------2.增加学生信息----------
----------3.删除学生信息----------
----------4.修改学生信息----------
----------5.查找学生信息----------
----------6.退出------------------
----------------------------------
请输入序号:
2
请输入要添加的学生数量 (最大 100): 2
输入第 1 个学生信息
请输入学生ID: 1
请输入学生姓名: 张三丰
请输入学生班级: 1
输入第 2 个学生信息
请输入学生ID: 2
请输入学生姓名: 张无忌
请输入学生班级: 1
学生信息已添加
----------------------------------
----------1.查看所有学生信息------
----------2.增加学生信息----------
----------3.删除学生信息----------
----------4.修改学生信息----------
----------5.查找学生信息----------
----------6.退出------------------
----------------------------------
请输入序号:
1
ID: 1, 姓名: 张三丰, 班级: 1
ID: 2, 姓名: 张无忌, 班级: 1
----------------------------------
----------1.查看所有学生信息------
----------2.增加学生信息----------
----------3.删除学生信息----------
----------4.修改学生信息----------
----------5.查找学生信息----------
----------6.退出------------------
----------------------------------
请输入序号:
4
请输入要修改的学生ID: 1
请输入新的学生姓名: 谢逊
请输入新的学生班级: 2
学生信息已更新
----------------------------------
----------1.查看所有学生信息------
----------2.增加学生信息----------
----------3.删除学生信息----------
----------4.修改学生信息----------
----------5.查找学生信息----------
----------6.退出------------------
----------------------------------
请输入序号:
1
ID: 1, 姓名: 谢逊, 班级: 2
ID: 2, 姓名: 张无忌, 班级: 1
----------------------------------
----------1.查看所有学生信息------
----------2.增加学生信息----------
----------3.删除学生信息----------
----------4.修改学生信息----------
----------5.查找学生信息----------
----------6.退出------------------
----------------------------------
请输入序号:
3
当前所有学生信息:
ID: 1, 姓名: 谢逊, 班级: 2
ID: 2, 姓名: 张无忌, 班级: 1
请输入要删除的学生ID: 1
学生信息已删除
----------------------------------
----------1.查看所有学生信息------
----------2.增加学生信息----------
----------3.删除学生信息----------
----------4.修改学生信息----------
----------5.查找学生信息----------
----------6.退出------------------
----------------------------------
请输入序号:
1
ID: 2, 姓名: 张无忌, 班级: 1
----------------------------------
----------1.查看所有学生信息------
----------2.增加学生信息----------
----------3.删除学生信息----------
----------4.修改学生信息----------
----------5.查找学生信息----------
----------6.退出------------------
----------------------------------
请输入序号:
5
请输入要查找的学生ID: 2
学生ID: 2, 姓名: 张无忌, 班级: 1
----------------------------------
----------1.查看所有学生信息------
----------2.增加学生信息----------
----------3.删除学生信息----------
----------4.修改学生信息----------
----------5.查找学生信息----------
----------6.退出------------------
----------------------------------
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值