目录。一、课程设计题目和目的 1
二、开发工具及环境 1
三、课程设计要求 1
四、程序设计思想 1
五、文件系统的实现 2
六、操作说明 5
七、程序运行结果 10
八、参考文献 15
九、心得体会 15
目录。一、课程设计题目和目的 1
二、开发工具及环境 1
三、课程设计要求 1
四、程序设计思想 1
五、文件系统的实现 2
六、操作说明 5
七、程序运行结果 10
八、参考文献 15
九、心得体会 15
一、 课程设计题目和目的。
本设计的目的是通过设计和调试一个简单的文件系统,主要是模拟文件操作命令的执行,来模拟文件管理,使学生对主要文件操作命令的实质和执行过程有比较深入的了解,掌握它们的基本实施方法。
二、 开发工具及环境。
a)程序设计语言:c++
b)计算机及操作系统:pc机,windowsxp
c)开发平台:microsoft visual c++ 6.0
d)运行平台:pc机,windowsxp
三、 课程设计要求。
具体要求如下:
设计一个支持n个用户的文件系统,每个用户可拥有多个文件;
采用二级或二级以上的多级文件目录管理;
对文件应设置存取控制保护方式,如“只能执行”、“允许读”、“允许写”等;
系统的外部特征应接近于真实系统,可设置下述文件操作命令:建立文件、打开文件、关闭文件、删除文件、读文件、写文件、复制文件、查询目录。
通过键盘使用该文件系统,系统应显示操作命令的执行结果。
四、 程序设计思想。
1、在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。
2、文件物理结构可采用显式链接或其他方法。
3、磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到fat中。
4、文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。
5、对文件或目录的操作采用windows系统的api函数来实现。
6、设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:
1)用户登录。
3)创建目录: creatfiledir
4)删除目录: removefiledir
5)创建文件: creatfile
6)删除文件: deletefile
7)读文件: readfile
8)写文件: writefile
9)复制文件: copyfile
10)移动文件: movefile
11)返回根目录。
12)退出。
五、 文件系统的实现。
1) 系统结构如下图:
root为根结点,root下有n个用户,每个用户有自己的文件夹或文件,用户登录后,系统自动进行初始化,并为每个用户创建一个用户目录。目录内容只有名称和打开标志。文件除了名称和打开标志,还有文件的访问权限,文件类型以及文件长度。
其中文件的访问权限、文件类型、文件长度单独作为一个结构体,其它和文件夹结构体相同,也同用一个结构体。
2) 系统的主要流程图:
主函数开始执行时,先初始化。初始化包括创建root根目录,接着进行用户登录,创建用户,为每个用户创建一个用户文件,然后进入操作界面,用户可根据按钮或提示对目录或文件进行创建、删除、复制、移动等操作。
3) 对目录或文件的操作利用windows的api函数实现,本系统将这些操作写在一个类(中,方便调用,以下是类的定义:
class filesystembuild {
public:
bool creatfiledir(cstring name);
bool removefiledir(cstring name);
handle creatfile(cstring name);
bool deletefile(cstring name);
cstring readfile(cstring name);
cstring writefile(cstring name,cstring buf);
bool movefile(cstring source,cstring obj);
bool copyfile(cstring source,cstring obj);
4) 程序功能图:
5)实体关系图:
命令服务使得用户能够输入命令,调用相应的命令模块对模拟磁盘、磁盘空间分配表、文件表、打开文件表进行操作。磁盘空间分配表记录模拟磁盘的使用情况。文件表记录文件的信息和在磁盘里的位置等信息。
打开文件表记录已打开的文件,对应文件表中的文件信息,和文件表里的文件节点类似,记录了文件在模拟磁盘中的信息。
6) 数据流图。
六、 操作说明。
创建目录或创建文件,主要调用api中的createdirectory或createfile函数实现。
创建文件或文件夹首先通过主函数选择操作来传递参数,kind=1创建文件夹,kind=2创建文件。文件或文件夹名称是由用户输入。文件或文件夹的父节点由folderopened[opfo-1].
node来传递。如果当前目录下由同名文件或同名文件夹则创建文件或创建文件夹不成功。当前目录是空目录则创建的文件或文件夹是当前目录的首个子节点。
parent指针指向当前目录,当前目录的child指针指向文件或文件夹。当前目录不为空,则把文件或文件夹连接到当前目录下最后的子节点后面,作为最后的兄弟节点。
流程图如下:
删除目录或删除文件,主要调用api中的removedirectory或deletefile函数实现。
删除文件或文件夹的类型参数由用户选择操作时传递。kind=1删除文件夹,kind=2删除文件。名称也由用户输入。
文件在打开列表或文件夹中有打开的文件,文件或文件夹不能删除,目录下没有该文件或文件夹删除失败,删除失败时返回相应的信息。
如果目录下有该文件或文件夹,而且文件没打开,或文件夹中没有打开的文件,则删除该释放该节点或该子树。返回删除成功信息。
流程图如下:
读文件,主要调用api中的readfile函数实现。
读文件的时候,首先要对文件进行打开操作,若此时文件不存在或已处于打开状态或读状态或写状态,则返回打开失败信息,若此时文件处于空闲状态,则调用api函数进行读操作,若读取文件内容不成功,则返回读文件失败的错误信息,若读文件成功,则将文件内容显示在文本框中,以供用户浏览。
流程图如下:
写文件,调用api中的writefile函数实现,流程图如下:
写文件的时候,首先要对文件进行打开操作,若此时文件不存在或已处于打开状态或读状态或写状态,则返回打开失败信息,若此时文件处于空闲状态,则调用api函数进行写操作,若写文件不成功,则返回写文件失败的错误信息,若写文件成功,则保存文件,返回操作界面。
流程图如下:
复制文件或移动文件,调用api 中的copyfile或movefile函数实现,流程图如下:
七、 程序运行结果。
1、用户登录界面:
2,操作主界面:
3,创建目录或文件:
4,删除文件:
5,删除目录:
1) 目录不为空时:
2) 目录为空时:
6,写文件:
7,读文件:
8,复制文件:
9,移动文件。
八、 参考文献。
汤子瀛 《计算机操作系统》(修订版)西安电子科技大学出版社 2001
张尧学史美林《计算机操作系统教程》实验指导清华大学出版社 2000
九、 心得体会。
在设计过程中,查询了不少相关资料,不断的发现问题、提出问题、解决问题。在对自己所编写的源程序段的纠错的过程中,使我更好的理解了操作系统中文件系统的理论知识,同时在编程时用到了模块化的设计思想,这种编程方法可以使我们的编程变的更简单,可以使我们的查错与纠错变的更方便。总的来说通过这次的设计的学习使我学到了很多在平时的学习中学不到的很多东西,对操作系统有了更深一层的了解,同时也提高了c语言的应用能力,由于时间紧,故还有很多的方面需要改进。
以后的学习还得更加努力。
操作系统课程设计文件管理系统
目录。一 课程设计题目和目的 1 二 开发工具及环境 1 三 课程设计要求 1 四 程序设计思想 1 五 文件系统的实现 2 六 操作说明 5 七 程序运行结果 10 八 参考文献 15 九 心得体会 15 一 课程设计题目和目的。本设计的目的是通过设计和调试一个简单的文件系统,主要是模拟文件操作命...
操作系统课程设计 伙伴系统
哈尔滨理工大学。课程设计。操作系统 题目伙伴系统 班级 计算机科学与技术计15 5班。姓名 指导教师 系主任 2017 年 09 月 01 日。5.设计结论和心得18 1.题目分析。linux中内存分配的伙伴堆算法模拟。1 模拟内存实时情况。2 实现buddyheap算法。3 通过键盘输入随机产生的...
操作系统课程设计
课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 6 月 24 日。设备管理 2 2.1设计任务2 2.2设计要求...