入所有学生的学号,以计算平均成绩\n"); // 这里缺少了删除学生(case 3)和计算平均成绩(case 4)的功能代码 // 我们可以假设Student_del()函数实现了删除学生功能,而计算平均成绩需要遍历所有学生并累加总分,然后除以学生数量来实现。 // 我们来看如何实现删除学生功能。在C语言中,删除一个学生意味着找到该学生并将其学号置为0,表示空闲位置。 void Student_del() { int del_id, c; printf("请输入要删除的学生学号:\n"); scanf("%d", &del_id); for (c = 0; c < 30; c++) { if (stu[c].xuehao == del_id) { stu[c].xuehao = 0; printf("已删除 %s 的信息。\n", stu[c].name); return; } } printf("找不到该学号的学生信息。\n"); } // 接下来是计算平均成绩的函数,我们需要遍历整个学生数组,累加成绩并计数,最后计算平均值。 float calculate_average() { int c; float total_score = 0; int student_count = 0; for (c = 0; c < 30; c++) { if (stu[c].xuehao != 0) { total_score += (stu[c].Chinese + stu[c].Math + stu[c].English); student_count++; } } if (student_count > 0) { return total_score / (3 * student_count); } else { return 0; } } // 现在我们把删除和计算平均成绩的功能添加到主程序中 void main() { int choice, b; while (choice != 5) { ... // 原有的代码不变 ... case 3: Student_del(); break; case 4: { float avg = calculate_average(); if (avg > 0) { printf("所有学生的平均成绩是 %.2f\n", avg); } else { printf("没有学生记录,无法计算平均成绩。\n"); } } break; } // 退出循环后,程序结束 } // main函数结束
这个C语言编写的学生成绩查询系统包含了学生信息的存储、查询、添加和删除功能。它使用了一个结构体数组`stu`来存储学生的学号、姓名、三门课程的成绩以及平均成绩。通过`Student_query()`函数可以按学号查询学生的信息,`Student_add()`用于添加新的学生信息,`Student_del()`实现了删除指定学号的学生,而`calculate_average()`则用于计算所有学生的平均成绩。
系统使用了`switch`语句根据用户输入的选项执行对应的操作。需要注意的是,当前代码中并没有实现删除学生和计算平均成绩的完整逻辑,而是用注释表示了这两个功能的缺失。为了使系统完整,我们需要补充上述的`Student_del()`和`calculate_average()`函数实现。
此外,此代码中的一些细节可能需要优化,例如在输入学号时,可以考虑使用`scanf_s`以防止缓冲区溢出,以及在输入验证方面进行加强,确保输入的数据类型和范围符合预期。此外,添加错误处理和友好的用户交互界面可以使系统更加健壮和易用。