2022年2022年操作系统二级文件管理课程设计_第1页
2022年2022年操作系统二级文件管理课程设计_第2页
2022年2022年操作系统二级文件管理课程设计_第3页
2022年2022年操作系统二级文件管理课程设计_第4页
2022年2022年操作系统二级文件管理课程设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、精选学习资料 - - - 欢迎下载操作系统二级文件治理课程设计课程设计名称:二级文件治理系统专学业生班姓级名:软件工程计 083-1李晓斌学号:20212553103指导教师:任满杰精品学习资料精选学习资料 - - - 欢迎下载设计目的: 通过详细的文件储备空间的治理.文件的物理结构. 目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的懂得;设计内容:为linux系统设计一个简洁二级文件治理系统一.试验内容描述1 试验目标本试验的目的为通过一个简洁多用户文件系统的设计,加深懂得文件系统的内部功能及内部实现 .2 试验要求为 linux 系统设计一个简洁的二级文件系统.要求做到以下几点

2、:可以实现以下命令:login用户登录dir列文件目录create创建文件delete删除文件open打开文件close关闭文件read读文件write写文件列目录时要列出文件名.物理地址.爱护码和文件长度.源文件可以进行读写爱护.程序设计(1) ) 设计思想本文件系统采纳两级目录,其中第一级对应于用户账号,其次级对应于用户 账号下的文件; 另外, 为了简便文件系统未考虑文件共享,文件系统安全以及治理文件与设备文件等特别内容;(2) ) 主要数据结构a 磁盘块结构体:typedef struct disttableint maxlength; int start;int useflag;精品学

3、习资料精选学习资料 - - - 欢迎下载disttable *next;disknode;disknode *diskhead;b 文件块结构体:struct filetable/文件块结构体char filename10;int strat;/文件在磁盘储备空间的起始地址int length;/文件内容长度int maxlength;/文件的最大长度char filekind3;/文件的属性读写方式struct tm *timeinfo;bool openflag;/判定为否有进程打开了该文件/filetable *next;c 两级目录结构体typedef struct user_file

4、_directory /用户文件目录文件ufd/char filename10; filetable *file; user_file_directory *next;ufd;/ufd *headfile;typedef struct master_file_directory/主文件目录 mfdchar username10; char password10; ufd *user;mfd;( 3)函数如下;void usercreatechar c;char username10; int i; ifused<maxuserprintf"请输入用户名: " fori

5、=0;c=getch;i+ifc=13 break;精品学习资料精选学习资料 - - - 欢迎下载elseusernamei=c; printf"%c"、c;usernamei='0' fori=0;i<used;i+if.strcmpusertablei.username、usernameprintf"n"printf"该用户名已存在 、 创建用户失败 n" system"pause"return;strcpyusertableused.username、username;printf&qu

6、ot;n" printf"请输入密码: "fori=0;c=getch;i+ifc=13 break; elseusertableused.passwordi=c; printf"*"usertableuserid.passwordi='0' printf"n"printf"创建用户胜利 n"used+; system"pause"elseprintf"创建用户失败,用户已达到上限n" system"pause"fflushstd

7、in;/清除文件缓冲区int loginchar name10、psw10; char c;int i、times;精品学习资料精选学习资料 - - - 欢迎下载printf"请输入用户名 :" fori=0;c=getch;i+ifc=13 break; elsenamei=c; printf"%c"、c;namei='0' fori=0;i<used;i+if.strcmpusertablei.username、name break;ifi=usedprintf"n您输入的用户名不存在 n" system&q

8、uot;pause"return -1;fortimes=0;times<3;times+memsetpsw、'0'、sizeofpsw;/将 psw 数组内的内容设置为空printf"n请输入密码 :" fori=0;c=getch;i+ifc=13 break; elsepswi=c; printf"*"printf"n" fori=0;i<used;i+if.strcmppsw、usertablei.passwordprintf"用户登录胜利 n" system"

9、;pause"break;ifi=used精品学习资料精选学习资料 - - - 欢迎下载printf"您 输入 的 密 码 错 误 , 您仍 有%d 次 输入 机 会n"、2-times;iftimes=2 exit0;else break;fflushstdin; return i;int requestdistint &startpostion、int maxlengthint flag=0;/标记为否安排胜利disknode *p、*q、*temp; p=diskhead;whilepifp->useflag=0&&p->

10、maxlength>maxlengthstartpostion=p->start;q=disknode *mallocsizeofdisknode; q->start=p->start;q->maxlength=maxlength; q->useflag=1;q->next=null;diskhead->start=p->start+maxlength;diskhead->maxlength=p->maxlength-maxlength; flag=1;temp=p;ifdiskhead->next=null diskhe

11、ad->next=q; elsewhiletemp->next temp=temp->next; temp->next=q;break;p=p->next;return flag;voidfilecreatecharfilename、intlength、charfilekind/ 创建文件精品学习资料精选学习资料 - - - 欢迎下载/int i、j;time_t rawtime; int startpos;ufd *filenode、*p;forp=usertableuserid.user->next;p.=null;p=p->nextif.strc

12、mpp->file->filename、filenameprintf"文件重名,创建文件失败n" system"pause"return;ifrequestdiststartpos、lengthfilenode=ufd *mallocsizeofufd;filenode->file=filetable *mallocsizeoffiletable;/ 这一步必不行少,由于filenode里面的指针也需要申请地址,否就filenode->file指向会出错strcpyfilenode->file->filename、fi

