windows的文件分配表管理。
学号:200605030406 姓名: 王林专业: 计算机科学与技术 )
摘要:本课程设计目的是实现树型目录结构文件系统,本人在实现过程中也利用二叉树,其中每个节点都有父指针,子指针和兄弟指针,其中子指针指向该目录下的第一个子节点,而该子节点的父指针则指向它的上级目录。目录下各子节点用兄弟指针连接起来。
1 概述。文件夹打开是则把文件夹名称及其地址压入打开文件夹栈,文件关闭则把文件夹名称及其地址从打开文件夹栈中抛出。
文件打开则把文件的名称及其父指针写到文件列表同时置文件打开标志为1,文件关闭则把文件从打开列表中删除,同时置文件打开指针为0,文件读取和写入都要检查文件是否在文件打开列表中,未打开文件不能读写,只读文件不能写,只写文件不能读。
文件夹和文件创建,文件夹和文件的创建首先检验目录是否为空,为空则把文件夹或文件连接到该目录下,不为空则把检查目录下是否有同名文件夹或文件,有则提示创建不成功,没有则把文件夹或文件连接到该目录下的最后一个子节点,作为它的兄弟节点。文件夹和文件的删除,文件夹下没有打开的文件或文件没有打开才能删除,否则删除失败,删除文件夹时利用了中序历遍来删除子树。
2.3 文件逻辑结构的类型顺序文件。
2.4 哈希文件。
2.5 目录管理(目录结构)
3 总体设计。
1.主函数开始执行时,先初始化。
2.初始化包括创建root根目录,创建user0~user4五个用户,为每个用户创建一个file1的文件。
3.初始化完毕后,显示选择用户和退出系统两个操作,列出户。
4.选择1则进入选择用户界面,选择用户后则列出用户目录下的内容。
5.同时显示操作界面。选择操作后,执行相应的操作。执行完毕回到选择操作界面。
6程序流程。
//普通文件的结构体。
struct file{
char type; /文件类型0-文本文件 1-可执行文件 2-记录型文件。
char right; /文件的权限0-可读 1-可写 2-可读可写。
int f_length; /文件长度。
typedef struct file file;
/文件夹或文件的结构体。
struct fcb {
char kindkind='1'为文件夹 kind='2'为文件。
char name[20]; 文件夹或文件名称。
bool open;
file if_file;
struct fcb *parent;
struct fcb *brother;
struct fcb *child;
typedef struct fcb ff;
/root和fcp为全局变量。
ff *root;//根节点。
ff *fcp=null;//判断是否有拷贝文件。
/打开项的结构体。
typedef struct{
char name[20];/名称。
ff *node; /指针,打开的是文件夹记录文件夹的地址,是文件记录文件的父节点地。
opened;
int opfo=0; /记录文件夹打开数目,最多20
opened folderopened[20];/记录文件打开文件夹。
int opfi=0; /记录文件打开数目,最多20
opened fileopened[20];/记录打开文件。
一、 函数清单及部分函数流程图。
//函数声明。
void init();初始化创建根节点。
void initopen();初始化打开文件列表或打开文件夹文件列表。
ff* creat(ff *parent,char name[20],char kind);/创建文件或文件夹。
void delet(ff *parent,char delname[20],char kind);/删除文件文件夹。
void delsub(ff *delp删除子树(配合删除文件夹使用)
void openfolder(ff *parent, char name[20]);打开文件夹。
void openfile(ff *parent, char name[20]);打开文件。
void closefo关闭文件夹。
void closefile(char name[20关闭文件。
void read(ff*parent,char name[20读文件。
void write(char name[20写文件。
void show显示初始界面。
void initfile初始化每个用户,为每个用户创建一个file1文件。
int ish**eopen(ff *bedel判断文件夹下是否有打开的文件或文件夹。
void filecpy(ff *parent,char name[20]);文件复制函数。
void pastefile(ff *parent文件粘贴。
创建文件或文件夹首先通过主函数选择操作来传递参数,kind=1创建文件夹,kind=2创建文件。文件或文件夹名称是由用户输入。文件或文件夹的父节点由folderopened[opfo-1].
node来传递。
如果当前目录下由同名文件或同名文件夹则创建文件或创建文件夹不成功。
当前目录是空目录则创建的文件或文件夹是当前目录的首个子节点。parent指针指向当前目录,当前目录的child指针指向文件或文件夹。
当前目录不为空,则把文件或文件夹连接到当前目录下最后的子节点后面,作为最后的兄弟节点。
删除文件或文件夹函数delet()的流程图:
同样删除文件或文件夹的类型参数由用户选择操作时传递。kind=1删除文件夹,kind=2删除文件。名称也由用户输入。
文件在打开列表或文件夹中有打开的文件,文件或文件夹不能删除,目录下没有该文件或文件夹删除失败,删除失败时返回相应的信息。
如果目录下有该文件或文件夹,而且文件没打开,或文件夹中没有打开的文件,则删除该释放该节点或该子树。返回删除成功信息。
文件打开,只能但开当前目录下的文件,首先查找文件是否在打开文件列表中,在则返回文件已经在打开文件列表中的信息,不是,则查看当前目录有没有该文件,有则打开,同时把文件名及其父节点地址写到文件队列中,置文件打开标志为1。返回打开成功信息。文件被打开后,返回上层目录或到别的目录下,文件不会从打开文件列表中删除。
除非在文件所在的目录下执行关闭文件操作关闭此文件文件才从打开文件列删除。
初始界面:选择用户后进入的界面:
建立文件成功和失败图示:
创建文件夹new,目录中没有new文件夹,创建成功:
操作系统 软件 操作系统作业
1 信号量的物理含义是什么?2 处于执行状态的进程若同时发生了下列两种情况 1 对某信号量执行p操作后,信号量的值变为负数。2 该进程的时间片到时产生中断。试问,该进程将由执行状态变迁为就绪态,还是阻塞态?简述理由。3 设有n个进程共享一临界区,对于下述情况,说明信号量的初值 含义,并用pv操作写出...
操作系统作业
4.程序并发执行时为什么会失去封闭性和可再现性?因为程序并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态是由多个程序来改变,致使程序的运行失去了封闭性。而程序一旦失去了封闭性也会导致其再失去可再现性。6.试从动态性,并发性和独立性上比较进程和程序?a.动态性是进程最基本的特性,可表现为...
操作系统作业
一 选择题。1 在进程的组成部分之中,进程在运行中不可修改的部分是 a 私用程序段b 共享程序段。c 数据段d 进程控制块。2 响应比高者优先作业调度算法是以计算时间和 来考虑的。a 输入时间 b 完成时间 c 周转时间 d 等待时间。3 在消息缓冲通信中,消息队列属于 资源。a 临界 b 共享 c...