采用二级目录实现文件管理

采用二级目录实现文件管理
采用二级目录实现文件管理

目录

一、课程设计目的 (1)

二、课题内容 (1)

三、总体路线 (1)

四、概要设计 (2)

1.数据结构 (2)

2.所使用函数及其功能 (3)

五、详细设计 (4)

1.主函数流程图 (4)

2.创建文件函数流程图 (5)

3.删除文件函数流程图 (7)

4.分解命令函数流程图 (10)

六、测试、修改及运行结果 (10)

七、结束语 (13)

八、参考文献 (14)

一、课程设计目的

文件系统是现代OS用来存储和管理信息机构,具有按名存取的功能,不仅能方便用户对信息的使用,也有效提高了信息的安全性。本课题模拟文件系统的目录结构,并在此基础上实现文件的各种操作方法。

通过本课题,深入理解文件文件目录的作用和功能,掌握文件打开结构,熟悉与文件有关的系统调用,从而更好地掌握文件系统概念。

二、课题内容

1.文件目录采用二级目录结构,第一级为主文件目录master_file_directory;第二级为用户文件目录user_file_directory。

图1 master_file_directory 结构

图2 user_file_directory 结构

2.为加速文件存取,为每个用户建立一张用户打开表fileTable,用以记录该

3.为该系统提供6条操作命令:创建、打开、读、写、关闭、删除等。

4.在该模拟系统中,应先建立主文件目录、用户目录和用户打开文件表,然后接受合法用户,给出一个菜单,按用户选择执行相关操作。

三、总体路线

1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简单的单用户文件系统。在退出这个简单的文件系统时,应将该虚拟文件系统保存到磁盘上,以便下次可以再将它恢复到内存的虚拟磁盘空间中。

2.文件存储空间的分配采用显式链接分配。为了实现创建和删除文件必

须要有一棵初始的文件树存在,以便在文件树的根节点下实现创建和删除文件。 3.文件目录结构采用二级目录结构。为了简单起见,可以使用文件结构体,结构体内容包括:文件名,文件目录识别标示,文件链接数,以及他的左孩子右孩子左兄弟右兄弟指

4.要有分解函数对输入的命令进行分解。以识别那部分是哪部分是命令,哪部分是路径和文件名。

5.最后要有执行函数。来执行输入的创建文件命令。

四、概要设计

1.数据结构

(1)函数中的主要结构体

//两级目录结构体

typedef struct master_file_directory //主文件目录MFD

{

char userName[10];

char password[10];

UFD *user;

}MFD;

MFD userTable[MaxUser];

int used=0; //定义MFD目录中用已有的用户数typedef struct user_file_directory //用户文件目录文件UFD

{

//char fileName[10];

fileTable *file;

user_file_directory *next;

}UFD;

//UFD *headFile;

typedef struct fileTable //文件块结构体

{

char fileName[10];

int strat; //文件在磁盘存储空间的起始地址

int length; //文件内容长度

int maxlength; //文件的最大长度

char fileKind[3]; //文件的属性——读写方式

struct tm *timeinfo;

bool openFlag; //判断是否有进程打开了该文件

//fileTable *next;

};

(2)结构体相互之间的调用关系图:

图4 结构体关系图

2.模块结构

(1)所用函数及其功能:

void Init();//初始化文件树

int ParseCommand();//接受输入的命令并把其分解成操作名和路径文件名

void ExecuteCommand();//执行命令,分别执行edit,del,dir,exit命令

int editComd();//处理edit命令,即创建文件,只要创建表示文件的节点即可,内容及大小不考虑

int delComd();//处理del命令,即删除指定文件,不存在是给出错误信息

int dirComd();//处理dir命令。问了能显示的看出创建文件和删除文件是否成功,把根目录的文件都显示出来

int FindFilename(char Para2[]);//查找文件名

struct FileNode* CreateFileNode(char filename[],int isdir,int i_nlink);//创建结点

int GetInput(char* buffer,unsigned int buffer_len);//获取输入

(2)所使用变量

struct FileNode *cp, *tp, *root;// *cp, *tp, *root是根目录节点

char path[INPUT_LEN-COMMAND_LEN];//记录当前走过的路径

char Para1[COMMAND_LEN],Para2[INPUT_LEN-COMMAND_LEN];//para1数组存储输入的命令,para2数组存储输入的文件名

char filename[FILENAME_LEN],tmp;

unsigned int i,j;

五、详细设计

1.主函数流程图

图5 主函数流程图

2.创建文件函数流程图

图6 创建文件函数流程图

具体函数实现过程如下:

int editComd()

