文件系统实验报告_办公文档-招标投标

上传人:博****1 文档编号:567915156 上传时间:2024-07-22 格式:PDF 页数:25 大小:832.66KB
返回 下载 相关 举报
文件系统实验报告_办公文档-招标投标_第1页
第1页 / 共25页
文件系统实验报告_办公文档-招标投标_第2页
第2页 / 共25页
文件系统实验报告_办公文档-招标投标_第3页
第3页 / 共25页
文件系统实验报告_办公文档-招标投标_第4页
第4页 / 共25页
文件系统实验报告_办公文档-招标投标_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《文件系统实验报告_办公文档-招标投标》由会员分享,可在线阅读,更多相关《文件系统实验报告_办公文档-招标投标(25页珍藏版)》请在金锄头文库上搜索。

1、- - - - - 优质专业- 试验四 文件系统 一、 实验目的 1、 用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质容和执行过程有比较深入的了解。 2、 要求设计一个 n 个用户的文件系统, 每次用户可以保存 M个文件。 用户在一次运行中只能打开一个文件, 对文件必须设置保护措施, 且至少有 create 、 delete 、 open 、close 、read 、write 等命令。 二、 实验题目: 采用二级目录结构实现磁盘文件操作。 要求: 1普通文件的目录项包括文件名,文件类型,文件长度,指向文件容的指针容。 2目录文件的目录项包括目录名

2、,指向下一级目录块的指针容。假定每个目录文件最多只能占用一个块; 3程序功能方面的要求: 需要实现一个命令行操作界面,包含如下命令: 4程序实现方面的要求: (1) 、对于重名(创建时) ,文件不存在(删除时) ,目录不存在(改变目录时)等错误操作情况, 程序应该做出相应处理并给出错误信息, 但是程序不得因此而退出。 (2) 、界面友好,程序强壮。 (3) 、设置界面的提示符,提示的命令以及调试的方法应和前面的要求一致。不要自己设计命令或者附加不要求的功能。 三.实验源程序文件名: Filesystem_s.cpp 执行文件名: Project1.exe 四.实验分析 1)总论: 该系统是一个

3、多用户、多任务的实时操作系统。对用户和用户的文件数目并没有上限。也就是说该系统允许任何用户申请空间,而且在其目录下的文件数目并不做任何的限制。 该系统的操作命令如下: 、bye-用户注销命令。当使用该命令时,用户退出系统。命令格式: runbye 系统注销该用户并回到登陆界面。 、close-删除用户注册信息命令。执行该命令后,用户在系统中的所有信息,包括该用户目录下的所有文件都被删除。命令格式:runclose .完成后返回登陆界面。 、create- 在当前目录下创建一个文件,且该文件不能跟系统中的文件重名。该文件的管理信息登录到用户文件信息管理模块中。命令格式:runcreatefile

4、1。其中 file1 为要创建的文件名称。执行完该命令后回到执行命令行。 、delete- 删除当前用户目录下的一个文件。命令格式:rundeletefile1。返回命令行。 、list-显示当前注册目录下的所有文件信息, 包括文件名、 文件长度、 文件操作权限。- - - - - 优质专业- 命令格式:runlist 。 、chmod-改变某个文件的执行权限,但前提是该文件是该用户目录下的文件。命令格式:runchmodfile1。 、open-在 window 界面下打开某个文件。 命令格: runopenfile1 。 执行该命令后,文件 file1 将用在 windows 界面下的文件

5、形式打开。 用户可以在这个方式中对文件进行修改,并将修改后的容保存。 、read-读文件信息。将文件信息读入并显示在终端。命令格式:runreadfile1 。 、write- 向某个文件写入新的信息。用户可以选择用覆盖原来容的方式和在文件的末尾插入新信息的方式写入信息。 2)_系统采用二级文件目录。设置主目录(MFD)和用户文件目录(UFD),分别以文件的方式保存在磁盘中。在主目录中又注册用户的用户名和另一标志该用户目录下是否有文件的指针标记。用户文件目录用用户名作为文件名保存在磁盘,以便检索时方便对应。在用户文件目录中保存着该目录下所有的文件的文件名称、保护码、文件长度。 3) 该系统大量

