操作系统课程设计
1 设计思想说明
本课程设计我选择的题目是文件系统。虽然与实验时的要求不同,实验时要求的是一个在命令行下运行的
程序,而且只是一个管理二级目录的文件系统,而本次课程设计的要求是完成一个具有可视化界面的多用户多
级文件系统。但在这两个设计中我都同样地采用了 XML 文件作为我模拟文件系统的数据存储对象。
虽然在此之前我并没有深入学过有关 XML 的知识,但也听说过可以利用 XML 文件作为小型对象数据库,
加之其树状的存储结构,更加符合了本次课程设计对一个树状文件系统的要求,所以为了完成这两个设计我参
考了一些网上关于利用 C++Builder 操纵 XML 文件的具体做法。使用 XML 文件作为存储对象比起用 C++把自
己组织的树结构存储为二进制文件更加方便快捷,特别是当树结点包含有不定长度的数据时,更加凸显 XML
文件的优势。利用 XML 结点可以携带文本的特点,本程序的模拟的文件是可以对其写入文本数据的,也就是
说当模拟文件读写的时候不再是把代表文件的读写指针改变一个数字而已。文件的大小在这里也有了实在的意
义,它代表文本字符串的长度。所以本程序相对来说更加真实的模拟了一个多用户多级文件系统。
2 系统结构的说明
本程序由五个模块组成:
(1) 登陆窗口:负责提供登陆帐号的选择并检查用户输入的密码是否正确。
(2) 主界面:所有对文件系统的操作都在该界面完成。
(3) 文件编辑窗口:用户浏览以及编辑文件内容的窗口。
(4) 文件属性窗口:修改文件读写属性的窗口。
(5) 关于窗口。
主界面是本程序的主体,内含绝大部分过程处理函数和子程序。其他各个窗体都是在主界面里被调用协调工作。
其中主界面又由三大部分组成,包括:地址栏、树状视图以及列表框。这三者从不同的角度用不同的方式表示
了当前的文件系统状态。不过它们都只是整个文件系统的外部表现形式而已,真正存储文件系统信息的是一个
XML 文件。用户对文件系统的所有操作都作用于这个 XML 文件之上,然后通过前三者表现出来。这可以理解
为一个观察者模式的设计。
由于在 C++Builder 中树状视图控件、列表框控件以及 XML 文件这三者是没有直接关联的,为了使它们能
够同步的表示一样的信息,本程序采取的做法是每次初始化程序的时候先读入 XML 文件,然后在遍历整棵树
的同时建立树状视图,并给每个树状视图结点赋予一个指向其对应 XML 结点的指针,对于列表框内的每一项,
也保存了一个指向相应 XML 结点的指针,通过指针把这三者关联在一起。每次对文件系统进行操作例如添加
删除时,先对 XML 结点进行操作,然后根据具体情况更新相应的视图,而不是从头开始重新建立树视图。
3 数据结构的说明
FCB 结构体
字段名
含义
fName
名称
fSize
大小
fType
类型
fOwner
创建者
fCDateTime
创建日期
fMDateTime
修改日期
fRight
读写权限