操作系统课程设计---文件系统的模拟_第1页
操作系统课程设计---文件系统的模拟_第2页
操作系统课程设计---文件系统的模拟_第3页
操作系统课程设计---文件系统的模拟_第4页
操作系统课程设计---文件系统的模拟_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计说明书 no.29文件系统的模拟1.课程设计的目的这学期我们学习了操作系统,如今世界上的电脑早已普及,而在电脑中,操作系统的地位是众多软件不能及的,也是电脑最好的帮手。它能够实现人机交换和实现人为操作等特点。它还有利于软件的维护和继承,是电脑的必备。为了进一步巩固课堂上所学到的知识,深刻把握操作系统的重要概念及其特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了操作系统程序设计课程设计。让学生自己动手动脑,将书本上的知识运用到实践当中去,使知识能更好的融会贯通。为了达到这个目的,我们需要自己动手做一个操作系统的课程设计,在这个课程设计里我们需要根据我们手中现有的

2、和已学过的软件与知识基础,独立的将它完成,只有这样,我们才能把理论变成实践,将知识真正的做到学以致用。这次课程设计主要研究了利用已学的操作系统、c语言、java等语言和知识来利用操作系统概念和其中的一门或几门语言来编辑一个文件系统的模拟。用课程设计来巩固所学操作系统基本知识,增进操作系统编辑的基本功,掌握操作系统的运用,拓展操作系统的应用。并通过自己动手,自主的学习,对操作系统这门课程有更深的了解与认识。2.设计方案论证2.1概要设计操作系统(英语:operating system,简称os)是一个管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统是一个庞大的管理控制程序,

3、大致包括5个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。引入文件系统是用于存储和组织计算机文件机器包含的数据的方法,是操作系统的核心构件之一。其与操作系统内存管理、设备管理、进程调度紧密联系,运行过程是一个不可视的复杂过程。在实际的教学过程中,仅靠语言表述和一些辅助图都难以阐述清楚其工作原理。因此,体现出了文件系统的重要性。它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。2.2程序流程图在我的设计中,采用标准c来实现底层函数,如:格式化磁盘模块、进入和退出系统模块 、用户登录注销模块、用户管理模块、目录管理模

4、块、创建、删除和重命名文件模块、打开关闭文件模块、 读写文件模块等。2.2.1详细设计用户界面:主要是显示用户的登录信息,提供一个登录和退出按钮。主界面:里面显示出用户的所有文件夹与及文件,在窗口的左边通过一个treeview显示出来,提供了良好的操作性。窗口的右边显示选中的文件夹的内含文件的目录,也既实现显示出文件目录的功能。通过右键可以对选定的文件或者文件夹进行操作。包括创建文件,创建文件夹,重命名,删除,打开,关闭,读,写等几项操作。退过模拟的方式,模拟文件系统的实现。2.2.2程序设计改变目录:cd目录名,工作目录转移到指定的目录下。目录不存在时,给出错误信息。创建文件:edit文件名

5、,创建一个指定名字的新文件,即在目录中增加一项,不考虑文件的内容。对于重名文件给出错误信息。删除文件:del文件名,当没在用户使用指定文件时,将其删除。文件不存在时给出错误信息。显示目录:dir目录名,显示指定目录下的全部文件和第一级子目录,如果没有指定目录名,则显示当前目录下的相应内容。创建目录:md目录名,在指定路径下创建指定的目录,如没有指定路径,则在当前目录下创建指定的目录。对于重名目录给出错误信息。删除目录:rd目录名,删除指定目录及其下的全部文件和子目录。如果指定目录为空,可直接删除,否则给出用户提示是否删除。其他说明:目录名和文件名都支持全路径名和相对路径名。文件名由目录结构中各

6、级文件名分量排列构成,各分量间用“/”隔开。输入exit命令可退出此模拟文件管理系统。3.程序运行结果及调试分析3.1程序运行结果主界面创建两个用户登陆用户aa,并且未aa创建文件输入文件相关信息读取文件内容显示所有文件用户退出3.2程序结果分析该程序能较好的实现文件系统的模拟中的建立文件、打开文件、读文件、写文件、关闭文件、删除文件、建立目录、显示目录内容、显示文件内容、结束系统等基本功能。4.课程设计设计体会经过短暂的一周多的操作系统的程序设计,使我又学到了很多知识,尤其是运用操作系统知识去解决实际问题的能力又得到了很大的提高。尽管所设计的程序比较简单,但是程序中的每个功能的实现都经过了自

