文件管理系统课程设计.docx

上传人:b****3 文档编号:3061471 上传时间:2022-11-17 格式:DOCX 页数:18 大小:385.44KB
下载 相关 举报
文件管理系统课程设计.docx_第1页
第1页 / 共18页
文件管理系统课程设计.docx_第2页
第2页 / 共18页
文件管理系统课程设计.docx_第3页
第3页 / 共18页
文件管理系统课程设计.docx_第4页
第4页 / 共18页
文件管理系统课程设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

文件管理系统课程设计.docx

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

文件管理系统课程设计.docx

文件管理系统课程设计

 

文件管理系统课程设计

 

课程名称:

操作系统

实验题目:

文件管理系统

1、课程设计选题….3

主要设计内容3

主要设计思路3

2、课程设计需求分析3

3、概要设计………….4

整体设计框架4

各模块的基本功能4

4、系统实现5

原理6

各模块算法思想6

流程图描述9

代码描述10

5、系统测试11

系统主界面11

子系统功能测试11

6、总结19

7、参考文献样式19

1、课程设计选题

主要设计内容

本课程设计主要是用C语言编写,设计的是一个模拟的多用户多级目录的文件管理系统。

通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。

主要设计思路

首先系统要完成初始化的任务,建立起整个系统,等待用户注册,注册成功后,用户登录模块,对用户的用户名进行验证,如果用户登录成功,则系统进入等待用户输入的状态,用户选择相应指令后,系统按照即定方式处理用户请求,用户退出后,系统转入登录模块,等待下一位用户的登录。

2、课程设计需求分析

本系统为多用户多级目录的文件管理系统,用户可以根据所注册的用户名登陆来对文件或是文件进行操作。

多用户功能可以满足不同用户不同的需求,同时也起到了很好的保密作用。

文件系统为用户提供了按名存取的功能,以使得用户能透明地存储访问文件。

为了实现按名存取,文件需要对文件存储设备进行合理的组织,分配;对存储在文件存储设备上的文件进行保护,保密和提供共享的手段。

另外,文件系统还要提供检索文件或文件中记录的手段,文件系统就是完成上述功能的一组软件和数据结构的集合。

模拟一个文件管理系统,要完成对文件的基本操作,文件的基本操作有文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。

系统建立了文件目录树,存储文件系统中的所有文件。

对于用户名下的文件,用文件目录树的分枝来存贮。

采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作就行了。

因为存在着同一个目录下不能有同名文件的问题。

所以在进行文件的基本操作时要考虑到在已经有的文件中是否有同名文件,有的话则输出提示信息。

3、概要设计

整体设计框架

系统初始化界面是由用户注册,用户登录,退出系统三个模块组成。

用户登录模块再由创建用户,进入目录,删除用户,显示所有用户,显示位示图,修改用户资料几大模块组成。

然后各个模块再由一些小模块组成。

其中创建文件,打开关闭文件,读写文件等文件操作模块包括在进入目录模块里面。

各模块的基本功能

系统初始化

系统的初始化包括初始化了磁盘的空间即位示图、一个管理员用户

用户注册模块

用户可以在这里注册,用户名和密码的最大长度都为10个字节,如果用户名不重复的话,则注册成功,用户的权限默认为一般用户。

用户登陆模块

用户名就是每个用户进入用户目录的通行证。

如果用户名存在的话,则可进入,否则提示用户名不存在,但不退出系统。

创建用户模块

此功能只支持管理员操作,在这里可以一次性创建多个用户,设置其用户名、密码、权限,系统同时为每个用户创建个根目录。

删除用户模块

此功能只支持管理员操作,并且只能删除根目录为空的用户。

用户不能删除自己。

修改用户资料模块

在这里可以修改用户名、用户密码。

创建文件模块

只支持在当前目录下创建文件,一次可以创建多个文件,设置文件名,文件所需盘块(所需盘块大于空闲盘块将不能分配),文件的权限,文件内容,根据位示图找到未使用的盘块将其分配。

打开文件模块

只支持在当前目录下操作,一次可以打开多个文件,将文件标志为运行,如果文件的执行权限是不允许的话,将不能进行此操作。

关闭文件模块

只支持在当前目录下操作,将文件标志为没运行。

文件读写模块

只支持在当前目录下操作,如果其读写权限是不允许的话,将不能进行相应操作。

删除文件、目录模块

只支持在当前目录下操作,删除文件释放磁盘空间,并修改位示图。

只能删除空目录。

创建子目录模块

只支持在当前目录下操作,一次可以创建多个,目录不占磁盘空间。

改变当前目录模块

支持进入到下一个文件夹、返回父目录、返回根目录。

实现方式是依据当前目录的指向其子目录的指针和指向其父目录的指针实现。

列出当前目录内容模块

显示出当前目录的所有子目录,以及子目录的情况,如是否为空;显示当前目录的所有文件,以及文件的相关信息。

4、系统实现

原理

本系统在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。

磁盘空闲空间的管理选择了位示图,用0表示未使用,1表示已使用。

如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。

文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。

各模块算法思想

用户结构

用来描述一个登录用户的信息,包含用户的名称、用户的密码、用户的权限(从而进入不同的用户界面)、用户所属的根目录的指针。