6、使用高级语言中的文件操作函数,所以能实际看到文件的创建写入、读出、删除等效果。 4) 实验流程图 开始 选项 用户登录 新用户注册 退出程序 结束 在 MFD 中找到该用户? 初始化命令关键字(keyword ) 显示该用户目录下的所有文件管理信息 1 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存

7、在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- 5)源程序: #include #include #include #include #include conio.h #include #define NULL 0 #define keynum 10 #define getspace(type) (type*)malloc(sizeof(type) ch

8、ar cmd64; / 存放用户输入命令 char buffer36;/ char user32;/存放当前登陆的用户名 typedef char ALFA12; ALFA KWORDkeynum; 1 创建文件 删除文件 打开文件 读文件 写文件 改变权限 显示文件 保存当前主目录 删除用户 返回主界面 输入命令 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个

9、命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- struct UFD / 用户文件管理模块 char filename32; /文件名 int safecode; / 文件保护码 long length; / 文件长度 *curfile = NULL; struct MFD / 用户登陆信息

10、管理模块 char username32; /用户名 bool filepoint; / 用户目录下的文件指针,false 表示目录为空 *curuser = NULL,*elseuser=NULL; typedef UFD UFD; typedef MFD MFD; void main(); void KeyWord()/ 初始化命令关键字 strcpy(KWORD 1,bye); strcpy(KWORD 2,chmod); strcpy(KWORD 3,close); strcpy(KWORD 4,create); strcpy(KWORD 5,delete); strcpy(KWORD

11、 6,list); strcpy(KWORD 7,open); strcpy(KWORD 8,read); strcpy(KWORD 9,write); int LoginDisplay() / 登陆选项操作函数 int SELETE_1 = 0; do cout * 请选择操作*n1 、用户登陆 2、用户注册 0、退出SELETE_1; while(SELETE_12); system(cls); return SELETE_1; bool Login(int SELETE)/ 用户登陆,注册函数 FILE *fp,*fp1,*fp2; char name12; switch(SELETE)

12、 case 1:/用户登陆 if(fp = fopen(LOGIN.exe,rb) = NULL)/打开用户注册目录管理文件 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名

13、执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- coutn 错误:不能打开登陆文件。endl; getch();system(cls); return false; curuser = getspace(MFD); coutname; /输入用户登陆名 while(!feof(fp) /检查该用户是否合法 fread(curuser ,sizeof(MFD),1,fp); if(strcmp(curuser-username,name)=0) break; if(feof(fp)

14、 /如果没有找到跟当前登陆用户名相同的管理信息,提示出错 coutn 错误:该用户不存在。endl; fclose(fp); return false; else fclose(fp); return true; break; case 2: / 新用户注册 if(fp=fopen(LOGIN.exe,ab)=NULL)/如果登陆信息管理文件不存在 fp=fopen(LOGIN.exe,wb+); / 创建该信息管理文件 char name12; curuser = getspace(MFD); while(1) coutn * 新用户注册*endl; coutname; / 输入用户注册名

15、fp1 = fopen(LOGIN.exe,rb); while(!feof(fp1)/查看该用户名是否被别的用户占用 fread(curuser ,sizeof(MFD),1,fp1); if(strcmp(curuser-username,name) = 0)/该名称已经被使用 coutn 该用户已经存在,请重新输入!username,name); curuser-filepoint = NULL; fwrite(curuser,sizeof(MFD),1,fp); strcpy(user ,curuser-username);/生成用户文件管理模块 strcat(user ,.exe);

16、 / 用于管理用户目录下的各个文件 fp2=fopen(user ,wb+); fclose(fp2); coutn 注册成功!endl; / 提示注册成功 fclose(fp1); fclose(fp); break; fp = fopen(LOGIN.exe,rb); /显示当前注册用户的名称 while(1) fread(curuser ,sizeof(MFD),1,fp); if(feof(fp) break; coutusernamefilepoint = false)/当前用户目录下没有任何文件存在 coutn 用户 username 文件夹是空的username); strcat

17、(filename,.exe); if(fp=fopen(filename,rb)=NULL)/打开用户文件信息管理模块 coutn 无法打开用户:username 的文件!endl; getch(); return; else / 读入并将用户全部文件信息打印在终端 cout用户:username 目录下的文件:endl; UFD *ufd; int i=0; ufd = getspace(UFD); /申请存放用户文件模块的空间 while(1) fread(ufd,sizeof(UFD),1,fp); if(feof(fp)/全部输出完毕,结束 break; else/ 打印信息 cou

18、tfilenametlengthtsafecodeendl; fclose(fp); void ByeFile(bool BOOL)/ 注销函数,调用次函数用户可以退出系统 FILE *infile,*outfile; char out50; strcpy(out,outfilelocate.exe); if(infile=fopen(LOGIN.exe,rb)=NULL) coutn 保存错误。; / fclose(infile); return; else if(outfile=fopen(out,wb+)=NULL)/申请一个缓冲区管理模块 / 存放用户更新后的全部信息 操作命令的实质容

19、和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - -

20、 - - 优质专业- coutusername,curuser-username)=0) if(BOOL)/ 更新当前用户信息的操作 fwrite(curuser,sizeof(MFD),1,outfile); else continue;/如果用户想把自己的注册目录从系统中彻底删除 / 则执行该操作 else fwrite(mfd,sizeof(MFD),1,outfile);/写入新的模块 fclose(infile);fclose(outfile); remove(LOGIN.exe);/将旧的该用户的文件管理模块删除 rename(out,LOGIN.exe);/将新的用户的文件管理模

