Linux文件系统实验报告Word下载.docx
- 文档编号:8298633
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:21
- 大小:136.13KB
Linux文件系统实验报告Word下载.docx
《Linux文件系统实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《Linux文件系统实验报告Word下载.docx(21页珍藏版)》请在冰点文库上搜索。
如果所读文件不存在,系统会显示文件不存在。
写文件用户可写或重写读写文件中的内容,并保存文件中的重写内容,以供下次读取;
当所要写的文件不是可写的文件时,系统会显示该文件不可写;
当所要写的文件并不存在时,系统会显示该文件不存在。
执行文件:
登录用户后,用户可执行系统中已创建的执行文件;
当该文件不是可执行文件时,系统会显示该文件不可执行;
当该文件不存在时,系统将会显示该文件不存在。
关闭文件:
可通过选择关闭文件的功能选项,来关闭系统中所有打开的文件,如果没有文件被打开,则系统会显示没有文件打开。
删除用户、文件、文件夹:
用户可通过选择删除的功能选项来删除不想再保存的文件和文件夹,删除后,用户会自动注销;
当选择删除用户的功能选项时,系统会删除该用户,以及该用户所创建的所有文件和文件夹。
2、概要设计
打开文件流程图:
写文件流程图:
关闭文件流程图:
3、详细设计
(1)用户结构:
账号与密码结构
typedefstructusers
{
char
name[8];
pwd[10];
}users;
本系统有8个默认的用户名,前面是用户名,后面为密码,用户登陆时只要输入正确便可进入系统,否则提示失败要求重新输入。
usersusrarray[8]=
"
usr1"
"
usr2"
usr3"
usr4"
usr5"
usr6"
usr7"
usr8"
};
(2)数据结构说明
a)文件结构链表
structfnode
charfilename[FILENAME_LENGTH];
int
isdir;
intisopen;
charcontent[255];
fnode*parent;
fnode*child;
fnode*prev;
fnode*next;
b)函数介绍
fnode*initfile(charfilename[],intisdir);
//初始化文件或目录
voidcreateroot();
//建立系统根目录
intrun();
系统运行
intfindpara(char*topara);
对参数进行处理
boolchklogin(char*users,char*pwd);
检查账号与口令
voidhelp();
命令列表
intmkdir();
建立目录
intcreate();
建立文件
intread();
读取文件
intwrite();
写入文件
intdel();
删除文件
intcd();
切换目录
intdir();
文件与目录列表
4、代码清单
#include"
stdio.h"
iostream.h"
string.h"
iomanip.h"
#defineFILENAME_LENGTH10//文件名称长度
#defineCOMMAND_LENGTH10//命令行长度
#definePARA_LENGTH30//参数长度
//账号结构
typedefstructusers
charname[8];
charpwd[10];
//文件结构
intisdir;
intisopen;
charcontent[255];
fnode*parent;
fnode*child;
fnode*prev;
fnode*next;
//账号
"
fnode*initfile(charfilename[],intisdir);
voidcreateroot();
intrun();
intfindpara(char*topara);
boolchklogin(char*users,char*pwd);
voidhelp();
intmkdir();
intcreate();
intread();
intwrite();
intdel();
intcd();
intdir();
fnode*root,*recent,*temp,*ttemp;
charpara[PARA_LENGTH],command[COMMAND_LENGTH],temppara[PARA_LENGTH],recentpara[PARA_LENGTH];
//创建文件与目录结点
fnode*initfile(charfilename[],intisdir)
fnode*node=newfnode;
strcpy(node->
filename,filename);
node->
isdir=isdir;
isopen=0;
parent=NULL;
child=NULL;
prev=NULL;
next=NULL;
returnnode;
}
//创建文件存储结点
voidcreateroot()
recent=root=initfile("
/"
1);
root->
prev=root->
strcpy(para,"
);
}
intmkdir()
{
temp=initfile("
cin>
>
temp->
filename;
if(recent->
child==NULL)
{
temp->
parent=recent;
recent->
child=temp;
prev=temp->
else
ttemp=recent->
child;
while(ttemp->
next)
ttemp=ttemp->
next;
if(strcmp(ttemp->
filename,temp->
filename)==0&
&
ttemp->
isdir==1)
printf("
对不起,目录已存在!
return1;
ttemp->
next=temp;
prev=ttemp;
return1;
intcreate()
0);
gets(temp->
content);
//cin>
content;
cout<
<
文件建立成功!
endl;
isdir==0)
对不起,文件已存在!
intdir()
inti=0,j=0;
temp=newfnode;
temp=recent;
if(temp!
=root)
{cout<
<
DIR>
.."
i++;
if(temp->
child==NULL)
Total:
directors"
i<
files"
j<
temp=temp->
while(temp)
if(temp->
isdir)
{cout<
filename<
FILE>
j++;
temp=temp->
cout<
intread()
charfilename[FILENAME_LENGTH];
cin>
文件不存在!
if(strcmp(recent->
child->
filename,filename)==0)
recent->
content<
temp=recent->
while(temp->
if(strcmp(temp->
next->
intwrite()
isopen=1;
//设置文件标记为打开
//设置文件标记为关闭
文件写入成功!
intcd()
{chartopara[PARA_LENGTH];
topara;
if(strcmp(topara,"
)==0)
inti;
while(recent->
prev)
recent=recent->
prev;
parent)
parent;
i=strlen(para);
while(para[i]!
='
/'
&
i>
0)i--;
if(i!
=0)
para[i]='
\0'
;
else
para[i+1]='
else
findpara(topara);
intfindpara(char*topara)
inti=0;
intsign=1;
recent=root;
temp=recent;
strcpy(temppara,para);
if(topara[0]=='
)
recent=root->
i++;
if(recent!
=NULL&
recent!
strcat(para,"
if(recent&
child)
路径错误!
\n"
while(i<
=strlen(topara)&
recent)
intj=0;
if(topara[i]=='
{printf("
路径错误\n"
return0;
while(topara[i]!
i<
=strlen(topara))
recentpara[j]=topara[i];
recentpara[j]='
while((strcmp(recent->
filename,recentpara)!
=0||(recent->
isdir!
=1))&
next!
=NULL)
filename,recentpara)==0)
{strcpy(para,temppara);
recent=temp;
是文件不是目录。
strcat(para,recent->
filename);
=0||recent==NULL)
strcpy(para,temppara);
输入路径错误\n"
intdel()
temp=newfnode;
next&
(strcmp(temp->
filename,filename)!
=0||temp->
=0))
不存在该文件!
parent==NULL)
prev->
next=temp->
parent=temp->
parent->
child=temp->
deletetemp;
文件已删除!
boolchklogin(char*users,char*pwd)
for(i=0;
8;
i++)
if((strcmp(users,usrarray[i].name)==0)&
(strcmp(pwd,usrarray[i].pwd)==0))
returntrue;
returnfalse;
voidhelp(void)
命令一览"
create:
建立文件。
read:
读取文件。
write:
写入文件,支持多线程"
del:
删除文件。
mkdir:
建立目录。
cd:
切换目录。
logout:
退出登录。
intrun()
linux:
para<
command;
if(strcmp(command,"
mkdir"
mkdir();
elseif(strcmp(command,"
dir"
dir();
cd"
cd();
create"
create();
read"
read();
write"
write();
elseif(strcmp(command,"
del"
del();
help"
help();
logout"
请参考help提供的命令列表!
intmain()
inti=0;
boolin=false;
charusers[8],pwd[12];
***************************************************************"
*简单的二级Linux文件系统*"
*账号:
usr1-usr8密码:
usr1-usr8*"
*你只有三次机会来试验账号*"
*键入help可以获取帮助*"
while(i<
3)
Login:
users;
Pass:
pwd;
if(chklogin(users,pwd))
{in=true;
break;
createroot();
while(in)
if(!
run())
五、实验结果与分析
能够很成功的对文件进行读写操作,意见保存和删除
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 文件系统 实验 报告