操作系统试验模拟文件管理系统方案Word格式文档下载.docx
- 文档编号:17946992
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:18
- 大小:21.44KB
操作系统试验模拟文件管理系统方案Word格式文档下载.docx
《操作系统试验模拟文件管理系统方案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《操作系统试验模拟文件管理系统方案Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
filenode*prev;
filenode*next;
};
filenode*initnode(charfilename[],intisdir);
voidcreateroot();
intrun();
intfindpath(char*topath);
voidhelp();
intmkdir();
intcreate();
intread();
intwrite();
intdel();
intrm();
intcd();
intdir();
filenode*root,*recent,*temp,*ttemp,*temp_child;
charpath[PATH_LENGTH],command[COMMAND_LENGTH],temppath[PATH_LENGTH],recentpath[PATH_LENGTH];
//创建文件或目录的存储节点
filenode*initnode(charfilename[],intisdir)
filenode*node=newfilenode;
strcpy(node->
filename,filename);
node->
isdir=isdir;
parent=NULL;
child=NULL;
node->
prev=NULL;
next=NULL;
returnnode;
}
//初始化文件系统根结点
voidcreateroot()
recent=root=initnode("
/"
1);
root->
prev=root->
strcpy(path,"
);
}
voidhelp()
cout<
<
endl;
"
create:
建立文件。
"
read:
读取文件。
write:
写入文件。
delete:
删除文件。
rm:
删除目录。
mkdir:
建立目录。
cd:
切换目录。
dir:
显示目录。
logout:
退出登录。
intdir()
inti=0,j=0;
temp=newfilenode;
temp=recent;
if(temp==root)
{cout<
<
DIR>
."
if(temp!
=root)
.."
i++;
if(temp->
child==NULL)
Total:
directors"
i<
files"
j<
return1;
temp=temp->
child;
while(temp)
if(temp->
isdir)
{cout<
temp->
filename<
else
FILE>
j++;
temp=temp->
next;
cout<
return0;
intread()
cin>
>
filename;
if(recent->
{
cout<
文件不存在!
return1;
}
if(strcmp(recent->
child->
filename,filename)==0)
recent->
content<
return0;
temp=recent->
while(temp->
next)
if(strcmp(temp->
next->
return0;
}
intwrite()
cin>
content;
文件写入成功!
{
cout<
return0;
intdel()
temp=newfilenode;
child)
temp=recent->
while(temp->
next&
&
(strcmp(temp->
filename,filename)!
=0||temp->
isdir!
=0))
if(strcmp(temp->
=0)
不存在该文件!
parent==NULL)
temp->
prev->
next=temp->
prev=temp->
prev;
parent=temp->
parent;
parent->
child=temp->
deletetemp;
文件已删除!
intrm()
=1))
=1)
不存在该目录!
目录已删除!
intcd()
{chartopath[PATH_LENGTH];
topath;
if(strcmp(topath,"
)==0)
inti;
while(recent->
prev)
recent=recent->
//向前回溯,找到第一次创建的目录
if(recent->
parent)
recent=recent->
i=strlen(path);
//printf("
%d%s\n"
i,path);
while(path[i]!
='
/'
&
i>
0)
i--;
//找到最右边的/
if(i!
{path[i]='
\0'
;
//printf("
%s"
path);
//path中不止有一个/
else
path[i+1]='
findpath(topath);
intfindpath(char*topath)
unsignedinti=0;
intsign=1;
)==0)//如果命令是cd/
recent=root;
temp=recent;
strcpy(temppath,path);
if(topath[0]=='
)//cd命令以cd/开始
recent=root->
i++;
//printf("
\n%s"
if(recent!
=NULL&
recent!
=root)
strcat(path,"
//printf("
\n%s\n"
if(recent&
recent->
if(recent->
recent=recent->
else
{
printf("
路径错误!
\n"
return1;
}
while(i<
=strlen(topath)&
recent)
intj=0;
if(topath[i]=='
recent=recent->
{printf("
路径错误\n"
while(topath[i]!
i<
=strlen(topath))
recentpath[j]=topath[i];
recentpath[j]='
while((strcmp(recent->
filename,recentpath)!
=0||(recent->
=1))&
next!
=NULL)
filename,recentpath)==0)
isdir==0)
{strcpy(path,temppath);
recent=temp;
printf("
是文件不是目录。
strcat(path,recent->
filename);
=0||recent==NULL)
strcpy(path,temppath);
输入路径错误\n"
intmkdir()
{
temp=initnode("
child==NULL)
temp->
parent=recent;
temp->
recent->
child=temp;
printf("
目录建立成功!
else
ttemp=recent->
if(strcmp(ttemp->
filename,temp->
filename)==0&
ttemp->
isdir==1)
printf("
目录已存在!
return1;
while(ttemp->
ttemp=ttemp->
if(strcmp(ttemp->
ttemp->
next=temp;
prev=ttemp;
intcreate()
temp=initnode("
0);
recent->
文件创建成功!
ttemp=recent->
if(strcmp(ttemp->
文件已存在!
while(ttemp->
文件建立成功!
intrun()
filesystem:
path<
command;
if(strcmp(command,"
mkdir"
mkdir();
elseif(strcmp(command,"
dir"
dir();
cd"
cd();
create"
create();
read"
read();
rm"
rm();
write"
write();
delete"
del();
help"
help();
logout"
请参考help提供的命令列表!
voidmain()
***************************************************************"
********************操作系统课程设计项目*********************"
*简单文件系统模拟*"
*键入help可以获取帮助*"
createroot();
while
(1)
if(!
run())
break;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 试验 模拟 文件 管理 系统 方案