




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录第1章需求分析.1第2章概要设计.1系统的主要功能.1系统模块功能结构.1TOC o 1-5 h z2.3运行环境要求22.4数据结构设计2第3章详细设计.33.1模块设计3算法流程图.3第4章系统源代码.4第5章系统测试及调试.45.1运行结果及分析.45.2系统测试结论5第6章总结与体会.6第7章参考文献.6附录.7第1章需求分析通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识,加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思
2、路,并了解操作系统的发展动向和趋势。模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。第2章概要设计2.1系统的主要功能1)系统运行时根据输入的用户数目创建主目录2)能够实现下列命令:LoginCreateReadWriteDeleteMkdirCd用户登录建立文件读取文件写入文件删除文件建立目录切换目录Logout退出登录22系统模块功能结构2.3运行环境要求操作系统windowsxp,开发工具vc+6.02.4数据结构设计用户结构:账号与密码结构typedefstructuserscharname8;
3、charpwd10;users;本系统有8个默认的用户名,前面是用户名,后面为密码,用户登陆时只要输入正确便可进入系统,否则提示失败要求重新输入。usersusrarray8=usr1,usr1,usr2,usr2,usr3,usr3,usr4,usr4,usr5,usr5,usr6,usr6,usr7,usr7,usr8,usr8,;(3)数据结构说明文件结构链表structfnodecharfilenameFILENAME_LENGTH;intisdir;intisopen;charcontent255;fnode*parent;fnode*child;fnode*prev;fnode*n
4、ext;函数介绍fnode*initfile(charfilename,intisdir);/初始化文件或目录voidcreateroot();建立系统根目录intrun();系统运行intfindpara(char*topara);对参数进行处理boolchklogin(char*users,char*pwd);检查账号与口令voidhelp();命令列表intmkdir();建立目录intcreate。;建立文件intread();读取文件intwrite();写入文件intdel();删除文件intcd();切换目录intdir();文件与目录列表第3章详细设计3.1模块设计此课程设计把
5、文本作为研究对象来模拟操作系统的文件系统工作过程。所以用一个字符串数组来模拟磁盘空间,顾名思义,模拟磁盘提供字符的存储服务。所有用户构成一个数组,每个数组元素是一个结构体,每个结构体包括三部分,用户的用户名、用户密码和文件链表(由于模拟文件系统的文件数量不多,故文件表采用线性链表来存储。线性表每个结点放置一个文件的FCB,其中存储一个文件的信息,文件名、长度、类型、创建时间等);磁盘空间分配表,采用链表结构,每个节点保存模拟磁盘的一个逻辑块的信息,包括块的最大长度,文件占用长度,占用标志。如果占用标志为0,即该空间可分配给文件。初始化磁盘空间分配表链表,首先把整个模拟磁盘作来一块,并置占用位为
6、0。当有进程申请磁盘空间时,从头开始遍历,检查占用位,如果该块为可分配,则检查块大小,若块长度大于或等于申请空间大小,则把块的前一部分(等于申请大小)分配给文件,并置标志位为占用。剩下的大小作来一个新块,作来一个新节点插入到原节点的后边,标志位为可用。这样就实现了模拟磁盘的线性分配。3.2算法流程图见附录51运行结果及分析第4章系统源代码第5章系统测试及调试序会退出不再执行。序会退出不再执行。命令览命令览录录录交交交交目目登V取待ZZ晝建读写蚩:支持多线程create:read:virite二del:vnkd.iv二cd:logout:lintix:/create文件建立成功录录录交交交交目目
7、登V取待ZZ晝建读写蚩:支持多线程52系统测试结论从运行结果截图中可以看到,程序分别执行了它所包含的7个功能,并且每个功能都能正确的执行。若程序执行开始,三次都未输入正确的帐号和密码,程D:DebugCppl.exE-.0_回I直模拟Llnux系统卩甘吕:Lisrl-usrS苛码:lispI-lispB祢只有三讽机会来试验账号Loin二aPa.33=aLogin=aPass:aLocfinPass:aPressans1keytocontinue第6章总结与体会虽然我们做过很多次课程设计了,但是感觉自己还有好多需要学习的地方,接到题目要求时,设计大体的框架,考虑好所使用的数据结构,然后用高级编程
8、语言分模块的把架子的思路编写出来,调试,运行,再看看是不是符合题目的要求,上网找些资料,看看想想是不是要提高要求,才可以满足实际的需要,最后把收集的劳动成果组合起来,一个小程序终于成型了,虽然每次的过程差不多都一样,但是每次都会有不同的体会。通过本次的课程设计,使我能够正确运用操作系统课程中所学的基本理论和知识,加深了对文件系统基本概念的理解,以及磁盘文件系统的文件操作。在设计过程中,查询了不少相关资料,不断的发现问题、提出问题、解决问题。在对自己所编写的源程序段的纠错的过程中,使我更好的理解了操作系统中文件系统的理论知识,同时在编程时用到了模块化的设计思想,这种编程方法可以使我们的编程变的更
9、简单,可以使我们的查错与纠错变的更方便。总的来说通过这次的设计的学习使我学到了很多在平时的学习中学不到的很多东西,通过这次课程设计,使我对操作系统和编程产生兴趣,我想我会在这条路上继续前进下去。我相信,只要不断的严格要求自己,注意培养自己的思维能力,就一定会有更大更辉煌的发展和提高。第7章参考文献操作系统原理实验教程清华大学出版社胡峰松主编操作系统实验教程,清华大学出版社张丽芬等编著计算机操作系统实验教程,清华大学出版社颜彬等编著命令览命令览附录系统的主要源代码#includestdio.h#includeiostream.h#includestring.h#includeiomanip.h#
10、defineFILENAME_LENGTH10/文件名称长度#defineCOMMAND_LENGTH10/命令行长度#definePARA_LENGTH30/参数长度/账号结构typedefstructuserscharname8;charpwd10;users;/文件结构structfnodecharfilenameFILENAME_LENGTH;intisdir;intisopen;charcontent255;fnode*parent;fnode*child;fnode*prev;fnode*next;/账号usersusrarray8=usr1,usr1,usr2,usr2,usr3
11、,usr3,usr4,usr4,usr5,usr5,usr6,usr6,usr7,usr7,usr8,usr8,;fnode*initfile(charfilename,intisdir);voidcreateroot();intrun();intfindpara(char*topara);boolchklogin(char*users,char*pwd);voidhelp();intmkdir();intcreate();intread();intwrite();intdel();intcd();intdir();fnode*root,*recent,*temp,*ttemp;charpar
12、aPARA_LENGTH,commandCOMMAND_LENGTH,tempparaPARA_LENGTH,recentparaPARA_LENGTH;/创建文件与目录结点fnode*initfile(charfilename,intisdir)fnode*node=newfnode;strcpy(node-filename,filename);node-isdir=isdir;node-isopen=0;node-parent=NULL;node-child=NULL;node-prev=NULL;node-next=NULL;returnnode;/创建文件存储结点voidcreater
13、oot()recent=root=initfile(/,1);root-parent=NULL;root-child=NULL;root-prev=root-next=NULL;strcpy(para,/);intmkdir()temp=initfile(,1);cintemp-filename;if(recent-child=NULL)temp-parent=recent;temp-child=NULL;recent-child=temp;temp-prev=temp-next=NULL;elsettemp=recent-child;while(ttemp-next)ttemp=ttemp-
14、next;if(strcmp(ttemp-filename,temp-filename)=0&ttemp-isdir=1)printf(”对不起,目录已存在!);return1;ttemp-next=temp;temp-parent=NULL;temp-child=NULL;temp-prev=ttemp;temp-next=NULL;return1;intcreate()temp=initfile(,0);cintemp-filename;cintemp-content;if(recent-child=NULL)temp-parent=recent;temp-child=NULL;recen
15、t-child=temp;temp-prev=temp-next=NULL;coutvv文件建立成功!vvendl;elsettemp=recent-child;while(ttemp-next)ttemp=ttemp-next;if(strcmp(ttemp-filename,temp-filename)=0&ttemp-isdir=0)printf(“对不起,文件已存在!);return1;ttemp-next=temp;temp-parent=NULL;temp-child=NULL;temp-prev=ttemp;temp-next=NULL;coutvv文件建立成功!vvendl;r
16、eturn1;intdir()inti=0,j=0;temp=newfnode;temp=recent;if(temp!=root)cout.child=NULL)coutTotal:directorsifilesjchild;while(temp)if(temp-isdir)coutfilenameendl;i+;elsecoutfilenamenext;coutTotal:directorsifilesjfilename;if(recent-child=NULL)coutvv文件不存在!vvendl;return1;if(strcmp(recent-child-filename,filen
17、ame)=0)coutchild-contentchild;while(temp-next)if(strcmp(temp-next-filename,filename)=0)coutnext-contentendl;return1;coutvv文件不存在!filename;if(recent-child=NULL)coutvv文件不存在!vvendl;return1;if(strcmp(recent-child-filename,filename)=0)recent-child-isopen=l;设置文件标记为打开cinrecent-child-content;recent-child-iso
18、pen=0;设置文件标记为关闭coutvv文件写入成功!vvendl;returnl;elsetemp=recent-child;while(temp-next)if(strcmp(temp-next-filename,filename)=0)recent-child-isopen=l;设置文件标记为打开cintemp-next-content;recent-child-isopen=0;设置文件标记为关闭coutvv文件写入成功!vvendl;returnl;coutvv文件不存在!topara;if(strcmp(topara,.)=0)inti;while(recent-prev)rec
19、ent=recent-prev;if(recent-parent)recent=recent-parent;i=strlen(para);while(parai!=/&i0)i-;if(i!=0)parai=0;elseparai+l=0;elsefindpara(topara);returnl;intfindpara(char*topara)inti=0;intsign=l;if(strcmp(topara,/)=0)recent=root;strcpy(para,/);return1;temp=recent;strcpy(temppara,para);if(topara0=/)recent
20、=root-child;i+;strcpy(para,/);elseif(recent!=NULL&recent!=root)strcat(para,/);if(recent&recent-child)if(recent-isdir)recent=recent-child;elseprintf(“路径错误!n);return1;while(ichild)i+;if(recent-isdir)recent=recent-child;elseprintf(路径错误n);return0;strcat(para,/);while(toparai!=/&ifilename,recentpara)!=0|
21、(recent-isdir!=1)&recent-next!=NULL)recent=recent-next;if(strcmp(recent-filename,recentpara)=0)if(recent-isdir=0)strcpy(para,temppara);recent=temp;printf(“是文件不是目录。n);return0;strcat(para,recent-filename);if(strcmp(recent-filename,recentpara)!=0|recent=NULL)strcpy(para,temppara);recent=temp;printf(输入路
22、径错误n);return0;return1;intdel()charfilenameFILENAME_LENGTH;cinfilename;temp=newfnode;if(recent-child)temp=recent-child;while(temp-next&(strcmp(temp-filename,filename)!=0|temp-isdir!=0)temp=temp-next;if(strcmp(temp-filename,filename)!=0)coutvv不存在该文件!vvendl;return0;elsecoutvv不存在该文件!vvendl;return0;if(te
23、mp-parent=NULL)temp-prev-next=temp-next;if(temp-next)temp-next-prev=temp-prev;temp-prev=temp-next=NULL;elseif(temp-next)temp-next-parent=temp-parent;temp-parent-child=temp-next;deletetemp;coutvv文件已删除!vvendl;boolchklogin(char*users,char*pwd)inti;for(i=0;iv8;i+)if(strcmp(users,)=0)&(strcmp(pwd,usrarrayi.pwd)=0)returntrue;returnfalse;voidhelp(void)coutvv命令一览vvendl;coutvvendl;coutvvcreate:建立文件。vvendl;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒水购销标准合同文本格式
- 个人借款合同:公司与个人间的借贷协议
- 跨境冷链仓储设施建设合作合同
- 度技术引进合同
- 财产遗赠与扶养合同书
- 12《玩也有学问》 教学设计-2024-2025学年道德与法治一年级上册统编版
- 2023-2024学年清华版(2012)信息技术三年级上册 第二单元《6课 金鱼乐悠悠-“铅笔”、“橡皮”工具和移动》教学设计
- 设备供应合同(参考模板)
- 度房屋装修合同管理与监督协议
- 服务合同终止、解除标准范文
- 2024-2025年中国锂电池隔膜行业未来发展趋势分析及投资规划建议研究报告
- 软件系统项目实施方案(共3篇)
- 2025年山东药品食品职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2025年恩施市福牛物业有限公司招聘笔试参考题库含答案解析
- 《滚动轴承-》课件
- 2025年中国CAR-T免疫细胞治疗行业市场发展前景研究报告-智研咨询发布
- 妊娠期用药安全课件
- GB/T 44958-2024化工设备安全管理规范
- 《化妆品包装材料相容性试验评估指南》
- 2025年轧钢原料工技能考试题库
- 大学生考研规划
评论
0/150
提交评论