输入学号、选择课程名、输入修改后的成 绩. 在数据文件score.txt中查找相应的记录进 行修改,将修改后的线性表(学生情況表) 数据输出到文件score.txt中。用C语言实现
时间: 2023-12-06 11:43:11 浏览: 75
C语言学生成绩管理系统 可以实现增删改查(可运行有源代码).zip
以下是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE_LENGTH 1000
#define MAX_STUDENT_NUM 1000
struct student {
char id[20];
char name[20];
char course[20];
int score;
};
int main() {
struct student students[MAX_STUDENT_NUM];
int student_num = 0;
// 读取数据文件
FILE *fp = fopen("score.txt", "r");
if (!fp) {
fprintf(stderr, "Failed to open file.\n");
exit(1);
}
char line[MAX_LINE_LENGTH];
while (fgets(line, MAX_LINE_LENGTH, fp)) {
sscanf(line, "%s %s %s %d",
students[student_num].id,
students[student_num].name,
students[student_num].course,
&students[student_num].score);
student_num++;
}
fclose(fp);
// 获取修改信息
char search_id[20];
char search_course[20];
int new_score;
printf("请输入学号:");
scanf("%s", search_id);
printf("请选择课程名称:");
scanf("%s", search_course);
printf("请输入新的成绩:");
scanf("%d", &new_score);
// 查找并修改记录
int found = 0;
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].id, search_id) == 0 &&
strcmp(students[i].course, search_course) == 0) {
students[i].score = new_score;
found = 1;
break;
}
}
if (!found) {
printf("未找到匹配的记录。\n");
exit(1);
}
// 保存修改后的数据
fp = fopen("score.txt", "w");
if (!fp) {
fprintf(stderr, "Failed to open file.\n");
exit(1);
}
for (int i = 0; i < student_num; i++) {
fprintf(fp, "%s %s %s %d\n",
students[i].id,
students[i].name,
students[i].course,
students[i].score);
}
fclose(fp);
return 0;
}
```
这个程序首先读取 `score.txt` 文件中的数据,然后让用户输入要修改的学生的学号、课程名和新成绩。程序查找相应的记录并修改成绩,最后将修改后的数据保存回文件中。
阅读全文