7、己的一定认真的思考。由于把所学的知识做到很灵活的运用在实际中,对于现在的我还有一定的难度,故而,在设计的每个的环节中,都会多多少少的遇到一些问题,这就促使我去查阅各种资料,或者请教老师和同学,极大的提高我的专业素养,同时对在有些书上的理论知识在实际的运用,以及应该注意的问题有了比较深刻的认识。当然,仍然有些理论问题不是很好的去运用,或者是了解的不深刻。这就使我在实践中所设计的程序有些功能并不是自己所想的那样的完美。不过,既然发现了问题的所在,我就不会放弃,直至问题得到解决。这些也同时反映出了平时运用知识去实践这方面做的太少,太缺乏经验。对所设计中将要面临的问题认识不够。是操作系统课程设计让我认

8、识到了这些问题的存在。同时给我提供了去面对这些问题的平台。也使我充分的认识到在以后应该怎样去实践,怎样去学习一门计算机的课程或者语言,以及如何去运用这门课程或语言去解决实际问题等等。本次实验过程中,还有的bug需要修改,在输入文件相关信息过程中,尽管设置了允许读、写操作,但在测试时有时就允许,有时又不允许进行这样的操作,这都有待日后的完善。通过本实验,综合了以往实验的要求,实现了一个模拟的文件管理系统,比较大的工作量使我紧一部清楚各个用户管理和文件管理之间的联系,在登陆用户后对文件进行的操作都分别用到各自的函数实现,从上而下,逐步深入,基本符合结构化的要求。通过实验,训练了我的编程技巧,掌握相

9、关文件系统管理的知识,逐渐熟悉操作系统的基本管理流程,有助于日后程序编写工作。总之,在经过这次操作系统的课程设计,使我认识到了自己很多的缺点,也是我学到新知识和新方法的一个机会。这给我在以后继续学好这门语言指明了方向。最后真心的感谢老师在我学习过程中和课程设计过程中对我的认真指导和耐心的帮助!5.参考文献1潘新民, 王燕芳. 微型计算机控制技术m, 第2版. 北京: 电子工业出版社, 2003.4:305-3502 范立南, 谢子殿. 单片机原理及应用教程m. 北京: 北京大学出版社, 2006.1:123-1303 谢宋和, 甘 勇. 单片机模糊控制系统设计与应用实例m. 北京: 电子工业出

10、版社, 1999.5:20-254 范立南, 韩晓微, 王忠石等. 基于多结构元的噪声污染灰度图像边缘检测研究j. 武汉大学学报(工学版), 2003,49(3):45-495卜小明, 龙全求. 一种薄板弯曲问题的四边形位移单元j. 力学学报, 1991,23(1):53-606.附录:各功能模块的主要代码#include#includeusing namespace std;#include#include #include#define getp(type) (type*)malloc(sizeof(type)/*全局变量的定义*#define null 0#define max 100/

