10. 修改学生成绩功能的实现

修改学生成绩分为修改语文成绩和数学成绩两项、其做法几乎完全一致。

在修改成绩前先要用学生序号定位那个学生,然后输入新的成绩、再对该学生的成绩进行修改。

具体代码如下

文件 class_room.c

// 修改语文成绩功能
void modify_chinese_score(class_room_t *aclass)
{
    int number = 0;
    int index;
    int new_score = 0;
    list_all_student_info(aclass);
    printf("请输入要修改语文成绩的学生的序号:");
    fflush(stdout);

    scanf("%d", &number);
    index = number - 1;
    if (index < 0 || index >= MAX_STU_COUNT_IN_CLASS_ROOM) {
        printf("您输入的序号有误,修改失败!\n");
        return;
    }
    student_t *astu = &aclass->student[index];
    printf("请输入%s的新的语文成绩: ", astu->name);
    fflush(stdout);
    scanf("%d", &new_score);
    astu->chinese_score = new_score;
    printf("修改%s的语文成绩成功!\n", astu->name);
}

// 修改数学成绩功能
void modify_math_score(class_room_t *aclass)
{
    int number = 0;
    int index;
    int new_score = 0;
    list_all_student_info(aclass);
    printf("请输入要修改数学成绩的学生的序号:");
    fflush(stdout);

    scanf("%d", &number);
    index = number - 1;
    if (index < 0 || index >= MAX_STU_COUNT_IN_CLASS_ROOM) {
        printf("您输入的序号有误,修改失败!\n");
        return;
    }
    student_t *astu = &aclass->student[index];
    printf("请输入%s的新的数学成绩: ", astu->name);
    fflush(stdout);
    scanf("%d", &new_score);
    astu->math_score = new_score;
    printf("修改%s的数学成绩成功!\n", astu->name);
}