• 操作系统实验四:文件管理(2学时)


    一、实验目的

    通过本次实验对一个班级学生成绩的管理,使学生了解文件的主要操作。详细的目标如下:

    1. 通过实验中文件的创建、复制和删除等操作完成对文件管理。
    2. 了解文件、文件目录的结构。
    3. 掌握文件的读写、文件指针移动基本操作,并了解文件控制的作用。

    二、实验内容

    1. 学生了解实验目的,创建文件、输入班级成绩、保存文件等功能需要画出流程框图。
    2. 利用磁盘文件对学生成绩进行管理:查询成绩、修改成绩、显示所有的学生成绩。
    3. 编写一个班级成绩复制到另一个文件的功能。
    4. 学习使用文件控制,实现指定班级成绩文件的删除操作【选做】。
    5. 实现目录的管理,创建与删除子目录、搜索指定的文件等【选做】。

    三、实验步骤

    1. 复习文件操作部分内容。
    2. 按照要求编出复制文件和利用磁盘文件管理学生情况的程序。
    3. 预习Java相关的IDE或Visual C++ 6.0、GCC++编程工具的文件控制。
    4. 上机调试程序。
    5. 完成实验报告。
    1. 利用磁盘文件对学生成绩进行管理:
    1. #include
    2. #include
    3. #include
    4. struct Score {
    5. char name[20];
    6. int math_score;
    7. int english_score;
    8. };
    9. int main() {
    10. FILE* fp;
    11. struct Score score;
    12. char query_name[20];
    13. int found = 0;
    14. // 打开文件
    15. fp = fopen("score.dat", "rb");
    16. if (fp == NULL) {
    17. printf("Failed to open file\n");
    18. exit(1);
    19. }
    20. // 读取数据
    21. while (fread(&score, sizeof(struct Score), 1, fp) > 0) {
    22. if (strcmp(score.name, query_name) == 0) {
    23. printf("%s's scores: Math: %d, English: %d\n",
    24. score.name, score.math_score, score.english_score);
    25. found = 1;
    26. break;
    27. }
    28. }
    29. // 关闭文件
    30. fclose(fp);
    31. if (!found) {
    32. printf("Score not found.\n");
    33. }
    34. return 0;
    35. }

     2.修改成绩:

    1. #include
    2. #include
    3. #include
    4. struct Score {
    5. char name[20];
    6. int math_score;
    7. int english_score;
    8. };
    9. int main() {
    10. FILE* fp;
    11. struct Score score;
    12. char modify_name[20];
    13. int found = 0, modify_math_score, modify_english_score;
    14. // 打开文件
    15. fp = fopen("score.dat", "r+b");
    16. if (fp == NULL) {
    17. printf("Failed to open file\n");
    18. exit(1);
    19. }
    20. // 修改数据
    21. while (fread(&score, sizeof(struct Score), 1, fp) > 0) {
    22. if (strcmp(score.name, modify_name) == 0) {
    23. found = 1;
    24. printf("%s's scores: Math: %d, English: %d\n",
    25. score.name, score.math_score, score.english_score);
    26. printf("Enter new math score:");
    27. scanf("%d", &modify_math_score);
    28. printf("Enter new english score:");
    29. scanf("%d", &modify_english_score);
    30. score.math_score = modify_math_score;
    31. score.english_score = modify_english_score;
    32. fseek(fp, -sizeof(struct Score), SEEK_CUR);
    33. fwrite(&score, sizeof(struct Score), 1, fp);
    34. break;
    35. }
    36. }
    37. // 关闭文件
    38. fclose(fp);
    39. if (!found) {
    40. printf("Score not found.\n");
    41. } else {
    42. printf("Score modified.\n");
    43. }
    44. return 0;
    45. }

    3.显示所有学生成绩

    1. #include
    2. #include
    3. #include
    4. struct Score {
  • 相关阅读:
    mapbox尝鲜值之云图动画
    day35-IO流02
    6. vector
    总结10.11-11.6号
    简单两步实现离线部署ChatGPT,ChatGPT平替版,无需GPU离线搭建ChatGPT
    Linux·串口编程
    如何在Nuxt3.0中使用MongoDB数据库
    Java项目:SSM电器商城系统
    bqplot教程:在Jupyter Notebook中进行交互式数据可视化
    如何理解Python中的self变量?
  • 原文地址:https://blog.csdn.net/weixin_60530224/article/details/130755782