欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年操作系统二级文件管理课程设计 .pdf

    • 资源ID:38695808       资源大小:53.53KB        全文页数:13页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年操作系统二级文件管理课程设计 .pdf

    操作系统二级文件管理课程设计课程设计名称:二级文件管理系统专 业 班 级 : 软件工程计 083-1 学 生 姓 名 : 李晓斌学号 : 20082553103 指 导 教 师 : 任满杰精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 13 页设计目的: 通过具体的文件存储空间的管理、文件的物理结构、 目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。设计内容:为Linux 系统设计一个简单二级文件管理系统一、实验内容描述1 实验目标本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现 . 2 实验要求为 linux 系统设计一个简单的二级文件系统.要求做到以下几点:可以实现下列命令:login 用户登录dir 列文件目录create 创建文件delete 删除文件open 打开文件close 关闭文件read 读文件write 写文件列目录时要列出文件名、物理地址、保护码和文件长度. 源文件可以进行读写保护. 程序设计(1) 设计思想本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户账号下的文件。 另外,为了简便文件系统未考虑文件共享,文件系统安全以及管理文件与设备文件等特殊内容。(2) 主要数据结构A 磁盘块结构体:typedef struct distTable int maxlength; int start; int useFlag; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 13 页 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_directory /用户文件目录文件UFD /char fileName10; fileTable *file; user_file_directory *next; UFD; /UFD *headFile; typedef struct master_file_directory /主文件目录 MFD char userName10; char password10; UFD *user; MFD; (3)函数如下;void userCreate() char c; char userName10; int i; if(usedMaxUser) printf(请输入用户名: ); for(i=0;c=getch();i+) if(c=13) break; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 13 页 else userNamei=c; printf(%c,c); userNamei=0; for(i=0;iused;i+) if(!strcmp(userTablei.userName,userName) printf(n); printf(该用户名已存在 , 创建用户失败 n); system(pause); return; strcpy(userTableused.userName,userName); printf(n); printf(请输入密码: ); for(i=0;c=getch();i+) if(c=13) break; else userTableused.passwordi=c; printf(*); userTableuserID.passwordi=0; printf(n); printf(创建用户成功 n); used+; system(pause); else printf(创建用户失败,用户已达到上限n); system(pause); fflush(stdin); /清除文件缓冲区 int login() char name10,psw10; char c; int i,times; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 13 页 printf(请输入用户名 :); for(i=0;c=getch();i+) if(c=13) break; else namei=c; printf(%c,c); namei=0; for(i=0;iused;i+) if(!strcmp(userTablei.userName,name) break; if(i=used) printf(n您输入的用户名不存在 n); system(pause); return -1; for(times=0;times3;times+) memset(psw,0,sizeof(psw); /将 psw 数组内的内容设置为空 printf(n请输入密码 :); for(i=0;c=getch();i+) if(c=13) break; else pswi=c; printf(*); printf(n); for(i=0;iuseFlag=0&p-maxlengthmaxLength) startPostion=p-start; q=(diskNode *)malloc(sizeof(diskNode); 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; if(diskHead-next=NULL) diskHead-next=q; else while(temp-next) temp=temp-next; temp-next=q; break; p=p-next; return flag; void fileCreate(char fileName,int length,char fileKind) / 创建文件 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 13 页 /int i,j; time_t rawtime; int startPos; UFD *fileNode,*p; for(p=userTableuserID.user-next;p!=NULL;p=p-next) if(!strcmp(p-file-fileName,fileName) printf(文件重名,创建文件失败 n); system(pause); return; if(requestDist(startPos,length) fileNode=(UFD *)malloc(sizeof(UFD); fileNode-file=(fileTable *)malloc(sizeof(fileTable); / 这一步必不可少,因为fileNode里面的指针也需要申请地址,否则fileNode-file指向会出错 strcpy(fileNode-file-fileName,fileName); strcpy(fileNode-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; if(userTableuserID.user-next=NULL) userTableuserID.user-next=fileNode; else p=userTableuserID.user-next; while(p-next) p=p-next; p-next=fileNode; printf(创建文件成功 n); system(pause); else printf(磁盘空间已满或所创建文件超出磁盘空闲容量,磁盘空间分配失败 n); system(pause); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 13 页 void freeDisk(int startPostion) diskNode *p; for(p=diskHead;p!=NULL;p=p-next) if(p-start=startPostion) break; p-useFlag=false; void fileDel(char fileName) UFD *p,*q,*temp; q=userTableuserID.user; p=q-next; while(p) if(!strcmp(p-file-fileName,fileName) break; else p=p-next; q=q-next; if(p) if(p-file-openFlag!=true) /先判断是否有进程打开该文件 temp=p; q-next=p-next; freeDisk(temp-file-strat); /磁盘空间回收 free(temp); printf(文件删除成功 n); system(pause); else printf(该文件已被进程打开 , 删除失败 n); system(pause); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 13 页 else printf(没有找到该文件 , 请检查输入的文件名是否正确n); system(pause); void fileCat(char fileName) /查看文件内容 int startPos,length; int k=0; UFD *p,*q; q=userTableuserID.user; for(p=q-next;p!=NULL;p=p-next) if(!strcmp(p-file-fileName,fileName) break; if(p) startPos=p-file-strat; length=p-file-length; p-file-openFlag=true; /文件打开标记n); for(int i=startPos;kfile-fileName); system(pause); else printf(没有找到该文件 , 请检查输入的文件名是否正确n); system(pause); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 13 页 void fileWrite(char fileName) /写入 UFD *p,*q; q=userTableuserID.user; int i,k,startPos; for(p=q-next;p!=NULL;p=p-next) if(!strcmp(p-file-fileName,fileName) break; if(p) if(!strcmp(p-file-fileKind,r) /判断文件类型是否允许写入 printf(该文件是只读文件 , 写入失败 n); system(pause); return; char str500; printf(please input content:n); gets(str); startPos=p-file-strat; p-file-openFlag=true; /文件打开标记 p-file-length=strlen(str); if(p-file-lengthp-file-maxlength) printf(写入字符串长度大于该文件的总长度, 写入失败n); system(pause); return; for(i=startPos,k=0;k(int)strlen(str);i+,k+) diski=strk; printf(文件写入成功 , 请用 close 命令将该文件关闭 n); system(pause); else printf(没有找到该文件 , 请检查输入的文件名是否正确n); system(pause); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 13 页 void fileDir(char userName) /显示某一用户的所有文件 UFD *p; int i,k; for(i=0;inext; printf(*n); printf(文件名文件长度文件在磁盘的起始地址文件类型创建时间 n); for(;p!=NULL;p=p-next) printf(%s %d %d %s %s,p-file-fileName, p-file-maxlength,p-file-strat,p-file-fileKind,asctime(p-file-timeinfo); printf(*n); system(pause); void diskShow() /文件在磁盘上的属性精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 13 页 diskNode *p; int i=0,unusedDisk=0; printf(*n); printf( 盘块号起始地址容量 (bit) 是否已被使用n); for(p=diskHead;p!=NULL;p=p-next,i+) if(p-useFlag=false) unusedDisk+=p-maxlength; printf( %d %d %d %d n,i,p-start,p-maxlength,p-useFlag); printf(*n); printf(磁盘空间总容量:512*1024bit 已使用: %dbit 末使用:%dbitnn,MaxDisk-unusedDisk, unusedDisk); system(pause); void fileClose(char fileName) /文件关闭 UFD *p,*q; q=userTableuserID.user; for(p=q-next;p!=NULL;p=p-next) if(!strcmp(p-file-fileName,fileName) break; if(p) p-file-openFlag=false; printf(%s文件已关闭 n,p-file-fileName); system(pause); else printf(没有找到该文件 , 请检查输入的文件名是否正确n); system(pause); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 13 页心得体会在设计程序之前, 我先花费了一天多的时间思考设计该程序的思路,熟悉了一下学过的课本, 把以前忘了的东西又熟悉了一下,然后就通过操作系统要求开始设计程序了, 我采用了一个模块一测试, 成功之后在写另一个模块, 刚开始创建文件,显示你创建成功了, 可是却在指定路径中没有该文件,只有一个二级文件目录,经过我认真的查看, 发现我用的函数是创建目录的, 而非创建文件。 随后我就选择了给他指定一个二级文件目录,在该目录中创建文件, 终于测试成功了,接着我有创建了删除文件函数, 打开文件函数, 关闭文件函数, 如文件函数,写文件函数,虽然也遇到了好多问题,我通过测试,查资料,细心的修改和调试后,最后还是一个模块一个模块的成功完成了,但是没法实现读写保护, 而且整体测试时也出现了一些逻辑问题,例如:对于创建的只读文件,只写文件,可读可写文件均可以进行读写, 这不符合逻辑, 经过我的认真思考后, 我把程序修改了一下,实现了在读,写文件前,先打开文件,而且对于只读文件,只能读取,不能写入,对于只写文件, 只能写入不能读取, 对于可读可写文件, 既可以读取,又可以写入等功能。对于读写保护,我试着用打开文件来控制,当读文件时,可以显示打开的文件列表, 该文件列表中只有只读文件和可读可写文件,当你从只写文件读取时,提示你这是只写文件,不能读取。同理,在写文件时,显示的打开的文件列表中只有只写文件和可读可写文件,当你对只读文件写入内容时, 提示你这是只读文件,不能写入。这样实现了文件的读写保护。虽然本次课程设计的所做的程序规模不是很大,但在编程中我也充分体味到作为一名程序员, 要有严密的逻辑思维能力的重要性,充分学好一些逻辑学科的重要性;一个没有逻辑的程序,就不能完美地实现所要完成的功能,因此,以后学习中一定会注重培养自己的逻辑思维能力,为自己成为一个高级软件工程师做好铺垫。通过这一个星期的课程设计,加深了对于操作系统这门课程的兴趣以及深入理解,培养了耐心、认真、永不放弃等优良品质。通过这次课程设计使我相信只要做,就能做到,增强了我的自信心。 当然我也深深地感到了自己对某些知识的认识不足与缺陷,今后我将通过多看书及多编程序等实际手段入手,希望自己的编程能力能得到一定的提高。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 13 页

    注意事项

    本文(2022年操作系统二级文件管理课程设计 .pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开