一、实验目的
通过本次实验对一个班级学生成绩的管理,使学生了解文件的主要操作。详细的目标如下:
- 通过实验中文件的创建、复制和删除等操作完成对文件管理。
- 了解文件、文件目录的结构。
- 掌握文件的读写、文件指针移动基本操作,并了解文件控制的作用。
二、实验内容
- 学生了解实验目的,创建文件、输入班级成绩、保存文件等功能需要画出流程框图。
- 利用磁盘文件对学生成绩进行管理:查询成绩、修改成绩、显示所有的学生成绩。
- 编写一个班级成绩复制到另一个文件的功能。
- 学习使用文件控制,实现指定班级成绩文件的删除操作【选做】。
- 实现目录的管理,创建与删除子目录、搜索指定的文件等【选做】。
三、实验步骤
- 复习文件操作部分内容。
- 按照要求编出复制文件和利用磁盘文件管理学生情况的程序。
- 预习Java相关的IDE或Visual C++ 6.0、GCC++编程工具的文件控制。
- 上机调试程序。
- 完成实验报告。
- 利用磁盘文件对学生成绩进行管理:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Score {
char name[20];
int math_score;
int english_score;
};
int main() {
FILE* fp;
struct Score score;
char query_name[20];
int found = 0;
// 打开文件
fp = fopen("score.dat", "rb");
if (fp == NULL) {
printf("Failed to open file\n");
exit(1);
}
// 读取数据
while (fread(&score, sizeof(struct Score), 1, fp) > 0) {
if (strcmp(score.name, query_name) == 0) {
printf("%s's scores: Math: %d, English: %d\n",
score.name, score.math_score, score.english_score);
found = 1;
break;
}
}
// 关闭文件
fclose(fp);
if (!found) {
printf("Score not found.\n");
}
return 0;
}
2.修改成绩:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Score {
char name[20];
int math_score;
int english_score;
};
int main() {
FILE* fp;
struct Score score;
char modify_name[20];
int found = 0, modify_math_score, modify_english_score;
// 打开文件
fp = fopen("score.dat", "r+b");
if (fp == NULL) {
printf("Failed to open file\n");
exit(1);
}
// 修改数据
while (fread(&score, sizeof(struct Score), 1, fp) > 0) {
if (strcmp(score.name, modify_name) == 0) {
found = 1;
printf("%s's scores: Math: %d, English: %d\n",
score.name, score.math_score, score.english_score);
printf("Enter new math score:");
scanf("%d", &modify_math_score);
printf("Enter new english score:");
scanf("%d", &modify_english_score);
score.math_score = modify_math_score;
score.english_score = modify_english_score;
fseek(fp, -sizeof(struct Score), SEEK_CUR);
fwrite(&score, sizeof(struct Score), 1, fp);
break;
}
}
// 关闭文件
fclose(fp);
if (!found) {
printf("Score not found.\n");
} else {
printf("Score modified.\n");
}
return 0;
}
3.显示所有学生成绩
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Score {