文件系统实验报告Word下载.docx
- 文档编号:18513213
- 上传时间:2022-12-18
- 格式:DOCX
- 页数:33
- 大小:63.52KB
文件系统实验报告Word下载.docx
《文件系统实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《文件系统实验报告Word下载.docx(33页珍藏版)》请在冰豆网上搜索。
7、open-在window界面下翻开某个文件.命令格:
run\open>
file1↙.执行该命令后,文件file1将用在windows界面下的文件形式翻开.用户可以在这个方式中对文件进行修改,并将修改后的内容保管.
8、read-读文件信息.将文件信息读入并显示在终端.命令格式:
run\read>
9、write-向某个文件写入新的信息.用户可以选择用覆盖原来内容的方式和在文件的末尾拔出新信息的方式写入信息.
2)_系统采纳二级文件目录.设置主目录(MFD)和用户文件目录(UFD),分别以文件的方式保管在磁盘中.在主目录中又注册用户的用户名和另一标识表记标帜该用户目录下是否有文件的指针标识表记标帜.用户文件目录用用户名作为文件名保管在磁盘,以便检索时方便对应.在用户文件目录中保管着该目录下所有的文件的文件名称、呵护码、文件长度.
3)该系统年夜量使用高级语言中的文件把持函数,所以能实际看到文件的创立写入、读出、删除等效果.
4)实验流程图
5)源法式:
#include<
iostream.h>
stdio.h>
stdlib.h>
string.h>
#include"
conio.h"
dos.h>
#defineNULL0
#definekeynum10
#definegetspace(type)(type*)malloc(sizeof(type))
charcmd[64];
//寄存用户输入命令
charbuffer[36];
//
charuser[32];
//寄存以后登岸的用户名
typedefcharALFA[12];
ALFAKWORD[keynum];
structUFD{//用户文件管理模块
charfilename[32];
//文件名
intsafecode;
//文件呵护码
longlength;
//文件长度
}*curfile=NULL;
structMFD{//用户登岸信息管理模块
charusername[32];
//用户名
boolfilepoint;
//用户目录下的文件指针,false暗示目录为空
}*curuser=NULL,*elseuser=NULL;
typedefUFDUFD;
typedefMFDMFD;
voidmain();
voidKeyWord()//初始化命令关键字
{
strcpy(KWORD[1],"
bye"
);
strcpy(KWORD[2],"
chmod"
strcpy(KWORD[3],"
close"
strcpy(KWORD[4],"
create"
strcpy(KWORD[5],"
delete"
strcpy(KWORD[6],"
list"
strcpy(KWORD[7],"
open"
strcpy(KWORD[8],"
read"
strcpy(KWORD[9],"
write"
}
intLoginDisplay()//登岸选项把持函数
intSELETE_1=0;
do
{
cout<
<
"
*****请选择把持*****\n1、用户登岸2、用户注册0、退出"
endl;
cin>
>
SELETE_1;
}while(SELETE_1<
0||SELETE_1>
2);
system("
cls"
returnSELETE_1;
boolLogin(intSELETE)//用户登岸,注册函数
FILE*fp,*fp1,*fp2;
charname[12];
switch(SELETE)
case1:
//用户登岸
if((fp=fopen("
LOGIN.exe"
"
rb"
))==NULL)//翻开用户注册目录管理文件
{
cout<
\n毛病:
不能翻开登岸文件."
getch();
system("
returnfalse;
}
curuser=getspace(MFD);
cout<
\n*****登岸*****\n用户名:
;
name;
//输入用户登岸名
while(!
feof(fp))//检查该用户是否合法
fread(curuser,sizeof(MFD),1,fp);
if(strcmp(curuser->
username,name)==0)
break;
if(feof(fp))//如果没有找到跟以后登岸用户名相同的管理信息,提示犯错
该用户不存在."
fclose(fp);
returnfalse;
else
fclose(fp);
returntrue;
break;
case2:
//新用户注册
if((fp=fopen("
ab"
))==NULL)//如果登岸信息管理文件不存在
fp=fopen("
wb+"
//创立该信息管理文件
charname[12];
while
(1)
\n*****新用户注册*****"
用户名:
cin>
//输入用户注册名
fp1=fopen("
while(!
feof(fp1))//检查该用户名是否被另外用户占用
{
fread(curuser,sizeof(MFD),1,fp1);
if(strcmp(curuser->
username,name)==0)//该名称已经被使用
{
cout<
\n该用户已经存在,请重新输入!
getch();
break;
}
}
if(feof(fp1))//该名称没有被另外用户占用
strcpy(curuser->
username,name);
curuser->
filepoint=NULL;
fwrite(curuser,sizeof(MFD),1,fp);
strcpy(user,curuser->
username);
//生成用户文件管理模块
strcat(user,"
.exe"
//用于管理用户目录下的各个文件
fp2=fopen(user,"
fclose(fp2);
cout<
\n注册胜利!
//提示注册胜利
fclose(fp1);
fp=fopen("
//显示以后注册用户的名称
if(feof(fp))
curuser->
username<
returntrue;
default:
}
voidDisplayUFD()//打印用户信息,包括用户的各个文件
//名称、长度和把持权限的设置信息
if(curuser->
filepoint==false)//以后用户目录下没有任何文件存在
\n用户"
文件夹是空的"
else
{//存在文件,将所有文件信息打印在终端
FILE*fp;
charfilename[12];
strcpy(filename,curuser->
strcat(filename,"
if((fp=fopen(filename,"
))==NULL)//翻开用户文件信息管理模块
\n无法翻开用户:
的文件!
return;
{//读入并将用户全部文件信息打印在终端
用户:
目录下的文件:
UFD*ufd;
inti=0;
ufd=getspace(UFD);
//申请寄存用户文件模块的空间
while
(1)
{
fread(ufd,sizeof(UFD),1,fp);
if(feof(fp))//全部输出完毕,结束
else//打印信息
ufd->
filename<
\t"
length<
safecode<
voidByeFile(boolBOOL)//注销函数,调用次函数用户可以退出系统
FILE*infile,*outfile;
charout[50];
strcpy(out,"
outfilelocate.exe"
if((infile=fopen("
))==NULL)
\n保管毛病."
//fclose(infile);
return;
if((outfile=fopen(out,"
))==NULL)//申请一个缓冲区管理模块
//寄存用户更新后的全部信息
//fclose(outfile);
fclose(infile);
return;
MFD*mfd=getspace(MFD);
{//将旧文件管理信息读出,并保管到新的文件信息管理模块中
fread(mfd,sizeof(MFD),1,infile);
if(feof(infile))
if((strcmp(mfd->
username,curuser->
username))==0)
if(BOOL)//更新以后用户信息的把持
fwrite(curuser,sizeof(MFD),1,outfile);
elsecontinue;
//如果用户想把自己的注册目录从系统中完全删除
//则执行该把持
else
fwrite(mfd,sizeof(MFD),1,outfile);
//写入新的模块
fclose(outfile);
remove("
//将旧的该用户的文件管理模块删除
rename(out,"
//将新的用户的文件管理模块重命名为用户目录下的管理模块
}
main();
boolClearUserFile()//用户要将自己的注册目录从系统完全删除
//首先将该用户目录下的全部文件删除
FILE*fp;
charfile[50];
strcpy(file,curuser->
strcat(file,"
if((fp=fopen(file,"
))==NULL)//翻开用户文件信息管理模块
//fclose(fp);
\n把持失败."
returntrue;
{//将该用户目录下的文件逐个从磁盘删除
UFD*ufd=getspace(UFD);
fread(ufd,sizeof(UFD),1,fp);
else
remove(ufd->
filename);
//删除文件
voidClearUserMes()//删除用户全部信息
charname[50];
strcpy(name,curuser->
strcat(name,"
remove(name);
//从磁盘中删除用户文件信息管理模块
ByeFile(false);
//更新系统的用户登岸信息管理模块
voidDeleteUser()//删除用户注册目录的把持
charch;
\n该把持将会是你在系统所有信息删除,下次登岸时你必需重新申请用户名!
cout<
\n你确定要删除你在系统中的注册信息吗?
Y/N"
cin>
ch;
switch(ch)//提示用户确认删除
case'
Y'
y'
if(ClearUserFile())//如果用户的全部文件已经删除
//则可以将该用户的文件信息管理模块也从磁盘中删除
//以免在没完全删除文件却删了该文件信息管理模块
//使得这些文件无法再进行管理造成磁盘空间的浪费
ClearUserMes();
//删除文件信息管理模块
\n你取消了此把持!
voidCreatFile()//在以后用户目录下创立文件
curuser->
filepoint=true;
if((fp=fopen(buffer,"
r"
))==NULL)//如果没有跟用户输入文件名相同的文件
if((fp=fopen(buffer,"
w"
\n创立文件失败!
//fclose(fp);
{//用户要创立的文件已经存在
\n该文件已经存在,创立另一个文件?
charch;
switch(ch)
case'
\n输入新文件名:
buffer;
strcat(buffer,"
.txt"
//fclose(fp);
break;
default:
strcpy(user,curuser->
strcat(user,"
curfile=getspace(UFD);
strcpy(curfile->
filename,buffer);
//文件名
curfile->
length=0;
//该文件长度为零
safecode=30;
//设置该文件的默认权限
//1100,文件主有读和写权,其他用户没有读写权
if((fp=fopen(user,"
你可能不是合法用户."
getch();
fwrite(curfile,sizeof(UFD),1,fp);
//将该文件信息写入用户文件信息管理模块中
\n文件"
curfile->
创立胜利!
fclose(fp);
voidDeleteFile()//删除以后目录下一个文件的把持
\n确定要删除文件:
buffer<
Y/N"
//提示用户确认删除
switch(ch)
//更新用户文件信息管理模块,这里同样使用缓冲区模块来更新
//方法与上面将到的类似
charout[50],in[50];
strcpy(out,"
strcpy(in,curuser->
strcat(in,"
if((infile=fopen(in,"
))==NULL)//翻开该用户的文件信息管理模块
//fclose(infile);
return;
UFD*ufd=getspace(UFD);
{
fread(ufd,sizeof(UFD),1,infile);
//从旧模块读出信息
if((strcmp(ufd->
filename,buffer))==0)//要进行更新的信息
continue;
fwrite(ufd,sizeof(UFD),1,outfile);
//写入新模块
}
remove(in);
//在磁盘移除就模块
rename(out,in);
//新模块命名为以后用户文件信息管理模块
}
remove(buffer);
//从磁盘中删除该文件
voidListAllFile()//显示以后用户目录下的文件信息
DisplayUFD();
voidOpenFile()//在window模式下翻开该文件
boolQueryModElse(boolBOOL,bool&
flag)//查询其它用户目录下文件的文件
//当该文件的权限允许以后用户对其执行有关把持时,返回ture
charuser[50];
UFD*ufd=getspace(UFD);
//elseuser暗示除以后用户外的所有用户注册目录
strcpy(user,elseuser->
))==NULL){//翻开一个其它的用户文件信息管理模块
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文件系统 实验 报告