{

//char tmp;

struct FileNode * temp=CreateFileNode("",0,0);

int sign;

struct FileNode *tp;

//路径不能为空

if(strlen(Para2)==0)

{

printf("\n命令格式有错误.\n");

return 0;

}

//长度检查

if(strlen(Para2)>50)

{

printf("\n文件名过长\n");

return 0;

}

//格式检查

if (!(isalpha(Para2[0])||Para2[0]=='_'||Para2[0]=='\0'||Para2[0]=='/'))

{

printf("文件名格式有错!\n");/* 文件首字母可以为'字母'或'数字'或'_'或'/'或'回车'*/

return 0;

}

//获取文件名

sign=FindFilename(Para2);

if(sign==0)

return 0;

if(cp->isdir!=1)//如当前指针指向的是文件,则报错

{

printf("you cannot edit a file in under a file!\n");

return 0;

}

//创建文件结点,并插入到指定目录下

tp=CreateFileNode("",1,0);

strcpy(tp->filename,filename);

tp->isdir=0;

tp->i_nlink=0;

if(cp->child==NULL)

{ tp->parent=cp;

tp->child=NULL;

cp->child=tp;

tp->sibling_prev=NULL;

tp->sibling_next=NULL;

}

else

{ temp=cp;

//用temp找到新结点插入处

temp=temp->child;

while(temp->sibling_next )//find the last sibing node

{

temp=temp->sibling_next;

if(strcmp(temp->filename,filename)==0&&temp->isdir==0)

{

printf("此文件名已存在\n");//重名报错

return 0;

}

}//找到了最后一个结点

temp->sibling_next=tp;

tp->parent=NULL;

tp->child=NULL;

tp->sibling_prev=temp;

tp->sibling_next=NULL;

}

return 1;

}

3.删除文件函数流程图

图7 删除函数流程图

具体函数实现过程如下:

int delComd()

{

// char tmp;

int sign;

struct FileNode *temp;

//参数不能为空

if(strlen(Para2)==0)

{

printf("\n命令格式有错误.\n");

return 0;

}

//获取文件名

sign=FindFilename(Para2);

if(sign==0) return 0;

//用temp指向要删除的结点

if(cp->child)

{

temp=cp->child;

while(temp->sibling_next && (strcmp(temp->filename,filename)!=0 || temp->isdir!=0))

temp=temp->sibling_next;

if(strcmp(temp->filename,filename)!=0)

{

printf("不存在该文件!\n");

return 0;

}

}

else

{

printf("不存在该文件!\n");

return 0;

}

//要删除的不能是目录

if(temp->isdir!=0)

{

printf("ERROR!该命令只能删除文件,不可删除目录!\n");

return 0;

}

//如仍有用户使用该文件,则不能删除

if(temp->i_nlink!=0)

{

printf("还有用户共享了该文件,不能删除!\n");

return 0;

}

//删除工作

if(temp->parent==NULL)//不是第一个孩子

{

temp->sibling_prev->sibling_next=temp->sibling_next;

if(temp->sibling_next)//处理是最后一个兄弟的情况

temp->sibling_next->sibling_prev=temp->sibling_prev;

temp->sibling_prev=temp->sibling_next=NULL;

}//if

else//第一个孩子

{

if(temp->sibling_next)//处理是最后一个兄弟的情况

temp->sibling_next->parent=temp->parent;

temp->parent->child= temp->sibling_next;

}//else

free(temp);

return 1;

}

操作系统课程设计-文件系统目录管理

操作系统课程设计-文件系统目录管理

目录 第一章课程设计目的和要求 (1) 1 课程设计目的 (1) 2 课程设计要求 (1) 2.1 课程设计思想原理 (1) 2.2 课程题目 (1) 2.3 提交课程设计报告 (2) 第二章课程设计内容 (3) 1 文件管理系统结构 (3) 2 文件系统采用索引文件结构 (3) 2.1 磁盘模拟 (3) 2.2文件的逻辑结构 (3) 2.3目录结构 (3) 2.4用户接口 (5) 第三章详细设计 (7) 1 程序功能模块图 (7) 2 实体关系图 (7) 3 数据流图 (8) 4 数据结构设计 (8) 5 程序流程图 (11) 5.1 建立文件目录(mkdir)程序流程图 (11) 5.2 删除文件目录(rmdir)程序流程图 (12) 第四章程序运行与测试 (13) 1 程序运行主界面 (13) 2 用mkdir [dirname] 命令创建子目录 (13) 3用ls命令显示当前目录下信息 (13) 4 用rmdir [dirname] 命令删除子目录 (14) 5 用cd [dirname] 命令改名当前目录 (14) 第五章课程设计总结 (16)

附录Ⅰ参考文献 (17) 附录Ⅱ程序清单 (18)

第一章课程设计目的和要求 1 课程设计目的 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。 2 课程设计要求 2.1 课程设计思想原理 阅读操作系统方面的书籍,了解操作系统的文件系统原理。结合分析课程设计要求,确定实体以及它们之间的关系。实体关系有三张表(磁盘空间分配表、文件表、打开文件表)、一个模拟磁盘的空间、命令服务和用户构成。用户负责输入命令。命令服务实现命令的解释、命令检查以及调用相关模块执行相应的命令功能。 磁盘空间分配表,采用链表结构,每个节点保存模拟磁盘的一个逻辑块的信息,包括块的最大长度,文件占用长度,占用标志。如果占用标志为0,即该空间可分配给文件。初始化磁盘空间分配表链表,首先把整个模拟磁盘作来一块,并置占用位为0.当有进程申请磁盘空间时,从头开始遍历,检查占用位,如果该块为可分配,则检查块大小,若块长度大于或等于申请空间大小,则把块的前一部分(等于申请大小)分配给文件,并置标志位为占用。剩下的大小作来一个新块,作来一个新节点插入到原节点的后边,标志位为可用。这样就实现了模拟磁盘的线性分配。 构造这些实体的关系图,数据流图、程序流程图来进行具体的设计。 2.2 课程题目 要求设计一个文件系统目录模拟程序,通过该程序能够实现简单的目录管理操作:

