模拟文件管理系统2.pptVIP

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

模拟文件管理系统 操作系统课程设计汇报二 计科31第二组 流程图 主要数据结构 文件控制块 typedef struct FCB { string name; //文件名 int type; //标致:0表示目录,1表示文件 int size; //如果是文件则表示文件大小 struct FCB *firstchild; //指向第一个孩子结点 struct FCB *nextsibling; //指向下一个兄弟结点 struct FCB *parent; //指向父结点 }FCB, *FCBnode; 用户当前数据结构 typedef struct USER { string username; //用户名 FCBnode workdir; //当前工作目录或文件指针 string path; //当前路径 }USER, *USERnode; 主要算法 邢自成:创建文件、删除文件 叶林:显示目录、改变目录 张鹰:创建目录 保存读取目录树 //-----------将目录树保存到文件------------ void SaveTree(FCBnode root,FILE *fp) { if (root) { fwrite(root,sizeof(struct FCB),1,fp); SaveTree(root-firstchild,fp); SaveTree(root-nextsibling,fp); } } void Save(FCB *root) { FILE *fp; if((fp=fopen(user,wb+))==NULL) { coutCannot open file; } SaveTree(root,fp); fclose(fp); } //------------将目录树从文件中读出来-------------- void LoadTree(FCBnode p,FILE *fp) { FCB q; if (p-firstchild) { fread(q,sizeof(struct FCB),1,fp); p-firstchild=q; LoadTree(q,fp); } if (p-nextsibling) { fread(q,sizeof(struct FCB),1,fp); p-nextsibling=q; LoadTree(q,fp); } } void Load() { FILE *fp; FCB p; if((fp=fopen(user,rb+))==NULL) { coutCannot open file; } fread(p,sizeof(struct FCB),1,fp); //读用户根目录 show(p); LoadTree(root,fp); fclose(fp); } 主要完成部分: 创建文件算法 create(string name){} 删除文件算法 deletefile(string name) {} create(string name)是创建文件函数,在DOS界面下输入create “文件名”,如果当前目录树的第一个孩子节点为空,就把“文件名”赋给这个孩子节点,输出“文件创建成功”提示信息。如果孩子节点的名字和要创建的文件名相同,就输出“文件已经存在!创建失败!”如果这个孩子节点不空且与要创建的名字不同,就检查下一个节点,如果为空,则创建成功。 deletefile(string name)是删除文件函数,在DOS界面下输入deletefile “文件名”,如果当前目录孩子节点为空,说明该目录下没有文件,则输出“无此文件!”。如果找到匹配的文件,则执行删除。 创建目录 创建目录的流程如下: 先创建一个FCB,并且将文件连接到目录树上 指针指向目录树的第一个孩子结点 当目录命不存在时,创建成功 当创建失败后指针指向兄弟结点 当目录命不存在时,创建成功 列出文件目录 cd(string name) 改变当前目录的函数,当前目录的第一个结点是否与需要改变目录的名字“name”相同,如果结点为空,则输出“目录不存在!”,跳出;如果结点的名字与需要改变的名字相同,则进入\ “name”这个目录下面,则输出“目录已经改变!”;如果不同,则指针指向当前目录的下一结点,然后判断是否需要改变目录的名字“name”相同,重复以上步骤。 进展情况 完成DOS下的程序。如图: 正在用MFC封装。如图: * * 开始 初始化 读取用

文档评论(0)

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

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

1亿VIP精品文档

相关文档