11、*结构体定义*struct mfd/用户结构体struct ufd *link;/指向文件struct mfd *next;/指向用户后继节点char name10;/用户名*user=null;struct ufd/文件结构体char name10;struct afd *link;/指向文件信息struct ufd *next;/指向文件后继节点;struct afd/文件内容int size ;/文件大小char state3;/允许读、写、执行,对应位为1;不允许读、写、执行,对应位为0char context100;/文件内容bool open_flag;/文件是否运行标识位;/*自

12、定义函数*/*文件处理函数*void linkufd(mfd *b,ufd *p)/作业按照达到先后尽心连接if(b-link=null)b-link=p;b-link-next=null;elseufd *q;q=b-link;while(q&strcmp(q-name,p-name) q=q-next;if(q!=null)/对重命名进行出错处理delete p;printf(ttt error,文件重名n);else/正常情况下进行处理ufd *a;a=b-link;while(a-next)a=a-next;p-next=a-next;a-next=p;/创建文件函数void crea

13、teufd(mfd *b)int num;printf( 创建文件数:); /输入创建的文件数量cinnum;ufd *q;q=b-link;/cout *输入文件信息*endl;/输入文件的相关信息for(int i=1;ilink=getp(afd);cout 输入第i个q-name;coutq-link-state;coutq-link-context;q-link-size=strlen(q-link-context);q-next=null;linkufd(b,q);/coutttt *link;coutttt -endl;if(r=null)/对没有文件进行处理coutttt 用户

14、name中不存在文件endl;elsewhile(r)/显示文件的信息coutttt 文件名t文件大小t文件属性endl;coutttt namet;coutlink-sizett;coutlink-state0link-state1link-state2next;coutttt -link;ufd *a;printufd(b);if(r!=null)/保证系统有文件存在coutch;if(!strcmp(r-name,ch)/寻找要删除的文件,进行删除处理b-link=r-next;delete r;coutttt 用户name中的文件ch已删除.next;while(a&strcmp(a-

15、name,ch)r=a;a=a-next;if(a=null)coutttt 文件ch不存在next=a-next;coutttt 用户name中的文件name已删除.endl;delete a;/-/文件打开函数void openufd(mfd *b)char ch10;ufd *r;coutch;r=b-link;while(r&strcmp(r-name,ch)/寻找需要打开的文件r=r-next;if(r=null)/对文件不存在的处理coutttt 文件ch不存在link-state2=1)/可执行情况下coutttt 文件name正在运行.link-open_flag=true;e

16、lse/不可执行情况下coutttt 文件不允许执行操作endl;coutendl;/文件关闭函数void closeufd(mfd *b) char ch10;ufd *r;coutch;r=b-link;while(r&strcmp(r-name,ch)/寻找文件r=r-next;if(r=null)/对文件不存在的处理coutttt 文件ch不存在link-open_flag)/在运行情况下coutendlttt 文件name已经关闭!link-open_flag=false;else/不在运行下coutendlttt 文件name没有在运行endl;/文件读函数void readufd

17、(mfd *b)char ch10;ufd *r;coutch;r=b-link;while(r&strcmp(r-name,ch)/寻找文件r=r-next;if(r=null)coutttt 文件ch不存在link-state0=0)/文件不可读coutttt 文件name不允许读,无法执行此操作endl;else/文件可读coutttt 文件name的内容是: link-contextendl;/-/文件写函数void writeufd(mfd *b)char ch10;ufd *head;coutch;head=b-link;while(head&strcmp(head-name,ch

18、)/寻找文件head=head-next;if(head=null)coutttt 文件ch不存在link-state1=1) /文件可写coutttt 请输入新的文件内容endl;coutttt 文件namehead-link-context;head-link-size=strlen(head-link-context);else/文件不可写coutttt 文件name不允许写。无法执行此操作endl;/用户注销函数void exitufd(mfd *b)coutttt 用户name已经注销endl;/文件界面显示函数void menuufd()coutttt *endl;couttttt

19、 1.创建文件ttendl;couttttt 2.删除文件ttendl;couttttt 3.查看文件ttendl;couttttt 4.关闭文件ttendl;couttttt 5.读出文件ttendl;couttttt 6.写入文件ttendl;couttttt 7.显示所有文件ttendl;couttttt 8.用户退出ttendl;coutttt *endl;/命令输入函数void comdufd(mfd *b)int a=1;char comd20;while(a!=8)system(cls);menuufd(); /显示界面coutttt 输入命令:; scanf(%s,comd);

20、/输入命令int comp;/进行命令处理if(!strcmp(comd,1) comp=1;else if(!strcmp(comd,2) comp=2;else if(!strcmp(comd,3) comp=3;else if(!strcmp(comd,4) comp=4;else if(!strcmp(comd,5) comp=5;else if(!strcmp(comd,6) comp=6;else if(!strcmp(comd,7) comp=7;else if(!strcmp(comd,8) comp=8;else comp=0;a=comp;switch(a)/根据命令选择相

21、应的函数case 1:createufd(b);break;case 2:deleteufd(b);break;case 3:openufd(b);break;case 4:closeufd(b);break;case 5:readufd(b);break;case 6:writeufd(b);break;case 7:printufd(b);break;case 8:exitufd(b);break;default:coutttt 输入命令有错,请重新输入endl; /命令输入有错处理break;coutttt press any key to continuenext=user;user=

22、p;elsemfd *q;q=user;while(q&strcmp(q-name,p-name)q=q-next;if(q!=null)delete p;coutttt 用户已经存在,不可进行此操作 next;while(a) b=a;a=a-next;b-next=p;p-next=a;/新用户创建函数void createmfd()int num;mfd *p;coutendl;coutnum;for(int i=1;i=num;i+)/进行保存p=getp(mfd);coutttt 输入第i位p-name;p-next=null;p-link=null;linkmfd(p);/用户显示

23、函数void printmfd()if(user=null)coutendlttt 系统无用户endl;elsemfd *p;p=user;coutttt 用户列表:;/显示用户列表while(p)coutnamenext;coutendl;/用户删除函数void deletemfd()char ch10;mfd *p;mfd *p1;if(user=null)/系统没有的处理coutttt error,不存在任何用户。endl;elsep1=user;coutttt 用户列表:;/显示用户列表while(p1)coutnamenext;coutendl;coutendlch;if(!strc

24、mp(user-name,ch)/寻找需要删除的用户,做相应删除处理p=user;user=user-next;while(p-link)deleteufd(p);cout输入任意键继续.;getch();coutttt 用户name内容已删除next;while(b&strcmp(b-name,ch)a=b;b=b-next;if(b=null)/对系统没有的用户进行处理coutttt 用户ch不存在next=b-next;while(b-link)deleteufd(b);coutttt press any key to continue.;getch();coutttt 用户name内容已删除end

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论