二级文件管理课程设计

操作系统二级文件管理课程设计 课程设计名称:二级文件管理系统 专业班级: 学生姓名: 学号 指导老师: 一、设计目的

二、设计内容 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条); login 用户登陆 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 rename 重命名 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。 三、程序设计 1、在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。 2、文件物理结构可采用显式链接或其他方法。 3、磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。 4、文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。 5、设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:用户登录、创建目录、删除目录、创建文件、删除文件、读文件、写文件、重命名、退出。 四、源代码 1、FileSystem.h #define DIR_LENGTH 1024 //路径最长可达100字节 #define MAX_WRITE 1024*128 //写入文字可达128k字节 #define MEM_D_SIZE 1024*1024 //1M磁盘空间 #define DISKSIZE 1024 //磁盘块的大小 1K #define MSD 5 //最大子目录数 5 #define DISK_NUM MEM_D_SIZE/DISKSIZE //磁盘块数目 1024=1M/1K #define FATSIZE DISK_NUM*sizeof(struct FatItem) //FAT表大小1024*8=8K #define MOFN 5 //最大文件打开数 5 #define ROOT_DISK_NO FATSIZE/DISKSIZE+1 //根目录起始盘块号 9 #define ROOT_DISK_SIZE sizeof(struct Direct) //根目录大小 196 #define LOGIN 15 #define NAME_LONG 1 #define NOT_EXSIT -1

操作系统课程设计文件系统管理)

操作系统课程设计Array文件系统管理 学院计算机学院 专业计算机科学与技术 班级 姓名 学号 2013年1月8日 广东工业大学计算机学院制 文件系统管理 一、实验目的 模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看,加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了解。 二、实验内容和要求 编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete等文件命令,对文件进行操作。 以下报告主要包括: 1.可行性分析 2.需求分析 3.概要设计

4.详细设计 5.测试 6.总结 三、可行性分析 1、技术可行性 对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。 2、经济可行性 课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益) 3.法律可行性 自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。 四、需求分析 编写程序实现文件系统,主要有以下几点要求: 1、实现无穷级目录管理及文件管理基本操作 2、实现共享“别名” 3、加快了文件检索 五、概要设计 为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录UFD(User File Directory)。这些文件目录可以具有相似的结构,它由用户所有文件的文件控制块组成。此外,在系统中再建立一个主文件目录MFD (Master File Directory);在主文件目录中,每个用户目录文件都占有一个目

实验 文件管理(二)

实验六:文件系统 一、目的要求 1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 2、要求设计一个n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。 二、例题: ①设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。 ②程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。 ③为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。 ④算法与框图: a、因系统小,文件目录的检索使用了简单的线性搜索。 b、文件保护简单使用了三位保护码:允许读写执行、对应位为1,对应位为0,则表示不允许读写、执行。 c、程序中使用的主要设计结构如下: Ⅰ、主文件目录和用户文件目录(MFD、UFD) Ⅱ、打开文件目录(AFD)(即运行文件目录)

三、调度算法的流程图 四、文件管理源程序 #include #include #include #include typedefstructufd { char filename[10];/*文件名*/ char procode[8];/*属性*/

int length;/*文件长度*/ structufd *nextfile;/*指向下一个文件*/ }UFD; typedefstructmfd { char username[10];/*用户名*/ structufd *link;/*指向该用户的第一个文件*/ }MFD; typedefstructprotected_flag { char code[4]; }PRO; typedefstructafd/*运行文件目录*/ { char filename[10];/*打开文件名*/ charprocode[4]; intrwpointer;/*读写指针*/ }AFD; PRO flag[3]={"100",/*只读*/ "110",/*读写*/ "001"/*可执行*/ }; UFD *rw_pointer;/*读写指针*/ AFD *afd=NULL; MFD filesystem[10]; intnum;/*当前用户个数*/ voiddisplayallfile() { inti; UFD *p; for(i=0;ifilename); printf("文件属性: %s\t||",p->procode); printf("文件长度: %d\n\n",p->length); p=p->nextfile; } }

文件管理系统课程设计

课程名称:操作系统 实验题目:文件管理系统 1、课程设计选题 (3) 1.1主要设计内容 3 1.2主要设计思路 3 2、课程设计需求分析 3 3、概要设计 (4) 3.1整体设计框架 4 3.2各模块的基本功能 4 4、系统实现 5 4.1原理 6 4.2各模块算法思想 6 4.3流程图描述 9 4.4代码描述 10 5、系统测试 11

