收藏 分享(赏)

文件系统实验3-另一份参考源码.doc

上传人:精品资料 文档编号:10534663 上传时间:2019-11-26 格式:DOC 页数:13 大小:143KB
下载 相关 举报
文件系统实验3-另一份参考源码.doc_第1页
第1页 / 共13页
文件系统实验3-另一份参考源码.doc_第2页
第2页 / 共13页
文件系统实验3-另一份参考源码.doc_第3页
第3页 / 共13页
文件系统实验3-另一份参考源码.doc_第4页
第4页 / 共13页
文件系统实验3-另一份参考源码.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、实习四:文件系统实习一 . 目的要求 1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 2、要求设计一个 n 个用户的文件系统,每次用户可保存 m 个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write 等命令。二 . 例题: 1、设计一个 10 个用户的文件系统,每次用户可保存 10 个文件,一次运行用户可以打开 5 个文件。2、程序采用二级文件目录(即设置主目录MFD)和用户文件目录(UED)。另外,为打开文件设置了运行文

2、件目录(AFD)。3、为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。4、算法与框图: 因系统小,文件目录的检索使用了简单的线性搜索。 文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。 程序中使用的主要设计结构如下: 主文件目录和用户文件目录( MFD、UFD) 打开文件目录( AFD )(即运行文件目录)M D F U F D A F D用户名 文件名 打开文件名文件目录指针 保护码 打开保护码用户名 文件长度 读写指针文件目录指针 文件名文件系统算法的流程图如下:实习总结:通过这次实习,更清楚的理解

3、了文件系统的操作,同时也对 C 语言编程进行了巩固。实习代码:#include “string.h“#include “stdio.h“#include “conio.h“#include “stdlib.h“#define L 6 /* 用户最多保存的文件数 */#define N 5 /* 系统可同时管理的用户数*/int U;typedef int SX;/*文件属性 1 为只读,2 为写,3 为可读可写*/typedef int ZT;/*文件状态 1 为建立,2 为打开,3 为关闭*/typedef int FLAG;/*是否空表目,0 为空,1 为非空*/static int me

4、mo128=10,20,30,40,50,60,70,80,90,100,110,120,130,140,150;/*用户文件目录*/struct FCBchar filename20;/*文件名*/SX access;/*文件属性*/int length;/*记录长度*/int address5;/*文件地址*/FLAG flag;/*是否空表目,0 为空*/;/*用户已打开文件表*/struct UOF1char filename20;/*文件名*/SX access;/*文件属性*/int length;/*记录长度*/ZT flag1;/*状态*/int write;/*写指针*/in

5、t read;/*读指针*/FLAG flag;int address5;/*文件地址*/;struct FCB UFDNL =“abc“,2,3,10,20,30,1,“def“,1,3,40,50,60,1,“wj“,3,3,70,80,90,1,“xyz“,1,1,100,1,“aaa“,2,1,110,1,“yyx“,1,1,100,1,“ccb“,1,1,120,1,“ddd“,1,3,40,50,60,1;struct UOF1 UOFNL=“abc“,2,3,2,0,0,1,10,20,30,“ccb“,1,1,2,0,0,1,120;struct MFD1char userna

6、me10;int count;int opencont;struct FCB *userfaddr;struct UOF1 *openfaddr;struct MFD1 MFDN=“A“,3,0,UFD0,UOF0,“B“,2,0,UFD1,UOF1,“C“,2,0,UFD2,UOF2,“D“,1,0,UFD3,UOF3;/*在 UFD 中找空白表项*/selectUFD() int i;struct FCB *P=MFDU.userfaddr;for(i=0;ifilename,name)=0)if(UOFi-flag1=1)UOFi-flag1=3;else if(UOFi-flag1=2

7、)strcpy(noname,UOFi-filename);UOFi-access=0;UOFi-length=0;UOFi-write=0;UOFi-flag=0;printf(“文件成功关闭n“);break;else printf(“文件已经关闭!n“) ;/*CLOSE 已经调试完成!*/*打开文件函数*/void open()char na20;int c;int x,m,j,i;printf(“请输入要打开的文件名 n“);getchar(); gets(na) ;printf(“你想对文件进行写还是读操作?n“);scanf(“%d“, getchar();for(i=0;iwr

8、ite=ade;printf(“写文件成功!n“);break;else /*不是建立状态*/if(UOFUi.access=1)printf(“操作不合法,不能写!n“);break;elseprintf(“是顺序修改吗?1 为顺序,0 为非顺序 1/0?n“);scanf(“%d“,if(n=1)for(e=0;efilename,s)=0)strcpy(noname,UOFi-filename);UOFi-access=0;UOFi-length =0;UOFi-write =0;UOFi-flag=0;strcpy(noname,UFDI-filename);UFDI-access=0

9、;UFDI-length=0;UFDI-address0=0;UFDI-flag=0;printf(“文件不存在,或文件已经撤销!n“);/*显示函数*/void print_UFD()int i ;printf(“num filename access length flag ad1 ad2 ad3 ad4 ad5 n “);for(i=0;i5;i+)printf(“n%dt%st%3dt%3dt%3dt%3dt%3dt%3dt%3dt%3dn“,i,UFDUi.filename,UFDUi.access,UFDUi.length,UFDUi.flag,UFDUi.address0,UFD

10、Ui.address1,UFDUi.address2,UFDUi.address3,UFDUi.address4);void print_UOF()int i;printf(“num filename access length flag write read flag1 n “);for(i=0;i5;i+)printf(“n%1dt%st%dt%dt%dt%dt%dt%dn“,i,UOFUi.filename,UOFUi.access,UOFUi.length,UOFUi.flag,UOFUi.write,UOFUi.read,UOFUi.flag);void main()char nam

11、e20;int i,a;printf(“欢迎使用文件管理系统 .n“);printf(“n 请输入用户名n“) ;LL:scanf(“%s“,name); getchar();for(i=0;iN;i+)if(strcmp(MFDi.username,name)=0)U=i;while(1)printf(“n*欢迎*n“);printf(“1:建立文件操作.n“);printf(“2:打开文件操作.n“);printf(“3:关闭文件操作.n“) ;printf(“4:读文件操作.n“);printf(“5:写文件操作。n“);printf(“6:撤消文件操作n“);printf(“0:结束.

12、n“);printf(“*n“);printf(“n请选择操作命令:n“);scanf(“%d“,switch(a)case 1:creat(); print_UOF();break;case 2: open();break;case 3: close();break;case 4: read();break;case 5: write();break;case 6:delet();break;case 0:exit(0);case 7:printf(“errorn“);default:break;printf(“无此用户n“);printf(“请再次输入用户名!n“);goto LL;实习截图:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报