




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统大型试验实验报告姓名:XX班级:软件工程 110x学号:201126630xxx一、名称操作系统大型试验。二、目的用C+编写出一个简单的模拟文件系统,实现目录的添加、删除、重命名,文件的添加、删除、重命名、文件和目录、文件的拷贝。三、要求开发工具:word , vc win32api1. 设计和实现一个简单的文件系统,要求包括目录、普通文件和文件的存储2. 文件系统的目录结构采用类似Linux的树状结构;3. 要求模拟的操作包括:a)目录的添加、删除、重命名;b)目录的显示(列表)c)文件的添加、删除、重命名d)文件和目录的拷贝4. 用户进入时显示可用命令列表;用户输入help时显示所
2、有命令的帮助文档;输入某个命令+?时显示该条命令的使用说明5. 用户输入exit时退出该系统6. 实验实现基于 windows平台;7. 实验开发语言可以选用 C/C+等四、设计1. 主要思路说明本模拟系统通过一个大小固定的数组要代表物理盘块,假设共有1024块,新增目录占一块,新增文件占一块,文件中可输入内容,内容假设定义为5个字符占一块,超出则应新 申请空间。模拟物理盘块的数组中,数组内容为-99代表改物理盘块内容为空,可使用,其他数字均代表该物理盘块被占用,其中-3代表是占用文件的末结点,其他整数代表是文件内容的下一个寻址下标,另有一个string类型的数组来存储内容,模拟文件写入了对应
3、下标 的物理盘块中。设置了一个全局指针指向根结点,一个全局指针指向当前操作目录。搜索空白物理盘块时采用顺序搜索物理盘块数组。存储形式主要采用类似二叉树结构,如目录为根,目录下的第一个文件或目录存在根的子节点,目录下的其他文件或目录存在第一个文件或目录的兄弟节点,以此类推。本程序仅seperate()函数使用现成代码,此函数功能为将输入命令串分离,仅仅起到美 观作用,其余所有代码均为原创!2. 申优功能:1)能实现动态增长,即当输入文件的内容大小大于分配的模拟物理盘块时系统能够自 动寻找空物理盘块并分配,将超出的内容保存在新的物理盘块中,若超出模拟磁盘大小, 则超出部分不保存且返回提示。2)能实
4、现级联删除,即当删除目录(文件夹)时,目录下的所有内容也应当删除并正 确释放物理盘块空间。3)能实现目录的复制,即复制目录时(文件夹)时,该目录下的所有文件和目录也应 准确复制至目标目录中,并正确分配物理盘块空间。3.主要函数和类的定义1)主要函数定义#define show_bnum 20 #define block_size 1024 int blockblock_size;string contentblock_size; int Msize=5;/显示物理盘块的块数/物理盘块块数/假设有block_size块物理盘块/存放文件内容此处为模拟磁盘大小为输入5个字符fnode *root=
5、new fnode("WP:",0,0);fnode *current_path=new fnode();fnode *seek_flag=new fnode();fnode *cp_flag=new fnode();void initialize();int seekTarget(string name);int seek_log(string name);void delete_node(string name);int freeblock(fnode *);int seekfreeblock();void show_current_path();void add_fi
6、le(string name,int t);void show_curpath_all();void rename_file(string Oname,string Nname);void seperate();void cd();void add_File();void add_Log();void delete_file();void show_memory();void re_name();void help();void show_content();void write_file();void Clear_();void Exit();void cp();void cp_log(fn
7、ode *target,fnode *source);void cp_file(fnode *target,fnode *source);void cp_node(fnode *target,fnode *source);int find_target_log();int calculate_logsizeMain(fnode *);设置根目录/当前路径/作为查找标志/作为复制的位置标志/初始化/搜索文件或目录/搜索目录/删除节点/释放物理盘块/搜索可用物理盘块/显示当前路径/增加目录、文件/显示当前目录下的所有文件/重命名/分离命令/进入目录/增加文件功能入口/增加目录功能入口/删除文件或目
8、录功能入口/显示物理盘块占用情况重命名功能入口/查看帮助/查看文件内容/写文件/清屏/退出/复制功能入口复制目录/复制文件/复制节点/找到复制的目标目录/计算目录大小int calculate_logsize(fnode *);2)文件节点类的定义:class fnode public:string filename;/文件名int type;文件类型,1为普通文件,0为目录文件fnode *parent;/父节点fnode *child;/子节点fnode *brother;/兄弟节点int block_num;/表示占用的物理盘块块号int isBro;表示是否是在问级目录下,0表示/、是
9、,1表示是int isCld;是否为目录下第一个节点,1表刀、是,0表刀、不是fnode() /初始化type=-1;parent=NULL;child=NULL;brother=NULL;block_num=-1;isBro=0;isCld=0;fnode(string n,int t,int b)/ 根节点初始化type=t;filename=n;parent=NULL;child=NULL;brother=NULL;block_num=b;blockblock_num=-3;isBro=0;isCld=0;fnode(fnode *p,string name,int t,int b)/
10、文件节点初始化parent=p;filename=name;type=t;child=NULL;brother=NULL;block_num=b;blockblock_num=-3;isBro=0;isCld=0;void copy(fnode *cp)/ 拷贝函数filename=cp->filename;type=cp->type;4.命令:parent=cp->parent;child=cp->child;brother=cp->brother;block_num=cp->block_num;命令解释echoecho命令可以在当前目录下创建一个文件,具
11、体格式:echo+namemdmd命令可以在当前目录下创建一个目录文件,具体格式:md+namedeldel命令可以在当前目录下删除一个已存在的文件或目录(支持级联 删除),具体格式:del+namecdcd命令可以进入下一级目录或返回上级目录、根目录,具体格式: cd+name 或 cd+.或 cd+.cpcp命令可以复制当前目录下一个指正的文件或目录至指的目录,具体格式:cp+name+roaddirdir命令可以显示当前目录下的所有文件和目录,具体格式:delrenren命令可以重命名一个存在于当前目录下的文件或目录,ren+name +new name具体格式:typtyp命令可以查看
12、当前目录下一个文件的内容,具体格式:typ+namewrtwrt命令可以在当前目录下写内容至一个已存在的文件,具体格式:wrt+name +contentmemmem命令可以查看模拟物理盘块的使用情况,具体格式:memclscls命令为清屏命令,具体格式:clsexitexit命令为退出命令,具体格式:exit五、关键技术流程图及说明提示:若图中文字无法看清,可用Micorsoft Visio打开压缩包下"部分程序流程图"文件夹的绘图文件查看。1.增加文件或目录(此功能比较简单,流程图写的较详细就不做说明):臼上龈房珈$氏艾骨名麻丈仆垫壁:2. 删除目录(实现级联删除):说
13、明:删除目录时删除文件和删除目录本身放在同一个函数中,删除目录下的所有文件放在freeblock函数里,这样比较好处理。下面给只给出递归函数的流程图。, 由海袖怜椅耽m;ir<>®慑哗制4<<:调用frwVlock传人兄!:4!占用物理盘剽鼠值1土点为所柜寸录否一行点的芥转点相向罕3. 将内容写入文件(实现动态增长):说明:图中Msize为模拟规定的文件块字符串大小,比如Msize=5,那么一个物理盘块只能存5个字符,超出则要申请新的空间。主要采用双重循环方法写入,外层循环为需要的块数,内层循环为Msize,用string累加字符串内容,内层循环退出后新申请一
14、个空间并将对应下标赋给上一个物理盘块数组,再将对应内容存入content (为string类型的数组,模拟存储内容)数组中,直至退出外层循环。4. 复制目录:说明:这里和删除目录一样,写了两个复制函数,这样写同样因为递归调用是比较方便, 第一个函数传入参数为目标目录指针和被复制的目录的指针,第一个函数里新建了一个阶段复制被复制的目录的内容, 然后将新建节点的子节点和被复制目录的子结点传入下一个递归 调用函数(因为目录的内容存于目录的子节点,与兄弟节点无关),第二个函数就是递归调用函数cp_node ,下面就只给出 cp_node的流程图(复制之前同样进行了路径的判误操作, 内存大小的判断操作,
15、是否重名的判断操作, 被复制目录是否存在判断操作,这些操作在递归函数之前完成,所以下面的递归函数不体现这些操作)。六、运行结果1.主界面展示:图:主界面展示2.help命令展示:图:help命令展示3.echo命令展示:图:echo命令展示4.del命令展示:图:del命令展示-普通删除说明:创建了目录logl,在logl中创建一系列文件和目录,磁盘使用情况显示已分配,实用del删除命令后查看磁盘分配证明级联删除是可靠的。上用育.1块劫迫母也:的买验肩孤T时愫可用,-3代表袒占,用日为林件凯 其它敬字”代表可用.T代表被占用且为彳件其其它数字目录名,lol文件类型UP : ymcrw以下为前m
16、i物咨盘 代表下一块的写壬下:UP Odel lo3lWF;dLLr该m录为三目录,目录下元内容|UP:nen以E为前金砰曲理食地的实验胃 十表丁一块的全上下繇UP: 10gl>TTMl 1。航UP: loil>ecF0 filetUP i 'klnyi Xirt f i lei abcdEur:sio3i>cd i<32UF: xlogl>lag2 >echa F lle2WP:loglxlag2>urt file2 9675UP: lagl log2 losrlUP i lo jlvlag2 cd .s;不是内部或外部岱令,也不是可运行的程
17、序或mt在丈件UP:lojlxlag2>cd .SlituldLe File2014.91.J嗷y所有吴以保曹所有权林图:del命令展示-级联删除5. md命令展示:图:md命令展示6. cd命令展小:说明:图中展示了 cd+name、cd+.、cd+.三种cd命令的使用和判别情况。图:cd命令展示7. dir命令展示:SiMulatD Filn Systnn (RwA版板所有«F吴影。保备麻有杈利.该目亲为空目呆.目呆下无内容¥UP: Wl AUPOocho hUP: Mirpt:蚤踪1溥毓甑融矗m HP".图:dir命令展示8.typ命令展示:图:typ
18、命令展示9.ren命令展示:图:ren命令展示10.wrt命令展示:图:wrt命令展示说明:此处为了实验方便,将磁盘大小限定为5,每块磁盘输入的字符数限 2,输入的内容112233445566778899需要9块磁盘块,而磁盘块为 5,根目录占用一块,只能输入 4 块大小的内容,即 11223344,所有文件file只写入了 11223344 。图:wrt动态增长展示11.mem命令展示:图:mem命令展示图:cls命令展示-112.cls命令展示:图:cls命令展示-213.cp命令展示:说明:图中根目录( WP:)下创建了目录 a (md a)、目录b (md b),在a目录下创建 了 b
19、目录(md b),在b目录中创建了文件 a(echo a)、目录c(md c),文件a中输入1111122222(wrt a 111112222)内容代表占了两块物理盘块 (程序中Msize模拟大小,设为5个字符了),再进入 目录c(cd c), c中先创建目录f(md f)再创建文件g (与之前创建顺序不同说明程序在不同情 况下能正常运行),在g中输入5个3, 5个2, 5个1(wrt g 333332222211111)代表占用3块 物理盘块空间,再返回目录a(cd . cd .),将目录a下的目录b复制给目录 WP下的目录c(cp bWP:c),再将目录a中的目录b删除(del b证明的
20、确是复制而非简单指针指向),进入 WP 下的目录c查看刚复制的内容(dir)。物理盘块使用情况中第一个 -3为根目录占用,第二个-3 是目录a,第三个-3是目录c,接下来的8个-99是目录a中原目录b占用的空间(此处证明删除是可靠的),图中显示目录c中确实成功复制了目录b及目录下的所有内容(使用dir命令查看)。c File extern 戒潭 2011.01,091 孑WF呈点幻保冒麻有杈刊.占用第:“块的珪盘块:呼名,»文占用莒块为勒 伉是物理盘块P: r >rti1录名,b文竹类型'目录 Ft cXji! b'F- cxb>diFt希基,-c 文&q
21、uot;.一.-卯 a件的内容为;1111122222:cMi>cd c:cbc >dir"f W: IS'P = c=7b、c'ibyp 牙二粒的内容禺:3333322Z22111LL'P * jc-XbXc >nenit tSbc )P:Pia 'E:R le_Sy$teimFile_Sy5tem,DebugF ile.Systenn.exe*TOnd a POrnd n >cd a WMil b h ab>9cho a aMb>»jrt a 11111222ZZ 3h>E c c»SB
22、>c d <c Xrfbc>nd f a >echo y aSb>«rt 厚 J93032322211111 xaxhe>cd . aSb>cd . a>D|j h wr:>je wx引b 3>c4 > T:>cd L秘芭黔驾髀案的痒情兄-叫代表可用,7代哀被占用且拘末文件块,3 -3 -J -99 -VV -5IV -fV -99 -T9 -99 -9V -J 13 -3 -3 -3 17 1M -J TV图:cp命令展示-E :侦 !efile. 5>irrm De bu g?jlg_廿etlwjiot
23、ePlLcSjfnten_14,01 .的牍找所有<up> H 评置南有权利LWP;PrflSt any key to cantinua图:exit命令展示15.综合展示:说明:echo a在根目录(WP:)下创建了文件 a, md b在根目录(WP:)下创建了目录 b,dir显示根目录下的所有文件和目录,wrt a aaaaabbbbbccccc在文件a中输入了一串内容,typ a显示文件a中的内容,cd b进入目录b, md a在目录b下创建了目录 a, cd a进入目录 a, cd .返回目录 b, cd .返回根目录 WP:, ren b newname 将目录 b 重命名为 newname , mem
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 交通运输企业消防安全管理组织机构职责
- 孕妇合理用药培训计划
- 2025至2030中国体育用品行业市场发展分析与发展前景预测及投资咨询报告
- 2025至2030中国云音乐流行业产业运行态势及投资规划深度研究报告
- 口腔医学技术专业实习反思报告范文
- 部编版语文五年级上册教学辅导计划
- 命题作文‘什么是个好志愿团队’写作指导及范文
- 蒋老师讲数学试卷
- 消防工程维保合同签订后维保流程
- 莒县初三一模数学试卷
- 2022年泰安市文化和旅游系统事业单位招聘笔试试题及答案
- 2023年上海英语高考卷及答案完整版
- ISO9001新产品研发控制程序
- 操场塑胶面层施工方案及工艺方法
- 防台风、暴雨应急预案
- 西班牙文化概况
- 《长方形和正方形》 完整版课件
- 建筑施工现场建筑垃圾处置方案
- 布草洗涤服务方案完整版
- 第七次全国人口普查事后质量抽查方案
- 市政工程类建筑施工项目危险源辨识及风险管控清单
评论
0/150
提交评论