5.1系统主界面 11 5.2子系统功能测试 11 6、总结 19 7、参考文献样式 19 1、课程设计选题 1.1主要设计内容 本课程设计主要是用C语言编写,设计的是一个模拟的多用户多级目录的文 件管理系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文 件操作的实现,加深对文件系统内部功能和实现过程的理解。 1.2主要设计思路 首先系统要完成初始化的任务,建立起整个系统,等待用户注册,注册成功后,用户登录模块,对用户的用户名进行验证,如果用户登录成功,则系统进入 等待用户输入的状态,用户选择相应指令后,系统按照即定方式处理用户请求, 用户退出后,系统转入登录模块,等待下一位用户的登录。 2、课程设计需求分析 本系统为多用户多级目录的文件管理系统,用户可以根据所注册的用户名登 陆来对文件或是文件进行操作。多用户功能可以满足不同用户不同的需求,同时 也起到了很好的保密作用。 文件系统为用户提供了按名存取的功能,以使得用户能透明地存储访问文

件。为了实现按名存取,文件需要对文件存储设备进行合理的组织,分配;对存储在文件存储设备上的文件进行保护,保密和提供共享的手段。另外,文件系统还要提供检索文件或文件中记录的手段,文件系统就是完成上述功能的一组软件和数据结构的集合。 模拟一个文件管理系统,要完成对文件的基本操作,文件的基本操作有文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。系统建立了文件目录树,存储文件系统中的所有文件。对于用户名下的文件,用文件目录树的分枝来存贮。 采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作就行了。 因为存在着同一个目录下不能有同名文件的问题。所以在进行文件的基本操作时要考虑到在已经有的文件中是否有同名文件,有的话则输出提示信息。 3、概要设计 3.1整体设计框架 系统初始化界面是由用户注册,用户登录,退出系统三个模块组成。用户登录模块再由创建用户,进入目录,删除用户,显示所有用户,显示位示图,修改用户资料几大模块组成。然后各个模块再由一些小模块组成。其中创建文件,打开关闭文件,读写文件等文件操作模块包括在进入目录模块里面。 3.2各模块的基本功能 3.21系统初始化 系统的初始化包括初始化了磁盘的空间即位示图、一个管理员用户 3.22用户注册模块 用户可以在这里注册,用户名和密码的最大长度都为10个字节,如果用户名不重复的话,则注册成功,用户的权限默认为一般用户。

个人档案管理课程设计

华北科技学院 课程设计说明书 课程名称:汇编语言 班级: 计算机B08-1 姓名: 胡诗招 学号: 200807014102 设计题目:个人档案管理文件 设计时间:2010年6月23号_至 2010年7月2号 _ 指导教师:______ 李冬艳_ ___________ 评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____评阅教师:_____

一、课程设计目的 进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。 二、课程设计要求 1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。 2.遵循模块化、结构化的程序设计方法。 3.要求程序必须正确。 4.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。 5.要求程序结构合理,语句使用得当。 6.适当追求编程技巧和程序运行效率。 三、课程设计题目: 个人档案管理文件 四、课题分析 程序开始时,先建立判断是否存在文件,如果不存在,就创立文件。然后随便输入i,l,q中任意一个字母,然后跳到相应的子程序,输入i诗,跳到输入的子程序,输入相应的数据,保存到文件里。当输入l时,保存在文件里的数据就会显示,每个学生的信息显示一行。当输入q时,直接关闭文件,程序结束

web程序设计课程设计--文件管理系统

目录 一.项目背景 (2) 二.需求分析 (2) 1.系统需求分析 (2) 2.系统分析 (3) 三.后台数据库Microsoft SQL Server 2008 (4) 四.https://www.360docs.net/doc/ac18950873.html, 2010 (4) 五.数据库设计 (4) 1.数据库设计 (4) 2.功能模块设计 (6) 3.系统功能流程 (7) 六.详细功能设计 (7) 七. 课程设计总结 (8) 八.问题与解答 (9)

一.项目背景 文件管理系统是信息技术在公司里管理中最典型的应用。传统文件管理模式是由人工去管理的,效率低下,无法适用于当前对文件管理的需求。文件管理系统基于网络技术,使办公室对文件的管理工作逐步信息化,从而形成由办公室人员与办公室设备共同构成服务于某种目标的人机文件处理系统,因而可以将跨地区的各个部门紧密连接在一起,从而达到对文件的实时共享,可以最大程度地发挥各级人员的工作效率。 通过以上分析,得出总结:文件管理是一个过程,因为网络化的文件管理系统并不局限于办公室,具有广泛的应用范畴。从领导各个业务部门乃至单位的所有工作人员,几乎人人都可能成为使用文件管理系统的用户。随着社会的发展与信息技术的进步,全球信息化的直拨越来越明显,任何单位与企业不再是局限于某一个地区,都在自觉不自觉在参与到了全球化的竞争中。在这个全球化的竞争中,政府机关企事业单位对信息的掌握程序,信息获取是否及果,信息能否得到充分的利用、对信息的瓜刘否敏感准确,已越来越成为徇其竞争能力的最重要因素。综上所述,文件管理系统的前景是非常广阔的。 二.需求分析 1.系统需求分析 随着国家信息基础建设的深入,规划用网络构建文件管理系统以实现管理员对文档的管理,同时实现了对文档的上传,下载,浏览共享文件和删除文件,同时每个用户还有不同的权限。在此让不同用户方便的实现了对文件的有效管理与其它相关信息的有效管理,为人们提供更广泛的、更便捷的信息及服务。 随着各个学校规模的不断扩大,学校内部对文件处理急剧增加。如果通过网络文件管理系统工作,就可以抛弃以入往传统的模式,发文件的一级一级传达的烦琐。用户只要上网就以查看上级添加而存放在数据库中的文件与相互交流信息的目的。因而根据学校对文件管理