13、lename; strcpyfilenode->file->filekind、filekind; filenode->file->maxlength=length; filenode->file->strat=startpos;filenode->file->openflag=false; time&rawtime;filenode->file->timeinfo=localtime&rawtime; filenode->next=null; ifusertableuserid.user->next=nul

14、lusertableuserid.user->next=filenode;elsep=usertableuserid.user->next; whilep->next p=p->next;p->next=filenode;printf"创建文件胜利 n" system"pause"elseprintf"磁盘空间已满或所创建文件超出磁盘闲暇容量,磁盘空间安排失败 n"system"pause"精品学习资料精选学习资料 - - - 欢迎下载void freediskint startpos

15、tiondisknode *p; forp=diskhead;p.=null;p=p->nextifp->start=startpostion break;p->useflag=false;void filedelchar filenameufd *p、*q、*temp; q=usertableuserid.user; p=q->next;whilepif.strcmpp->file->filename、filename break; elsep=p->next; q=q->next;ifpifp->file->openflag.=t

16、rue/先判定为否有进程打开该文件temp=p;q->next=p->next;freedisktemp->file->strat;/磁盘空间回收freetemp;printf"文件删除胜利 n" system"pause"elseprintf"该文件已被进程打开 、 删除失败 n" system"pause"精品学习资料精选学习资料 - - - 欢迎下载elseprintf"没有找到该文件 、 请检查输入的文件名为否正确n" system"pause"

17、;void filecatchar filename/查看文件内容int startpos、length; int k=0;ufd *p、*q; q=usertableuserid.user;forp=q->next;p.=null;p=p->nextif.strcmpp->file->filename、filename break;ifpstartpos=p->file->strat; length=p->file->length;p->file->openflag=true;/文件打开标记精品学习资料精选学习资料 - - - 欢迎

18、下载n"forint i=startpos;k<length;i+、k+精品学习资料精选学习资料 - - - 欢迎下载ifi%50=0 printf"n" /一行大于 50 个字符换行printf"%c"、diski;printf"nn*n"printf"%s已被read进程打开 、 请用close命令将其关闭n"、p->file->filename; system"pause"elseprintf"没有找到该文件 、 请检查输入的文件名为否正确n"

19、; system"pause"精品学习资料精选学习资料 - - - 欢迎下载void filewritechar filename/写入ufd *p、*q; q=usertableuserid.user; int i、k、startpos;forp=q->next;p.=null;p=p->nextif.strcmpp->file->filename、filename break;ifpif.strcmpp->file->filekind、"r"/判定文件类型为否答应写入printf"该文件为只读文件 、 写

20、入失败 n" system"pause"return;char str500;printf"please input content:n" getsstr;startpos=p->file->strat;p->file->openflag=true;/文件打开标记p->file->length=strlenstr;ifp->file->length>p->file->maxlength精品学习资料精选学习资料 - - - 欢迎下载n"printf"写入字符串长

21、度大于该文件的总长度、 写入失败system"pause" return;精品学习资料精选学习资料 - - - 欢迎下载fori=startpos、k=0;k<intstrlenstr;i+、k+ diski=strk;printf"文件写入胜利 、 请用 close命令将该文件关闭 n"system"pause"elseprintf"没有找到该文件 、 请检查输入的文件名为否正确n" system"pause"精品学习资料精选学习资料 - - - 欢迎下载voidfiledircharu

22、sername/显示某一用户的全部文件ufd *p; int i、k;fori=0;i<maxuser;i+if.strcmpusertablei.username、usernamek=i;break;ifi=maxuserprintf"没有找到该用户,请检查输入用户名为否正确n" system"pause"return;elsep=usertablek.user->next;printf"*n"printf"文件名文件长度文件在磁盘的起始地址文件类型创建时间 n"for;p.=null;p=p->

23、;nextprintf"%s%d%d%s%s"、p->fi le->filename、p->file->maxlength、p->file->strat、p->file->filekind、asctimep->file->timeinfo;printf"*n" system"pause"void diskshow/文件在磁盘上的属性精品学习资料精选学习资料 - - - 欢迎下载disknode *p;int i=0、unuseddisk=0;printf"*n&qu

24、ot;printf"盘块号起始地址容量 bit为否已被使用n"forp=diskhead;p.=null;p=p->next、i+ifp->useflag=false unuseddisk+=p->maxlength; printf"%d%d%d%dn"、i、p->start、p->maxlength、p->useflag;printf"*n"printf"磁盘空间总容量:512*1024bit已使用: %dbit末使用: %dbitnn"、maxdisk-unuseddisk、

25、unuseddisk; system"pause"void fileclosechar filename/文件关闭ufd *p、*q; q=usertableuserid.user;forp=q->next;p.=null;p=p->nextif.strcmpp->file->filename、filename break;ifpp->file->openflag=false;printf"%s文件已关闭 n"、p->file->filename; system"pause"elseprintf"没有找到该文件 、 请检查输入的文件名为否正确n" system"pause"精品学习资料精选学习资料 - - - 欢迎下载心得体会在设计程序之前, 我先花费了一天多的时间摸索设计该程序的思路,熟识了一下学过的课本, 把以前忘了的东西又熟识了一下,然后就通过操作系统要求开 始设计程序了, 我采纳了一个模块一测试,胜

温馨提示

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

评论

0/150

提交评论