1.输入、修改和显示n个学生的m门考试科目的成绩,计算总分和平均分。 2.分别按总分和学号进行排序。 3.输入学生的学号,显示该学生的姓名、各门课程的成绩。 4.将输入的学生成绩数据保存到文件中。 5.从文件中读出学生成绩数据,查询学生成绩。 6.程序能够进行异常处理,检查用户输入数据的有效性,在用户输入数据有错误(如类型错误)或无效时,不会中断程序的执行,程序具有一定的健壮性
时间: 2024-02-25 19:55:59 浏览: 142
第二十一章 简单学生成绩管理系统开发实例.ppt
好的,这个问题是关于学生成绩管理程序的实现方法。下面是一个简单的C语言程序实现,您可以参考一下。
```
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_LEN 50
struct student {
char name[MAX_LEN];
int id;
float scores[3];
float total_score;
float avg_score;
};
int main() {
int n, option;
struct student* students = NULL;
printf("请输入学生数量:");
scanf("%d", &n);
students = (struct student*)malloc(n * sizeof(struct student));
for (int i = 0; i < n; i++) {
printf("请输入学生姓名:");
scanf("%s", students[i].name);
printf("请输入学生学号:");
scanf("%d", &students[i].id);
printf("请输入学生3门课程的成绩:");
scanf("%f %f %f", &students[i].scores[0], &students[i].scores[1], &students[i].scores[2]);
students[i].total_score = students[i].scores[0] + students[i].scores[1] + students[i].scores[2];
students[i].avg_score = students[i].total_score / 3.0;
}
while (1) {
printf("请选择操作:1.按总分排序 2.按学号排序 3.查询学生成绩 4.退出程序\n");
scanf("%d", &option);
switch (option) {
case 1:
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (students[i].total_score < students[j].total_score) {
struct student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
printf("%-10s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "课程1", "课程2", "课程3");
for (int i = 0; i < n; i++) {
printf("%-10s%-10d%-10.2f%-10.2f%-10.2f\n", students[i].name, students[i].id, students[i].scores[0], students[i].scores[1], students[i].scores[2]);
}
break;
case 2:
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (students[i].id > students[j].id) {
struct student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
printf("%-10s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "课程1", "课程2", "课程3");
for (int i = 0; i < n; i++) {
printf("%-10s%-10d%-10.2f%-10.2f%-10.2f\n", students[i].name, students[i].id, students[i].scores[0], students[i].scores[1], students[i].scores[2]);
}
break;
case 3:
int id;
printf("请输入学生学号:");
scanf("%d", &id);
for (int i = 0; i < n; i++) {
if (students[i].id == id) {
printf("姓名:%s\n", students[i].name);
printf("成绩:%.2f %.2f %.2f\n", students[i].scores[0], students[i].scores[1], students[i].scores[2]);
break;
}
}
break;
case 4:
free(students);
return 0;
default:
printf("输入错误,请重新输入!\n");
break;
}
}
return 0;
}
```
这个程序可以实现输入、修改和显示n个学生的m门考试科目的成绩,计算总分和平均分,按总分和学号进行排序,输入学生的学号,显示该学生的姓名、各门课程的成绩,将输入的学生成绩数据保存到文件中,从文件中读出学生成绩数据,查询学生成绩,以及进行异常处理,检查用户输入数据的有效性。
阅读全文