用一条链把所有用户链接起来。

structMFD

{

charname[10];//用户名

charpassword[10];//用户密码

charright;//用户权限,1表示管理员,0表示一般用户

structMFD*next;//指向用户的后继结点

structMULU*link;//指向用户根目录

};

目录结构

用来描述用户的目录,包含目录的名称、目录里的子目录指针、目录里的文件指针、目录的父目录指针。

用一条链把与该目录同一父目录的目录链接起来。

用一指向父目录指针来记录当前目录的路径。

structMULU

{

charname[10];//目录名

structMULU*next;//指向目录的后继结点

structMULU*link;//指向目录的子目录

structMULU*pre;//指向目录的父目录

structUFD*link1;//指向目录的文件

};

文件结构

用来描述用户的文件,包含文件的名称、文件详细情况的指针。

用一条链把与该文件同一目录的文件链接起来。

索引结点包括文件大小、文件的内容、文件的存取权限、文件的物理地址连接。

structUFD

{

charname[10];//文件名

structUFD*next;//指向文件的后继结点

structAFD*link;//指向文件信息

};

structAFD

{

intsize;//文件大小

charcontext[118];//文件内容

charstate[3];//3个状态分别代表:

读、写、执行;1代表允许,0代表不允许

boolOpen_flag;//文件运行标识位

structDISK*link;//指向所占盘块链指针

};

文件在外存的分配方式

文件采用链接方式,每个链接结点均存有盘块号和连接指针,即指向下一盘块号,凡是一文件的第一个盘号,均作为文件地址入口链接至文件。

structDISK//盘块结构体

{

intdisk;//盘块号

structDISK*next;//指向下一个盘块

};

文件存储空间

文件的存储管理采用位示图方法,用一个二维数组表示。

0为空闲,1为己分配。

盘块的分配可分四步:

顺序描位示图,从中找出一个或一组其值为0的。

找到其值为0的,则其盘块号计算式如下:

B=n*i+j;

修改位示图,令map[i][j]=1;

将盘块后放入文件盘块的链接结点

盘块回收分三步:

(1)从文件的盘块链接中依次获得结点的盘块号

(2)将回收的盘块号转换成位示图的行号和列号

I=(b-1)DIVn+1;

J=(b-1)MODn+1;

修改位示图:

令map[i][j]=0;

 

结构图

 

 

流程图描述

代码描述

voidmain();//主函数

//初始化

voidinitdisk();//位示图处始化函数

voidinituser();//创建1个管理员函数字

//登陆区

voidloginmenu();//登陆菜单函数

voidUserregister();//用户注册函数

voidLoginMFD();//用户登陆函数

voidexitMFD();//退出系统函数

//用户界面区

voidMFDmenu();//用户界面函数

voidCreateMFD();//创建新用户函数

voidlinkMFD();//用户按创建先后进行排列函数

voidDeleteMFD();//删除用户函数

voidEnterMULU();//进入用户根目录函数

voidDisplayMFD();//显示用户资料函数

voidModifyMFD();//修改用户资料函数

voidShowdisk();//位示图情况显示函数

voidexitMULU();//用户注销函数

//用户操作目录区

voidMULUmenu();//用户操作目录区显示函数

voidMULUpath();//当前目录路径显示函数

voidMULUorder();//命令输入函数

voidCreateUFD();//创建文件函数

voidlinkUFD();//用户文件按创建时间先后排序

voidAssigndisk();//为文件分配盘块函数

voidlinkDISK();//盘块链函数

voidOpenUFD();//打开文件函数

voidCloseUFD();//关闭文件函数

voidReadUFD();//读取文件函数

voidWriteUFD();//文件写函数

voidDeletemunu();//删除选项界面函数

voidDelete();//删除函数

voidDeleteUFD();//文件删除函数

voidRecoverdisk();//回收盘块函数

voidDeleteMULU();//删除目录函数

voidCreateMULU();//创建子目录函数

voidCdMULU();//改变当前目录函数

voidDir();//当前目录内容显示函数

5、系统测试

系统主界面

子系统功能测试

登陆区

这里用管理员帐号登陆用户界面区

退出系统

用户界面区

在这里可以进行相应选择。

现在演示“创建用户”

创建用户

创建后,显示所有用户

删除用户

显示所有用户

位示图

修改用户资料

用户目录操作区

选择“2”进入目录操作区

创建文件

输入命令”create”,然后回车

所需盘块数不能大于可用盘块数,否则不能分配,同一目录文件名不能重复。

其他功能的操作类似,这里不在演示,下面演示“创建目录”。

打开文件

 

 

创建目录

删除内容

输入命令”delete”,然后回车

选择“1”,删除文件a

删除目录也是同样的操作,但删除目录功能只能删除空的目录。

更换目录

输入命令”cd”,然后回车,进入更换目录区

选择“3”,进入p目录

其他操作类似,这里不再演示。

 

6、总结

对这次的这个多用户多目录文件管理系统,总体来说,还算满意,基本上实现了设计任务的要求,并且还添加了一些功

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

当前位置:首页 > 法律文书 > 调解书

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

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