操作系统课程设计方案Linux二级文件系统设计方案Word文档下载推荐.docx

上传人:b****3 文档编号:13910759 上传时间:2022-10-15 格式:DOCX 页数:19 大小:193.93KB
下载 相关 举报
操作系统课程设计方案Linux二级文件系统设计方案Word文档下载推荐.docx_第1页
第1页 / 共19页
操作系统课程设计方案Linux二级文件系统设计方案Word文档下载推荐.docx_第2页
第2页 / 共19页
操作系统课程设计方案Linux二级文件系统设计方案Word文档下载推荐.docx_第3页
第3页 / 共19页
操作系统课程设计方案Linux二级文件系统设计方案Word文档下载推荐.docx_第4页
第4页 / 共19页
操作系统课程设计方案Linux二级文件系统设计方案Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

操作系统课程设计方案Linux二级文件系统设计方案Word文档下载推荐.docx

《操作系统课程设计方案Linux二级文件系统设计方案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计方案Linux二级文件系统设计方案Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

操作系统课程设计方案Linux二级文件系统设计方案Word文档下载推荐.docx

read读文件

write写文件

cd进出目录

2.列目录时要列出文件名,物理地址,保护码和文件长度

3.源文件可以进行读写保护

【实验环境】

C++

DevCpp

【设计思路】

本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。

另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。

首先应确定文件系统的数据结构:

主目录、子目录及活动文件等。

主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。

用户创建的文件,可以编号存储于磁盘上。

如:

file0,file1,file2…并以编号作为物理地址,在目录中进行登记。

结构体:

typedefstruct/*thestructureofOSFILE*/

{

intfpaddr;

/*filephysicaladdress*/

intflength;

/*filelength*/

intfmode;

/*filemode:

0-ReadOnly;

1-WriteOnly;

2-ReadandWrite;

3-Protect;

*/

charfname[MAXNAME];

/*filename*/

}OSFILE;

//存放重要信息

typedefstruct/*thestructureofOSUFD*/

charufdname[MAXNAME];

/*ufdname*/

OSFILEufdfile[MAXCHILD];

/*ufdownfile*/

}OSUFD;

//用户下面的文件

typedefstruct/*thestructureofOSUFD'

LOGIN*/

charufdpword[8];

/*ufdpassword*/

}OSUFD_LOGIN;

typedefstruct/*fileopenmode*/

intifopen;

/*ifopen:

0-close,1-open*/

intopenmode;

/*0-readonly,1-writeonly,2-readandwrite,3-initial*/

}OSUFD_OPENMODE;

主要的函数说明:

voidLoginF();

/*LOGINFileSystem用户登录*/

voidDirF();

/*DirFileSystem列目录*/

voidCdF();

/*ChangeDir改变目录*/

voidCreateF();

/*CreateFile创建文件*/

voidDeleteF();

/*DeleteFile删除文件*/

voidModifyFM();

/*ModifyFileMode修改*/

voidOpenF();

/*OpenFile打开文件*/

voidCloseF();

/*CloseFile关闭文件*/

voidReadF();

/*ReadFile读文件*/

voidWriteF();

/*WriteFile写文件*/

voidQuitF();

/*QuitFileSystem离开文件系统*/

voidhelp();

其他重要函数:

voidclrscr()//清屏

intExistD(char*dirname)/*WhetherDirNameExist,Exist-i,NotExist-0*/

intExistF(char*filename)/*WhetherFileNameExist,Exist-i,NotExist-0*/

intFindPANo()/*findoutphysicaladdressnum*/

voidSetPANo(intRorW)/*Setphysicaladdressnum,0-read,1-write*/

voidInputPW(char*password)/*inputpassword,use'

*'

replace*/

char*ltrim(char*str)/*removetheheadingblanks.去除左空白*/

char*rtrim(char*str)/*removethetrailingblanks.去除右空白*/

intWriteF1()/*writefile相当于置换文件*/

程序流程说明:

整体流程:

结束

各部分功能流程:

Open:

NN

Y

Delete:

Y

N

Y

Write:

Y

N

1

Close:

【源程序清单】

voidOpenF()/*OpenFile*/

printf("

\n\nC:

\\%s>

"

strupr(dirname));

//显示当前路径

intfcoun,i;

//定义两个整形变量

charfname[MAXNAME],fmode[25];

//定义两个字符串变量

intfmod;

//文件模式

\nPleaseinputFileName:

);

gets(fname);

//接收打开文件的文件名

ltrim(rtrim(fname));

//去除左右空白

if(ExistF(fname)<

0)//判断文件是否存在

{//不存在

\nError.文件名\'

%s\'

不存在\n"

fname);

wgetchar=1;

}else{//存在

i=ExistD(username);

//获取用户物理信息

for(inta=0;

a<

fcount[i];

a++)//遍历用户文件

{

if(strcmp(fname,ufd[i]->

ufdfile[a].fname)==0)//找到文件

fcoun=a;

break;

}

ifopen[i][fcoun].ifopen=1;

//将文件状态置为打开状态

PleaseinputOpenMode(0-ReadOnly,1-WriteOnly,2-ReadandWrite,3-Protect):

//打开文件模式

gets(fmode);

//获取模式

fmod=atoi(fmode);

//将字符串转换为整型

ifopen[i][fcoun].openmode=fmod;

//将文件的模式置为OpenMode

\nOpenSuccessed"

}

voidDeleteF()/*DeleteFile*/

//显示路径

charfname[MAXNAME],str[50],str1[50];

//定义三个字符串变量

inti,k,j;

intfpaddrno1;

//记录文件物理地址块号

if(strcmp(strupr(ltrim(rtrim(dirname))),"

)==0){//判断主目录是否为空

\nError.请确认您要删除的是否在用户目录下!

\n"

if(strcmp(strupr(dirname),strupr(username))!

=0){//判断用户是否在用户目录下

\nError.您只能删除修改自己用户目录下的文件哦!

}else{

//接收删除的文件名

//去除文件名的左右空白

i=ExistF(fname);

//用户文件位置

if(i>

=0){

k=ExistD(username);

//获取用户所在存储位置

if(ifopen[k][i].ifopen==1){//文件状态处于打开状态,不许删除

\nError.\'

处于打开状态!

请先关闭哟!

if(ufd[k]->

ufdfile[i].fmode==3){//保护文件,不可删除

\nError.\'

处于被保护状态!

fpaddrno1=ufd[k]->

ufdfile[i].fpaddr;

//获取文件的物理地址块号

fpaddrno[fpaddrno1]=0;

//回收物理地址块号

for(j=i;

j<

fcount[k];

j++)//将文件都向前移动

ufd[k]->

ufdfile[j]=ufd[k]->

ufdfile[j+1];

//将j+1位置为j

strcpy(str,"

c:

\\osfile\\file\\"

itoa(fpaddrno1,str1,10);

//将整数转化为字符串

strcat(str,str1);

strcat(str,"

.txt"

//连接

remove(str);

//删除物理文件

fcount[k--];

//文件个数减一

\n\'

isdeletedsuccessfully.\n"

wgetchar=

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

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1