9. 删除学生功能的实现

删除学生功能是根据学生的编号来删除 aclass 指向的班级的学生信息,一旦删除成功,则信息不可恢复。

删除学生需要先输入学生的序号,再验证序号的合法性。接下来根据序号定位位置,将此位置后的学生信息整体前移,然后将 aclass->student_count 做减一操作。

具体代码如下

文件 class_room.c

// 删除学生信息
void del_student(class_room_t *aclass)
{
    int number = 0;
    int index;

    list_all_student_info(aclass);

    printf("请输入要修改数学成绩的学生的序号:");
    fflush(stdout);

    scanf("%d", &number);
    index = number - 1;
    if (index < 0 || index >= aclass->student_count) {
        printf("您输入的序号有错,删除失败!\n");
        return;
    }
    // 循环将 index +1 位置的数据覆盖 index 位置的数据
    for(; index < aclass->student_count-1; index++) {
        aclass->student[index] = aclass->student[index+1];
    }
    // 学生数减1
    aclass->student_count--;
}