21、块重命名为用户目录下的管理模块 system(cls); main(); bool ClearUserFile()/ 用户要将自己的注册目录从系统彻底删除 / 首先将该用户目录下的全部文件删除 FILE *fp; char file50; strcpy(file,curuser-username); strcat(file,.exe); if(fp=fopen(file,rb)=NULL) /打开用户文件信息管理模块 / fclose(fp); coutfilename);/删除文件 fclose(fp); return true; void ClearUserMes()/ 删除用户全部信息

22、char name50; strcpy(name,curuser-username); strcat(name,.exe); remove(name); /从磁盘中删除用户文件信息管理模块 ByeFile(false);/更新系统的用户登陆信息管理模块 void DeleteUser()/ 删除用户注册目录的操作 char ch; coutn 该操作将会是你在系统所有信息删除,下次登陆时你必须重新申请用户名!endl; coutn 你确定要删除你在系统中的注册信息吗?Y/Nch; switch(ch)/提示用户确认删除 case Y: case y: if(ClearUserFile()/如果

23、用户的全部文件已经删除了 / 则可以将该用户的文件信息管理模块也从磁盘中删除 / 以免在没完全删除文件却删了该文件信息管理模块 / 使得这些文件无法再进行管理造成磁盘空间的浪费 ClearUserMes();/删除文件信息管理模块 break; default: coutfilepoint=true; if(fp=fopen(buffer,r)=NULL)/ 如果没有跟用户输入文件名相同的文件 if(fp=fopen(buffer,w)=NULL) coutn 创建文件失败!; / fclose(fp); return; fclose(fp); else / 用户要创建的文件已经存在 cout

24、ch; switch(ch) case Y: case y: coutbuffer; strcat(buffer,.txt); fclose(fp); if(fp=fopen(buffer,w)=NULL) coutusername); strcat(user ,.exe); curfile = getspace(UFD); strcpy(curfile-filename,buffer);/文件名 curfile-length=0; /该文件长度为零 curfile-safecode=30; /设置该文件的默认权限 /11 00 ,文件主有读和写权,其他用户没有读写权 if(fp=fopen(

25、user,ab)=NULL) coutn 错误:你可能不是合法用户。endl; getch(); else fwrite(curfile,sizeof(UFD),1,fp);/将该文件信息写入用户文件信息管理模块中 coutn 文件 filename 创建成功!; fclose(fp); void DeleteFile()/ 删除当前目录下一个文件的操作 char ch; FILE *infile,*outfile; coutn 确定要删除文件:buffer Y/Nch;/ 提示用户确认删除 switch(ch) case Y: case y:/更新用户文件信息管理模块,这里同样使用缓冲区模块

