学生管理系统(C语言版)

c 复制代码
#include <stdio.h>
#include <string.h>

#define MAX_STUDENTS 100

struct Student {
    int id;
    char name[50];
    int age;
};

struct Student students[MAX_STUDENTS];
int numStudents = 0;

void addStudent() {
    if (numStudents >= MAX_STUDENTS) {
        printf("学生信息已满,无法继续添加。\n");
        return;
    }

    struct Student newStudent;
    printf("请输入学生ID:");
    scanf("%d", &newStudent.id);
    printf("请输入学生姓名:");
    scanf("%s", newStudent.name);
    printf("请输入学生年龄:");
    scanf("%d", &newStudent.age);

    students[numStudents] = newStudent;
    numStudents++;

    printf("学生信息添加成功!\n");
}

void displayStudents() {
    printf("学生信息列表:\n");
    for (int i = 0; i < numStudents; i++) {
        printf("ID: %d, 姓名: %s, 年龄: %d\n",
               students[i].id, students[i].name, students[i].age);
    }
}

int findStudentById(int id) {
    for (int i = 0; i < numStudents; i++) {
        if (students[i].id == id) {
            return i;
        }
    }
    return -1;
}

void updateStudent() {
    int id;
    printf("请输入要修改信息的学生ID:");
    scanf("%d", &id);

    int index = findStudentById(id);
    if (index == -1) {
        printf("找不到该学生信息。\n");
        return;
    }

    printf("请输入新的学生姓名:");
    scanf("%s", students[index].name);
    printf("请输入新的学生年龄:");
    scanf("%d", &students[index].age);

    printf("学生信息修改成功!\n");
}

void deleteStudent() {
    int id;
    printf("请输入要删除的学生ID:");
    scanf("%d", &id);

    int index = findStudentById(id);
    if (index == -1) {
        printf("找不到该学生信息。\n");
        return;
    }

    for (int i = index; i < numStudents - 1; i++) {
        students[i] = students[i + 1];
    }
    numStudents--;

    printf("学生信息删除成功!\n");
}

int main() {
    int choice;
    do {
        printf("\n学生管理系统\n");
        printf("1. 添加学生信息\n");
        printf("2. 显示学生信息\n");
        printf("3. 修改学生信息\n");
        printf("4. 删除学生信息\n");
        printf("5. 退出\n");
        printf("请选择操作:");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                addStudent();
                break;
            case 2:
                displayStudents();
                break;
            case 3:
                updateStudent();
                break;
            case 4:
                deleteStudent();
                break;
            case 5:
                printf("退出程序。\n");
                break;
            default:
                printf("无效的选择,请重新输入。\n");
                break;
        }
    } while (choice != 5);

    return 0;
}

当用户运行该程序时,它会提供一个简单的学生管理系统,允许用户添加、显示、修改和删除学生信息。

  1. 首先,我们引入了必要的头文件,并定义了一个结构体 Student,用于存储学生的信息,包括学生ID、姓名和年龄。我们还定义了一个最大学生数目 MAX_STUDENTS 和一个数组 students 来存储学生信息,以及一个变量 numStudents 用于记录当前学生的数量。

  2. 接下来,程序进入主函数 main()。在这里,我们使用一个 do-while 循环来提供一个菜单,让用户选择不同的操作。用户可以选择添加学生信息、显示学生信息、修改学生信息、删除学生信息以及退出程序。

  3. 对于每个菜单选项,我们都有相应的函数来处理。

    • addStudent(): 该函数负责添加新的学生信息。它首先检查是否还有空间来存储新的学生信息,然后提示用户输入学生的ID、姓名和年龄,将新的学生信息存储到 students 数组中。

    • displayStudents(): 该函数用于显示所有学生的信息。它会遍历 students 数组并逐个打印每个学生的ID、姓名和年龄。

    • findStudentById(): 该函数用于根据学生的ID查找学生在数组中的索引。如果找到匹配的学生ID,则返回该学生在数组中的索引,否则返回 -1。

    • updateStudent(): 该函数用于修改学生的信息。用户需要提供要修改的学生的ID,然后程序会检查是否存在该学生,如果存在,则提示用户输入新的姓名和年龄,并更新相应学生的信息。

    • deleteStudent(): 该函数用于删除学生的信息。用户需要提供要删除的学生的ID,然后程序会检查是否存在该学生,如果存在,则将该学生从数组中删除。

  4. 最后,在主函数的 do-while 循环中,根据用户的选择调用相应的函数来执行操作。用户可以重复选择不同的操作,直到选择退出程序。

上面程序演示了如何使用C语言创建一个简单的学生管理系统,但它仅包含了基本的操作和数据存储。在实际应用中,你可能还需要考虑数据持久化、错误处理、用户界面优化等方面的问题。

相关推荐
开开心心_Every8 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
chenbingjie_c8 小时前
C++ 多态完全指南:从虚函数重写到虚函数表原理
开发语言·c++
是main不是漫8 小时前
【双指针——移动零】数组划分类题目的入门基石
c++·算法
吴卫斌8 小时前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化
·present·8 小时前
CSAPP(Bomb lab)
c语言·c++
超级架构师9 小时前
PRAXO-CORE 2.5.0:用 conformance 和显式边界构建 Go Agent 框架
开发语言·人工智能·后端·golang·ai编程·智能体框架·praxo-core
深圳市快瞳科技有限公司9 小时前
野外鸟类AI识别落地实录:输入适配、结构化输出、去重聚合与置信度分流的工程实践
算法·计算机视觉·鸟类识别·鸟类ai识别·野外鸟类观测·林业调查
叼烟扛炮10 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
LMT流氓兔10 小时前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节
专注仿真10 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法