1、 1 操作系统课程设计报告操作系统课程设计报告 题目题目:文件文件管理管理系统系统 学 院 计算机学院 专 业 软件工程 年级班别 计 114-1 学 号 学生姓名 XXX 指导教师 XX 成 绩 2013 年 12 月 2 树型目录文件系统树型目录文件系统 一、一、 设计思想:设计思想: 本课程设计目的是实现树型目录结构文件系统,本人在实现过程中也利用二叉树, 其中每个节点都有父指针, 子指针和兄弟指针, 其中子指针指向该目录下的第一个子节 点,而该子节点的父指针则指向它的上级目录。目录下各子节点用兄弟指针连接起来。 文件夹打开是则把文件夹名称及其地址压入打开文件夹栈, 文件关闭则把文件夹名
2、 称及其地址从打开文件夹栈中抛出。 文件打开则把文件的名称及其父指针写到文件列表同时置文件打开标志为 1, 文件 关闭则把文件从打开列表中删除,同时置文件打开指针为 0,文件读取和写入都要检查 文件是否在文件打开列表中, 未打开文件不能读写, 只读文件不能写, 只写文件不能读。 文件夹和文件创建, 文件夹和文件的创建首先检验目录是否为空, 为空则把文件夹 或文件连接到该目录下, 不为空则把检查目录下是否有同名文件夹或文件, 有则提示创 建不成功, 没有则把文件夹或文件连接到该目录下的最后一个子节点, 作为它的兄弟节 点。 文件夹和文件的删除, 文件夹下没有打开的文件或文件没有打开才能删除, 否
3、则删 除失败,删除文件夹时利用了中序历遍来删除子树。 二、二、 系统结构说明系统结构说明 系统结构如下图: root 为根结点,root 下有五个用户,每个用户有自己的文件夹或文件,系统初始化时为 每个用户创建一个 file1 文件。文件夹内容只有名称和打开标志。文件除了名称和打开 标志, 还有文件的访问权限, 文件类型以及文件长度。 其中文件的访问权限、 文件类型、 文件长度单独作为一个结构体,其它和文件夹结构体相同,也同用一个结构体。 打开文件列表的结构体包括文件名和文件的父节点地址, 打开文件夹的栈中包括文件夹 名称及其地址 3 三、三、 数据结构的说明数据结构的说明 /普通文件的结构体
4、普通文件的结构体 struct file char type; /文件类型 0-文本文件 1-可执行文件 2-记录型文件 char right; /文件的权限 0可读 1可写 2可读可写 int f_length; /文件长度 ; typedef struct file File; /文件夹或文件的结构体文件夹或文件的结构体 struct FCB char kind; /kind=1为文件夹 kind=2为文件 char name20; /文件夹或文件名称 bool open; File if_file; struct FCB *parent; struct FCB *brother; str
5、uct FCB *child; ; typedef struct FCB Ff; /root 和和 fcp 为全局变量为全局变量 Ff *root;/根节点 Ff *fcp=null;/判断是否有拷贝文件 /打开项的结构体打开项的结构体 typedef struct char name20;/名称 Ff *node; /指针,打开的是文件夹记录文件夹的地址,是文件记录文件的父节点地 opened; int OPFO=0; /记录文件夹打开数目,最多 20 opened folderopened20;/记录文件打开文件夹 int OPFI=0; /记录文件打开数目,最多 20 opened fi
6、leopened20;/记录打开文件 四、四、 函数清单及部分函数流程图函数清单及部分函数流程图 /函数声明/ void init();/初始化创建根节点 void initopen();/初始化打开文件列表或打开文件夹文件列表 Ff* creat(Ff *parent,char name20,char kind);/创建文件或文件夹 void delet(Ff *parent,char delname20,char kind);/删除文件文件夹 void delSub(Ff *delp); /删除子树(配合删除文件夹使用) void openfolder(Ff *parent, char name20);/打开文件夹 4 void openfile(Ff *parent,