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--;
}