2022年操作系统课程设计-模拟文件系统.docx

上传人:Q****o 文档编号:12852991 上传时间:2022-04-26 格式:DOCX 页数:19 大小:188.20KB
返回 下载 相关 举报
2022年操作系统课程设计-模拟文件系统.docx_第1页
第1页 / 共19页
2022年操作系统课程设计-模拟文件系统.docx_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《2022年操作系统课程设计-模拟文件系统.docx》由会员分享,可在线阅读,更多相关《2022年操作系统课程设计-模拟文件系统.docx(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、目录第 1 章 需求分析 .1第 2 章 概要设计 .12.1 系统的主要功能 .12.2 系统模块功能结构 . 12.3 运行环境要求 .22.4 数据结构设计 . 2第 3 章 具体设计 .33.1 模块设计 . 33.2 算法流程图 . 3第 4 章 系统源代码 .4第 5 章 系统测试及调试 .45.1 运行结果及分析 . 45.2 系统测试结论 . 5第 6 章 总结与体会 .6第 7 章 参考文献 .6附录 . .7第 1 章 需求分析通过模拟文件系统的实现, 深化懂得操作系统中文件系统的理论学问, 加深对教材中的重要算法的懂得;同时通过编程实现这些算法,更好地把握操作系统的原理及

2、实现方法 ,提高综合运用各专业课学问的才能;把握操作系统结构、实现机理和各种典型算法, 系统地明白操作系统的设计和实现思路, 并明白操作系统的进展动向和趋势;模拟二级文件治理系统的课程设计目的是通过讨论Linux 的文件系统结构, 模拟设计一个简洁的二级文件系统,第一级为主目录文件,其次级为用户文件;第 2 章 概要设计2.1 系统的主要功能1) 系统运行时依据输入的用户数目创建主目录2) 能够实现以下命令: Login用户登录Create建立文件Read读取文件Write写入文件Delete删除文件Mkdir建立目录Cd切换目录Logout 退出登录2.2 系统模块功能结构2.3 运行环境要

3、求操作系统 windows xp ,开发工具 vc+6.02.4 数据结构设计用户结构:账号与密码结构typedef struct userscharname8; charpwd10;users;本系统有 8 个默认的用户名 ,前面是用户名 ,后面为密码 ,用户登陆时只要输入正确便可进入系统 ,否就提示失败要求重新输入;users usrarray8 =usr1,usr1,usr2,usr2,usr3,usr3,usr4,usr4,usr5,usr5,usr6,usr6,usr7,usr7,usr8,usr8,;3数据结构说明a文件结构链表struct fnodechar filenameFI

4、LENAME_LENGTH; intisdir;int isopen;char content255; fnode *parent; fnode *child; fnode *prev; fnode *next;b函数介绍fnode *initfilechar filename,int isdir;/ 初始化文件或目录void createroot;/建立系统根目录int run; 系统运行int findparachar *topara;对参数进行处理bool chkloginchar *users, char *pwd;检查账号与口令void help;命令列表int mkdir; 建立目

5、录int create;建立文件int read;读取文件int write; 写入文件int del;删除文件int cd;切换目录int dir; 文件与目录列表第 3 章 具体设计3.1 模块设计此课程设计把文本作为讨论对象来模拟操作系统的文件系统工作过程;所以用一个字符串数组来模拟磁盘空间,顾名思义,模拟磁盘供应字符的储备服务;全部用户构成一个数组, 每个数组元素是一个结构体, 每个结构体包括三部分,用户的用户名、用户密码和文件链表由于模拟文件系统的文件数量不多, 故文件表采纳线性链表来储备;线性表每个结点放置一个文件的FCB,其中储备一个文件的信息,文件名、长度、类型、创建时间等;磁

6、盘空间安排表, 采纳链表结构, 每个节点储存模拟磁盘的一个规律块的信息,包括块的最大长度,文件占用长度,占用标志;假如占用标志为0,即该空间可安排给文件;初始化磁盘空间安排表链表,第一把整个模拟磁盘作来一块, 并置占用位为 0;当有进程申请磁盘空间时,从头开头遍历,检查占用位,假如该块为可安排, 就检查块大小, 假设块长度大于或等于申请空间大小, 就把块的前一部分等于申请大小安排给文件,并置标志位为占用;剩下的大小作来一 个新块, 作来一个新节点插入到原节点的后边, 标志位为可用; 这样就实现了模拟磁盘的线性安排;模拟二级文件系统主界面用户登录3.2 算法流程图建读写删建切退立取入除立换出文文

