




免费预览已结束,剩余37页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数学与计算机学院 课程设计说明书 课 程 名 称: 操作系统原理-课程设计 课 程 代 码: 8404061 题 目: 模拟文件系统 a-2 年级/专业/班: 09 计科五班 学 生 姓 名: 学 号: 开 始 时 间: 2011 年 12 月 11 日 完 成 时 间: 2011 年 12 月 24 日 课程设计成绩: 学习态度及平 时成绩(30) 技术水平与实际 能力(20) 创新(5)说明书撰写质量(45) 总 分 (100) 指导教师签名: 年 月 日 西华大学数计学院课程设计说明书 目 录 1.1.引引 言言1 1.1 问题的提出 1 1.2 任务与分析.1 2.2.程序的主要功能程序的主要功能2 2.1 改变目录功能.2 2.2 创建文件功能.2 2.3 删除文件功能 2 2.4 创建目录功能.2 2.5 删除目录功能.2 2.6 显示目录功能.2 2.7 剩余空间查询功能.2 2.8 主菜单功能 2 3.3.程序运行平台程序运行平台3 4.4.总体设计总体设计4 5.5.程序数据结构程序数据结构5 6.6.模块分析模块分析6 6.1 改变目录功能模块 6 6.2 创建文件功能模块 8 6.3 删除文件功能模块 10 6.4 创建目录功能模块 11 6.5 删除目录功能模块 13 6.6 显示目录功能模块 15 6.7 剩余空间查询功能模块 18 6.8 主菜单功能模块 18 模拟文件系统 7.7.系统测试系统测试20 7.1 改变目录功能测试 20 7.2 创建文件功能测试 20 7.3 删除文件功能测试 21 7.4 创建目录功能测试 22 7.5 删除目录功能测试 22 7.6 显示目录功能测试 23 7.7 剩余空间查询功能测试 23 7.8 主菜单功能测试 24 8.8.结论结论25 参考文献参考文献26 附附 录录27 西华大学数计学院课程设计说明书 1 1.引 言 1.11.1 问题的提出问题的提出 从计算机的诞生到现在虽然只经历了短短几十年的时间,但无论是在软件还是在 硬件方面,计算机都有着飞跃式的发展。随着计算机应用不断增加,计算机上所需要 存储的数据和程序也日益增多,早期的文件管理方式已经不能满足现在的需要。计算 机操作系统是配置在计算机硬件上的第一层软件,是对硬件的首次扩充。它在计算机 系统中占据了特别重要的地位。操作系统的主要功能是进行处理机管理功能、存储器 管理功能、设备管理功能、文件管理功能,每一个管理功能都是非常重要的。为了进 一步了解文件管理功能,我们在 windows 2000/xp 环境下,在 u 盘上创建一个数据文 件来模仿微型计算机磁盘存储器,在此基础上建立磁盘文件系统。要求模拟编写系统 命令完成模拟链接存储结构文件系统中的子目录管理,包括创建,删除和访问管理。 1.21.2 任务与分析任务与分析 本课题的主要任务是在 windows 2000/xp 环境下,在 u 盘上创建一个数据文件来 模仿微型计算机磁盘存储器,在此基础上建立磁盘文件系统。要求模拟编写系统命令 完成模拟链接存储结构文件系统中的子目录管理,包括创建,删除和访问管理。 本课题的具体要求是设计前应复习设计中所涉及的理论知识和算法,针对设计要 求完成基本代码编写并完成预习报告、设计中认真调试所编代码并进行必要的测试、 记录并分析设计结果,设计后认真书写符合规范格式的设计报告,按时上交。 本课题的主要技术路线如下: (1)要求利用结构化或面向对象的方法完成系统的设计; (2)要求在设计的过程中,建立清晰的层次关系; (3)在系统的设计中,尽量采用面向对象的机制。 (4)开发环境:windows xp 或 windows 2000 (5)编程语言建议采用 c+,也可以采用其他语言。 (6)数据处理方法: a) 首先应确定文件系统的数据结构等; b) 规划文件系统常见操作的算法; c) 实现完整的程序。 模拟文件系统 2 2.程序的主要功能 2.12.1 改变目录功能改变目录功能 模拟系统改变目录的命令将工作目录改变到指定的合法目录。 2.22.2 创建文件功能创建文件功能 模拟系统创建文件的命令进行在相应的目录中创建指定大小的文件。 2.32.3 删除删除文件功能文件功能 模拟系统删除文件的命令对相应目录中的文件进行删除。 2.42.4 创建目录功能创建目录功能 模拟系统创建目录的命令在相应目录中创建新的目录。 2.52.5 删除目录功能删除目录功能 模拟系统删除目录的命令在相应目录中删除其子目录。 2.62.6 显示目录功能显示目录功能 模拟系统显示目录的命令显示文件系统中已有的目录及文件。 2.72.7 剩余空间查询功能剩余空间查询功能 模拟系统剩余空间查询命令对磁盘剩余空间进行查询。 2.82.8 主菜单功能主菜单功能 显示程序的功能菜单,方便用户选择相应的功能。 西华大学数计学院课程设计说明书 3 3.程序运行平台 micrisoft visual c+ 6.0 模拟文件系统 4 4.总体设计 模拟文件管理模拟系统 改变 目录 功能 创 建 文 件 功 能 删除 文件 功能 创建 目录 功能 删 除 目 录 功 能 显示 目录 功能 剩余 空间 查询 图 4.1 系统总体框架图 西华大学数计学院课程设计说明书 5 5.程序数据结构 目录和文件的结构定义:目录和文件的结构定义: typedef struct node char name50; /*目录或文件的名字*/ int type; /*0 代表目录,1 代表普通文件*/ struct node *next; /*指向下一个兄弟结点的指针*/ struct node *son; /*指向第一个子结点的指针*/ struct node *father; /*指向父结点的指针*/ int size; /*如果是文件则表示文件的大小*/ dirnode; 全局变量的定义:全局变量的定义: dirnode *workdir; /定义当前工作目录 dirnode root; /定义根目录 long toallsize=10000;/总空间大小 string path1100;/定义路径信息 int k=0;/标记路径位置 int tag;/标记下一个路径与当前路径的关系,1 为子目录,2 为兄弟目录,3 为父目录。 模拟文件系统 6 6.模块分析 6.16.1 改变目录功能模块改变目录功能模块 1. 编写函数 cd 实现目录的改变功能,该函数带一个字符串类型参数,用以表示 想要改变到的目录名。 2. 设计思路:首先根据参数在已有的链表中进行检索,若找到该节点则将工作目 录指针指向找到的节点,若没找到则返回没有该目录。 3. 实现代码: /改变目录 void cd(char dirname) dirnode *p,*s; int flag=0;/标记是否找到指定目录,0 为没找到,1 为已找到 s=p=workdir; p=s-son; while(p) if(p-type=0) if(!strcmp(p-name,dirname) flag=1; tag=1; break; p=p-next; if(flag=0) p=s-next; while(p) 西华大学数计学院课程设计说明书 7 if(p-type=0) if(!strcmp(p-name,dirname) flag=1; tag=2; break; p=p-next; if(flag=0 if(p-type=0) if(!strcmp(p-name,dirname) flag=1; tag=3; if(flag=1) workdir=p; if(tag=1) k=k+1; path1k=p-name; coutname; 模拟文件系统 8 coutname; coutname,filename); q-son=null; q-type=1; q-next=null; q-father=workdir; q-size=filesize; toallsize=toallsize-filesize; 西华大学数计学院课程设计说明书 9 p=workdir-son; if(p=null) workdir-son=q; couttype=1) if(!strcmp(p-name,filename) flag=1; coutnext; if(flag=0) p=workdir-son; while(p-next) p=p-next; p-next=q; coutson; if(p=null) couttype=1) if(!strcmp(p-name,filename) flag=1; break; p=p-next; if(flag=1) if(p=workdir-son) char choise; coutchoise; if(choise=y|choise=y) workdir-son=p-next; toallsize=toallsize+p-size; delete p; coutname,dirname); q-son=null; q-type=0; q-next=null; q-father=workdir; q-size=0; p=workdir-son; if(p=null) workdir-son=q; couttype=0) if(!strcmp(p-name,dirname) flag=1; coutnext; 西华大学数计学院课程设计说明书 13 if(flag=0) p=workdir-son; while(p-next) p=p-next; p-next=q; coutson; if(p=null) couttype=0) if(!strcmp(p-name,dirname) flag=1; break; p=p-next; if(flag=1) if(p=workdir-son) if(p-son!=null) coutchoise; if(choise=y|choise=y) workdir-son=p-next; delete p; couttype=0) cout.setf(2); coutname“name“sizenext; /子目录的显示 void dirs(dirnode *p,char str) char newstr100; dirnode *q; coutson) strcpy(newstr,“); strcat(newstr,str); strcat(newstr,“); strcat(newstr,q-name); dirs(q-son,newstr); q=p; while(q-next) if(q-next-son) 模拟文件系统 18 strcpy(newstr,“); strcat(newstr,str); strcat(newstr,“ “); strcat(newstr,q-next-name); dirs(q-next-son,newstr); q=q-next; 6.76.7 剩余空间查询功能模块剩余空间查询功能模块 1用 avai 语句模拟系统命令完成对磁盘剩余空间查询功能。 2. 设计思路:设定一个全局变量用以记录系统的总磁盘空间大小,初始值设为 10000,每当新建和删除文件时对全局变量做相应的修改。 6.86.8 主菜单功能模块主菜单功能模块 1编写 menu 函数实现主菜单的显示功能,该函数不带参数。 2. 实现代码: /显示主菜单函数 void menu() cout #include 西华大学数计学院课程设计说明书 27 #include #include #include using namespace std ; / *目录和文件的结构定义* long toallsize=10000;/总空间大小 typedef struct node char name50; /*目录或文件的名字*/ int type; /*0 代表目录,1 代表普通文件*/ struct node *next; /*指向下一个兄弟结点的指针*/ struct node *son; /*指向第一个子结点的指针*/ struct node *father; /*指向父结点的指针*/ int size; /*如果是文件则表示文件的大小*/ dirnode; dirnode *workdir; /定义当前工作目录 dirnode root; /定义根目录 string path1100;/定义路径信息 int k=0;/标记路径位置 int tag;/标记下一个路径与当前路径的关系,1 为子目录,2 为兄弟目录,3 为父目录 /初始化函数 void initial() strcpy(,“root“); root.type=0; root.next=null; root.son=null; root.father=null; root.size=0; workdir= path1k=“root“; /初始化新结点函数 dirnode *init() dirnode *p; p=new dirnode; strcpy(,“); root.type=0; root.next=null; root.son=null; root.father=null; 模拟文件系统 28 root.size=0; return p; /1 改变目录 void cd(char dirname) dirnode *p,*s; int flag=0;/标记是否找到指定目录,0 为没找到,1 为已找到 s=p=workdir; p=s-son; while(p) if(p-type=0) if(!strcmp(p-name,dirname) flag=1; tag=1; break; p=p-next; if(flag=0) p=s-next; while(p) if(p-type=0) if(!strcmp(p-name,dirname) flag=1; tag=2; break; p=p-next; if(flag=0 if(p-type=0) if(!strcmp(p-name,dirname) flag=1; tag=3; if(flag=1) workdir=p; if(tag=1) k=k+1; path1k=p-name; coutname; coutname; coutname,filename); q-son=null; q-type=1; q-next=null; 模拟文件系统 30 q-father=workdir; q-size=filesize; if(toallsize-filesize)son; if(p=null) workdir-son=q; couttype=1) if(!strcmp(p-name,filename) flag=1; coutnext; if(flag=0) p=workdir-son; while(p-next) p=p-next; p-next=q; coutson; if(p=null) couttype=1) if(!strcmp(p-name,filename) flag=1; break; p=p-next; if(flag=1) if(p=workdir-son) char choise; coutchoise; if(choise=y|choise=y) workdir-son=p-next; toallsize=toallsize+p-size; delete p; couttype=0) cout.setf(2); coutname“name“sizenext; /子目录的显示 void dirs(dirnode *p,char str) char newstr100; dirnode *q; coutson) strcpy(newstr,“); strcat(newstr,str); strcat(newstr,“); strcat(newstr,q-name); dirs(q-son,newstr); q=p; while(q-next) if(q-next-son) strcpy(newstr,“); strcat(newstr,str); strcat(newstr,“ “); strcat(newstr,q-next-name); dirs(q-next-son,newstr); q=q-next; 西华大学数计学院课程设计说明书 33 / 显示所有目录 void show() dirnode *p; coutname,dirname); q-son=null; q-type=0; q-next=null; q-father=workdir; q-size=0; p=workdir-son; if(p=null) workdir-son=q; couttype=0) if(!strcmp(p-name,dirname) flag=1; coutnext; if(flag=0) p=workdir-son; while(p-next) p=p-next; 模拟文件系统 34 p-next=q; coutson; if(p=null) couttype=0) if(!strcmp(p-name,dirname) flag=1; break; p=p-next; if(flag=1) if(p=workdir-son) if(p-son!=null) coutchoise; if(choise=y|choise=y) workdir-son=p-next; delete p; cout“; gets(string); 模拟文件系统 36 len=strlen(string); if(len=0) strcpy(command,“errer“); else /获得命令 s=null; s=strchr(string, ); if(s!=null) *s=0; strcpy(command,string); /测试命令类型 if(!strcmp(command,“cd“)|!strcmp(command,“cd“) comm=1; else if(!strcmp(command,“cre“)|!strcmp(command,“cre“) comm=2; else if(!strcmp(command,“del“)|!strcmp(command,“del“) comm=3; else if(!str
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年机械设计工程师中级面试题集
- 2025年高级养老护理员技能证书考试练习题及答案
- 2025年注册验船师资格考试(B级船舶检验专业法律法规)综合试题及答案一
- 2025年配送计算试题及答案
- 国安公务员面试题及答案
- 英语游戏化教学培训课件
- 贵商银行面试题及答案
- 2025年行业协会法务面试模拟题集
- 2025年法律顾问职业技能鉴定面试模拟题解析
- 西藏拉萨市那曲第二高级中学2026届化学高一上期中统考模拟试题含解析
- 飞灰螯合物运输服务方案
- (完整版)沪教牛津版小学一至六年级英语单词汇总(最新)
- JJF 1587-2016 数字多用表校准规范-(高清现行)
- 完整课件-西方经济学下册(第二版)
- 《中国的行政区划》教学设计
- 机械制图教学通用课件(全套)
- 钢化玻璃标准
- 天星择日的基本原理
- 球阀自动泄压计算
- 期权从业考试题含答案84分
- 佐罗塔耶夫《儿童组曲NO.1》的演奏分析
评论
0/150
提交评论