文件管理系统C++Word文件下载.docx
- 文档编号:15303156
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:29
- 大小:454.59KB
文件管理系统C++Word文件下载.docx
《文件管理系统C++Word文件下载.docx》由会员分享,可在线阅读,更多相关《文件管理系统C++Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
文件名>
删除文件:
del<
退出文件系统:
exit
二.相关知识
1.文件结构体
structFileNode
{
charfilename[FILENAME_LEN];
//文件名/目录名
intisdir;
//目录文件识别标志
inti_nlink;
//文件的链接数
intadr;
//文件的地址
structFileNode*parent,*child;
//指向父亲的指针和指向左孩子的指针
structFileNode*sibling_prev,*sibling_next;
//指向前一个兄弟的指针和指向
//后一个兄弟的指针.
};
整个文件系统采用二叉树型存储结构,初始化文件树如下:
图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.文件系统采用二叉树型存储结构,结点结构如下:
//目录、文件的识别标志(0为文件,1为目录)
//intadr;
//指向前一个兄弟的指针和指向后一个兄弟的指针.
2.目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开
3.功能具体描述:
改变当前工作目录,目录不存在时给出出错信息
显示指定目录下或当前目录下所有文件和一级目录(选做:
带/s参数的dir命令,显示所有子目录)
在指定路径或当前路径下创建指定目录。
重名时给出错信息。
删除指定目录下所有文件和子目录。
要删目录不空时,要给出提示是否要删除。
创建文件:
创建指定名字的文件,只要创建表示文件的节点即可,内容及大小不考虑。
删除指定文件,不存在时给出出错信息。
4、总体流程:
初始化文件目录;
输出提示符,等待接受命令,分析键入的命令;
对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。
四.概要设计
1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简单的单用户文件系统。
2.文件存储空间的分配采用显式链接分配。
为了实现创建和删除文件必须要有一棵初始的文件树存在,以便在文件树的根节点下实现创建和删除文件。
3.数据结构与树结构。
数据结构是计算机存储、组织数据的方式。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。
树中每个分叉点称为结点,起始结点称为树根,任意两个结点间的连接关系称为树枝,结点下面不再有分枝称为树叶。
结点的前趋结点称为该结点的"
双亲"
,结点的后趋结点称为该结点的"
孩子"
,同一结点的"
之间互称"
兄弟"
。
4.文件目录结构采用多级目录结构。
为了简单起见,可以使用文件结构体,结构体内容包括:
文件名,文件目录识别标示,文件链接数,以及他的左孩子右孩子左兄弟右兄弟指
5.要有分解函数对输入的命令进行分解。
以识别那部分是哪部分是命令,哪部分是路径和文件名。
6.最后要有执行函数。
来执行输入的创建文件命令。
五.代码及流程
开始
初始化文件树
获取键盘输入
分解命令
执行命令
显示目录
退出
改变目录
删除目录文件
创建目录/文件
图5-1主函数流程图
2)edit()创建文件函数流程图
图5-2创建文件函数流程图
图5-3删除函数流程图
4)ParseCommand()分解命令函数流程图
图5-4分解命令函数流程图
5)改变目录函数rdComd()
图5-5改变目录函数流程图
源代码:
#include<
stdio.h>
iostream>
string.h>
ctype.h>
stdlib.h>
#defineFILENAME_LEN21
#defineINPUT_LEN81
#defineCOMMAND_LEN11
usingnamespacestd;
//执行命令
//处理cd命令
//处理edit命令
//处理del命令
//处理dir命令
//处理md命令
//处理rd命令
intFindPath(char*ph);
//寻找参数ph所指向的路径
//从参数Para2中找到要建立或删除的文件、目录名,并把指针只想其父亲结点
intCheckCommand();
//命令检查
intGetDir(intbegin,char*path,char*curDir);
//获取路径
charcurpath[INPUT_LEN-COMMAND_LEN],tmppath[INPUT_LEN-COMMAND_LEN];
//inti,j;
structFileNode//结点结构
structFileNode*CreateFileNode(charfilename[],intisdir,inti_nlink){
structFileNode*node=(structFileNode*)malloc(sizeof(structFileNode));
//申请结点空间
//相应内容赋初值
strcpy(node->
filename,filename);
node->
isdir=isdir;
i_nlink=i_nlink;
parent=NULL;
child=NULL;
sibling_prev=NULL;
sibling_next=NULL;
returnnode;
}
voidInit(){
structFileNode*binNode,*usrNode,
*unixNode,*etcNode,*libNode,*userNode,
*binNode2,*liuNode,*sunNode,*ftiNode;
strcpy(path,"
/"
);
//根目录写入当前路径
//创建文件树的结点
binNode=CreateFileNode("
bin"
1,0);
usrNode=CreateFileNode("
usr"
unixNode=CreateFileNode("
unix"
0,0);
etcNode=CreateFileNode("
etc"
libNode=CreateFileNode("
lib"
userNode=CreateFileNode("
user"
binNode2=CreateFileNode("
liuNode=CreateFileNode("
liu"
sunNode=CreateFileNode(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文件 管理 系统 C+