ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:288.86KB ,
资源ID:1390150      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1390150.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统上机实验报告.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统上机实验报告.docx

1、操作系统上机实验报告操作系统上机实验报告 课 程 设 计(上 机 实 习)报 告课程设计(上机实验)题目:文件系统的模拟设计目的与任务: 理解操作系统文件系统的某些工作原理,学习文件操作命令和目录操作命令的设计方法。通过实验,使学生加深对操作系统文件系统某些问题的理解,归纳学习方法和思考方法,做到理论联系实际。培养学生分析问题、解决问题的能力,提高学生软件设计能力和逻辑思维能力。设计实现一个简单的文件系统,包括目录文件、普通文件,以及一些文件操作命令和目录操作命令(例如可以模仿DOS的有关命令)。1.修改md命令;2.修改Help命令;3.修改命令行预处理程序;4.新增fc命令,实现两个文件的

2、比较;5.新增batch命令,实现批处理;6. 完善copy命令,改善某些缺陷。内容和要求:1.修改md命令:增加“属性”参数,用于创建指定属性的子目录。命令形式如下:md 。属性包括R、H、S以及它们的组合(不区分大小写,顺序也不限)。例如:md usr rh其功能是在当前目录中创建具有“只读”和“隐藏”属性的子目录user.2.修改Help命令:修改help命令的显示方式和显示内容:修改HelpComd()函数,使之提供菜单式的较详细的帮助信息。例如可以先用菜单形式简单列出各命令名称,当用户选择某个命令的序号后,再比较详细地介绍该命令,包括命令的各种形式,每种形式的功能,以及某些举例说明等

3、等。3.修改命令行预处理程序:修改命令行预处理函数ParseCommand( ),使以下命令行(命令与参数间无空格符)可以正确执行:cd/,cd.,dir/usr.copy/usr/boy mail 即命令名称与后边的“/”或“.”之间不需要空格也能正确执行。4.新增fc命令,实现两个文件的比较:命令形式:fc 5.新增batch命令,实现批处理:命令形式:batch batchfile 命令功能:从磁盘文件batchfile逐行读入命令行执行,直到batchfile中所有命令行都执行完毕为止。6.完善copy命令,改善某些缺陷:正确的功能应该是:若当前目录中不存在文件boy,则报错;第2个命

4、令若当前目录是根目录,因根目录没有父目录,故应报错;若当前目录的父目录中已经存在名为boy的文件,也报错(或询问用户是否覆盖)。其他情况上述命令都应能正确执行。 课 程 设 计(上 机 实 习)报 告设 计 说 明 书(说明书的撰写要求请参看封里的“报告填写说明3”。篇幅不够可附页)1修改md命令 流程图如下:课 程 设 计(上 机 实 习)报 告 设计思想:程序的指令格式为md user |rh,需改为md user rh格式,因此可在md user |rh中修改代码实现修改功能。要实现此功能,只需要获取目录的属性时删除判断操作符“|”的过程即可。具体方法:在GetAttrib函数中删除如下

5、代码: if (str0!=|) coutn命令中属性参数错误。n; return -1; 修改后的操作方法:输入mduserrh即可正确执行 截图如下: 2修改Help命令 流程图如下:课 程 设 计(上 机 实 习)报 告设计思想:利用switch(n) case语句实现选择只查看需了解的操作命令。 具体方法:首先利用cout语句输出改操作系统所拥有的命令.并用数字标明,供用户选择,再利用switch(n)case语句实现具体内容的介绍。例如: cout 1.create t; case 1:cout create n 创建新文件,文件属性是r、h或s。n; break; 运行效果如下:

6、3修改命令行预处理程序 流程图如下: 设计思想:在命令行预处理函数ParseCommand( )中进行修改,使以下命令行(命令与参数间无空格符)可以正确执行:cd/,cd.,dir/usr,copy/usr/boy mail具体方法:在ParseCommand( )处理cd/,dir/usr等情况的代码中增加处理“.”的代码。 for (i=0;comd0i!=0;i+) if (comd0i=/) /处理cd/,dir/usr等情况 break; else if (comd0i=. & comd0i+1=.) break; 4新增fc命令,实现两个文件的比较流程图如下: 设计思想:首先利用P

7、rocessPath()函数和FindFCB()函数查找文件的目录所在首块号和文件所在首块号,判断其存在性,并记录其全路径名。如果需要比较的文件都存在的话则进行比较。 具体实现:int FcComd(int k) if(k!=2) cout出错:输入命令格式错误,请重新输入endl; return false; short int i,j=0,s1,s2,size1,size2,s,s3; char attrib=0,*FileName,*FileName1,Buffer1,Buffer2; FCB* fcbp ,*fcbp1,*fcbp2 ; s=ProcessPath(comd1,File

8、Name,k,0,20);/取FileName所在目录的首块号 if (s1) /路径错误 return s; /失败,返回 s1=FindFCB(FileName,s,attrib,fcbp); /取FileName的首块号(查其存在性) fcbp1=fcbp; if (s10) coutn要比较的文件不存在。n; return -1; s3=ProcessPath(comd2,FileName1,k,0,20);/取FileName1所在目录的首块号 if (s31) /路径错误 return s3; /失败,返回 s2=FindFCB(FileName1,s3,40,fcbp); /取F

9、ileName的首块号(查其存在性) fcbp2=fcbp; if (s20) coutFsize; /取文件一的长度 size2=fcbp2-Fsize; /取文件二的长度 if(size1=0&size2|size2=0&size1) cout两个文件的长度不同:endl; cout文件FileName的长度size1endl; cout文件FileName的长度size2endl; cout0&s20) for(i=0;iSIZE;i+,j+) if(j=size1&j=size2) break; Buffer1=Disks1i; /读第一个文件内容 Buffer2=Disks2i; /

10、读第二个文件内容 if(Buffer1!=Buffer2) /比较 cout文件FileName长度为:size1endl; cout文件FileName长度为:size2endl; cout第一个不同字节的位置为第j+1个字节endl; cout此时两个文件的字符分别为Buffer1和Buffer2endl; return false; if(iSIZE) break; /结束while循环,避免进入死循环 if(j=size1&j=size2) cout两文件内容相同endl; cout文件长度为:size1; return true; return 1;效果图如下:5新增batch命令,

11、实现批处理流程图如下: 设计思想:batch命令从磁盘文件batchfile逐行读入命令行执行,直到batchfile中所有命令行都执行完毕为止。 具体方法:int BatchComd(int k) short i,s,size,jj=0,x=0, y=0; char attrib=0,*FileName; char gFileNamePATH_LEN; /存放文件全路径名 FCB* fcbp; if(k!=1) coutn命令参数中应该只有一个文件名。n; return -1; else s=ProcessPath(comd1,FileName,k,0,020);/取FileName所在目录

12、的首块号 if (s1) /路径错误 return s; /失败,返回 s=FindFCB(FileName,s,attrib,fcbp); /取FileName的首块号(查其存在性) strcpy(gFileName,temppath); i=strlen(temppath); if (temppathi-1!=/) strcat(gFileName,/); strcat(gFileName,FileName); /构造文件的全路径名 if (s0) coutn文件gFileName不存在。n; return -3; if (s=0) coutn文件gFileNameFsize; char Buffer10050; /分配动态内存空间 while (s0) for (i=0;iSIZE;i+,jj+) if (jj=size) break; if(Disksi=n) Bufferxy=0; coutBufferxendl; x+; y=0; else Bufferxy=Disksi; y+; if (iSIZE) Bufferxy=0; break; s=FATs; for(i=0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1