文件管理系统课程设计Word文档下载推荐.docx
- 文档编号:21223357
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:18
- 大小:472.25KB
文件管理系统课程设计Word文档下载推荐.docx
《文件管理系统课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《文件管理系统课程设计Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。
主要设计思路
首先系统要完成初始化的任务,建立起整个系统,等待用户注册,注册成功后,用户登录模块,对用户的用户名进行验证,如果用户登录成功,则系统进入等待用户输入的状态,用户选择相应指令后,系统按照即定方式处理用户请求,用户退出后,系统转入登录模块,等待下一位用户的登录。
2、课程设计需求分析
本系统为多用户多级目录的文件管理系统,用户可以根据所注册的用户名登陆来对文件或是文件进行操作。
多用户功能可以满足不同用户不同的需求,同时也起到了很好的保密作用。
文件系统为用户提供了按名存取的功能,以使得用户能透明地存储访问文件。
为了实现按名存取,文件需要对文件存储设备进行合理的组织,分配;
对存储在文件存储设备上的文件进行保护,保密和提供共享的手段。
另外,文件系统还要提供检索文件或文件中记录的手段,文件系统就是完成上述功能的一组软件和数据结构的集合。
模拟一个文件管理系统,要完成对文件的基本操作,文件的基本操作有文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。
系统建立了文件目录树,存储文件系统中的所有文件。
对于用户名下的文件,用文件目录树的分枝来存贮。
采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作就行了。
因为存在着同一个目录下不能有同名文件的问题。
所以在进行文件的基本操作时要考虑到在已经有的文件中是否有同名文件,有的话则输出提示信息。
3、概要设计
整体设计框架
系统初始化界面是由用户注册,用户登录,退出系统三个模块组成。
用户登录模块再由创建用户,进入目录,删除用户,显示所有用户,显示位示图,修改用户资料几大模块组成。
然后各个模块再由一些小模块组成。
其中创建文件,打开关闭文件,读写文件等文件操作模块包括在进入目录模块里面。
各模块的基本功能
系统初始化
系统的初始化包括初始化了磁盘的空间即位示图、一个管理员用户
用户注册模块
用户可以在这里注册,用户名和密码的最大长度都为10个字节,如果用户名不重复的话,则注册成功,用户的权限默认为一般用户。
用户登陆模块
用户名就是每个用户进入用户目录的通行证。
如果用户名存在的话,则可进入,否则提示用户名不存在,但不退出系统。
创建用户模块
此功能只支持管理员操作,在这里可以一次性创建多个用户,设置其用户名、密码、权限,系统同时为每个用户创建个根目录。
删除用户模块
此功能只支持管理员操作,并且只能删除根目录为空的用户。
用户不能删除自己。
修改用户资料模块
在这里可以修改用户名、用户密码。
创建文件模块
只支持在当前目录下创建文件,一次可以创建多个文件,设置文件名,文件所需盘块(所需盘块大于空闲盘块将不能分配),文件的权限,文件内容,根据位示图找到未使用的盘块将其分配。
打开文件模块
只支持在当前目录下操作,一次可以打开多个文件,将文件标志为运行,如果文件的执行权限是不允许的话,将不能进行此操作。
关闭文件模块
只支持在当前目录下操作,将文件标志为没运行。
文件读写模块
只支持在当前目录下操作,如果其读写权限是不允许的话,将不能进行相应操作。
删除文件、目录模块
只支持在当前目录下操作,删除文件释放磁盘空间,并修改位示图。
只能删除空目录。
创建子目录模块
只支持在当前目录下操作,一次可以创建多个,目录不占磁盘空间。
改变当前目录模块
支持进入到下一个文件夹、返回父目录、返回根目录。
实现方式是依据当前目录的指向其子目录的指针和指向其父目录的指针实现。
列出当前目录内容模块
显示出当前目录的所有子目录,以及子目录的情况,如是否为空;
显示当前目录的所有文件,以及文件的相关信息。
4、系统实现
原理
本系统在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。
磁盘空闲空间的管理选择了位示图,用0表示未使用,1表示已使用。
如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。
文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。
各模块算法思想
用户结构
用来描述一个登录用户的信息,包含用户的名称、用户的密码、用户的权限(从而进入不同的用户界面)、用户所属的根目录的指针。
用一条链把所有用户链接起来。
structMFD
{
charname[10];
//用户名
charpassword[10];
//用户密码
charright;
//用户权限,1表示管理员,0表示一般用户
structMFD*next;
//指向用户的后继结点
structMULU*link;
//指向用户根目录
};
目录结构
用来描述用户的目录,包含目录的名称、目录里的子目录指针、目录里的文件指针、目录的父目录指针。
用一条链把与该目录同一父目录的目录链接起来。
用一指向父目录指针来记录当前目录的路径。
structMULU
{
//目录名
structMULU*next;
//指向目录的后继结点
//指向目录的子目录
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、总结
对这次的这个多用户多目录文件管理系统,总体来说,还算满意,基本上实现了设计任务的要求,并且还添加了一些功能,使整个系统更实用,但也有几个不足的地方,如不能删除非空目录,主要原因是我一直没有理顺它们之间的递归关系,由于时间的关系,也没能继续深入进去,其次,就是我初始化了一个二唯数组的位示图,里面有一、两个元素显示不正常,感觉好象是出现随机数,但都给其赋值,而且中间也没发现什么错误的更改,但整个位示图都能正常运行,即可以正常的分配与回收,就是显示有点问题,至今也没找到结果,这是我最大的遗憾。
这次的设计给我感触还是挺深的。
特别是当自己经过辛勤努力,得到正确运许的那一刻,真是有无比的成就感。
虽然这个很简单,但这是收获,凝集着自己的辛勤的汗水,这是值的自豪的。
从理论到实践,给我颇为深刻的感觉就是我们不能只学书本知识,应该多联系实际,多接触些这样有意义、实际性的操作课程,这样才能培养人的兴趣,从而更好的巩固书本上的知识。
经过这次的设计,我不仅巩固了书本知识,更重要的是我从中学到了很多。
真是收益非浅。
7、参考文献样式
[1]计算机操作系统(修订版),汤子瀛等,西安电子科技大学出版社,2001
[2]计算机操作系统教程(第二版),张尧学、史美林,清华大学出版社,2000
[3]现代操作系统,著,陈向群等译机械工业出版社,2002年
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文件 管理 系统 课程设计