课程名称:操作系统。
实验题目:文件管理系统。
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个字节,如果用户名不重复的话,则注册成功,用户的权限默认为一般用户。
3.23用户登陆模块。
用户名就是每个用户进入用户目录的通行证。如果用户名存在的话,则可进入,否则提示用户名不存在,但不退出系统。
3.24创建用户模块。
此功能只支持管理员操作,在这里可以一次性创建多个用户,设置其用户名、密码、权限,系统同时为每个用户创建个根目录。
3.25删除用户模块。
此功能只支持管理员操作,并且只能删除根目录为空的用户。用户不能删除自己。
3.26修改用户资料模块。
在这里可以修改用户名、用户密码。
3.27创建文件模块。
只支持在当前目录下创建文件,一次可以创建多个文件,设置文件名,文件所需盘块(所需盘块大于空闲盘块将不能分配),文件的权限,文件内容,根据位示图找到未使用的盘块将其分配。
3.28打开文件模块。
只支持在当前目录下操作,一次可以打开多个文件,将文件标志为运行,如果文件的执行权限是不允许的话,将不能进行此操作。
3.29关闭文件模块。
只支持在当前目录下操作,将文件标志为没运行。
3.210文件读写模块。
只支持在当前目录下操作,如果其读写权限是不允许的话,将不能进行相应操作。
3.211删除文件、目录模块。
只支持在当前目录下操作,删除文件释放磁盘空间,并修改位示图。只能删除空目录。
3.212创建子目录模块。
只支持在当前目录下操作,一次可以创建多个,目录不占磁盘空间。
3.213改变当前目录模块。
支持进入到下一个文件夹、返回父目录、返回根目录。实现方式是依据当前目录的指向其子目录的指针和指向其父目录的指针实现。
3.214列出当前目录内容模块。
显示出当前目录的所有子目录,以及子目录的情况,如是否为空;显示当前目录的所有文件,以及文件的相关信息。
4、系统实现。
4.1原理。
本系统在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。磁盘空闲空间的管理选择了位示图,用0表示未使用,1表示已使用。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到fat中。
文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。
4.2各模块算法思想。
4.21用户结构。
用来描述一个登录用户的信息,包含用户的名称、用户的密码、用户的权限(从而进入不同的用户界面)、用户所属的根目录的指针。用一条链把所有用户链接起来。
struct mfd
char name[10用户名。
char password[10]; 用户密码。
char right用户权限,1表示管理员,0表示一般用户。
struct mfd *next; /指向用户的后继结点。
struct mulu *link; /指向用户根目录。
4.22目录结构。
用来描述用户的目录,包含目录的名称、目录里的子目录指针、目录里的文件指针、目录的父目录指针。用一条链把与该目录同一父目录的目录链接起来。用一指向父目录指针来记录当前目录的路径。
struct mulu
char name[10]; 目录名。
struct mulu *next; /指向目录的后继结点。
struct mulu *link; /指向目录的子目录。
struct mulu *pre; /指向目录的父目录。
struct ufd *link1; /指向目录的文件。
4.23文件结构。
用来描述用户的文件,包含文件的名称、文件详细情况的指针。用一条链把与该文件同一目录的文件链接起来。索引结点包括文件大小、文件的内容、文件的存取权限、文件的物理地址连接。
struct ufd
char name[10]; 文件名。
struct ufd *next; /指向文件的后继结点。
struct afd *link; /指向文件信息。
struct afd
int size文件大小。
char context[118]; 文件内容。
char state[3];/3个状态分别代表:读、写、执行;1代表允许,0代表不允许。
bool open_flag文件运行标识位。
struct disk *link; /指向所占盘块链指针。
4.24 文件在外存的分配方式。
文件采用链接方式,每个链接结点均存有盘块号和连接指针,即指向下一盘块号,凡是一文件的第一个盘号,均作为文件地址入口链接至文件。
struct disk盘块结构体。
int disk盘块号。
struct disk *next; /指向下一个盘块。
4.25文件存储空间。
文件的存储管理采用位示图方法,用一个二维数组表示。0为空闲,1为己分配。
盘块的分配可分四步:
顺序描位示图,从中找出一个或一组其值为0的。
找到其值为0的,则其盘块号计算式如下:
b=n*i+j;
修改位示图,令map[i][j]=1;
将盘块后放入文件盘块的链接结点。
盘块**分三步:
(1) 从文件的盘块链接中依次获得结点的盘块号。
2) 将**的盘块号转换成位示图的行号和列号。
i=(b-1) div n +1;
j=(b-1) mod n+1;
修改位示图:令map[i][j]=0;
4.26结构图。
4.3流程图描述。
课程设计 文件管理系统设计
大学。计算机科学与技术学院。课程设计报告 2006 2007 学年度第 2 学期 1.题目内容 文件管理系统设计 设计和调试一个简单的文件系统,通过模拟文件操作命令的执行,来模拟文件管理,对主要文件操作命令的实质和执行过程有比较深入的了解,掌握它们的基本实施方法。2.设计任务及主要技术 设计任务 1...
操作系统课程设计文件管理系统
目录。一 课程设计题目和目的 1 二 开发工具及环境 1 三 课程设计要求 1 四 程序设计思想 1 五 文件系统的实现 2 六 操作说明 5 七 程序运行结果 10 八 参考文献 15 九 心得体会 15 一 课程设计题目和目的。本设计的目的是通过设计和调试一个简单的文件系统,主要是模拟文件操作命...
操作系统课程设计文件管理系统
目录。一 课程设计题目和目的 1 二 开发工具及环境 1 三 课程设计要求 1 四 程序设计思想 1 五 文件系统的实现 2 六 操作说明 5 七 程序运行结果 10 八 参考文献 15 九 心得体会 15 目录。一 课程设计题目和目的 1 二 开发工具及环境 1 三 课程设计要求 1 四 程序设计...