操作系统试验模拟文件管理系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的和要求(必填)

实验目的:通过在VC平台下编程,设计和调试一个简单的文件系统,通过模拟文件操作命令的执行,来模拟文件系统对文件及目录的管理。

实验要求:两名学生成组结对完成实验,仿真出文件系统中对文件和目录的操作。

二、实验容(必填)

文件管理:实现一个简单的文件系统

三、实验原理或实验方法(必填)

原理:通过结构体来描述文件和目录,利用链表知识实现目录树结构,通过对链表的操作实现整个文件系统中目录和文件的相关操作。

方法:学生两人结对进行实验,分别实现对文件和目录的操作。

对文件的操作包括:创建文件create、读文件read、写文件write、删除文件delete。对目录的操作包括:创建目录mkdir、切换目录cd、展示目录容dir、删除目录rm。

四、主要仪器设备或实验条件

Windows操作系统,VC开发环境

五、实验步骤(含实验数据记录处理)或操作设计过程记录

#include "stdio.h"

#include "iostream.h"

#include "string.h"

#define FILENAME_LENGTH 10 //文件名称长度

#define COMMAND_LENGTH 10 //命令行长度

#define PATH_LENGTH 30 //参数长度

struct filenode

{

char filename[FILENAME_LENGTH];

int isdir;

char content[255];

filenode *parent;

filenode *child;

filenode *prev;

filenode *next;

};

filenode *initnode(char filename[],int isdir);

void createroot();

int run();

int findpath(char *topath);

void help();

int mkdir();

int create();

int read();

int write();

int del();

int rm();

int cd();

int dir();

filenode *root,*recent,*temp,*ttemp,*temp_child;

char

path[PATH_LENGTH],command[COMMAND_LENGTH],temppath[PATH_LENGTH],re centpath[PATH_LENGTH];

//创建文件或目录的存储节点

filenode* initnode(char filename[],int isdir)

{

filenode *node=new filenode;

strcpy(node->filename,filename);

node->isdir=isdir;

node->parent=NULL;

node->child=NULL;

node->prev=NULL;

node->next=NULL;

return node;

}

//初始化文件系统根结点

void createroot ()

{

recent=root=initnode("/",1);

root->parent=NULL;

root->child=NULL;

root->prev=root->next=NULL;

strcpy(path,"/");

}

void help()

{

cout<

cout<<"create: 建立文件。"<

cout<<"cd: 切换目录。"<

cout<<"dir: 显示目录。"<

cout<<"logout: 退出登录。"<

}

int dir()

{

int i=0,j=0;

temp=new filenode;

temp=recent;

if(temp==root)

{cout<<"

"<<"."<

if(temp!=root)

{cout<<"

"<<".."<

if(temp->child==NULL)

{

cout<<"Total: "<<" directors " <

return 1;

}

temp=temp->child;

while(temp)

{

if(temp->isdir)

{cout<<"

"<filename<

{cout<<" "<filename<next;

}

cout<<"Total: "<<" directors " <

}

相关文档
最新文档