《实验 文件管理二》.docVIP

  • 6
  • 0
  • 约1.34万字
  • 约 14页
  • 2019-12-02 发布于天津
  • 举报
实验六:文件系统 一、目的要求 1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 2、要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。 二、例题:  ①设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。 ②程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。 ③为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。 ④ 算法与框图: a、因系统小,文件目录的检索使用了简单的线性搜索。 b、文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。 c、程序中使用的主要设计结构如下: Ⅰ、主文件目录和用户文件目录( MFD、UFD) Ⅱ、打开文件目录( AFD)(即运行文件目录) M D F 用户名 文件目录指针 用户名 文件目录指针 ? U F D 文件名 保护码 文件长度 文件名 A F D 打开文件名 打开保护码 读写指针 ? 三、调度算法的流程图 四、文件管理源程序 #includestdio.h #includestring.h #includemalloc.h #includestdlib.h typedef struct ufd { char filename[10];/*文件名*/ char procode[8];/*属性*/ int length;/*文件长度*/ struct ufd *nextfile;/*指向下一个文件*/ }UFD; typedef struct mfd { char username[10];/*用户名*/ struct ufd *link;/*指向该用户的第一个文件*/ }MFD; typedef struct protected_flag { char code[4]; }PRO; typedef struct afd/*运行文件目录*/ { char filename[10];/*打开文件名*/ char procode[4]; int rwpointer;/*读写指针*/ }AFD; PRO flag[3]={100,/*只读*/ 110,/*读写*/ 001/*可执行*/ }; UFD *rw_pointer;/*读写指针*/ AFD *afd=NULL; MFD filesystem[10]; int num;/*当前用户个数*/ void displayallfile() { int i; UFD *p; for(i=0;inum;i++) { printf(用户 :%s 目录如下!\n,filesystem[i].username); p=filesystem[i].link; while(p) { printf(\t文件名: %s\t||,p-filename); printf(文件属性: %s\t||,p-procode); printf(文件长度: %d\n\n,p-length); p=p-nextfile; } } } void input() /*建立用户文件系统*/ { int i,j; int length; char filename[10]; char procode[4]; UFD *p1,*p2,*first; for(i=0;i10;i++) filesystem[i].link=NULL; printf(用户号码:\n); scanf(%d,num); for(i=0;inum;i++)/*输入各用户名称*/ { printf(输入第 %d个用户名:\n,i+1); scanf(%s,filesystem[i].username);} for(i=0;inum;i++)/*输入某用户的文件数据*/ { j=1; printf( 第%d个用户的文件如下\n,i+1); printf(文件 %d:\n,j); printf(长度 :); scanf(%d,length); if(!length) continue; printf(文件名:); scanf(%s,fil

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档