1、操作系统文件操作实验xx工程学院上机实 验 报 告 课 程 名 称: 操作系统 实验项目名称: 文件操作 学生班级: 学生学号: 学生姓名: 指导教师: 实 验 时 间: 实 验 地 点: 信息楼专业机房 实验成绩评定: 2016-2017-1学期一、实验目的及内容在掌握文件的概念和文件管理功能后,通过实验进一步了解文件的组织结构以及常规操作,从而了解文件的实际应用,为大量信息处理问题提供一种实用有效的管理模式。内容:创建一个新文件,文件内容为本班所有同学的学号、姓名、操作系统课程成绩,要求采用有格式的存储格式;文件建立之后,能够对文件进行插入、删除、查找等操作。二、实验相关知识简介文件系统提
2、供给用户程序的一组系统调用,如文件的建立、打开、关闭、撤消、读、写和控制等,通过这些系统调用用户能获得文件系统的各种服务。不同的系统提供给用户不同的对文件的操作手段,但所有系统一般都提供以下关于文件的基本操作:1对整体文件而言(1)打开(open)文件,以准备对该文件进行访问。(2)关闭(close)文件,结束对该文件的使用。(3)建立(create)文件,构造一个新文件。(4)撤消(destroy)文件,删去一个文件。(5)复制(copy)文件,产生一个文件副本。2对文件中的数据项而言(1)读(read)操作,把文件中的一个数据项输入给进程。(2)写(write)操作,进程输出一个数据项到文
3、件中去。(3)修改(update)操作,修改一个已经存在的数据项。(4)插入(insert)操作,添加一个新数据项。(5)删除(delete)操作,从文件中移走一个数据项。 三、设计思路及关键程序代码分析#include #include #include int NUM = 0; struct student char num20; / 学号 char nam20; / 姓名 int score; / 成绩 struct student * next; ; typedef struct student Stu; typedef Stu * STU; void SaveConf(STU hea
4、d); void Menu(STU head); void Choose(STU head); void LoadConf(STU head); void Create(STU head); void Init(STU *head) /头节点初始化 (*head) = (STU)malloc(sizeof(Stu); (*head)-next = NULL; void LoadConf(STU head) /从文件加载信息至链表 int i = 1; FILE *fp; STU newstu; STU p= head; fp = fopen(text.txt,r+); if(fp = NULL
5、) printf(文件不存在!已为您创建新文件!n); fp = fopen(text.txt,a+); while(i 0) newstu = (STU)malloc(sizeof(Stu); i = fscanf(fp,%s %s %dn,newstu-num,newstu-nam,&newstu-score); if(i = -1) free(newstu); newstu = NULL; break; p = head; while(p-next != NULL) p = p-next; p-next = newstu; newstu-next = NULL; p = NULL; fc
6、lose(fp); void Create(STU head) /插入信息 STU newstu; STU p = head; newstu = (STU)malloc(sizeof(Stu); printf(请输入学号:); scanf(%s,newstu-num); printf(请输入姓名:); scanf(%s,newstu-nam); printf(请输入成绩:); scanf(%d,&newstu-score); while(p-next != NULL) p = p-next; p-next = newstu; newstu-next = NULL; char flag; get
7、char(); printf(是否继续插入信息(y or n):); scanf(%c,&flag); if(flag=y) Create(head); else Choose(head); void SaveConf(STU head) /保存信息到文件 FILE *fp; STU p = head-next; fp = fopen(text.txt,w); if(fp = NULL) printf(打开文件失败!n); return; while(p != NULL) fprintf(fp,%s %s %dn,p-num,p-nam,p-score); /写入数据到文件中 p = p-ne
8、xt; fclose(fp); STU search(STU head,char *s) /删除 STU p; p = head-next; while(p != NULL) if(strcmp(s,p-num) = 0) return p; p = p-next; return p; void Delete(STU head) STU p; STU q = head; char flag; char n20; printf(请输入需要删除学生的学号: ); scanf(%s,&n); p = search(head,n); if(p = NULL) getchar(); printf(您输入
9、的学号不存在,请重新输入: ); scanf(%c,&flag); Delete(head); else getchar(); printf(%s %s %dn,p-num,p-nam,p-score); q = head; while(q-next != p) q = q-next; q-next = p-next; p-next = NULL; free(p); p = NULL; printf(delete success!n); Choose(head); void Constant(STU head) /查找 STU p = head; char number20; int find
10、=0; printf(请输入需要查找学生的学号:); scanf(%s,number); while(p != NULL) if(strcmp(number,p-num) = 0) printf(查找结果如下:n); printf(%s %s %dn,p-num,p-nam,p-score); find=1; p = p-next; if(find=0) printf(您输入的学号不存在!); getchar(); Choose(head); void Menu(STU head) printf(t*文件管理*tn); printf(t*1.插入信息*tn); printf(t*2.删除信息*
11、tn); printf(t*3.查找信息*tn); printf(t*0.退出*tn); void Choose(STU head) int choice = 0; printf(nplease input your choice: ); scanf(%d,&choice); switch(choice) case 1:Create(head);break; case 2:Delete(head);break; case 3:Constant(head);break; case 0:SaveConf(head);break; default: printf(输入有误,请重新输入!n); Choose(head); break; int main() STU head; Init(&head); LoadConf(head); Menu(head); Choose(head); return 0; 四、运行结果创建新文件后的文本内容:执行插入信息操作:执行删除操作:五、体会与提高 通过本次的实验设计,把教材中的理论知识转化为实践,在一定程度上加深了我对读者-写者这类经典的同步问题的理解,同时也提高了我的动手编程和独立思考的能力。虽然在分析问题的过程中,遇到了很多的疑惑与不解,但同时掌握了很多进程同步的知识 教师评语:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1