欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    操作系统课程设计模拟文件系统 .docx

    • 资源ID:13063786       资源大小:230.40KB        全文页数:46页
    • 资源格式: DOCX        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    操作系统课程设计模拟文件系统 .docx

    精品名师归纳总结操作系统课程设计模拟文件系统学专院:业:运算机科学技术运算机科学与技术(工)班级:计 10- 1 班姓名:曲艳波学号:202117020218指导老师:葛建梅2021 年 07 月 16 日操作系统原理课程设计任务书(运算机科学与技术专业10-1 )一、课程设计题目(任选一个题目)1. 模拟进程治理2. 模拟处理机调度3. 模拟储备器治理4. 模拟文件系统5. 模拟磁盘调度可编辑资料 - - - 欢迎下载精品名师归纳总结二、设计目的和要求1. 设计目的操作系统原理课程设计是网络工程专业实践性环节之一,是学习完操作系统原理课程后进行的一次较全面的综合练习.其目的在于加深对操作系统的理论、方法和基础学问的懂得,把握操作系统结构、实现机理和各种典型算法,系统的明白操作系统的设计和实现思路,培育同学的系统设计才能,并明白操作系统的进展动向和趋势.2. 基本要求:1挑选课程设计题目中的一个课题,独立完成. 2良好的沟通和合作才能3充分运用前序课所学的软件工程、程序设计、数据结构等相关学问4充分运用调试和排错技术(5) 简洁测试驱动模块和桩模块的编写(6) 查阅相关资料,自学具体课题中涉及到的新学问.(7) 课题完成后必需按要求提交课程设计报告,格式规范,内容详实.三、设计内容及步骤1. 依据设计题目的要求,充分的分析和懂得问题,明确问题要求做什么.2. 依据实现的功能,划分出合理的模块,明确模块间的关系.3. 编程实现所设计的模块.4. 程序调试与测试.采纳自底向上,分模块进行,即先调试低层函数.能够娴熟把握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证明它或绕过它.调试正确后,仔细整理源程序及其注释,形成格式和风格良好的源程序清单和结果。5. 结果分析 .程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果.可编辑资料 - - - 欢迎下载精品名师归纳总结目录1. 课程设计的目的12. 课程设计的要求13. 需求分析13.1 问题描述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可编辑资料 - - - 欢迎下载精品名师归纳总结1. 课程设计的目的把握模拟文件系统的设计方法,具备初步的独立分析和设计才能. 初步把握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能.提高综合运用所学的理论学问和方法以及独立分析和解决问题的才能.训练用系统的观点和软件开发的一般规范进行软件开发,培育软件工作者所应具备的科学的工作方法和作风. 理论联系实践提高运算机专业综合水平.2. 课程设计的要求将所要设计的文件系统确定化,并设计出该确定化的模拟文件系统程序,要求程序有效不显现死循环,具有实际应用意义. 按操作由键盘输入所要执行的命令的代号,并输入相应要求的内容 . 依据命令执行,并输出结果.3. 需求分析3.1 问题描述模拟文件系统试验内容和步骤:建立一个用户接口,其功能包括能依据用户的挑选,运行相应的程序模块,实现诸如改名文件、删除文件、显示文件等功能.3.2 数据结构3.2.1 类class Cuser可编辑资料 - - - 欢迎下载精品名师归纳总结3.2.2 结构typedef struct UFD/储备文件信息char name10。int attribute。/ 文件属性int length。int a10。int *p1。/ 一级索引int *p2100。/ 二级索引struct UFD *next。/指向文件链表中此文件结点的下一个结点UFD。3.2.3 函数UFD *Fhead。/ 文件链表的头结点int dis_file。/ 显示文件所占外存块号int dele_fileUFD *f。/ 删除文件的具体实现部分int new_file。int open_file。int first_dele_file。/ 实现删除文件的前部分工作3.3 系统运行环境操作系统: Windows XP运行软件: Microsoft Visual C+ 6.0可编辑资料 - - - 欢迎下载精品名师归纳总结4. 概要设计4.1 创建文件操作由于创建文件必需要有文件名,所以空路径和路径“”在此成为错误 . 而且正由于如此,在此模块中需要分解出文件名,再把不含文件名的路径传递给“查找模块”,其次,开头输入 2输入文件名,长度,属性NOp->length<disk_emptyYESp->length<110p->length < 10NONOYESYES采纳三级索引采纳二级索引采纳一级索引创建胜利完成其中涉及了创建文件的操作,它包括:在找到目录中的nextf中添加一项并把文件的指针指向目录,即给文件赋值等操作. 具体流程如 4-1-1所示:图 4-1-1创建文件流程图4.2 删除文件操作删除文件必需有文件名,所以不答应空路径或路径文“”在此模块中分解出文件可编辑资料 - - - 欢迎下载精品名师归纳总结名,对不含文件名的路径进行处理. 删除操作在找到上一级目录后,再找出上一级目录,将之后的指针向前移一位,文件被删除.4.3 查看文件块号文件的内存空间为1000 块,每当创建一个文件安排连续的储备块号给此文件,查看的时候先输入要查询的文件名依据用户输入的文件名找到此文件和相应的块号.5 具体设计5.1 创建文件在创建文件文件时要考虑文件的大小是否满意当前磁盘的剩余空间,只有当期望创建文件的大小小于磁盘剩余空间才可创建. 具体实现程序:int Cuse:new_fileint i=0,j=0。UFD *p=0。p=new UFD。ifp=0cout<<"内存空间已满,创建文件失败!"<<endl 。return 1。cout<<"请输入建立的文件的名称,长度,属性(0: 只读, 1: 读写) "<<endl 。cin>>p->name>>p->length>>p->attribute。ifp->length>disk_emptycout<<"作业太大,当前硬盘可用空间为:"<<disk_empty<<endl。delete p。可编辑资料 - - - 欢迎下载精品名师归纳总结return 0。fori=0。i<p->length&&i<10。i+ forj。j<10000 。j+ifdisk_blockj=0p->ai=j。disk_blockj=1j+。break。p->p1=0 。p->p2=0 。ifp->length>10/一级索引的实现p->p1=new int100。fori=10。i<p->length&&i<110。i+ forj。j<10000 。j+ifdisk_blockj=0 p->p1i-10=j。disk_blockj=1。j+ 。break 。ifp->length>110/二级索引的实现p->p2=new int100100。fori=110。i<p->length。 i+ forj。j<10000 。j+可编辑资料 - - - 欢迎下载精品名师归纳总结ifdisk_blockj=0int m=i-110/100 。int k=i-110%100。p->p2mk=j。disk_blockj=1。j+ 。break 。ifnow=0p->next=Fhead 。Fhead=p。elsep->next=now->File_head。now->File_head=p。DIR *h=now 。whileh.=0h->length+=p->length。h=h->above 。可编辑资料 - - - 欢迎下载精品名师归纳总结cout<<" 文件创建胜利! "<<endl 。disk_empty=disk_empty-p->length。length+=p->length。return 1。具体调试界面如下图所示:图 5-1-1图 5-1-25.2 删除文件具体实现程序:int Cuse:first_dele_file可编辑资料 - - - 欢迎下载精品名师归纳总结char temp10。cout<<"请输入你要删除的文件名:"<<endl 。cin>>temp。UFD *f=Fhead。UFD *above=0。ifnow.=0f=now->File_head。whilef.=0if.strcmpf->name,temp break。above=f。f=f->next。iff=0cout<<"此文件不存在! "<<endl 。return 0。disk_empty+=f->length。ifnow=0iff=FheadFhead=Fhead->next。elseabove->next=f->next。else可编辑资料 - - - 欢迎下载精品名师归纳总结DIR *d=now。whiled.=0/修改删除文件后各级目录的大小d->length-=f->length。d=d->above。iff=now->File_head/删除文件结点now->File_head=now->File_head->next。elseabove->next=f->next。length-=f->length。this->dele_filef。cout<<"删除胜利 "<<endl 。return 1。int Cuse:dele_fileUFD *fint i=0,m。fori=0。i<10&&i<f->length。i+m=f->ai。disk_blockm=0。iff->p1.=0fori=10。i<110&&i<f->length。i+m=f->p1i-10。disk_blockm=0。可编辑资料 - - - 欢迎下载精品名师归纳总结delete f->p1。iff->p2.=0fori=110。i<f->length。i+m=f->p2i-110/100i-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可编辑资料 - - - 欢迎下载精品名师归纳总结int i。char n10。UFD *f=Fhead。ifnow.=0f=now->File_head。cout<<"请输入你要查看的文件的名称:"<<endl 。cin>>n。whilef.=0if.strcmpn,f->name break。f=f->next。iff=0cout<<"当前目录下没有这个文件:"<<endl 。return 0。cout<<"此文件占用硬盘块号如下:"<<endl 。fori=0。i<f->length&&i<10。i+cout<<setw6<<f->ai。ifi+1%10=0cout<<endl。fori=10。i<f->length&&i<110。i+/显示一级索引块号cout<<setw6<<f->p1i-10。ifi+1%10=0cout<<endl。可编辑资料 - - - 欢迎下载精品名师归纳总结fori=110。 i<f->length。i+/显示二级索引块号cout<<setw6<<f->p2i-110/100i-110%100。ifi+1%10=0cout<<endl 。cout<<endl。return 1。具体调试如图 5-3-1 所示:图 5-3-16. 总结本次课程设计使知道了如何定义类来实现相应的功能,运用链表、指针等设计出了一个简洁有用的文件治理系统同时也使以前所学学问得到巩固. 操作系统是一门将硬件功能、程序设计语言、数据结构、算法、运算机体系结构、软件工程等运算机学问紧密结合在一起的学科,它将对我今后的学习和工作产生庞大的帮忙.可编辑资料 - - - 欢迎下载精品名师归纳总结参考文献1 汤小丹 .运算机操作系统(第三版). 西安:西安电子科技高校出版社,2007.5可编辑资料 - - - 欢迎下载精品名师归纳总结2 谭浩强 . C+ 程序设计 .北京:清华高校出版社,2004可编辑资料 - - - 欢迎下载精品名师归纳总结附录课设全部程序:#include "disk.h" #include<string.h> #include<iostream.h> #include<iomanip.h>/int disk_block10000。/int disk_empty。Cdisk:Cdiskint i=0。char code10="123456"。fori=0。i<10000 。i+ disk_blocki=0。this->user0.set_user"jun","123"。disk_empty=10000。cout.setfios:left。Cdisk:Cdiskint Cdisk:dele_userint iCuse C。C=useri。useri.dele_user。可编辑资料 - - - 欢迎下载精品名师归纳总结return 1。int Cdisk:dis_diskint i=0。cout<<setw14<<"用户名 "<<setw14<<"占用空间大小 "<<endl 。fori=0。i<5 。i+ ifuseri.get_status=1cout<<setw14<<useri.get_name<<setw14<<useri.get_length<<endl。cout<<"已 用空间 :"<<10000-disk_empty<<endl<<"剩 余 空间 :"<<disk_empty<<endl。return 1。int Cdisk:loginchar n10,c10。int i。cout<<" 请输入用户名与密码,中间用空格隔开"<<endl 。cin>>n>>c 。fori=0。i<5 。i+ifuseri.get_statusif.strcmpn,useri.get_nameif.strcmpc,useri.get_codecout<<" 登陆胜利! "<<endl 。cout<<"欢 迎 "<<useri.get_name<<"登 陆可编辑资料 - - - 欢迎下载精品名师归纳总结"<<endl 。return i。elsecout<<" 密码错误: "<<endl 。return -1。cout<<" 不存在用户 "<<endl 。return -1。int Cdisk:set_codechar temp110,temp210。cout<<"请输入密码: "<<endl 。cin>>temp1。ifstrcmptemp1,codecout<<"密码错误! "<<endl 。return 0。while1cout<<"请输入新密码: "<<endl 。cin>>temp1。cout<<"请再次输入新密码: "<<endl 。cin>>temp2。ifstrcmptemp1,temp2可编辑资料 - - - 欢迎下载精品名师归纳总结cout<<"密码设置出错! "<<endl 。break。cout<<"密码设置胜利! "<<endl 。strcpycode,temp1。return 1。int Cdisk:new_userchar n10,c10。int i=0。fori=0。i<5 。i+ ifuseri.get_status=0break。ifi=5cout<<" 用户名额已满,创建不胜利!"<<endl 。return 0。useri.set_status1。cout<<" 请输入用户名称:"<<endl 。cin>>n 。cout<<" 请输入密码: "<<endl 。cin>>c 。useri.set_usern,c。 cout<<" 用户创建胜利! "<<endl 。return 1。可编辑资料 - - - 欢迎下载精品名师归纳总结int Cdisk:first_dele_userchar n10,c。int i。cout<<"请输入你要删除的用户的名称:"<<endl 。cin>>n。fori=0。i<5 。i+ if.strcmpuseri.get_name,n&&useri.get_statusbreak。ifi=5cout<<" 此用户不存在! "<<endl 。return 0。cout<<" 确认删除此用户 .确认请按 Y,取消请按其它键"<<endl 。cin>>c 。ifc.='Y'cout<<" 已经取消删除! "<<endl 。return 0。this->dele_useri。cout<<" 用户删除胜利! "<<endl 。return 1。Cuse:Cuse可编辑资料 - - - 欢迎下载精品名师归纳总结status=0。length=0。now=0。Fhead=0。Dhead=0。Cuse:Cusedisk_empty+=length。length=0。 UFD *f=Fhead。DIR *d=Dhead。whilef.=0iff->next=0this->dele_filef。f=0。break。whilef->next->next.=0 f=f->next。this->dele_filef->next。f->next=0。f=Fhead。whiled.=0可编辑资料 - - - 欢迎下载精品名师归纳总结ifd->next=0this->dele_dird。d=0。break。whiled->next->next.=0 d=d->next。this->dele_dird->next。d->next=0。d=Dhead。int Cuse:new_fileint i=0,j=0。UFD *p=0。p=new UFD。ifp=0cout<<"内存空间已满,创建文件失败!"<<endl 。return 1。cout<<"请输入建立的文件的名称,长度,属性(0: 只读, 1: 读写) "<<endl 。cin>>p->name>>p->length>>p->attribute。ifp->length>disk_emptycout<<"作业太大,当前硬盘可用空间为:"<<disk_empty<<endl。delete p。可编辑资料 - - - 欢迎下载精品名师归纳总结return 0。fori=0。i<p->length&&i<10。i+ forj。 j<10000 。j+ifdisk_blockj=0p->ai=j。disk_blockj=1j+。break。p->p1=0 。p->p2=0 。ifp->length>10/一级索引的实现p->p1=new int100。fori=10。i<p->length&&i<110。i+ forj。j<10000 。j+ifdisk_blockj=0 p->p1i-10=j。disk_blockj=1。j+ 。break 。ifp->length>110/二级索引的实现p->p2=new int100100。fori=110。i<p->length。 i+ forj。j<10000 。j+可编辑资料 - - - 欢迎下载精品名师归纳总结ifdisk_blockj=0intm=i-110/100 。intk=i-110%100。p->p2mk=j。disk_blockj=1。j+ 。break 。ifnow=0p->next=Fhead 。Fhead=p。elsep->next=now->File_head。now->File_head=p。DIR *h=now 。whileh.=0h->length+=p->length。h=h->above 。可编辑资料 - - - 欢迎下载精品名师归纳总结cout<<" 文件创建胜利! "<<endl 。disk_empty=disk_empty-p->length。length+=p->length。return 1。int Cuse:new_dirDIR *p,*h。cout<<"请输入新目录的名称:"<<endl 。p=new DIR。cin>>p->name。p->Dir_head=0。p->length=0。p->File_head=0。ifnow=0 h=Dhead。elseh=now->Dir_head。whileh.=0if.strcmph->name,p->namecout<<"此目录已经存在 "<<endl 。return 0。h=h->next。可编辑资料 - - - 欢迎下载精品名师归纳总结ifnow=0p->above=0。p->next=Dhead。Dhead=p。elsep->above=now 。p->next=now->Dir_head。now->Dir_head=p 。cout<<"目录创建胜利! "<<endl 。return 1。int Cuse:gobackifnow=0cout<<"主目录,不能再次向上"<<endl 。return 0。now=now->above。return 1。int Cuse:open_dirchar name10。可编辑资料 - - - 欢迎下载精品名师归纳总结DIR *p。ifnow=0 p=Dhead。elsep=now->Dir_head。cout<<"请输入你要打开的目录名称:"<<endl 。cin>>name。int flag=0。whilep.=0ifstrcmpp->name,name=0now=p。return 1。p=p->next。cout<<"当前目录中不存在该目录"<<endl 。return 0。int Cuse:first_dele_filechar temp10。cout<<"请输入你要删除的文件名:"<<endl 。cin>>temp。UFD *f=Fhead。UFD *above=0。ifnow.=0f=now->File_head。可编辑资料 - - - 欢迎下载精品名师归纳总结whilef.=0if.strcmpf->name,temp break。above=f。f=f->next。iff=0cout<<"此文件不存在! "<<endl 。return 0。disk_empty+=f->length。ifnow=0iff=FheadFhead=Fhead->next。elseabove->next=f->next。elseDIR *d=now。whiled.=0/修改删除文件后各级目录的大小d->length-=f->length。d=d->above。iff=now->File_head/删除文件结点now->File_head=now->File_head->next。可编辑资料 - - - 欢迎下载精品名师归纳总结elseabove->next=f->next。length-=f->length。this->dele_filef。cout<<"删除胜利 "<<endl 。return 1。int Cuse:dele_fileUFD *fint i=0,m。fori=0。i<10&&i<f->length。i+m=f->ai。disk_blockm=0。iff->p1.=0fori=10。i<110&&i<f->length。i+m=f->p1i-10。disk_blockm=0。delete f->p1。iff->p2.=0fori=110。i<f->length。i+m=f->p2i-110/100i-110%100。可编辑资料 - - - 欢迎下载精品名师归纳总结disk_blockm=0。delete f->p2。delete f。f=0。return 1。int Cuse:first_dele_dirchar n10。char c。DIR *p,*above=0。p=Dhead。 ifnow.=0p=now->Dir_head。cout<<"请输入你要删除的目录的名称:"<<endl 。cin>>n。whilep.=0if.strcmpp->name,n break。above=p。p=p->next。ifp=0cout<<"没有这个目录 "<<endl 。return 0。可编辑资料 - - - 欢迎下载精品名师归纳总结cout<<"你确定要删除当前目录及此目标下面的全部信息吗?按0 确定,按其它键取消 "<<endl 。cin>>c。ifc.='0'return 0。disk_empty+=p->length。ifnow=0ifp=DheadD

    注意事项

    本文(操作系统课程设计模拟文件系统 .docx)为本站会员(Q****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开