【精选】操作系统课程设计(文件系统管理)文件

评定等级 操作系统课程设计 文件系统管理 学院计算机学院 专业计算机科学与技术 班级 姓名 学号 2013年1月8日 广东工业大学计算机学院制

文件系统管理 一、实验目的 模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看, 加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了 解。 二、实验内容和要求 编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete 等文件命令,对文件进行操作。以下报告主要包括: 1.可行性分析 2.需求分析 3.概要设计 4.详细设计 5.测试 6.总结 三、可行性分析 1、技术可行性 对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。 2、经济可行性 课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益) 3.法律可行性 自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。 四、需求分析 编写程序实现文件系统,主要有以下几点要求: 1、实现无穷级目录管理及文件管理基本操作 2、实现共享“别名” 3、加快了文件检索 五、概要设计 为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录 UFD (User File Directory )。这些文件目录可以具有相似的结构,它由用户所有文件的文件 控制块组成。此外,在系统中再建立一个主文件目录MFD (Master File Directory );在主文件目录中,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目 录的指针。

操作系统文件管理实验报告

操作系统实验报告实验名称:文件管理 专业班级:网络工程1301 学号: 姓名: 2015 年6 月16 日

实验一文件管理 一、实验目的 文件管理是操作系统的一个非常重要的组成部分。学生应独立用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。 二、预备知识 1.VS2010的使用 2.C#的学习 3.文件主目录与子目录的理解 三、实验容与步骤 用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。要求设计一个10 个用户的文件系统,每次用户可保存10 个文件,一次运行用户可以打开5 个文件。系统能够检查打入命令的正确性,出错时能显示出错原因。对文件必须设置保护措施,例如只能执行,允许读等。在每次打开文件时,根据本次打开的要求,在此设置保护级别,即有二级保护。文件的操作至少有Create、delete、open、close、read、write 等命令。 所编写的程序应采用二级文件目录,即设置主文件目录和用户文件目录。前者应包含文件主及它们的目录区指针;后者应给出每个文件占有的文件目录,即文件名,保护码,文件长度以及它们存放的位置等。另外为打开文件设置运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。 程序流程图:

逻辑设计: 使用线性数组表表示MFD,泛型数组表示UFD,每个元素包括用户ID、保存的文件数、再使用线性表表示文件信息,每个元素包括文件名,文件属性(保护码),文件的状态等信息。 物理设计: //主目录 private FileUser[] mfd; //当前用户 private FileUser currentuser; ///

/// 文件 /// public class FileObject { public string filename; public int size=20; public int read=0; public int write = 0; public string author; } /// /// 文件系统用户 /// public class FileUser { public string username;

操作系统课程设计-文件系统

模拟一个简单二级文件管理系统 设计目的:通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 设计内容:模拟一个简单二级文件管理系统 一、实验内容描述 1 实验目标 本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现. 2 实验要求 为DOS系统设计一个简单的二级文件系统.要求做到以下几点: ①可以实现下列命令: login 用户登录 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 ②列目录时要列出文件名、物理地址、保护码和文件长度. ③源文件可以进行读写保护. 二、程序主要内容 1设计思路 程序中要求每个用户在登陆后才可对其拥有的文件进行操作,用户对于其他用户的文件无操作权.文件操作包括浏览、创建、删除、打开、关闭、阅读、写入、修改模式.其他操作包括新建用户、帮助、用户登入、用户登出、退出系统. 在程序文件夹下有个名为“file”的系统根目录,此目录下包括:一个名为“mfd”的文件,记录所有注册过的帐号及密码;用户文件,以用户名作为文件名,内容为其拥有的文件名及属性;一个名为“keiji”的文件夹.“keiji”文件夹中包括:“file.p”指针文件,记录所有已用的物理地址;一些以物理地址为名的文件,内容为文件内容. 2 数据结构 file结构体系统文件数据结构: fpaddrint,文件的物理地址、flengthint,文件长度、fmodeint,文件模式0.只读;1.可写; 2.可读写; 3.保护、fname[]char,文件名; filemode结构体文件状态数据结构: isopenint,文件当前状态,0.关闭;1.打开、modeint,文件模式0.只读;1.可写;2.可读写;

