
操作系统课程设计--模拟文件管理系统.doc
7页操作系统课程设计模拟文件管理系统一、实验内容 1. 基本要求:编写一程序,模拟一个简单的文件管理系统树型结构,目录下可以是目录,也可以是文件在此文件管理系统,可实现的操作有:改变目录:格式:cd <目录名>显示目录:格式:dir[<目录名>]创建目录:格式:md <目录名>删除目录:格式:rd<目录名>新建文件:格式:edit<文件名>删除文件:格式:del<文件名>退出文件系统:exit2. 目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开3. 功能具体描述:改变目录:改变当前工作目录,目录不存在是给出出错信息显示目录:显示指定目录下或当前目录下所有文件和一级目录(选做:带/s参数的dir命令,显示所有子目录)创建目录:在指定路径或当前路径下创建指定目录重名时给出出错信息删除目录:删除指定目录下所有文件和子目录要删目录不空时,要给出提示是否要删除创建文件:创建指定名字的文件,只要创建表示文件的节点即可,内容及大小不考虑删除文件:删除指定文件,不存在时给出出错信息退出文件系统:exit4. 总体流程:初始化文件目录输出提示符,等待接受命令,分析键入的命令;对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令。
直到键入exit退出为止二、数据结构设计 Struct FileNode{ Char filename[FILENAME_LEN];//文件名/目录名Int isdir ;//目录、文件的识别标志Int i_nlink;//文件链接数Int adr;//文件的地址Struct FileNode *parent,*child;//指向父亲的指针和左孩子的指针Struct FileNode *sibling_prev,*sibling_next;//指向前一个兄弟的指针和后一个兄弟的指针} 三、算法设计3.1 功能模块图3.2 算法思路3.2.1实现方法 bool spile(char *str,char *cmdstr,char *filestr);//切割字符串 bool shell(char *str); //用来解释命令 bool errorp(int id); //打印错误提示 bool boot(); //启动初始化 filenode* find(char *str,filenode *_root); //递归对目录树进行查找 bool cdexc(char *str); //执行cd命令 bool direxc(char *str); //执行dir命令 bool mdexc(char *str); //执行md命令 bool editexc(char *str); //执行edit命令 bool delexc(char *str,filenode *fcur,bool mode,bool dir); //执行del命令 bool exitexc(); //退出 filenode* createnode(char *str,bool _isdir,int _adr,filenode *_par);//新建对象节点 函数调用图3.2.2 设计思想建立一刻目录树,根据输入的命令字符串,对该目录树进行增删等操作。
1)定义全局变量filenode *cur=NULL; //指向当前目录节点filenode *root=NULL; //指向根节点目录节点char *shellstr[7]={"cd","dir","md","rd","edit","del","exit"};//命令字符串int shelllen=7; //命令的字符串的长度(2)主函数模块调用boot模块初始化,然后使用while循环,每次循环中用户可以输入命令字符串,调用shell模块进行解释并执行操作,执行完成后再次进入循环,直到用户使用exit退出3)其他模块说明(用文字描述,不要代码) 删除模块:调用find函数查找到目录节点,然后进行删除节点操作,并注意特殊情况新建目录/文件模块:通过调用find查找是否重复,若不重复就进行增加节点切换目录模块:通过find函数找到节点,然后将cur指针指向该节点显示目录模块:通过find函数找到节点,循环遍历该节点显示退出模块:执行exit函数四、测试数据及程序运行情况五、实验过程中出现的问题及解决方法1. 判断路径需要识别全路径与相对路径,解决方法,通过对符号“/”的查找,分四种情况。
2. 删除当前目录或其父目录会造成cur乱指,解决方法,删除前先判断,如果出现这种情况就重新设置cur3. 递归删除子目录,若子目录非空,会弹出警告,解决方法,设置安静模式,用于递归删除六、自我评析与总结 通过本次课程设计,我认真了解了系统中目录的工作原理,以及他所采用的数据结构原理,让我对操作系统有了更深的体会七、参考文献 [1]《操作系统实验教程》,张丽芬、刘利雄、王全玉等,清华大学出版社[2]《操作系统原理与实践教程》周湘贞、曾宪权编,清华大学出版社[3]《Windows操作系统核心编程实验教程》,宋晓宇,中国铁道出版社。
