文件操作与管理_第1页
文件操作与管理_第2页
文件操作与管理_第3页
文件操作与管理_第4页
文件操作与管理_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统课程设计报告操作系统课程设计报告任务名称: 文件操作与管理 指导教师: 专 业: 班 级: 学生姓名: 学 号: 完成日期: 一、操作系统课程设计的目的与要求1、目的随着社会信息量的不断增长,要求计算机处理的信息与日俱增,涉及到社会生活的各个方面。因此,文件管理是操作系统的一个极为重要的组成部分。学生应独立地用C语言(或其它程序设计语言)编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。2、要求(1) 设计一个有n个用户的文件系统,每个用户最多可保存m个文件。(2) 限制用户

2、在一次运行中只能打开l个文件。(3) 系统应能检查输入命令的正确性,出错要显示出错原因。(4) 对文件必须设置保护措施,如只能执行,允许读、允许写等。在每次打开文件时,根据本次打开的要求,再次设置保护级别,即可有二级保护。(5) 对文件的操作至少应有下述几条命令:creat 建立文件。delete 删除文件。open 打开文件。close 关闭文件。read 读文件。write 写文件。二、简述课程设计内容、主要功能和实现环境(1) 本任务设计一个10个用户的文件系统,每个用户最多可保存10个文件,一次运行中用户可打开5个文件。(2) 程序采用二级文件目录,即设置主文件目录(MFD)和用户文件

3、目录(UFD)。前者应包含文件主(即用户)及他们的目录区指针;后者应给出每个文件主占有的文件目录,即文件名,保护码,文件长度以及他们存放的位置等。另外为打开文件设置运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。(3) 为了便于实现,简化对文件的读写操作,在执行读写命令时,只修改读写指针,并不进行实际文件的读写操作。环境:vc+6.0三、任务的分析、设计、实现和讨论1、任务的分析(1) 因系统小,文件目录的检索使用了简单的线性搜索,而没有采用Hash等有效算法。(2) 文件保护简单实用了三位保护码,对应于允许读、允许写和运行执行,如下所示:1 1 1 允许写允

4、许读允许执行如对应位为0,则不允许。(3) 程序中使用的主要数据结构如下:UFDMFD用户名文件目录指针用户名文件目录指针用户名文件目录指针文件名保护码文件长度文件名文件名保护码文件长度文件名主文件目录和用户文件目录打开文件号打开保护码读写指针打开文件目录(4) 程序框图如图所示。2、任务的设计与实现(分别给出系统总控和本人负责实现的算法流程图与说明)1. 整个程序运行过程如下:输入用户名在MFD中查找显示UFD文件链表初始化AFD运行文件表输入操作命令执行操作命令保存文件目录打印文件目录结束2. void Create ( ) 创建一个文件选择CREATE命令后,查看该用户的UFD链表内是否

5、还有空闲结点:(1) 若有则设置该结点的内容,然后打开、修改AFD;(2) 若无则报错并退出。(3)3. void Read( ) 读一个文件读文件的关键是保护码的判断。选择了READ命令后,输入需要读的文件名,在UFD中搜索是否有该文件名:(1) 若有,但该文件没被打开,则报错;(2) 若有,且已被打开,此处要分两种情况:l 如果保护码的读位为“0”,则不能对该文件进行读操作。l 否则,就通过文件号来读文件,即通过AFD中的point指针来查找该文件。(3)4. Void Nowshow( )显示当前用户目录程序运行结果3操作过程和结果分析用户验证创建文件写文件读文件显示当前用户目录关闭与删

6、除更改用户结束四、操作系统课程设计小结(收获、不足与建议)这次实验是写一个控制用户和用户目录下的文件的管理的程序,要求虽然很简单,但实际上要写出来其实需要很多知识,对于一个刚入门的人来说还是很有难度的,虽然项目是小组完成,但实际上还是很有难度,每个人对项目的理解不同,所以要整合程序也是一个难题,每个人只负责一小块内容,但是为了默契配合,必须在小组中进行大量的交流,但是难度也意味着收获,本次项目的过程让我对C类语言进一步理解,也让我自己了解到自己还需要学习很多很多,对于这次的项目,我们小组做的程序很好的满足了要求,但是容错能力比较差,输入的参数需要正确,保存的内容也极其有限,在我看来,我们小组还

7、是很出色的,毕竟在那么短时间内基本完成了项目要求。5、 附录(主要源程序和运行结果的清单)#include#include#include #include #include #include#include using namespace std;string a10=a,b,c,d,e,f,g,h,i,j;string command9=CREATE,DELETE,OPEN,CLOSE,READ,WRITE,CHANGE,NOWSHOW,BYE;struct UFDstring filename;int pro3;int codel;UFD *next;struct MFDstring u