实验五 文件管理

课程名称:操作系统 课程类型:必修 实验项目名称:文件管理 实验题目:设计一个多用户的文件系统 一、实验目的 随着社会信息量的极大增长,要求计算机处理的信息与日俱增,涉及到社会生活的各个方面。因此,文件管理是操作系统的一个非常重要的组成部分。学生应独立用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。 二、实验要求及实验环境 用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。要求设计一个10 个用户的文件系统,每次用户可保存10 个文件,一次运行用户可以打开5 个文件。系统能够检查打入命令的正确性,出错时能显示出错原因。对文件必须设置保护措施,例如只能执行,允许读等。在每次打开文件时,根据本次打开的要求,在此设置保护级别,即有二级保护。文件的操作至少有Create、delete、open、close、read、write 等命令。所编写的程序应采用二级文件目录,即设置主文件目录和用户文件目录。前者应包含文件主及它们的目录区指针;后者应给出每个文件占有的文件目录,即文件名,保护码,文件长度以及它们存放的位置等。另外为打开文件设置运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。 三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系) 1.程序流程图

2.逻辑设计 使用线性表表示UFD,每个元素包括用户ID、保存的文件数、再使用线性表表示文件信息,每个元素包括文件名,文件属性(保护码),文件的状态等信息。该结构需支持以下操作:在尾部插入,查找,修改,在任意位置删除。3、物理设计 char UserName[SizeOfUser][SizeOfUserName];//用户ID long User;//当前用户标志 struct InfoOfFile { char Name[SizeOfFileName];//文件名 bool safe[3];//Read,Write,Execute long status;//ready,open; }UFD[SizeOfUser][SizeOfFile];

课程设计——教学管理系统

1. 课程设计的目的与要求 1.1设计目的 设计一个简单的教学管理系统,要求存储学生基本情况、课程基本情况,教师授课情况与学生成绩记录等,提供成绩录入、信息查询等功能以满足日常教学管理需要。对学生的成绩的管理、查询学生的各科成绩的学生成绩管理系统。该系统可以帮助我们更方便的管理学生的成绩,替代了以前的手工操作管理学生的成绩,节约我们珍贵的时间。而且老师和学生可以以不同个的身份登录,获得不同的操作权限,有效的提高教学管理系统的工作效率。 1.2设计要求 (1)软件开发环境: 操作系统:Windows 7; 数据库使用软件:Microsoft Office Access 2003 开发工具:Microsoft Visual C++6.0 (2)功能需求 按照提供的各表的数据结构和数据创建数据库与表 实现学生基本情况、课程基本情况、教师授课表情况及学生成绩的数据录入与编辑、删除等。 能够按姓名查询教师授课情况。 1.3 系统总体设计的体系结构图 设计系统的体系结构图 见下页

图1. 设计系统的体系结构图 2. 数据库设计 数据库技术是信息资源管理最有效的手段,它是指对于一个给定的应用环境,利用现有的数据库管理系统构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。本系统的数据库是采用Microsoft Office Access 2003设计的。 数据库设计分为6个阶段:需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、数据库物理设计阶段、数据库实施阶段、数据库运行和维护阶段。数据库应用系统经过调试运行后即可投入正式运行。在数据库系统运行过程中,必须不断地对其进行评价、调整与修改。设计一个完善的数据库应用系统不可能一蹴而就,它往往是上述6个阶段的不断反复。 2.1 系统数据库概念结构设计 2.1.1 局部E-R图 将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。它是整个数据库设计的关键所在。它是现实世界的一个真实模型,表达自然、直观,又易于理解。根据学生成绩管理的需求分析建立局部和全局ER图,如下所示。

实验八,文件管理

实验八文件管理 一、实验目的: 用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 二、实验要求: 要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。 三、实验内容: 设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。 程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。 为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作算法与框图。因系统小,文件目录的检索使用了简单的线性搜索。 文件保护简单使用了三位保护码:允许读写执行、对应位为1,对应位为0,则表示不允许读写、执行。 四、运行结果:

五、心得体会: 通过这次试验我学会了如何创建一个用户,已经在此用户下保存多个文件,同时也学会了如何为文件设置保护措施,只允许单个用户访问。这些综合性的知识都在本实验中得到了很好的运用,因此我对文件的管理也得到了一定的锻炼。 六、附录: #include #include #include #include struct user {char name[10]; }user[10]; int in=0; struct link { struct file { char name[10];

操作系统课程设计(文件系统管理)

操作系统课程设计 文件系统管理 学院计算机学院 专业计算机科学与技术 班级 姓名 学号 2013年1月8日 广东工业大学计算机学院制评定 等级

文件系统管理 一、实验目的 模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看,加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了解。 二、实验内容和要求 编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete等文件命令,对文件进行操作。 以下报告主要包括: 1.可行性分析 2.需求分析 3.概要设计 4.详细设计 5.测试 6.总结 三、可行性分析 1、技术可行性 对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。 2、经济可行性 课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益) 3.法律可行性 自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。 四、需求分析 编写程序实现文件系统,主要有以下几点要求: 1、实现无穷级目录管理及文件管理基本操作 2、实现共享“别名” 3、加快了文件检索 五、概要设计 为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录UFD (User File Directory)。这些文件目录可以具有相似的结构,它由用户所有文件的文件控制块组成。此外,在系统中再建立一个主文件目录MFD (Master File Directory);在主文件目录中,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目

