没有合适的资源?快使用搜索试试~ 我知道了~
文件管理系统C++.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 101 浏览量
2022-07-13
09:44:35
上传
评论
收藏 74KB DOC 举报
温馨提示
试读
18页
文件管理系统C++.doc
资源推荐
资源详情
资源评论
目录
一.课程设计目的及要求...................................................................................1
二.相关知识.......................................................................................................2
三. 题目分析.......................................................................................................3
四.概要设计.......................................................................................................4
五.代码及流程...................................................................................................5
六.运行结果.....................................................................................................20
七.设计心得.....................................................................................................23
八.参考文献.....................................................................................................24
一.课程设计目的及要求
深入了解文件管理系统,初步掌握文件管理系统的实现方法.
用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各
种文件操作命令的实质内容和执行过程有比较深入的了解。
编写一程序,模拟一个简单的文件管理系统。树型结构,目录下可以是目录,也可以是文
件.
在此文件管理系统,可实现的操作有:
改变目录:格式:cd 〈目录名〉
显示目录:格式:dir 〈目录名>
创建目录:格式:md <目录名〉
删除目录:格式:rd <目录名>
新建文件:格式:edit <文件名>
删除文件:格式:del 〈文件名>
退出文件系统:exit
二.相关知识
1。文件结构体
struct FileNode
2
{
char filename[FILENAME_LEN];//文件名/目录名
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();//接受输入的命令并把其分解成操作名和路径文件名
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 FileNode* 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 path[INPUT_LEN-COMMAND_LEN];//记录当前走过的路径
char Para1[COMMAND_LEN],Para2[INPUT_LEN—COMMAND_LEN];//para1 数组存
储输入的命令,para2 数组存储输入的文件名
char filename[FILENAME_LEN],tmp;
unsigned int i,j;
三 题目分析
1.文件系统采用二叉树型存储结构,结点结构如下:
struct FileNode
{
char filename[FILENAME_LEN];//文件名/目录名
int isdir;//目录、文件的识别标志(0 为文件,1 为目录)
int i_nlink;//文件的链接数
//int adr;//文件的地址
struct FileNode *parent, *child;//指向父亲的指针和指向左孩子的指针
3
struct FileNode *sibling_prev, *sibling_next;//指向前一个兄弟的指针和指
向后一个兄弟的指针.
};
2.目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/"隔开
3.功能具体描述:
改变目录:改变当前工作目录,目录不存在时给出出错信息
显示目录:显示指定目录下或当前目录下所有文件和一级目录(选做:带/s 参数的 dir
命令,显示所有子目录)
创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息.
删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删
除。
创建文件:创建指定名字的文件,只要创建表示文件的节点即可,内容及大小不考虑。
删除文件:删除指定文件,不存在时给出出错信息。
退出文件系统:exit
4、总体流程:
初始化文件目录;
输出提示符,等待接受命令,分析键入的命令;
对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入
EXIT 退出为止.
四.概要设计
1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简单的单用户文件
系统。
2.文件存储空间的分配采用显式链接分配.为了实现创建和删除文件必须要有一棵初始
的文件树存在,以便在文件树的根节点下实现创建和删除文件。
3. 数据结构与树结构。数据结构是计算机存储、组织数据的方式.数据结构是指相互
之间存在一种或多种特定关系的数据元素的集合.
树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支
关系组织起来的结构,很象自然界中的树那样.树中每个分叉点称为结点,起始结点称为
树根,任意两个结点间的连接关系称为树枝,结点下面不再有分枝称为树叶。结点的前趋
结点称为该结点的”双亲",结点的后趋结点称为该结点的"孩子",同一结点的"孩子"之间
互称”兄弟”。
4.文件目录结构采用多级目录结构.为了简单起见,可以使用文件结构体,结构体内容
包括:文件名,文件目录识别标示,文件链接数,以及他的左孩子右孩子左兄弟右兄弟
指
5. 要有分解函数对输入的命令进行分解。以识别那部分是哪部分是命令,哪部分是路径
和文件名.
6. 最后要有执行函数。来执行输入的创建文件命令.
4
五.代码及流程
图 5-1 主函数流程图
2)edit()创建文件函数流程图
图 5-2 创建文件函数流程图
开始
初始化文件树
获取键盘输入
分解命令
执行命令
显示目录
退出
改变目录
删除目录
文件
创建目录/
文件
剩余17页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3671
- 资源: 59万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Swift语言教程及案例
- 汇编语言教程以及汇编器和伪指令的定义
- global,nonlocal,json和python的类的介绍
- DELL EMC POWEREDGE R440 BIOS 2.10.2 编程器备份
- IMG_20240529_122750.jpg
- 基于Java的职工工资管理系统设计源码 - salary management system
- 张律师〈人民路街道)-2405291432.awb
- Editplus 4GL Progress 高亮配色方案
- 回调函数的定义和应用场景
- meta-llama-3-8b-instruct 的 model-00002-of-00004.safetensors 的3/3
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功