- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一.设计说明
设计实现一个简单的模拟文件管理系统,包括目录文件、普通文件、i结点和存储区,具体要求如下:
程序初始化时应构造如图1-1所示的目录结构。
图1-1 初始目录树
(2)在此模拟文件管理系统中可以实现的操作有:
改变目录:cd<目录名>,工作目录转移到指定的目录下。目录不存在时,给出错误信息。
创建文件:edit<文件名>,创建一个指定名字的新文件,即在目录中增加一项,不考虑文件的内容。对于重名文件给出错误信息。
删除文件:del<文件名>,当没在用户使用指定文件时,将其删除。文件不存在时给出错误信息。
显示目录:dir<目录名>,显示指定目录下的全部文件和第一级子目录,如果没有指定目录名,则显示当前目录下的相应内容。
创建目录:md<目录名>,在指定路径下创建指定的目录,如没有指定路径,则在当前目录下创建指定的目录。对于重名目录给出错误信息。
删除目录:rd<目录名>,删除指定目录及其下的全部文件和子目录。如果指定目录为空,可直接删除,否则给出用户提示是否删除。
其他说明:
<目录名>和<文件名>都支持全路径名和相对路径名。
文件名由目录结构中各级文件名分量排列构成,各分量间用“/”隔开。
输入exit命令可退出此模拟文件管理系统。
二.工作原理
2.1 编译工具
本程序使用的函数均为标准C库函数,可以由任何支持标准C的编译器编译运行。
已经通过测试的编译环境如下:
Windows平台:Visual C++ 6.0
使用方法:用VC6打开fileSys.c文件,执行Build,根据对话框提示创建工程文件。Build完成即可用Execute运行程序。
Linux平台: Gcc 2.96
使用方法:到fileSys.c所在路径下,执行命令gcc-o fileSys fileSys.c生成可执行文件fileSys,执行./fileSys运行程序。
2.2 相关说明
支持相对路径和绝对路径:
相对路径如“cd user/file1↙”,“dir↙”
绝对路径如“cd /user/file1”(root指根目录)、“cd /user/file1↙”、“cd/↙”(表示对根目录操作)
如果命令或路径出错会有详尽的提示。
在新建文件或目录中,若文件名或目录名同名的文件或目录下已存在,则创建失败并给以提示。
CD命令中,如果遇到路径错误,将报错,并保持在当前路径下等待下一次命令。
如果有命令格式或者文件目录格式有错,系统将报错,并提示用户,允许重试。
不允许对文件操作的命令与对目录操作的命令混用,否则报错。
本系统采用了动态分布存储空间的链表结构,所以对文件数目没有明确限制,只受系统资源制约。
Exit为退出系统命令,该命令不能接目录名。在6个命令中,只有dir可接空路径名,
表示对当前目录的操作,其他的将会对命令格式的错误情况报错。
三.详细设计
程序框架及函数调用关系
函数之间的关系如图3-1所示,每个函数的说明如下:
Main(): 主函数
CdComd(): 改变目录功能处理
EditComd(): 创建文件功能处理
DelComd(): 删除文件功能处理
RdComd(): 删除目录功能处理
Dircomd(): 显示目录功能处理
Mdcomd(): 创建目录功能处理
Init(): 初始化文件树
ParseCommand(): 接受输入的命令并将其分解成操作名和路径文件名
ExecuteCommand(): 执行命令,根据参数Paral,调用相应的功能处理模块;若输入命令有误,则报错
图3-1 调用关系图
FindPath(): 查找参数ph所指向的路径
FindFileName(): 从参数para2中找到要建立或删除的子目录,文件名,并调用查找路径子函数把指针指向其父亲结点
CreateFileNode(): 创建结点
GetInput(): 缓冲区安全输入子函数,如果输入超过缓冲区长度,则截取前[缓冲区长度-1]位,最后一位补“/0”
CheckCommand(): 命令检查
GetDir(): 获取当前目录名
Trim(): 对命令进行格式处理,即去掉空格等
3.2数据结构及相应算法
整个文件系统采用二叉树型存储结构,如图3-2所示
图3-2 初始目录树
每一个结点的结构如下:
Struct FileNode
{
Char filename[FILEN
您可能关注的文档
- 根据海外事业部的要求.现将海外事业部员工2001年12月份工资表移交.doc
- 格兰仕调研汇报.doc
- 格宾网笼石施工施工的方案.doc
- 2019春六年级数学下册1.2百分数和分数小数的互化教案6新版西师大版.doc
- 2019春六年级数学下册1.2百分数和分数小数的互化教案6新版 西师大版.doc
- 2019春六年级数学下册1.2百分数和分数小数的互化教案5新版西师大版.doc
- 桃源九中专项整治方案 [2].doc
- 2019春六年级数学下册1.2百分数和分数小数的互化教案7新版 西师大版.doc
- 2019春六年级数学下册1.2百分数和分数小数的互化教案7新版西师大版.doc
- 2019春六年级数学下册1.3问题解决教案10新版 西师大版.doc
- 2023-2024学年湖南省湘西州高一下期末数学试卷附答案解析.docx
- 2023-2024学年四川省凉山州高一下期末数学试卷附答案解析.docx
- 2023-2024学年山东省日照市高一下期末数学试卷附答案解析.docx
- 2023-2024学年河北省张家口市高一下期末数学试卷附答案解析.docx
- 2023-2024学年山东省枣庄市高一下期末数学试卷附答案解析.docx
- 2023-2024学年四川省成都市高一下期末数学试卷附答案解析.docx
- 2023-2024学年四川省成都七中高一下期末数学试卷附答案解析.docx
- 2023-2024学年陕西省咸阳市高一下期末数学试卷附答案解析.docx
- 2023-2024学年山东省泰安市高一下期末数学试卷附答案解析.docx
- 黑龙江省哈尔滨市九中2024-2025年4月考试高二语文试卷.docx
文档评论(0)