实验3 文件管理

实验三文件管理 一、实验目的 理解文件系统的主要概念及文件系统内部功能和实现过程。 二、实验内容 采用二级文件目录结构,编写程序实现文件系统的文件存储空间的管理、文件的物理结构、目录结构管理和文件操作。具体如下: 1、设计一个有m个用户的文件系统,每个用户最少可保存一个文件。 2、规定用户在一次运行中只能打开K个文件。 3、系统能检查键入命令的正确性,出错时应能显示出错原因。 4、对文件应能设置保护措施,如只能执行、允许读、允许写等。 5、对文件的操作设计提供一套文件操作: CREATE建立文件; DELETE删除文件; OPEN打开文件; CLOSE关闭文件; READ读文件; WRITE写文件。 三、实验要求 ①详细描述实验设计细想、程序结构及各模块设计思路。 ②详细描述程序所用数据结构及算法 ③给出测试用例及实验结构 ④为增加程序可读性,在程序中进行适当注释说明 ⑤认真进行实验总结,包括:设计中遇到的问题、解决方法和收获 ⑥实验报告撰写要求结构清晰、描述准确逻辑性强 四、实验过程 举例:主文件目录 mfd=record username :string[maxlen]; files :array[1..K] of ufd; ofiles :arrau[1..S] of uod end; 用户打开文件目录表: uod=record filename:string[maxlen]; attrib:attrib;

status:(open,create); rp,up:integer; end; 用户文件目录: ufd=record fielname:string[maxlen]; attrib ro,rw); len:integer; addr:integer; end; 流程图: 二、主要数据结构 界面采用VC6 MFC环境开发

操作系统课设报告文件管理系统

目录 一.课程设计目的及要求 (1) 二.相关知识 (2) 三题目分析 (3) 四.概要设计 (4) 五.代码及流程 (5) 六.运行结果 (20) 七.设计心得 (23) 八.参考文献 (24) 一.课程设计目的及要求 深入了解文件管理系统,初步掌握文件管理系统的实现方法。 用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 编写一程序,模拟一个简单的文件管理系统。树型结构,目录下可以是目录,也可以是文件。