26、来更新 / 方法与上面将到的类似 char out50,in50; strcpy(out,outfilelocate.exe); strcpy(in,curuser-username); strcat(in,.exe); if(infile=fopen(in,rb)=NULL)/打开该用户的文件信息管理模块 coutn 保存错误。; /fclose(infile); return; else if(outfile=fopen(out,wb+)=NULL) 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保

27、护措施且至少有等命令二实验题目采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- coutfilename,buffer)=0)/要进行更新的信息 continue; else fwr

28、ite(ufd,sizeof(UFD),1,outfile);/写入新模块 fclose(infile);fclose(outfile); remove(in);/在磁盘移除就模块 rename(out,in); / 新模块命名为当前用户文件信息管理模块 remove(buffer);/从磁盘中删除该文件 break; default: break; void ListAllFile()/ 显示当前用户目录下的文件信息 DisplayUFD(); void OpenFile()/ 在 window 模式下打开该文件 system(buffer);/buffer为文件名,如:file1.txt

29、bool QueryModElse(bool BOOL,bool &flag)/ 查询其它用户目录下文件的文件 / 当该文件的权限允许当前用户对其执行有关操作时,返回 ture FILE *fp; char user50; 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等

30、错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- UFD *ufd = getspace(UFD);/elseuser表示除当前用户外的所有用户注册目录 strcpy(user ,elseuser-username); strcat(user ,.exe); if(fp=fopen(user,rb)=NULL)/ 打开一个其它的用户文件信息管理模块 / fclose(fp); cout

31、filename,buffer)=0) if(BOOL)/ 该用户请求写该文件 if(ufd-safecode= 31 | ufd-safecode= 33) /1101 、1111 最后一位为 1,有写权 return true; else coutn 你无权对文件 buffersafecode = 32 | ufd-safecode = 33) /1110 、1111 倒数第二位为 1,有读权 return true; else coutn 你无权对文件 bufferusername); strcat(user ,.exe); if(fp=fopen(user,rb)=NULL)/ 打开用

32、户文件信息管理模块 / fclose(fp); coutfilename,buffer)=0)/在当前用户注册目录下 / 找到该文件,返回真值 fclose(fp);return true; bool WriteRight(int len,bool BOOL)/ 查看是否已经正确地写入到该文件信息中 / 是则返回真值 char user50,outfile50; 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件

33、最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- FILE *fp,*fp1; strcpy(user ,elseuser-username); strcat(user ,.exe); if(fp=fopen(user,rb)=NULL) ret

34、urn false; else UFD *ufd = getspace(UFD); while(1)/在此用户目录下查找匹配文件 fread(ufd,sizeof(UFD),1,fp); if(feof(fp) fclose(fp);return false; if(strcmp(ufd-filename,buffer)=0)/找到要写入新的长度的文件 strcpy(outfile,outfilelocate.exe); if(fp1=fopen(outfile,wb+)=NULL) coutfilename,buffer)=0)/找到匹配的文件 if(BOOL) ufd-length+=le

35、n; /在文件末追加容的操作 else ufd-length =len; / 覆盖原文件容 fwrite(ufd,sizeof(UFD),1,fp1); fclose(fp);fclose(fp1); remove(user); rename(outfile,user); return true; void WriteLengthToFile(int Len,bool BOOL)/ 将文件长度写入文件管理模块中 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二级目录结

