ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:454.59KB ,
资源ID:2386089      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2386089.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(文件管理系统C++.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

文件管理系统C++.docx

1、文件管理系统C+一课程设计目的及要求深入了解文件管理系统,初步掌握文件管理系统的实现方法。用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。编写一程序,模拟一个简单的文件管理系统。树型结构,目录下可以是目录,也可以是文件。在此文件管理系统,可实现的操作有:改变目录:格式:cd 显示目录:格式:dir 创建目录:格式:md 删除目录:格式:rd 新建文件:格式:edit 删除文件:格式:del 退出文件系统:exit二相关知识1.文件结构体struct FileNode char filenameFILENAME_LEN;

2、/文件名/目录名 int isdir;/目录文件识别标志 int i_nlink;/文件的链接数 int adr;/文件的地址 struct FileNode *parent, *child;/指向父亲的指针和指向左孩子的指针 struct FileNode *sibling_prev, *sibling_next;/指向前一个兄弟的指针和指向 /后一个兄弟的指针.;整个文件系统采用二叉树型存储结构,初始化文件树如下:图 2-1 初始目录树2.所使用函数及其功能int Main(); /主函数void Init();/初始化文件树int ParseCommand();/接受输入的命令并把其分解

3、成操作名和路径文件名void ExecuteCommand();/执行命令,分别执行cd,edit,md,del,rd, dir,exit命令int cdComd(); /改变目录功能处理int editComd();/处理edit命令,即创建文件,只要创建表示文件的节点即可,内容及大小不考虑int mdComd(); /创建目录int delComd();/处理del命令,即删除指定文件,不存在是给出错误信息int dirComd();/处理dir命令,显示目录int rdComd(); /删除目录int FindFilename(char Para2);/查找文件名struct FileN

4、ode* CreateFileNode(char filename,int isdir,int i_nlink);/创建结点int GetInput(char* buffer,unsigned int buffer_len);/获取输入3所使用的变量struct FileNode *cp, *tp, *root;/ *cp, *tp, *root是根目录节点char pathINPUT_LEN-COMMAND_LEN;/记录当前走过的路径char Para1COMMAND_LEN,Para2INPUT_LEN-COMMAND_LEN;/para1数组存储输入的命令,para2数组存储输入的文件

5、名char filenameFILENAME_LEN,tmp; unsigned int i,j; 三 题目分析1文件系统采用二叉树型存储结构,结点结构如下:struct FileNode char filenameFILENAME_LEN;/文件名/目录名 int isdir;/目录、文件的识别标志(0为文件,1为目录) int i_nlink;/文件的链接数 /int adr;/文件的地址 struct FileNode *parent, *child;/指向父亲的指针和指向左孩子的指针 struct FileNode *sibling_prev, *sibling_next;/指向前一个

6、兄弟的指针和指向后一个兄弟的指针.;2目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开3功能具体描述:改变目录:改变当前工作目录,目录不存在时给出出错信息显示目录:显示指定目录下或当前目录下所有文件和一级目录(选做:带/s参数的dir命令,显示所有子目录)创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。创建文件:创建指定名字的文件,只要创建表示文件的节点即可,内容及大小不考虑。删除文件:删除指定文件,不存在时给出出错信息。退出文件系统:exit4、总体流程:初始化文件目录;输出提示

7、符,等待接受命令,分析键入的命令;对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。四概要设计1在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简单的单用户文件系统。2文件存储空间的分配采用显式链接分配。为了实现创建和删除文件必须要有一棵初始的文件树存在,以便在文件树的根节点下实现创建和删除文件。3. 数据结构与树结构。数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树中每个

8、分叉点称为结点,起始结点称为树根,任意两个结点间的连接关系称为树枝,结点下面不再有分枝称为树叶。结点的前趋结点称为该结点的双亲,结点的后趋结点称为该结点的孩子,同一结点的孩子之间互称兄弟。4文件目录结构采用多级目录结构。为了简单起见,可以使用文件结构体,结构体内容包括:文件名,文件目录识别标示,文件链接数,以及他的左孩子右孩子左兄弟右兄弟指5. 要有分解函数对输入的命令进行分解。以识别那部分是哪部分是命令,哪部分是路径和文件名。6. 最后要有执行函数。来执行输入的创建文件命令。五代码及流程开始初始化文件树获取键盘输入分解命令执行命令显示目录退出改变目录删除目录文件创建目录/文件图5-1 主函数

9、流程图2)edit()创建文件函数流程图图5-2 创建文件函数流程图图5-3 删除函数流程图4)ParseCommand()分解命令函数流程图 图5-4 分解命令函数流程图5)改变目录函数rdComd()图 5-5 改变目录函数流程图源代码:#include #include #include #include #include #define FILENAME_LEN 21#define INPUT_LEN 81#define COMMAND_LEN 11using namespace std;void Init();/初始化文件树int ParseCommand();/接受输入的命令并把其

10、分解成操作名和路径文件名void ExecuteCommand();/执行命令int cdComd();/处理cd命令int editComd();/处理edit命令int delComd();/处理del命令int dirComd();/处理dir命令int mdComd();/处理md命令int rdComd();/处理rd命令int FindPath(char *ph);/寻找参数ph所指向的路径int FindFilename(char Para2);/从参数Para2中找到要建立或删除的文件、目录名,并把指针只想其父亲结点struct FileNode* CreateFileNode

11、(char filename,int isdir,int i_nlink);/创建结点int GetInput(char* buffer,unsigned int buffer_len);/获取输入int CheckCommand();/命令检查int GetDir(int begin,char *path,char *curDir);/获取路径struct FileNode *cp, *tp, *root;char pathINPUT_LEN-COMMAND_LEN;/记录当前走过的路径char Para1COMMAND_LEN,Para2INPUT_LEN-COMMAND_LEN;char

12、 curpathINPUT_LEN-COMMAND_LEN,tmppathINPUT_LEN-COMMAND_LEN;char filenameFILENAME_LEN,tmp;unsigned int i,j;/int i,j;struct FileNode /结点结构 char filenameFILENAME_LEN;/文件名/目录名 int isdir;/目录文件识别标志 int i_nlink;/文件的链接数 struct FileNode *parent, *child;/指向父亲的指针和指向左孩子的指针 struct FileNode *sibling_prev, *siblin

13、g_next;/指向前一个兄弟的指针和指向后一个兄弟的指针.;/创建结点struct FileNode* CreateFileNode(char filename,int isdir,int i_nlink) struct FileNode* node=(struct FileNode*)malloc(sizeof(struct FileNode);/申请结点空间 /相应内容赋初值 strcpy(node-filename,filename); node-isdir=isdir; node-i_nlink=i_nlink; node-parent=NULL; node-child=NULL;

14、node-sibling_prev=NULL; node-sibling_next=NULL; return node;/初始化文件树void Init() struct FileNode *binNode,*usrNode, *unixNode,*etcNode,*libNode,*userNode, *binNode2,*liuNode,*sunNode,*ftiNode; strcpy(path,/); /根目录写入当前路径 /创建文件树的结点 binNode=CreateFileNode(bin,1,0); usrNode=CreateFileNode(usr,1,0); unixNode=CreateFileNode(unix,0,0); etcNode=CreateFileNode(etc,1,0); libNode=CreateFileNode(lib,1,0); userNode=CreateFileNode(user,1,0); binNode2=CreateFileNode(bin,1,0); liuNode=CreateFileNode(liu,1,0); sunNode=CreateFileNode(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1