《操作系统课程设计报告--模拟文件管理系统.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计报告--模拟文件管理系统.docx(8页珍藏版)》请在课桌文档上搜索。
1、操作系统课程设计模拟文件管理系统一、实验内容1 .基本要求:编写一程序,模拟一个简单的文件管理系统。树型结构,目录下可以是目录,也可以是文件。在此文件管理系统,可实现的操作有:改变目录:格式:Cd目录名显示目录:格式:dir目录名创建目录:格式:md目录名删除目录:格式:rd目录名新建文件:格式:edit/文件名删除文件:格式:del文件名退出文件系统:exit2 .目录名和文件名支持全路径名和相对路径名,路径名各分量间用隔开3 .功能具体描述:改变目录:改变当前工作目录,目录不存在是给出出错信息显示目录:显示指定目录下或当前目录下所有文件和一级目录(选做:带/s参数的dir命令,显示所有子目
2、录)创建目录:在指定路径或当前路径下创建指定目录。重名时给出出错信息。删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。创建文件:创建指定名字的文件,只要创建表示文件的节点即可,内容及大小不考虑。删除文件:删除指定文件,不存在时给出出错信息。退出文件系统:exit4 .总体流程:初始化文件目录输出提示符,等待接受命令,分析键入的命令;对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令。直到键入exit退出为止。二、数据结构设计StructFileNodeCharfilenameFILENAMEJEN;文件名/目录名Intisdir;目录、文件的识别
3、标志Intijlink;文件链接数Intadr;文件的地址StructFileNode*parent,*child;指向父亲的指针和左孩子的指针StructFileNode*sibling_prev,*sibling_ncxt;指向前一个兄弟的指针和后一个兄弟的指针。)三、算法设计3.1 功能模块图执行Cd命令执行dir命令执行md命令执行edit命令bool booldelexc(char *str, filenode *fcur, bool mode,bool dir);exitexc();退出执行del命令3.2 算法思路3.2.1实现方法boolspile(char*str,char*
4、cmdstr,char*filestr);切割字符串boolshell(char*str);用来解释命令boolerrorp(intid);打印错误提示boolboot();启动初始化filenode*find(char*str,filenode*root);递归对目录树进行查找boolcdexc(char*str);booldirexc(char*str);boolmdexc(char*str);booleditexc(char*str);filenode*createnode(char*str,bool_isdir,intadr,filenode*_par);新建对象节点函数调用图3. 2
5、.2设计思想建立一刻目录树,根据输入的命令字符串,对该目录树进行增删等操作。(1)定义全局变量filenode*cur=NULL;指向当前目录节点filenode*root=NULL;指向根节点目录节点char*shcllstr7=cd,dir,md,rd,edit,del,exit;命令字符串intshelllen=7;命令的字符串的长度(2)主函数模块调用boot模块初始化,然后使用WhiIe循环,每次循环中用户可以输入命令字符串,调用SheII模块进行解释并执行操作,执行完成后再次进入循环,直到用户使用CXit退出。(3)其他模块说明(用文字描述,不要代码)删除模块:调用find函数查找
6、到目录节点,然后进行删除节点操作,并注意特殊情况。新建目录/文件模块:通过调用find查找是否重复,若不重复就进行增加节点O切换目录模块:通过find函数找到节点,然后将CUr指针指向该节点。显示目录模块:通过find函数找到节点,循环遍历该节点显示。退出模块:执行exit函数。四、测试数据及程序运行情况c CWINDOWSsystem32cmd.ee - test-ll ESC:Docuents and SettingsXAdministratorMIy DocumentsMJisual Studio 2010ProJectsH testDebugtest有下列命令可供使用: cd切谈当前目
7、茎 di*显示目录内容1 121 3 41 5 ? 8md新建目录Fd :除目泉edit新建文件del删除文件exit推出系统di*该目录含有0个项目md dirledit Filel情输入文件地址:2300di*该目录含有2个项目 Filel diilcddi*lnddir2rd/dirl目录非空,是否删除Y-9dir该目录含有1个项目file!delfile!dir该自家含有0个项目五、实验过程中出现的问题及解决方法1 .判断路径需要识别全路径与相对路径,解决方法,通过对符号的查找,分四种情况。2 .删除当前目录或其父目录会造成CUr乱指,解决方法,删除前先判断,如果出现这种情况就重新设置cur03 .递归删除子目录,若子目录非空,会弹出警告,解决方法,设置安静模式,用于递归删除。六、自我评析与总结通过本次课程设计,我认真了解了系统中目录的工作原理,以及他所采用的数据结构原理,让我对操作系统有了更深的体会。七、参考文献1操作系统实验教程,张丽芬、刘利雄、王全玉等,清华大学出版社。2操作系统原理与实践教程周湘贞、曾宪权编,清华大学出版社。3Windows操作系统核心编程实验教程,宋晓宇,中国铁道出版社。