7、文文目目登件件件件录录录第 4 章 系统源代码见附录第 5 章 系统测试及调试5.1 运行结果及分析5.2 系统测试结论从运行结果截图中可以看到,程序分别执行了它所包含的7 个功能,并且每个功能都能正确的执行;假设程序执行开头,三次都未输入正确的帐号和密码,程序会退出不再执行;第 6 章 总结与体会虽然我们做过许多次课程设计了,但是感觉自己仍有好多需要学习的地方, 接到题目要求时, 设计大体的框架, 考虑好所使用的数据结构, 然后用高级编程语言分模块的把架子的思路编写出来, 调试, 运行, 再看看是不是符合题目的要求,上网找些资料,看看想想是不是要提高要求,才可以满意实际的需要,最终 把收集的

8、劳动成果组合起来, 一个小程序最终成型了, 虽然每次的过程差不多都一样,但是每次都会有不同的体会;通过本次的课程设计, 使我能够正确运用操作系统课程中所学的基本理论和学问,加深了对文件系统基本概念的懂得, 以及磁盘文件系统的文件操作; 在设计过程中,查询了不少相关资料,不断的发觉问题、提出问题、解决问题;在对自己所编写的源程序段的纠错的过程中, 使我更好的懂得了操作系统中文件系统的理论学问, 同时在编程时用到了模块化的设计思想, 这种编程方法可以使我们的编程变的更简洁, 可以使我们的查错与纠错变的更便利;总的来说通过这次的设计的学习使我学到了许多在平常的学习中学不到的许多东西,通过这次课程设计

9、,使我对操作系统和编程产生爱好, 我想我会在这条路上连续前进下去; 我信任,只要不断的严格要求自己, 留意培育自己的思维才能, 就肯定会有更大更辉煌的进展和提高;第 7 章 参考文献操作系统原理试验教程 ,清华高校出版社胡峰松主编操作系统试验教程,清华高校出版社张丽芬等 编著电脑操作系统试验教程 ,清华高校出版社颜彬等编著附录系统的主要源代码#include stdio.h #include iostream.h #include string.h #include iomanip.h#define FILENAME_LENGTH 10 / 文件名称长度#define COMMAND_LENG

10、TH 10 /命令行长度#define PARA_LENGTH 30 /参数长度/账号结构 typedef struct userscharname8;charpwd10;users;/文件结构struct fnodechar filenameFILENAME_LENGTH; intisdir;int isopen;char content255; fnode *parent; fnode *child; fnode *prev; fnode *next;/账号users usrarray8 =usr1,usr1,usr2,usr2,usr3,usr3,usr4,usr4,usr5,usr5,

11、usr6,usr6,usr7,usr7,usr8,usr8,;fnode *initfilechar filename,int isdir; void createroot;int run;int findparachar *topara;bool chkloginchar *users, char *pwd; void help;int mkdir; int create; int read; int write; int del;int cd;int dir;fnode *root,*recent,*temp,*ttemp; charparaPARA_LENGTH,commandCOMMA

12、ND_LENGTH,tempparaPARA_LENG TH,recentparaPARA_LENGTH;/创建文件与目录结点fnode* initfilechar filename,int isdirfnode *node=new fnode; strcpynode-filename,filename; node-isdir=isdir;node-isopen=0; node-parent=NULL; node-child=NULL; node-prev=NULL; node-next=NULL; return node;/创建文件储备结点void createroot recent=roo

13、t=initfile/,1; root-parent=NULL;root-child=NULL;root-prev=root-next=NULL; strcpypara,/;int mkdirtemp=initfile ,1; cintemp-filename;ifrecent-child=NULLtemp-parent=recent; temp-child=NULL; recent-child=temp;temp-prev=temp-next=NULL;elsettemp=recent-child; whilettemp-nextttemp=ttemp-next;ifstrcmpttemp-

14、filename,temp-filename=0&ttemp-isdir=1printf 对不起 ,目录已存在 .; return 1;ttemp-next=temp; temp-parent=NULL; temp-child=NULL; temp-prev=ttemp; temp-next=NULL;return 1;int createtemp=initfile ,0; cintemp-filename; cintemp-content; ifrecent-child=NULLtemp-parent=recent; temp-child=NULL; recent-child=temp;te

15、mp-prev=temp-next=NULL; cout文件建立胜利 .child; whilettemp-nextttemp=ttemp-next;ifstrcmpttemp-filename,temp-filename=0&ttemp-isdir=0printf 对不起 ,文件已存在 .; return 1;ttemp-next=temp; temp-parent=NULL; temp-child=NULL; temp-prev=ttemp; temp-next=NULL;cout文件建立胜利 .endl;return 1;int dirint i=0,j=0; temp=new fnod

