实验四文件系统实验Word下载.docx
《实验四文件系统实验Word下载.docx》由会员分享,可在线阅读,更多相关《实验四文件系统实验Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
UFD
AFD
用户名
文件名
打开文件名
文件目录指针
保护码
打开保护码
文件长度
读写指针
•
文件系统算法的流程图如下:
3.实验题:
1、增加2〜3个文件操作命令,并加以实现。
(如移动读写指针,改变文件属性,更换文件名,改变文件保护级别)。
#include<
iostream>
string>
conio.h>
usingnamespacestd;
structTYPE_UFD{
stringboolboolboolint
File_Name;
Read;
Write;
Execute;
Length_File;
};
structTYPE_MFD
{
stringUser_Name;
TYPE_UFD*Pointer;
structTYPE_AFD
int
File_ID;
bool
Pointer;
classTYPE_FILE_SYSTEM
public:
voidInitial(void);
voidStart(void);
private:
int_Number_Users;
int_Number_Files;
int_MaxNumber_Open_Files;
TYPE_MFD*_MFD;
TYPE_UFD*_UFD;
TYPE_AFD*_AFD;
voidTYPE_FILE_SYSTEM:
:
Initial(void)
_Number_Users=10;
_Number_Files=10;
_MaxNumber_Open_Files=5;
_UFD=newTYPE_UFD[_Number_Users*_Number_Files];
_MFD=newTYPE_MFD[_Number_Users];
inti=0;
for(i=0;
i<
_Number_Users;
i++)
_MFD[i].Pointer=&
(_UFD[i*_Number_Files]);
}
_AFD=newTYPE_AFD[_MaxNumber_Open_Files];
_MFD[0].User_Name="
chaochao"
;
_UFD[0].File_Name="
chaochao1.txt"
_UFD[0].Length_File=10;
_UFD[0].Read=true;
_UFD[0].Write=false;
_UFD[0].Execute=true;
_UFD[1].File_Name="
chaochao2.txt"
_UFD[1].Length_File=20;
_UFD[1].Read=true;
_UFD[1].Write=false;
_UFD[1].Execute=false;
for(i=2;
_Number_Files;
_UFD[i].File_Name="
"
_UFD[i].Length_File=-1;
_UFD[i].Read=false;
_UFD[i].Write=false;
_UFD[i].Execute=false;
Start(void)
intUser_ID;
inti,temp_int;
stringtemp;
charchoice;
intNumber_Open_Files;
stringUser_Name;
stringCommand;
TYPE_UFD*UFD;
do
cout<
<
"
Username:
cin>
>
User_Name;
for(User_ID=0;
User_ID<
User_ID++)
if(_MFD[User_ID].User_Name==User_Name)break;
if(User_ID==_Number_Users)
Badusername,pleasetryagain."
<
endl;
while(User_ID==_Number_Users);
Ok,welcometologin,"
User_Name<
!
UFD=_MFD[User_ID].Pointer;
_MaxNumber_Open_Files;
_AFD[i].File_ID=-1;
Number_Open_Files=0;
C:
\\"
;
cin>
Command;
if(Command=="
dir"
)
Filesofuser"
\t"
State\t"
Length\t"
Filename"
if(UFD[i].Length_File!
=-1)
if(UFD[i].Read==true)
R"
else
-"
if(UFD[i].Write==true)
W"
if(UFD[i].Execute==true)
E"
UFD[i].Length_File;
UFD[i].File_Name<
elseif(Command=="
diropen"
OpeningFilesofuser"
cout<
OpenFilename"
if(_AFD[i].File_ID!
if(_AFD[i].Read==true)
if(_AFD[i].Write==true)
if(_AFD[i].Execute==true)
UFD[_AFD[i].File_ID].File_Name
create"
if(UFD[i].Length_File==-1)
break;
if(i==_Number_Files)
Error:
youhavealreadyhad"
Number_Files<
files."
Pleaseentertheinformationofthenewfile:
Filename:
temp;
UFD[i].File_Name=temp;
Read(y/n):
choice=getch();
while(choice!
='
y'
&
&
choice!
n'
);
if(choice=='
UFD[i].Read=true;
UFD[i].Read=false;
Write(y/n):
UFD[i].Write=true;
UFD[i].Write=false;
Execute(y/n):
UFD[i].Execute=true;
UFD[i].Execute=false;
Length:
temp_int;
if(temp_int>
0)
UFD[i].Length_File=temp_int;
Ok,thenewfile"
iscreated!