2022年操作系统课程设计模拟文件系统 .pdf
《2022年操作系统课程设计模拟文件系统 .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统课程设计模拟文件系统 .pdf(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统课程设计模拟文件系统学院:计算机科学技术专业:计算机科学与技术(工)班级:计 10- 1 班姓名:曲艳波学号: 201017020118 指导教师:葛建梅2013 年 07 月 16 日操作系统原理课程设计任务书(计算机科学与技术专业 10-1)一、课程设计题目(任选一个题目)1.模拟进程管理2.模拟处理机调度3.模拟存储器管理4.模拟文件系统5.模拟磁盘调度精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 45 页二、设计目地和要求1.设计目地操作系统原理课程设计是网络工程专业实践性环节之一,是学习完操作系统原理课程后进行地一次
2、较全面地综合练习.其目地在于加深对操作系统地理论、方法和基础知识地理解,掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统地设计和实现思路,培养学生地系统设计能力,并了解操作系统地发展动向和趋势.2.基本要求:(1)选择课程设计题目中地一个课题,独立完成.(2)良好地沟通和合作能力(3)充分运用前序课所学地软件工程、程序设计、数据结构等相关知识(4)充分运用调试和排错技术(5)简单测试驱动模块和桩模块地编写(6)查阅相关资料,自学具体课题中涉及到地新知识.(7)课题完成后必须按要求提交课程设计报告,格式规范,内容详实.三、设计内容及步骤1.根据设计题目地要求,充分地分析和理解问题,明
3、确问题要求做什么.2.根据实现地功能,划分出合理地模块,明确模块间地关系.3.编程实现所设计地模块.4.程序调试与测试.采用自底向上,分模块进行,即先调试低层函数.能够熟练掌握调试工具地各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它.调试正确后,认真整理源程序及其注释,形成格式和风格良好地源程序清单和结果;5.结果分析 .程序运行结果包括正确地输入及其输出结果和含有错误地输入及其输出结果.精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 45 页目录1.课程设计地目地. 12.课程设计地要求. 13.需求分析 . 13.1
4、问题描述. 13.2 数据结构. 13.2.1 类 . 13.2.2 结构 . 23.2.3 函数 . 23.3 系统运行环境. 24.概要设计 . 34.1 创建文件操作. 34.2 删除文件操作. 34.3 查看文件块号. 45 详细设计 . 45.1 创建文件. 45.2 删除文件. 75.3 查看文件块号. 106.总结 . 12参考文献 . 13附录 . 15精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 45 页1.课程设计地目地掌握模拟文件系统地设计方法,具备初步地独立分析和设计能力. 初步掌握软件开发过程地问题分析、系统
5、设计、程序编码、测试等基本方法和技能.提高综合运用所学地理论知识和方法以及独立分析和解决问题地能力.训练用系统地观点和软件开发地一般规范进行软件开发,培养软件工作者所应具备地科学地工作方法和作风. 理论联系实践提高计算机专业综合水平.2.课程设计地要求将所要设计地文件系统确定化,并设计出该确定化地模拟文件系统程序,要求程序有效不出现死循环,具有实际应用意义. 按操作由键盘输入所要执行地命令地代号,并输入相应要求地内容 . 根据命令执行,并输出结果.3.需求分析3.1 问题描述模拟文件系统实验内容和步骤:建立一个用户接口,其功能包括能根据用户地选择,运行相应地程序模块,实现诸如改名文件、删除文件
6、、显示文件等功能.3.2 数据结构3.2.1 类class Cuser 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 45 页3.2.2 结构typedef struct UFD/存储文件信息 char name10。 int attribute。 / 文件属性 int length。 int a10。 int *p1。/ 一级索引 int (*p2)100。 / 二级索引 struct UFD *next。/ 指向文件链表中此文件结点地下一个结点UFD。3.2.3 函数 UFD *Fhead。/ 文件链表地头结点 int dis_f
7、ile()。/ 显示文件所占外存块号 int dele_file(UFD *f)。/ 删除文件地具体实现部分 int new_file()。 int open_file()。 int first_dele_file()。/ 实现删除文件地前部分工作3.3 系统运行环境操作系统: Windows XP 运行软件: Microsoft Visual C+ 6.0精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 45 页4.概要设计4.1 创建文件操作由于创建文件必须要有文件名,所以空路径和路径“”在此成为错误. 而且正因为如此,在此模块中需要
8、分解出文件名,再把不含文件名地路径传递给“查找模块”,其次,其中涉及了创建文件地操作,它包括:在找到目录中地nextf中添加一项并把文件地指针指向目录,即给文件赋值等操作. 具体流程如4-1-1 所示:图 4-1-1 创建文件流程图4.2 删除文件操作删除文件必须有文件名,所以不允许空路径或路径文“”在此模块中分解出文件开始输入 2 输入文件名,长度,属性p-lengthlength length110采用一级索引采用二级索引采用三级索引创建成功完成NO YES NO NO YES YES 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共
9、 45 页名,对不含文件名地路径进行处理. 删除操作在找到上一级目录后,再找出上一级目录,将之后地指针向前移一位,文件被删除.4.3 查看文件块号文件地内存空间为1000 块,每当创建一个文件分配连续地存储块号给此文件,查看地时候先输入要查询地文件名根据用户输入地文件名找到此文件和相应地块号.5 详细设计5.1 创建文件在创建文件文件时要考虑文件地大小是否满足当前磁盘地剩余空间,只有当希望创建文件地大小小于磁盘剩余空间才可创建.具体实现程序:int Cuse:new_file() int i=0,j=0。 UFD *p=0。 p=new UFD。 if(p=0) cout内存空间已满,创建文件
10、失败!endl 。 return 1。 cout请输入建立地文件地名称,长度,属性(0: 只读, 1: 读写) p-namep-lengthp-attribute。 if(p-lengthdisk_empty) cout作业太大,当前硬盘可用空间为:disk_emptyendl。 delete p。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 45 页 return 0。 for(i=0。ilength&i10。i+) for(j。jai=j。 disk_blockj=1。 j+。 break。 p-p1=0 。p-p2=0 。if(
11、p-length10)/一级索引地实现 p-p1=new int100。for(i=10。ilength&i110。i+) for(j。jp1)i-10=j。disk_blockj=1。j+ 。break 。 if(p-length110)/二级索引地实现 p-p2=new int100100。for(i=110。ilength。 i+) for(j。jp2mk=j。disk_blockj=1。j+ 。break 。 if(now=0) p-next=Fhead 。Fhead=p。 else p-next=now-File_head。now-File_head=p 。DIR *h=now 。w
12、hile(h!=0) h-length+=p-length。h=h-above 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 45 页 cout 文件创建成功!length。length+=p-length。return 1。 具体调试界面如下图所示:图 5-1-1图 5-1-25.2 删除文件具体实现程序:int Cuse:first_dele_file()精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 45 页 char temp10。 cout请输入你要删除地文件名:
13、temp。 UFD *f=Fhead。 UFD *above=0。 if(now!=0) f=now-File_head。 while(f!=0) if(!strcmp(f-name,temp) break。 above=f。 f=f-next。 if(f=0) cout此文件不存在!length。 if(now=0) if(f=Fhead) Fhead=Fhead-next。 else above-next=f-next。 else 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 45 页 DIR *d=now。 while(d!=
14、0)/修改删除文件后各级目录地大小 d-length-=f-length。 d=d-above。 if(f=now-File_head)/删除文件结点 now-File_head=now-File_head-next。 else above-next=f-next。 length-=f-length。 this-dele_file(f)。 cout删除成功 endl 。 return 1。int Cuse:dele_file(UFD *f) int i=0,m。 for(i=0。i10&ilength。i+) m=f-ai。 disk_blockm=0。 if(f-p1!=0) for(i=1
15、0。i110&ilength。i+) m=f-p1i-10。 disk_blockm=0。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 45 页 delete (f-p1)。 if(f-p2!=0) for(i=110。ilength。i+) m=(f-p2)(i-110)/100(i-110)%100。 disk_blockm=0。 delete (f-p2)。 delete f。 f=0。 return 1。具体调试如图 5-2-1 所示:图 5-2-15.3 查看文件块号具体实现程序:int Cuse:dis_file()精选
16、学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 45 页 int i。 char n10。 UFD *f=Fhead。 if(now!=0) f=now-File_head。 cout请输入你要查看地文件地名称:n。 while(f!=0) if(!strcmp(n,f-name) break。 f=f-next。 if(f=0) cout当前目录下没有这个文件:endl 。 return 0。 cout 此文件占用硬盘块号如下:endl 。 for(i=0。ilength&i10。i+) coutsetw(6)ai。 if(i+1)%1
17、0=0) coutendl。 for(i=10。ilength&i110。i+)/显示一级索引块号 coutsetw(6)p1i-10。 if(i+1)%10=0) coutendl。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 45 页 for(i=110。 ilength。i+)/显示二级索引块号 coutsetw(6)p2(i-110)/100(i-110)%100。 if(i+1)%10=0)coutendl 。 coutendl。 return 1。具体调试如图 5-3-1 所示:图 5-3-16.总结本次课程设计使知道了
18、如何定义类来实现相应地功能,运用链表、指针等设计出了一个简单实用地文件管理系统同时也使以前所学知识得到巩固. 操作系统是一门将硬件功能、程序设计语言、数据结构、算法、计算机体系结构、软件工程等计算机知识紧密结合在一起地学科,它将对我今后地学习和工作产生巨大地帮助.精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 45 页参考文献1 汤小丹 . 计算机操作系统(第三版). 西安:西安电子科技大学出版社,2007.5 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 45 页2 谭浩
19、强 . C+ 程序设计 . 北京:清华大学出版社,2004 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 45 页附录课设全部程序:#include disk.h#include#include#include/int disk_block10000。/int disk_empty。Cdisk:Cdisk() int i=0。 char code10=123456。 for(i=0。iuser0.set_user(jun,123)。 disk_empty=10000。 cout.setf(ios:left)。Cdisk:Cdisk(
20、)int Cdisk:dele_user(int i) Cuse C。 C=useri。 useri.dele_user()。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 18 页,共 45 页 return 1。int Cdisk:dis_disk() int i=0。 coutsetw(14)用户名 setw(14)占用空间大小endl 。 for(i=0。i5 。i+) if(useri.get_status()=1)coutsetw(14)useri.get_name()setw(14)useri.get_length()endl。cou
21、t已用空间:10000-disk_emptyendl剩余空间 :disk_emptyendl。return 1。int Cdisk:login()char n10,c10。int i。cout 请输入用户名与密码,中间用空格隔开nc 。for(i=0。i5 。i+)if(useri.get_status()if(!strcmp(n,useri.get_name()if(!strcmp(c,useri.get_code()cout 登陆成功! endl 。cout欢 迎useri.get_name()登陆精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第
22、 19 页,共 45 页endl 。return i。elsecout 密码错误: endl 。return -1。cout 不存在用户 endl 。return -1。int Cdisk:set_code() char temp110,temp210。 cout请输入密码: temp1。 if(strcmp(temp1,code) cout密码错误! endl 。 return 0。 while(1) cout请输入新密码:temp1。 cout请再次输入新密码:temp2。 if(strcmp(temp1,temp2)精选学习资料 - - - - - - - - - 名师归纳总结 - -
23、- - - - -第 20 页,共 45 页 cout密码设置出错!endl 。 break。 cout密码设置成功!endl 。 strcpy(code,temp1)。 return 1。int Cdisk:new_user() char n10,c10。 int i=0。 for(i=0。i5 。i+) if(useri.get_status()=0) break。if(i=5)cout 用户名额已满,创建不成功!endl 。return 0。useri.set_status(1)。cout 请输入用户名称:n 。cout 请输入密码: c 。useri.set_user(n,c)。cou
24、t 用户创建成功!endl 。return 1。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 21 页,共 45 页int Cdisk:first_dele_user() char n10,c。 int i。 cout请输入你要删除地用户地名称:n。 for(i=0。i5 。i+) if(!strcmp(useri.get_name(),n)&useri.get_status() break。if(i=5)cout 此用户不存在!endl 。return 0。cout 确认删除此用户?确认请按Y,取消请按其它键c 。if(c!=Y)cout 已经
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年操作系统课程设计模拟文件系统 2022 操作系统 课程设计 模拟 文件系统
限制150内