8、sername;UFD *file;MFD *next;struct AFDint filenum;char filepro3;UFD *point;AFD *next;AFD *openfile=NULL;MFD *user=NULL;MFD *thisuser; /当前用户void init() /初始化函数int x=0;for(int i=0;iusername=ax;UFD *fhead=NULL;for(int j=0;jfilename=*;for(int a=0;aproa=0;q-codel=0; q-next=fhead;fhead=q;p-file=fhead;if(j=

9、9) /变成循环链表UFD *r=fhead;while(r-next!=NULL)r=r-next;r-next=fhead;p-next=user;user=p;x+;/AFD的初始化for(int k=0;kfilenum=5-k;for(int j=0;jfileproj=0;f-point=NULL;f-next=openfile;openfile=f;if(i=4) /打开文件链表设为循环链表AFD *p=openfile;while(p-next!=NULL)p=p-next;p-next=openfile;int checkUser(string username)MFD *p

10、;for(p=user;p!=NULL;p=p-next)if(p-username=username)break;if(p!=NULL)thisuser=p;return 1; elsereturn 0;void show()coutYOUR FILE DIRECTORYendl;coutsetw(20)setiosflags(ios:left)setfill( )FILE NAME;coutsetw(20)setiosflags(ios:left)setfill( )PROTECTION;coutsetw(20)setiosflags(ios:left)setfill( )CODE LEN

11、GTHfile;for(int i=0;i10;i+)coutsetw(20)setiosflags(ios:left)setfill( )filename;coutpro0pro1pro2;coutsetw(20)setiosflags(ios:left)setfill( ) ;coutsetw(20)setiosflags(ios:left)setfill( )codelnext;void OpenMode(UFD *p,string name)AFD *f=openfile;int i;for(i=0;ipoint!=NULL&f-point-filename=name)coutTHIS

12、 FILE IS ALREADY OPENED!next;f=openfile;for(i=0;ipoint=NULL)break;f=f-next;if(i=5)coutERROR!YOU CANT OPEN THIS FILE,NUMBER MUST =5!;elsecoutprotect;int j;for(j=0;jproj!=protectj-48)break;if(j!=3)coutERROR,OPEN MODE IS WRONG!endl;return;elsecoutTHIS FILE IS OPENED,ITS OPEN NUMBER IS ;coutfilenumpoint

13、=p;for(int j=0;jfileproj=p-proj; return;void Create()coutname;coutprotect;UFD *p=thisuser-file;UFD *q=p;int n;for(n=0;nfilename=*)break;q=q-next;if(n=10)coutCREAT FAILED!THERE IS NO SPACE,FILE NUMBER MUST=10!filename=name;for(int i=0;iproi=protecti-48; coutTHE NEW FILE IS CREATED.endl;OpenMode(q,nam

14、e);return ;void Open()coutname;UFD *p=thisuser-file;UFD *q=p;int n;for(n=0;nfilename=name)break;q=q-next;if(n=10)coutERROR!THIS FILE IS NOT EXISTS!point=NULL;for(int i=0;ifileproi=0;coutSUCCESS!THIS FILE IS CLOSED!endl;return;void Close()coutname;UFD *p=thisuser-file;UFD *q=p;int n;for(n=0;nfilename

15、=name)break;q=q-next;if(n=10)coutERROR!CANT FIND THIS FILE!endl;return;elseAFD *f=openfile; int i; for(i=0;ipoint=q)break;f=f-next;if(n=5)coutERROR!THIS FILE IS NOT OPENED!endl;return;elseClose1(f);return;void Delete()coutname;UFD *p=thisuser-file;UFD *q=p;int n;for(n=0;nfilename=name)break;q=q-next

16、;if(n=10)coutERROR!CANT FIND THIS FILE!endl;return;elseAFD *f=openfile;int i; for(i=0;ipoint=q)coutERROR!THIS FILE IS OPENED! CLOSED IT?(Y/N)y;if(y=Y)Close1(f);break;else return;f=f-next;q-filename=*;q-codel=0;for(int x=0;xprox=0;coutSUCCESS!THIS FILE IS BE DELETED! endl;return;void Read()coutnum;AF

17、D *f=openfile;int i;for(i=0;ifilenum=num&f-point!=NULL)break;f=f-next;if(i=5)coutERROR!THIS FILE IS NOT OPENED!filepro0=1)coutSUCCESS!READING!endl;elsecoutERROR!THIS FILE CANT READ WITH READING RIGHT LIMITED!endl;return;void Write()coutnum;AFD *f=openfile;int i;for(i=0;ifilenum=num&f-point!=NULL)bre

18、ak;f=f-next;if(i=5)coutERROR!THIS FILE IS NOT OPENED!filepro1=1)coutcode;f-point-codel=code;elsecoutERROR!THIS FILE CANT WRITE WITH WRITING RIGHT LIMITED!endl;return;void Change()int x=0;while(x=0)coutYOUR NAME?username;x=checkUser(username);if(x=0)coutYOUR NAME IS NOT IN THE USER NAME TABLE,TRY AGAIN.endl;show();return;void Nowshow(int b)int a=1;int c;c=a-b;if(c!=0)show(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论