1 / 33
文档名称:

实验四 文件系统实验报告.doc

格式:doc   大小:88KB   页数:33页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验四 文件系统实验报告.doc

上传人:xxj165868 2019/5/31 文件大小:88 KB

下载得到文件列表

实验四 文件系统实验报告.doc

文档介绍

文档介绍:一. 目的要求 1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。2、要求设计一个n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。二. 例题:1、设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。2、程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。3、为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。4、算法与框图: ①因系统小,文件目录的检索使用了简单的线性搜索。②文件保护简单使用了三位保护码:允许读写执行、对应位为1,对应位为0,则表示不允许读写、执行。③程序中使用的主要设计结构如下: 主文件目录和用户文件目录(MFD、UFD) 打开文件目录(AFD)(即运行文件目录)MDFUFDAFD用户名文件名打开文件名文件目录指针保护码打开保护码用户名文件长度读写指针文件目录指针文件名··文件系统算法的流程图如下:: 1、增加2~3个文件操作命令,并加以实现。(如移动读写指针,改变文件属性,更换文件名,改变文件保护级别)。#include<>#include<>#include<>#include<>#defineMAXSIZE100#defineADDSIZE50#definePTelem+l->length#defineN4typedefstructterm{/*班级和学期的结构体*/charclass1[10];charterm1[10];}term;typedefstructstudent{/*学生成绩信息的结构体*/termst;/*班级和学期结构体放于此结构体中*/charnum[10];charname[12];floatcourse[4];floattotal;floataverage;intbit;}lnode,*stu;typedefstruct{lnode*elem;/*指向上个结构体的指针*/intsize;/*最大能放lnode结构体成员的个数*/intlength;/*当前长度*/}sqack,*sq;sqack*l;voidinit(void)/*动态分配存储空间*/{l->elem=(stu)malloc(MAXSIZE*sizeof(lnode));l->length=0;l->size=MAXSIZE;}voidinput(void)/*输入学生的信息*/{lnode*newbase,*p;charcla[10],ter[10],ch;intn,i;if(l->length>=l->size){newbase=(stu)realloc(l->elem,(l->size+ADDSIZE)*sizeof(lnode));/*追加存储空间*/l->elem=newbase;l->size+=ADDSIZE;}p=l->elem;do{printf("输入班级和学期(学期用这种格式,如2005年上学期20051,2005年下学期20052;先输入班级,回车后再输入学期)\n");gets(cla);gets(ter);printf("要输入多少个名单?");scanf("%d",&n);printf("输入学生的成绩\n学号\t姓名\t科目1\t科目2\t科目3\t科目4\n");for(i=0;i<n;i++){scanf("%s%s%d%d%d%d",p->num,p->name,p->course[0],p->course[1],p->course[2],p->course[3]);strcpy(p->,cla);strcpy(p->,ter);++l->length;}printf("要继续吗?(y/n)");ch=getchar();}while(ch=='Y'||ch=='y');}voidchange()/*修改学生的信息*/{lnode*p;lnodee;intflag=1,i;chars1[10],num1[10];printf("输入学期和学号(输入学期以后按回车再输入学号):\n");gets(s1);gets(num1);p=l->elem;while(p<=(l->elem+l->length)&&flag==1)/*查找要修改的学生的信息*/{if(strcmp(p->num,num1)==0&&strcmp(p-