在此文件管理系统,可实现的操作有: 改变目录:格式:cd <目录名> 显示目录:格式:dir <目录名> 创建目录:格式:md <目录名> 删除目录:格式:rd <目录名> 新建文件:格式:edit <文件名> 删除文件:格式:del <文件名> 退出文件系统:exit 二.相关知识 1.文件结构体 struct FileNode { char filename[FILENAME_LEN];//文件名/目录名 int isdir;//目录文件识别标志 int i_nlink;//文件的链接数 int adr;//文件的地址 struct FileNode *parent, *child;//指向父亲的指针和指向左孩子的指针 struct FileNode *sibling_prev, *sibling_next;//指向前一个兄弟的指针和指向 //后一个兄弟的指针. }; 整个文件系统采用二叉树型存储结构,初始化文件树如下: 图 2-1 初始目录树

2.所使用函数及其功能 int Main(); //主函数 void Init();//初始化文件树 int ParseCommand();//接受输入的命令并把其分解成操作名和路径文件名 void ExecuteCommand();//执行命令,分别执行cd,edit,md,del,rd, dir,exit命令 int cdComd(); //改变目录功能处理 int editComd();//处理edit命令,即创建文件,只要创建表示文件的节点即可,内容及大小不考虑 int mdComd(); //创建目录 int delComd();//处理del命令,即删除指定文件,不存在是给出错误信息 int dirComd();//处理dir命令,显示目录 int rdComd(); //删除目录 int FindFilename(char Para2[]);//查找文件名 struct FileNode* CreateFileNode(char filename[],int isdir,int i_nlink);//创建结点 int GetInput(char* buffer,unsigned int buffer_len);//获取输入 3.所使用的变量 struct FileNode *cp, *tp, *root;// *cp, *tp, *root是根目录节点 char path[INPUT_LEN-COMMAND_LEN];//记录当前走过的路径 char Para1[COMMAND_LEN],Para2[INPUT_LEN-COMMAND_LEN];//para1数组存 储输入的命令,para2数组存储输入的文件名 char filename[FILENAME_LEN],tmp; unsigned int i,j; 三题目分析 1.文件系统采用二叉树型存储结构,结点结构如下: struct FileNode { char filename[FILENAME_LEN];//文件名/目录名 int isdir;//目录、文件的识别标志(0为文件,1为目录) int i_nlink;//文件的链接数 //int adr;//文件的地址 struct FileNode *parent, *child;//指向父亲的指针和指向左孩子的指针 struct FileNode *sibling_prev, *sibling_next;//指向前一个兄弟的指针和指向后一个兄弟的指针. }; 2.目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开 3.功能具体描述: 改变目录:改变当前工作目录,目录不存在时给出出错信息 显示目录:显示指定目录下或当前目录下所有文件和一级目录(选做:带/s参数的dir命令,显示所有子目录)

多级文件目录的文件管理系统文件.doc

山东理工大学计算机学院课程设计 (操作系统) 班级 姓名 学号 指导教师 二○一一年六月二十四日

课程设计任务书及成绩评定 课题名称基于多级文件目录的文件管理系统设计 Ⅰ、题目的目的和要求: 巩固和加深对操作系统(OS)原理的理解,初步掌握操作系统组成模块和应用接口的使用方法,提高进行工程设计和系统分析的能力;通过选做上 面的课题,实现OS最基本模块的管理功能,重点放在数据结构设计、文档规范化和程序设计风格。 Ⅱ、设计进度及完成情况 日期内容 6.13-6.15 选取参考书,查阅有关文献资料,完成课程设计说明 书内容 1 部分。完成课程设计说明书内容2-4 部分 6.16~6.20 创建相关数据结构, 录入源程序 6.21~6.22 调试程序并记录调试中的问题,完成课程设计说明书第5 部分。 6.23 系统测试,演示设计成果,考核成绩。 整理课程设计说明书,上午11 时,由学习委员交课 6.24 程设计说明书(计算机科学系9#213 或直接交给指导 教师) Ⅲ、主要参考文献及资料 [1] 汤子赢等. 计算机操作系统(第二版). 西安电子科技大学出版社,2006.8

[2] 冯耀霖等. 操作系统,西安电子科技大学出版社.1992 [3] 张尧学等. 计算机操作系统教程( 第2 版). 清华大学出版社,2001.4 [4] 谭耀铭. 操作系统. 中国人民大学出版社,2003.4 [5] 刘坤起. 操作系统学习辅导与习题详解[M]. 北京: 电子工业出版社, 2003:58-67 [6] 孙钟秀等编著,操作系统教程[M],高等教育出版社,2003:46-78 Ⅳ、成绩评定: 设计成绩:(教师填写) 指导老师:(签字) 二○一一年六月二十四日

操作系统课程设计文件管理--正文

模拟操作系统—文件管理 1.1设计目的: 通过模拟操作系统的实现,加深对操作系统工作原理的理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力 2.1设计原理: 2.1.1文件管理和用户接口: 文件管理和用户接口部分实现的主要是单用户的磁盘管理部分,包括文件的逻辑结构,物理结构,目录,磁盘分配回收,文件的保护和用户的接口实现。 系统中有2种文件,一种是存放任意字符的文件,一种是用来存放可以执行的文件,可以执行的文件内容就是模拟系统内进程的程序体。文件要有一种特定的命令的可以执行的文件(可以建立一个 .exe文件里面写指令)他的内容很简单,就是:x=?;给X赋一个值(一位数),x++;X--;!??(第一个?为ABC中某个设备,第二个?为一位数,表示设备的时间(由于没有实际设备,所以无法知道设备何时工作完成,所以假如一个数,随着数的系统时间减少到0结束));end(表示文件结束,同时写入文件out,包括文件名字和路径和X的值)。 用户接口:用户接口提供用户命令接口,创建文件,删除文件,复制文件,粘贴文件,显示文件,编辑文件,建立目录,删除空目录,删除目录等等。 2.1.2磁盘模拟: 用一个文件disk模拟磁盘,磁盘的每一个块64个字节,模拟磁盘工128个块,第0,1块存放文件分配表,第2个存放根目录,期于存放子目录和文件。磁盘分配磁盘分配采用链式结构,系统采用文件分配表的方式记录磁盘空间的使用情况和链式结构的指针。2.1.3目录内容: 目录内容才用树型目录结构 (1)目录项内容:8个字节:目录名,文件名(3个字节),扩展名(1个字节),末路。文件属性(1个字节),起始磁盘号(1个字节),文件长度(2个字节), (2)根目录:根目录位置固定,为磁盘第2块,大小固定,工8项,站用第2块。 (3)子目录:位置不变,大小不固定。 2.1.4.存储管理: 存储管理部分主要实现贮存和空间的分配和回收,存储的保护。 模拟系统中,主要分2部分,一部分是系统区(存放进程控制块和住存分配表),另外一部分是用户区,是用户的管理。系统包括PCB区域,贮存空间分配表。 3.1设计平台及使用语言优点: Windows XP Professional Edition SP2环境下Microsoft Visual Studio 2005开发工具下C#程序设计语言进行设计模拟操作系统。 C#是用来做应用程序和软件的,优点就是快速开发,有功能强大的.NET FRAMEWORK的支持, C#是微软公司推出的新一代程序开发语言,C#是微软公司.Net FrameWork框架中的一个重要的组成部分,也是微软公司向程序员极力推荐一个新的程序开发平台。和以往的开发语言相比较,他有更强大功能,更高的稳定性和更高的安全性。

相关文档
最新文档