文件系统设计.doc

上传人:b****1 文档编号:153366 上传时间:2022-10-04 格式:DOC 页数:18 大小:401KB
下载 相关 举报
文件系统设计.doc_第1页
第1页 / 共18页
文件系统设计.doc_第2页
第2页 / 共18页
文件系统设计.doc_第3页
第3页 / 共18页
文件系统设计.doc_第4页
第4页 / 共18页
文件系统设计.doc_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

文件系统设计.doc

《文件系统设计.doc》由会员分享,可在线阅读,更多相关《文件系统设计.doc(18页珍藏版)》请在冰豆网上搜索。

文件系统设计.doc

1设计题目---------------------------------------------------1

2需求分析---------------------------------------------------1

3系统概要设计

(1)系统的主要功能---------------------------------------------1

(2)系统模块功能结构-------------------------------------------1

(3)运行环境要求------------------------------------------------1

(4)数据结构设计------------------------------------------------1

4系统的详细设

确定程序设计的各个模块的算法及内部的

数据组织,包括主要代码并描述各种算法--------------3

5系统的主要源代码-------------------------------------------5

6系统测试及调试----------------------------------------------15

7心得体会,概述总结自己----------------------------------18

8主要参考文献-------------------------------------------------18

设计题目:

文件系统设计

需求分析:

文件系统是linux操作系统的重要组成部分,Linux文件具有强大的功能。

文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。

从这我们可以看出文件系统的重要性,要好好掌握,通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。

系统概要设计

(1)系统的主要功能

为Linux系统设计一个简单的二级文件系统,以实现下列功能:

可以实现下列几条命令

(1)login用户登录

(2)dir文件目录列表

(3)creat创建文件

(4)delete删除文件

(5)open打开文件

(6)close关闭文件

(7)read读文件

(8)write写文件

(2)系统模块功能结构

本系统是模拟实现多用户多目录的文件系统(8个用户),在系统出现登录后,输入用户与口令,在用户登录系统后,可建立文件卷,将用户输入的文件保存在指定的文件中。

系统的命令与其命令的具体实现,此模拟系统共提供了login用户登录dir列文件目录mkdir建立目录create创建文件del删除文件open打开文件read读文件write写文件上述命令,并根据命令的含义与要求,用C++编程来完成所有具体操作。

该系统可以模拟完成用户的登陆和验证,列出文件和目录,新建目录,改变目录,创立和编写文件,删除文件和退出系统等功能。

(3)运行环境要求

开发环境:

windows平台+visualc++6.0

运行环境:

windows全系列平台VisualC++6.0linux环境下用g++编译C++

开发语言:

c++

(4)数据结构设计

(1)用户结构:

账号与密码结构

typedefstructusers

{

 char    name[8];

 char    pwd[10];

}users;

本系统有8个默认的用户名,前面是用户名,后面为密码,用户登陆时只要输入正确便可进入系统,否则提示失败要求重新输入。

usersusrarray[8]=

{

 "usr1","usr1",

 "usr2","usr2",

 "usr3","usr3",

 "usr4","usr4",

 "usr5","usr5",

 "usr6","usr6",

 "usr7","usr7",

 "usr8","usr8",

};

(2)数据结构说明

a)文件结构链表

structfnode

{

   charfilename[FILENAME_LENGTH];

 int isdir;

 intisopen;

 charcontent[255];

 fnode*parent;

 fnode*child;

 fnode*prev;

 fnode*next;

};

b)函数介绍

fnode*initfile(charfilename[],intisdir);//初始化文件或目录 

 voidcreateroot();//建立系统根目录

 intrun();系统运行

 intfindpara(char*topara);对参数进行处理

 boolchklogin(char*users,char*pwd);检查账号与口令

 voidhelp();命令列表

 intmkdir();建立目录

 intcreate();建立文件

 intread();读取文件

 intwrite();写入文件

 intdel();删除文件

 intcd();切换目录

 intdir();文件与目录列表

(3)各模块流程图

系统的详细设计

确定程序设计的各个模块的算法及内部的数据组织,包括主要代码并描述各种算法

(1)用户结构:

账号与密码结构

typedefstructusers

{

 char    name[8];

 char    pwd[10];

}users;

本系统有8个默认的用户名,前面是用户名,后面为密码,用户登陆时只要输入正确便可进入系统,否则提示失败要求重新输入。

usersusrarray[8]=

{

 "usr1","usr1",

 "usr2","usr2",

 "usr3","usr3",

 "usr4","usr4",

 "usr5","usr5",

 "usr6","usr6",

 "usr7","usr7",

 "usr8","usr8",

};

(2)数据结构说明

a)文件结构链表

structfnode

{

   charfilename[FILENAME_LENGTH];

 int isdir;

 intisopen;

 charcontent[255];

 fnode*parent;

 fnode*child;

 fnode*prev;

 fnode*next;

};

b)函数介绍

fnode*initfile(charfilename[],intisdir);//初始化文件或目录 

 voidcreateroot();//建立系统根目录

 intrun();系统运行

 intfindpara(char*topara);对参数进行处理

 boolchklogin(char*users,char*pwd);检查账号与口令

 voidhelp();命令列表

 intmkdir();建立目录

 intcreate();建立文件

 intread();读取文件

 intwrite();写入文件

 intdel();删除文件

 intcd();切换目录

 intdir();文件与目录列表

系统的主要源代码

#include"stdio.h"

#include"iostream.h"

#include"string.h"

#include"iomanip.h"

#defineFILENAME_LENGTH10//文件名称长度

#defineCOMMAND_LENGTH10//命令行长度

#definePARA_LENGTH30//参数长度

//账号结构

typedefstructusers

{

charname[8];

charpwd[10];

}users;

//文件结构

structfnode

{

charfilename[FILENAME_LENGTH];

intisdir;

intisopen;

charcontent[255];

fnode*parent;

fnode*child;

fnode*prev;

fnode*next;

};

//账号

usersusrarray[8]=

{

"usr1","usr1",

"usr2","usr2",

"usr3","usr3",

"usr4","usr4",

"usr5","usr5",

"usr6","usr6",

"usr7","usr7",

"usr8","usr8",

};

fnode*initfile(charfilename[],intisdir);

voidcreateroot();

intrun();

intfindpara(char*topara);

boolchklogin(char*users,char*pwd);

voidhelp();

intmkdir();

intcreate();

intread();

intwrite();

intdel();

intcd();

intdir();

fnode*root,*recent,*temp,*ttemp;

charpara[PARA_LENGTH],command[COMMAND_LENGTH],temppara[PARA_LENGTH],recentpara[PARA_LENGTH];

//创建文件与目录结点

fnode*initfile(charfilename[],intisdir)

{

fnode*node=newfnode;

strcpy(node->filename,filename);

node->isdir=isdir;

node->isopen=0;

node->parent=NULL;

node->child=NULL;

node->prev=NULL;

node->next=NULL;

returnnode;

}

//创建文件存储结点

voidcreateroot()

{

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

root->parent=NULL;

root->child=NULL;

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

strcpy(para,"/");

}

intmkdir()

{

temp=initfile("",1);

cin>>temp->filename;

if(recent->child==NULL)

{

temp->parent=recent;

temp->child=NULL;

recent->child=temp;

temp->prev=temp->next=NULL;

}

else

{

ttemp=recent->child;

while(ttemp->next)

{

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1