2022年实验四文件系统实验 .pdf
《2022年实验四文件系统实验 .pdf》由会员分享,可在线阅读,更多相关《2022年实验四文件系统实验 .pdf(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验四 文件系统实验一.目的要求1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。2、要求设计一个 n 个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有 Create、delete、open、close、read、write 等命令。二.例题:1、设计一个 10 个用户的文件系统,每次用户可保存10 个文件,一次运行用户可以打开 5 个文件。2、程序采用二级文件目录(即设置主目录MFD)和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。
2、3、为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。4、算法与框图:因系统小,文件目录的检索使用了简单的线性搜索。文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为 0,则表示不允许读写、执行。程序中使用的主要设计结构如下:主文件目录和用户文件目录(MFD、UFD)打开文件目录(AFD)(即运行文件目录)M D FU F DA F D用户名文件名打开文件名文件目录指针保护码打开保护码用户名文件长度读写指针文件目录指针文件名名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 24 页 -文件系统算法的流程图如下:三.实验题:
3、1、增加 2 3 个文件操作命令,并加以实现。(如移动读写指针,改变文件属性,更换文件名,改变文件保护级别)。#include#include#include#define getpch(type)(type*)malloc(sizeof(type)int userNum=0;struct mdf 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 24 页 -char userName20;struct UFD*p;mdf20;struct ufd char fileName20;char File50;struct ufd*next;*fp,*tp,*p,*begin;typed
4、ef struct ufd UFD;void show(struct UFD*f)begin=f;if(begin-next=NULL)printf(该用户名下尚无文件!n);else printf(该用户名下所有文件:n);begin=begin-next;while(begin!=NULL)printf(%s:%sn,begin-fileName,begin-File);begin=begin-next;void Operation(struct UFD*f)int i;char filename20,file50;begin=f;label:printf(请选择操作:n 1:create
5、;2:delete;3:read;4:write;5:open;n 6:lose;7:Chang Files Name;8:Show All The Filen);scanf(%d,&i);if(i=1)tp=getpch(UFD);printf(请输入文件名:);scanf(%s,filename);printf(n请输入文件内容:);scanf(%s,file);strcpy(tp-fileName,filename);名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 24 页 -strcpy(tp-File,file);tp-next=NULL;p=begin;p-next=
6、tp;printf(n文件创建完毕!n);goto label;else if(i=2)printf(请输入文件名:);scanf(%s,filename);p=begin-next;while(strcmp(p-fileName,filename)!=0&p!=NULL)p=p-next;if(p=NULL)printf(文件不存在!n);else tp=begin;while(tp-next!=p)tp=tp-next;tp-next=p-next;free(p);printf(文件已删除!n);goto label;else if(i=3)printf(请输入文件名:);scanf(%s
7、,filename);p=begin-next;while(strcmp(p-fileName,filename)!=0&p!=NULL)p=p-next;if(p=NULL)printf(文件不存在!n);else printf(%s:%sn,p-fileName,p-File);goto label;else if(i=4)printf(请输入文件名:);scanf(%s,filename);printf(n请输入文件内容:);名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 24 页 -scanf(%s,file);p=begin-next;while(p!=NULL)if(
8、!(strcmp(p-fileName,filename)strcpy(p-File,file);printf(n替换了以%s为名的文件!n,filename);goto label;p=p-next;tp=getpch(UFD);strcpy(tp-fileName,filename);strcpy(tp-File,file);tp-next=NULL;p=begin;p-next=tp;printf(n创建了以%s为名的文件!n,filename);goto label;else if(i=5)goto label;else if(i=6)printf(功能被关闭,无法操作了 n);Sel
9、ect();else if(i=7)printf(请输入要改名的文件名:);scanf(%s,filename);while(p!=NULL)if(!(strcmp(p-fileName,filename)printf(n请输入新的文件名:);scanf(%s,filename);strcpy(p-fileName,filename);printf(n文件名已更改!n);goto label;名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 24 页 -p=p-next;printf(文件不存在!n);goto label;else if(i=8)show(f);goto labe
10、l;else goto label;void Select()char username20;int i;printf(请输入用户名:n);scanf(%s,username);for(i=0;inext;printf(%sn,fp-fileName);else printf(该用户尚未创建任何文件!n);fp=mdfi.p;Operation(fp);if(i=userNum)名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 24 页 -printf(该用户不存在,创建新用户?n 1:是 2:否n);scanf(%d,&i);if(i=1)strcpy(mdfuserNum+.u
11、serName,username);printf(已创建用户!n);i=userNum-1;fp=mdfi.p;Operation(fp);else printf(查询其它?n 1:是 2:否n);scanf(%d,&i);if(i=1)Select();else printf(谢谢使用!n);return;int main()int i;for(i=0;inext=NULL;mdfi.p=tp;Select();return 0;2、编一个通过屏幕选择命令的文件管理系统,每屏要为用户提供足够的选择信息,不需要打入冗长的命令。#include#include#include 名师资料总结-精品
12、资料欢迎下载-名师精心整理-第 7 页,共 24 页 -#define getpch(type)(type*)malloc(sizeof(type)int userNum=0;struct mdf char userName20;struct UFD*p;mdf20;struct ufd char fileName20;char File50;struct ufd*next;*fp,*tp,*p,*begin;typedef struct ufd UFD;void show(struct UFD*f)begin=f;if(begin-next=NULL)printf(该用户名下尚无文件!n);
13、else printf(该用户名下所有文件:n);begin=begin-next;while(begin!=NULL)printf(%s:%sn,begin-fileName,begin-File);begin=begin-next;void Operation(struct UFD*f)int i;char filename20,file50;begin=f;label:printf(请选择操作:n 1:create;2:delete;3:read;4:write;5:open;n 6:lose;7:Chang Files Name;8:Show All The Filen);scanf(
14、%d,&i);if(i=1)tp=getpch(UFD);printf(请输入文件名:);scanf(%s,filename);printf(n请输入文件内容:);名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 24 页 -scanf(%s,file);strcpy(tp-fileName,filename);strcpy(tp-File,file);tp-next=NULL;p=begin;p-next=tp;printf(n文件创建完毕!n);goto label;else if(i=2)printf(请输入文件名:);scanf(%s,filename);p=begin-n
15、ext;while(strcmp(p-fileName,filename)!=0&p!=NULL)p=p-next;if(p=NULL)printf(文件不存在!n);else tp=begin;while(tp-next!=p)tp=tp-next;tp-next=p-next;free(p);printf(文件已删除!n);goto label;else if(i=3)printf(请输入文件名:);scanf(%s,filename);p=begin-next;while(strcmp(p-fileName,filename)!=0&p!=NULL)p=p-next;if(p=NULL)
16、printf(文件不存在!n);else printf(%s:%sn,p-fileName,p-File);goto label;else if(i=4)printf(请输入文件名:);名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 24 页 -scanf(%s,filename);printf(n请输入文件内容:);scanf(%s,file);p=begin-next;while(p!=NULL)if(!(strcmp(p-fileName,filename)strcpy(p-File,file);printf(n替换了以%s为名的文件!n,filename);goto la
17、bel;p=p-next;tp=getpch(UFD);strcpy(tp-fileName,filename);strcpy(tp-File,file);tp-next=NULL;p=begin;p-next=tp;printf(n创建了以%s为名的文件!n,filename);goto label;else if(i=5)goto label;else if(i=6)printf(功能被关闭,无法操作了 n);Select();else if(i=7)printf(请输入要改名的文件名:);scanf(%s,filename);while(p!=NULL)if(!(strcmp(p-fil
18、eName,filename)printf(n请输入新的文件名:);scanf(%s,filename);strcpy(p-fileName,filename);printf(n文件名已更改!n);名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 24 页 -goto label;p=p-next;printf(文件不存在!n);goto label;else if(i=8)show(f);goto label;else goto label;void Select()char username20;int i;printf(请输入用户名:n);scanf(%s,username
19、);for(i=0;inext;printf(%sn,fp-fileName);else printf(该用户尚未创建任何文件!n);fp=mdfi.p;Operation(fp);名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 24 页 -if(i=userNum)printf(该用户不存在,创建新用户?n 1:是 2:否n);scanf(%d,&i);if(i=1)strcpy(mdfuserNum+.userName,username);printf(已创建用户!n);i=userNum-1;fp=mdfi.p;Operation(fp);else printf(查询其它
20、?n 1:是 2:否n);scanf(%d,&i);if(i=1)Select();else printf(谢谢使用!n);return;int main()int i;for(i=0;inext=NULL;mdfi.p=tp;Select();return 0;3、设计一个树型目录结构的文件系统,其根目录为 root,各分支可以是目录,也可以是文件,最后的叶子都是文件。#include 名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 24 页 -#include /#include#include#include#include#define getpch(type)(typ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年实验四文件系统实验 2022 实验 文件系统
限制150内