网站大量收购独家精品文档,联系QQ:2885784924

模拟文件的管理系统.docVIP

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

您可能关注的文档

文档评论(0)

shaoye348 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档