36、构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- / 因为当前用户可以对其它用户的文件进行操作(只要权限允许) / 所以应该在整个文件系统目录下查找该文件的位置 FILE *fp; if(fp=f

37、open(LOGIN.exe,rb)=NULL)/不能打开文件 coutn 写入文件长度错误_1!; / fclose(fp); return; else elseuser = getspace(MFD); while(1) fread(elseuser,sizeof(MFD),1,fp); if(feof(fp) break; else if(WriteRight(Len,BOOL)/查看是否已经正确地写入到该文件信息中 fclose(fp);return; coutn 写入文件长度错误_2!; fclose(fp);return; void WriteFile()/ 向文件写入信息的操作

38、if(!QueryMod(true)/查询当前用户对该文件是否有写权 return;/对该文件没有写权则返回 char ch; int i=0; FILE *fp; if(fp=fopen(buffer,r)=NULL)/ 查询该文件是否存在 coutn 该文件不存在,请创建该文件后再写入。; / fclose(fp); return; fclose(fp); coutn 请选择写入方式:endl; cout 1、覆盖原文件 2、在原文件末尾写入 3、取消ch; cout开始输入正文:endl; switch(ch) 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用

39、户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- case 1:/覆盖原文件 if(fp

40、=fopen(buffer,w)=NULL) coutn 文件打开失败。; else ch=getchar(); while(ch!=#)/将新的文件容写入到文件的磁盘位置中 i+; fputc(ch,fp); ch=getchar(); fclose(fp); WriteLengthT oFile(i,false);/将文件长度写入文件管理模块 break; case 2: if(fp=fopen(buffer,a)=NULL) coutn 文件打开失败。; else ch=getchar(); while(ch!=#)/将新的文件容写入到文件的磁盘位置中 i+; fputc(ch,fp);

41、 ch=getchar(); fclose(fp); WriteLengthT oFile(i,true);/将文件长度写入文件管理模块 break; default: break; void ReadFile()/ 读文件函数 if(!QueryMod(false)/查询当前用户是否有权读该文件 return;/没有读权,则返回 FILE *fp; if(fp=fopen(buffer,r)=NULL)/ 打开该文件 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二

42、级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- coutbuffer; coutn 该文件不存在。; return; else char ch; ch=fgetc(fp); while(

43、ch!=EOF)/将该文件信息逐一输出到终端 putchar(ch); ch=fgetc(fp); coutusername); strcat(in,.exe); strcpy(out,outfilelocate.exe); if(fp=fopen(in,rb)=NULL) / fclose(fp); coutn 操作出现错误,对此我们表示歉意!;return; else while(1)/查看该文件是否在当前用户的注册目录下 / 任何用户无权修改不是自己目录下的文件的权限值 fread(ufd,sizeof(UFD),1,fp); if(feof(fp)/在当前目录下找不到该文件,说明该用户

44、无权修改该文件权限 coutn 你没有权限对文件 bufferfilename,buffer)=0)/找到该文件,继续操作 fclose(fp);break; 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者

45、附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- bool flag1=true; while(flag1) coutn 输入文件 buffermod;/输入权限值 if(mod33) / 确保输入的权限值正确 coutn 错误:权限值必须在 3033 之间; continue; else char ch; switch(mod)/告诉用户对该文件权限修改的结果,以便用户确认 case 30: coutn 当前权限设置:其他用户对buffer既没读

46、权也没写权!; break; case 31: coutn 当前权限设置:其他用户对buffer没读权但有写权!; break; case 32: coutn 当前权限设置:其他用户对buffer有读权但没写权!; break; case 33: coutn 当前权限设置:其他用户对buffer既有读权也有写权!; break; default: break; coutch; switch(ch) case Y: case y:flag1=false;break; default: flag1=true; / 更新文件信息管理模块,相关操作类似上面,不在赘述 if(infile=fopen(i

47、n,rb)=NULL) coutn 操作出现错误,对此我们表示歉意!;fclose(infile); return; else 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件

48、名执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- if(outfile=fopen(out,wb+)=NULL) coutfilename,buffer)=0) ufd-safecode=mod; fwrite(ufd,sizeof(UFD),1,outfile); fclose(infile);fclose(outfile); remove(in); rename(out,in); void Execute(int i,int len,int cmdset)/ 执行命令函数 i

49、nt j=0; for(;i|cmdi= ) break; bufferj=cmdi;j+; bufferj=0; strcat(buffer,.txt); switch(cmdset) case 1: /退出 ByeFile(true); break; case 2: /改变文件操作权限 if(strcmp(buffer,.txt)=0) coutn 输入命令出错!; return; ChangeMod(); break; 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目

50、采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- case 3: /删除用户 DeleteUser(); break; case 4: /创建文件 if(strcmp(buffer,

51、.txt)=0) coutn 输入命令出错!; return; CreatFile(); break; case 5: /删除文件 if(strcmp(buffer,.txt)=0) coutn 输入命令出错!; return; DeleteFile(); break; case 6: /列出该用户所有文件清单 ListAllFile(); break; case 7: /打开文件 if(strcmp(buffer,.txt)=0) coutn 输入命令出错!; return; OpenFile(); break; case 8: /读文件 if(strcmp(buffer,.txt)=0)

52、coutn 输入命令出错!; return; ReadFile(); break; case 9: /写文件 if(strcmp(buffer,.txt)=0) coutn 输入命令出错!; return; WriteFile(); break; default: break; 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面

53、的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- void Command()/ 读取用户输入的命令,并将其转换成系统能识别的命令 int len = 0,i,j; int cmdset; while(1) cmdset = 0; coutcmd; len = strlen(cmd); i=0;j=0; while(cmdi=|c

54、mdi= )i+;/过滤空格键和 for(;i | cmdi= | i=len-1) if(cmdi= | cmdi= ) bufferj = 0; else if(i=len-1) bufferj=cmdi; bufferj+1=0; i+; j=0; int low=1,mid,high=keynum-1; bool BOOL = false; while(low=high)/找到该命令关键字的部识别码 mid=(low+high)/2; if (strcmp(buffer,KWORDmid)=0) low=mid+1; if(strcmp(buffer,KWORDmid)=0) BOOL

55、 = true; break; if(!BOOL) coutnbuffer|cmdi= )i+;/过滤空格键和 buffer0=0; Execute(i,len,cmdset); / 执行该命令 void main() while(1) int SELETE = LoginDisplay(); if(SELETE=0) exit(0); bool BOOL = Login(SELETE);/用户登陆,或者注册函数 if(BOOL) KeyWord(); / 初始化命令关键字 DisplayUFD();/打印用户目录下的文件 Command(); / 命令行操作 五.调试结果: 1)系统界面如下

