- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统课程设计说书(样板)
课程设计任务书
计算机科学与技术 专业 年级 班
设计题目
文件管理系统设计
主要内容
设计一个简单的文件管理系统来模拟文件操作命令的执行
具体要求
设计和调试一个简单的文件管理系统来模拟文件管理,使学生对主要文件操作命令的实质和执行过程有比较深入的了解,掌握它们的基本实施方法。具体要求如下:
⑴设计一个支持n个用户的文件系统,每个用户可拥有多个文件;
⑵采用二级或二级以上的多级文件目录管理;
⑶对文件应设置存取控制保护方式,如“只能执行”、“允许读”、“允许写”等;
⑷系统的外部特征应接近于真实系统,可设置下述文件操作命令:建立文件、打开文件、关闭文件、删除文件、读文件、写文件、复制文件、查询目录。
⑸通过键盘(或鼠标)使用该文件系统,系统应显示操作命令的执行结果。
进度安排
2012-9-3-----2012-9-6 确定系统的总体设计方案:即系统包括哪些功能模块,每个模块的实现算法,并画出相应的流程图.同时编写相应的设计文档;
2012-9-6-----2012-9-12 编写程序代码并调试,再将调试通过的各个子模块进行集成调试;
2012-2-12----2012-9-16 归纳文档资料,完成课程设计说明书,参加课程设计答辩
完成后应上交的材料
在课程设计完成后需要提交的成果和有关文档资料包括:
课程设计的说明书。
课程设计有关源程序及可运行程序(光盘或电子邮件)。
总评成绩:
指导教师 签名日期 年 月 日
系 主 任 审核日期 年 月 日
一、本设计目的及基本思想
本课程设计目的是实现树型目录结构文件系统,在实现过程中利用了二叉树,
其中每个节点都有父指针,子指针和兄弟指针,其中子指针指向该目录下的第一个子节点,而该子节点的父指针则指向它的上级目录。目录下各子节点用兄弟指针连接起来。
文件夹打开是则把文件夹名称及其地址压入打开文件夹栈,文件关闭则把文件夹名称及其地址从打开文件夹栈中抛出。
文件打开则把文件的名称及其父指针写到文件列表同时置文件打开标志为1,文件关闭则把文件从打开列表中删除,同时置文件打开指针为0,文件读取和写入都要检查文件是否在文件打开列表中,未打开文件不能读写,只读文件不能写,只写文件不能读。
文件夹和文件创建,文件夹和文件的创建首先检验目录是否为空,为空则把文件夹或文件连接到该目录下,不为空则把检查目录下是否有同名文件夹或文件,有则提示创建不成功,没有则把文件夹或文件连接到该目录下的最后一个子节点,作为它的兄弟节点。
文件夹和文件的删除,文件夹下没有打开的文件或文件没有打开才能删除,否则删除失败,删除文件夹时利用了中序历遍来删除子树。
二、系统设计
2.1 系统基本结构
系统基本结构如下图:
图1系统基本结构图
root为根结点,root下有五个用户,每个用户有自己的文件夹或文件,系统初始化时为每个用户创建一个file1文件。文件夹内容只有名称和打开标志。文件除了名称和打开标志,还有文件的访问权限,文件类型以及文件长度。其中文件的访问权限、文件类型、文件长度单独作为一个结构体,其它和文件夹结构体相同,也同用一个结构体。
打开文件列表的结构体包括文件名和文件的父节点地址,打开文件夹的栈中包括文件夹名称及其地址
2.2 系统数据结构struct file{
char type; //文件类型0-文本文件 1-可执行文件 2-记录型文件
char right; //文件的权限0-可读 1-可写 2-可读可写
int f_length; //文件长度
};
typedef struct file File;
//文件夹或文件的结构体
struct FCB {
char kind; //kind=1为文件夹 kind=2为文件
char name[20]; //文件夹或文件名称
bool open;
File if_file;
struct FCB *parent;
struct FCB *brother;
struct FCB *child;
};
typedef struct FCB Ff;
//root和fcp为全局变量
Ff *root;//根节点
Ff *fcp=null;//判断是否有拷贝文件
//打开项的结构体
typedef struct{
char name[20];//名称
Ff *node; //指针,打开的
文档评论(0)