没有合适的资源?快使用搜索试试~ 我知道了~
操作系统试验——模拟文件管理系统.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 130 浏览量
2022-07-13
10:23:47
上传
评论
收藏 42KB DOC 举报
温馨提示
试读
11页
操作系统试验——模拟文件管理系统.doc
资源推荐
资源详情
资源评论
模拟文件管理系统
一、实验内容
1. 基本要求:编写一程序,模拟一个简单的文件管理系统。树型结构,目录
下可以是目录,也可以是文件。
在此文件管理系统,可实现的操作有:
改变目录:格式:cd 〈目录名〉
显示目录:格式:dir[〈目录名〉]
创建目录:格式:md <目录名〉
删除目录:格式:rd〈目录名〉
新建文件:格式:edit〈文件名〉
删除文件:格式:del<文件名>
退出文件系统:exit
2. 目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔
开
3. 功能具体描述:
改变目录:改变当前工作目录,目录不存在是给出出错信息
显示目录:显示指定目录下或当前目录下所有文件和一级目录(选做:带/s
参数的 dir 命令,显示所有子目录)
创建目录:在指定路径或当前路径下创建指定目录。重名时给出出错信息.
删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提
示是否要删除。
创建文件:创建指定名字的文件,只要创建表示文件的节点即可,内容及大
小不考虑。
删除文件:删除指定文件,不存在时给出出错信息。
退出文件系统:exit
4. 总体流程:
初始化文件目录
输出提示符,等待接受命令,分析键入的命令;
对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令。
直到键入 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 函数。
剩余10页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3659
- 资源: 59万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功