您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 操作系统课设报告文件管理系统
沈阳理工大学课程设计专用纸目录一.课程设计目的及要求...................................................................................2二.相关知识.......................................................................................................2三.题目分析.......................................................................................................3四.概要设计.......................................................................................................4五.代码及流程...................................................................................................5六.运行结果.....................................................................................................20七.设计心得.....................................................................................................23八.参考文献.....................................................................................................24沈阳理工大学课程设计专用纸沈阳理工大学2一.课程设计目的及要求深入了解文件管理系统,初步掌握文件管理系统的实现方法。用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。编写一程序,模拟一个简单的文件管理系统。树型结构,目录下可以是目录,也可以是文件。在此文件管理系统,可实现的操作有:改变目录:格式:cd目录名显示目录:格式:dir目录名创建目录:格式:md目录名删除目录:格式:rd目录名新建文件:格式:edit文件名删除文件:格式:del文件名退出文件系统:exit二.相关知识1.文件结构体structFileNode{charfilename[FILENAME_LEN];//文件名/目录名intisdir;//目录文件识别标志inti_nlink;//文件的链接数intadr;//文件的地址structFileNode*parent,*child;//指向父亲的指针和指向左孩子的指针structFileNode*sibling_prev,*sibling_next;//指向前一个兄弟的指针和指向//后一个兄弟的指针.};整个文件系统采用二叉树型存储结构,初始化文件树如下:沈阳理工大学课程设计专用纸沈阳理工大学3图2-1初始目录树2.所使用函数及其功能intMain();//主函数voidInit();//初始化文件树intParseCommand();//接受输入的命令并把其分解成操作名和路径文件名voidExecuteCommand();//执行命令,分别执行cd,edit,md,del,rd,dir,exit命令intcdComd();//改变目录功能处理inteditComd();//处理edit命令,即创建文件,只要创建表示文件的节点即可,内容及大小不考虑intmdComd();//创建目录intdelComd();//处理del命令,即删除指定文件,不存在是给出错误信息intdirComd();//处理dir命令,显示目录intrdComd();//删除目录intFindFilename(charPara2[]);//查找文件名structFileNode*CreateFileNode(charfilename[],intisdir,inti_nlink);//创建结点intGetInput(char*buffer,unsignedintbuffer_len);//获取输入3.所使用的变量structFileNode*cp,*tp,*root;//*cp,*tp,*root是根目录节点charpath[INPUT_LEN-COMMAND_LEN];//记录当前走过的路径charPara1[COMMAND_LEN],Para2[INPUT_LEN-COMMAND_LEN];//para1数组存储输入的命令,para2数组存储输入的文件名charfilename[FILENAME_LEN],tmp;unsignedinti,j;三题目分析1.文件系统采用二叉树型存储结构,结点结构如下:structFileNode{沈阳理工大学课程设计专用纸沈阳理工大学4charfilename[FILENAME_LEN];//文件名/目录名intisdir;//目录、文件的识别标志(0为文件,1为目录)inti_nlink;//文件的链接数//intadr;//文件的地址structFileNode*parent,*child;//指向父亲的指针和指向左孩子的指针structFileNode*sibling_prev,*sibling_next;//指向前一个兄弟的指针和指向后一个兄弟的指针.};2.目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开3.功能具体描述:改变目录:改变当前工作目录,目录不存在时给出出错信息显示目录:显示指定目录下或当前目录下所有文件和一级目录(选做:带/s参数的dir命令,显示所有子目录)创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。创建文件:创建指定名字的文件,只要创建表示文件的节点即可,内容及大小不考虑。删除文件:删除指定文件,不存在时给出出错信息。退出文件系统:exit4、总体流程:初始化文件目录;输出提示符,等待接受命令,分析键入的命令;对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。四.概要设计1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简单的单用户文件系统。2.文件存储空间的分配采用显式链接分配。为了实现创建和删除文件必须要有一棵初始的文件树存在,以便在文件树的根节点下实现创建和删除文件。3.数据结构与树结构。数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树中每个分叉点称为结点,起始结点称为树根,任意两个结点间的连接关系称为树枝,结点下面不再有分枝称为树叶。结点的前趋结点称为该结点的双亲,结点的后趋结点称为该结点的孩子,同一结点的孩子之间互称兄弟。4.文件目录结构采用多级目录结构。为了简单起见,可以使用文件结构体,结构体内容包括:文件名,文件目录识别标示,文件链接数,以及他的左孩子右孩子左兄弟右兄弟指5.要有分解函数对输入的命令进行分解。以识别那部分是哪部分是命令,哪部分是路径和文件名。沈阳理工大学课程设计专用纸沈阳理工大学56.最后要有执行函数。来执行输入的创建文件命令。五.代码及流程图5-1主函数流程图2)edit()创建文件函数流程图开始初始化文件树获取键盘输入分解命令执行命令显示目录退出改变目录删除目录文件创建目录/文件沈阳理工大学课程设计专用纸沈阳理工大学6图5-2创建文件函数流程图图5-3删除函数流程图4)ParseCommand()分解命令函数流程图开始检查命令格式获取文件名不存在该文件删除的是目录由用户共享该文件报错提示处理删除的是第一个孩子情况处理删除的不是第一个孩子情况结束沈阳理工大学课程设计专用纸沈阳理工大学7图5-4分解命令函数流程图5)改变目录函数rdComd()图5-5改变目录函数流程图沈阳理工大学课程设计专用纸沈阳理工大学8源代码:#includestdio.h#includeiostream#includestring.h#includectype.h#includestdlib.h#defineFILENAME_LEN21#defineINPUT_LEN81#defineCOMMAND_LEN11usingnamespacestd;voidInit();//初始化文件树intParseCommand();//接受输入的命令并把其分解成操作名和路径文件名voidExecuteCommand();//执行命令intcdComd();//处理cd命令inteditComd();//处理edit命令intdelComd();//处理del命令intdirComd();//处理dir命令intmdComd();//处理md命令intrdComd();//处理rd命令intFindPath(char*ph);//寻找参数ph所指向的路径intFindFilename(charPara2[]);//从参数Para2中找到要建立或删除的文件、目录名,并把指针只想其父亲结点structFileNode*CreateFileNode(charfilename[],intisdir,inti_nlink);//创建结点intGetInput(char*buffer,unsignedintbuffer_len);//获取输入intCheckCommand();//命令检查intGetDir(intbegin,char*path,char*curDir);//获取路径structFileNode*cp,*tp,*root;charpath[INPUT_LEN-COMMAND_LEN];//记录当前走过的路径charPara1[COMMAND_LEN],Para2[INPUT_LEN-COMMAND_LEN];charcurpath[INPUT_LEN-COMMAND_LEN],tmppath[INPUT_LEN-COMMAND_LEN];charfilename[FILENAME_LEN],tmp;unsignedinti,j;//inti,j;structFileNode//结点结构{charfilename[FILENAME_LEN];//文件名/目录名intisdir;//目录文件识别标志inti_nlink;//文件的链接数structFileNode*parent,*child;//指向父亲的指针和指向左孩子的指针structFileNode*sibling_prev,*sibling_next;//指向前一个兄弟的指针和指向后一个兄弟的指针.};//创建结点沈阳理工大学课程设计专用纸沈阳理工大学9structFileNode*CreateFileNode(charfilename[],intisdir,inti_nlink){structFileNode*node=(structFileNode*)malloc(sizeof(structFileNode));//申请结点空间//相应内容赋初值strcpy(node-filename,filename);node-isdir=isdir;node-i_nlink=i_nlink;node-parent=NULL;node-chi
本文标题:操作系统课设报告文件管理系统
链接地址:https://www.777doc.com/doc-3365005 .html