• 大小: 9KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: C/C++
  • 标签: 文件模拟  

资源简介

① 根路径为 ROOT。首次进入模拟器时,提示符为“ROOT>”,“>”左侧为当前路径,可在“>”
后输入下述各命令。
② 切换到当前路径下的某文件夹:cd 文件夹。如“cd music”,若当前路径下存在 music 文件
夹,则提示符变为“当前路径\music>”,若不存在,则提示。
③ 切换到当前路径的上级文件夹:cd ..。
④ 在任意路径下切换回根路径 ROOT:cd \。
⑤ 列出当前路径下的全部文件夹和文件:dir。
⑥ 在当前路径下新建文件夹:md 文件夹名称。
⑦ 在当前路径下新建文件:mf 文件名称。
⑧ 删除当前路径下的某文件或文件夹(及其下所有文件夹及文件):del 文件或文件夹名称。

资源截图

代码片段和文件信息


/********************************/
/*名称:文件系统模拟器*/
/*作者:软件162 朱程宇 3160704213*/
/*时间:2018.1.4*/
/********************************/

#include
#include
#include 
#include 
#include
using namespace std;
#define MAX_DIR  5              //最大目录项的个数
#define FILE 0                  //结点代表为文件夹
#define PAPER 1                 //结点代表为文件

typedef struct FileNode{
char name[20];     //目录名称
char way[200]; 
time_t create_t;     //创建时间
int stat; //文件属性
struct FileNode * firstchild* nextsibling;  //第一个孩子节点和第一个孩子节点的兄弟节点
}FileNode*File;                // 结点别名,指向结点的指针别名


File root;                      //根目录
File curr;         //当前目录的镜像
File p;                         //当前目录的指针

File user;                      //原始子目录
File text;
File music;

File path;                      //待使用的工具结构体
File T;

int type;                       //新建文件类型
int sen;
char check[100];                //命令寄存器
char command[100];              //第一部分命令
char result[100];               //第二部分命令


void Initial()                  //初始化系统和建立最初文件系统
{
root=(FileNode *)malloc(sizeof(FileNode));
curr=(FileNode *)malloc(sizeof(FileNode));
user=(FileNode *)malloc(sizeof(FileNode));
text=(FileNode *)malloc(sizeof(FileNode));
music=(FileNode *)malloc(sizeof(FileNode));
path=(FileNode *)malloc(sizeof(FileNode));
T=(FileNode *)malloc(sizeof(FileNode));

strcpy(root->name“ROOT“);
strcpy(root->way“ROOT“);
root->create_t=time(NULL);
root->stat=0;
root->firstchild=user;
root->nextsibling=NULL;

strcpy(user->name“user“);
strcpy(user->way“ROOT\\user“);
user->create_t=time(NULL);
user->stat=0;
user->firstchild=NULL;
user->nextsibling=text;

strcpy(text->name“text“);
strcpy(text->way“ROOT\\text“);
text->create_t=time(NULL);
text->stat=0;
text->firstchild=NULL;
text->nextsibling=music;

strcpy(music->name“music“);
strcpy(music->way“ROOT\\music“);
music->create_t=time(NULL);
music->stat=0;
music->firstchild=NULL;
music->nextsibling=NULL;

}

void exit()                    //退出系统
{
printf(“*****感谢使用*****\n“);
exit(0);

}

void help()                    //使用帮助
{
printf(“欢迎使用本系统!\n“);
printf(“使用帮助:\n“);
printf(“cd   切换到当前路径下的某文件夹。\n“);
printf(“cd.. 切换到当前路径的上级文件夹。\n“);
printf(“cd \\ 在任意路径下切换回根路径 ROOT。\n“);
printf(“dir  列出当前路径下的全部文件夹和文件。\n“);
printf(“md   在当前路径下新建文件夹。\n“);
printf(“mf   在当前路径下新建文件。\n“);
printf(“exit 随时退出系统。\n“);
printf(“del  删除当前路径下的某文件或文件夹(及其下所有文件夹及文件)。\n\n“);

}

void add(File &aFile &b)     //变量直接赋值函数
{
a->create_t=b->create_t;
a->firstchild=b->firstchild; 
strcpy(a->nameb->name);
a->nextsibling=b->nextsibling;
a->stat=b->stat;
strcpy(a->wayb->way);
}

void Research(File F)        // //查找目标目录工具
{                            //遍历当前节点的所有子孙节点找到目标节点
  if(F==NULL)                //判断当前结点是否为NULL
return ;            
  if(strcmp(F->waypath->way)==0)//判断是否为目标

评论

共有 条评论

相关资源