56、: 2)创建新用户:如果你以前还没有注册,则可以先选择 2,创建一个用户. 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的

57、实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- 3)创建用户后,可以用 createxiao命令建立一个名为 xiao 的 text 文件.并可以用 list 查看文件的信息(xiao.txt是文件名,0 表示文件当前的长度为 0,30 用二进制表示为 1100,表示当前用户有读写权,而其它用户没有读权也没有写权)。 4)用 writexiao命令向这个文件写信息,选择 1 或是 2,输入信息如下: ( 注意:所有信息输入完后要以#号键作为结束标志。) 5)用 readxiao命令读文件中的容. 6)此时再writexiao命令

58、向这个文件写信息,选择1,输入信息,并用readxiao查看,结果如下: 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的实

59、时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且- - - - - 优质专业- 7)还可以用 openxiao这个命令打开文件,发现文件容变为: 8)以上是文件的基本操作,要懂得这个系统的更多功能,用户只需亲自使用这个界面友好,提示众多的软件几分钟,就可以很自由的操作这个软件了.所以这里就不一一介绍了. 六.心得体会: 此次实验做的比较全面,编译也是用 C+builder. 主要是因为操作系统的课程设计也是类似的文件系统管理,可重新做类似的事,兴趣没有这么高了,不过还是有新的收获的. 操作命令的实质容和执行过程有比较深入的了解要求设计一个个用户的文件系统每次用户可以保存个文件用户在一次运行中只能打开一个文件对文件必须设置保护措施且至少有等命令二实验题目采用二级目录结构实现磁盘文件操作级目录块的指针容假定每个目录文件最多只能占用一个块程序功能方面的要求需要实现一个命令行操作界面包含如下命令程序实现方面的要求对于名创建时文件不存在删除时目录不存在改变目录时等错误操作情况程序应该做出相应和前面的要求一致不要自己设计命令或者附加不要求的功能三实验源程序文件名执行文件名四实验分析总论该系统是一个多用户多任务的实时操作系统对用户和用户的文件数目并没有上限也就是说该系统允许任何用户申请空间而且

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号