16、e; temp=recent; iftemp.=rootcout .child=NULLcoutTotal: directors i files j child; whiletempiftemp-isdircout filenameendl;i+; elsecout filenamenext;coutTotal: directors ifiles j filename;ifrecent-child=NULLcout文件不存在 .child-filename,filename=0coutchild-contentchild; whiletemp-nextifstrcmptemp-next-fil

17、ename,filename=0coutnext-contentendl; return 1;cout文件不存在 .filename;ifrecent-child=NULLcout文件不存在 .child-filename,filename=0recent-child-isopen=1;/设置文件标记为打开cinrecent-child-content;recent-child-isopen=0;/设置文件标记为关闭cout文件写入胜利 .child; whiletemp-nextifstrcmptemp-next-filename,filename=0recent-child-isopen=

18、1;/设置文件标记为打开cintemp-next-content;recent-child-isopen=0;/设置文件标记为关闭cout文件写入胜利 .endl;return 1;cout文件不存在 .topara; ifstrcmptopara,.=0int i;whilerecent-prev recent=recent-prev; ifrecent-parentrecent=recent-parent;i=strlenpara; whileparai.=/ & i0 i-; ifi.=0parai=0; else parai+1=0;elsefindparatopara;return

19、1;int findparachar *toparaint i=0;int sign=1;ifstrcmptopara,/=0recent=root; strcpypara,/; return 1;temp=recent; strcpytemppara,para; iftopara0=/recent=root-child; i+;strcpypara,/;elseifrecent.=NULL & recent.=root strcatpara,/;ifrecent & recent-childifrecent-isdir recent=recent-child; elseprintf 路径错误

20、! n; return 1;whileichild i+;ifrecent-isdir recent=recent-child; elseprintf 路径错误 n;return 0;strcatpara,/;whiletoparai.=/ & ifilename,recentpara.=0 | recent-isdir.=1 & recent-next.=NULLrecent=recent-next;ifstrcmprecent-filename,recentpara=0ifrecent-isdir=0strcpypara,temppara; recent=temp;printf 是文件不是

21、目录; n;return 0;strcatpara,recent-filename;ifstrcmprecent-filename,recentpara.=0 | recent=NULLstrcpypara,temppara; recent=temp;printf 输入路径错误 n;return 0;return 1;int delchar filenameFILENAME_LENGTH; cinfilename;temp=new fnode;ifrecent-childtemp=recent-child;whiletemp-next & strcmptemp-filename,filenam

22、e.=0 | temp-isdir.=0 temp=temp-next;ifstrcmptemp-filename,filename.=0cout不存在该文件! endl; return 0;elsecout不存在该文件! parent=NULLtemp-prev-next=temp-next; iftemp-nexttemp-next-prev=temp-prev; temp-prev=temp-next=NULL;elseiftemp-nexttemp-next-parent=temp-parent; temp-parent-child=temp-next;delete temp;cout

23、文件已删除 .endl;bool chkloginchar *users, char *pwdint i;fori=0; i8; i+if strcmpusers,usrarrayi.name=0 & strcmppwd,usrarrayi.pwd=0 return true;return false;void helpvoidcout命令一览endl;coutendl;coutcreate:建立文件;endl;coutread:读取文件;endl;coutwrite:写入文件 ,支持多线程endl;coutdel:删除文件;endl;coutmkdir:建立目录;endl;coutcd:切换

24、目录;endl;coutlogout:退出登录;endl;int runcoutlinux:para; cincommand; ifstrcmpcommand,mkdir=0 mkdir;else ifstrcmpcommand,dir=0dir;else ifstrcmpcommand,cd=0 cd;else ifstrcmpcommand,create=0 create;else ifstrcmpcommand,read=0 read;else ifstrcmpcommand,write=0 write;else ifstrcmpcommand,del=0del;else ifstrcm

25、pcommand,help=0 help;else ifstrcmpcommand,logout=0 return 0;int mainint i=0;bool in=false;char users8,pwd12;cout|endl;cout|模拟 Linux 文件系统|endl; cout|账号: usr1-usr8密码: usr1-usr8|endl; cout|你只有三次时机来试验账号|endl; cout|endl; coutendl;whilei3coutusers; coutpwd; ifchkloginusers,pwdin=true;break; i+;help; createroot; whileinif.run break;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

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