版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.PAGE :.;PAGE 17课程设计报告姓 名: 班 级: 学 号: 指点教师: 年 月 日目录 TOC o 1-2 u 一、课程设计的目的与要求 PAGEREF _Toc264157599 h 11、目的: PAGEREF _Toc264157600 h 12、要求: PAGEREF _Toc264157601 h 1二、简述课程设计内容、主要功能和实现环境 PAGEREF _Toc264157602 h 21、主要功能: PAGEREF _Toc264157603 h 22、主要设计内容: PAGEREF _Toc264157604 h 23、运转环境: PAGEREF _Toc264
2、157605 h 2三、义务的分析、设计、实现和讨论 PAGEREF _Toc264157606 h 31、义务的分析 PAGEREF _Toc264157607 h 32、义务的设计与实现分别给出系统总控和本人担任实现的算法流程图与阐明 PAGEREF _Toc264157608 h 43、操作过程和结果分析 PAGEREF _Toc264157609 h 74、思索题的解答和讨论 PAGEREF _Toc264157610 h 11四、课程设计小结收获、缺乏与建议 PAGEREF _Toc264157611 h 12五、附录(主要源程序和运转结果的清单) PAGEREF _Toc26415
3、7612 h 13一、课程设计的目的与要求1、目的:随着社会信息量的极大增长,要求计算机处置的信息与日俱增涉及到社会生活的各个方面。因此,文件管理是操作系统的一个极为重要的组成部分。学生应该运用独立的高级言语来编写一个简单和可操作的文件操作系统,模拟文件管理的工程运作。从而对各种文件操作指令的本质内容和过程原理有比较深化的了解,掌握他们的实施方法加深了解课堂上讲授过的知识。我小组需求实施的文件管理是义务六,包括文件系统的:建立,封锁以及写的功能。2、要求:1设计一个多n用户的文件系统,每个用户户最多保管m个文件。2限制用户在一次运转中只能翻开一个文件。3系统应能检查打入命令的正确性,出错是要可
4、以显示出错的缘由。4对文件的权限必需有维护措施,假设只能运转,允许读,允许写等。在每次翻开文件时,根据本次翻开的要求,设置维护级别,即可有二级维护。5对文件的操作表述中必需有以下指令: 建立: create() 删除: delete() 翻开: open() 封锁 close() 读: read() 写: write()二、简述课程设计内容、主要功能和实现环境此次实验的根本内容就是完成一个可执行的文件系统管理的操作系统。1、主要功能:一个由10个用户的操作系统,每个用户最多保管10个文件,一次运转中用户可翻开5个文件。系统对相应的操作判别操作性的正确与否并进入相应的菜单运转。为运用者提供了操作
5、的方便,不需求敲代码来实现程序的功能。该程序设置了用户登入,创建文件,翻开文件,封锁文件,写文件以及对用户文件总体概略的结果显示。另外,为了更加真实的反响该系统的对文件可执行程度的判别,添加了维护码控制文件的读写操作的平安性。2、主要设计内容:1本实习设计一个10个用户的文件系统,每个用户最多可保管10个文件,每个文件名都为单个字符,一次运转中用户可翻开5个文件。2程序采用二级文件目录,即设置了主文件目录MFD和用户文件目录UFD。前者应包含文件主即用户及他们的目录区指针;后者应给出每个主文件占有的文件目录,即文件名,维护码,文件长度以及他们存放的位置等。另外为翻开文件设置了运转文件目录AFD
6、,在文件翻开时应填入翻开文件号,本次翻开维护码和读写指针等。3为了便于实现,对文件的读写作了简化,在执行读写命令时,只修正读写指针,并不进展实践文件的读写操作。3、运转环境: 课程设计的实现环境是在WINXP2000下运转Microsoft Visual C+和在WINXP2000下运转WORD2003。三、义务的分析、设计、实现和讨论1、义务的分析1、整个源程序采用一维数组来定义。用户登录采用最简单的选择型,总共设置10位用户,登陆即选择相对应的用户名。文件目录的检索是运用了简单的线性搜索,而没有采用哈希等有效的算法。该设计的程序的维护码方式采取简单的单字符,分为3种,其中分别是0-只可读,
7、1-只可写,2-可读写。另外对于文件翻开与封锁的操作设置了单字节的标识符有,0-文件已封锁,1-文件未封锁。2、整个程序的规划应该是有7个函数,分别为Incitialize()初始化函数,create()建立文件函数,open()对文件的翻开函数,close()对文件的封锁函数,write()对文件的写函数,Show()显示概略信息的函数和main()主函数。每个函数都是实现改程序的重要环节。创建文件函数决议了整个程序的关键它需求准确的定义与算法。在定义函数时定义构造体,把需求的变量定义完好,整个程序主要还是经过数组的运用来完成的。经过数组来衔接主目录和用户目录来执行之后的操作。3、主文件目录
8、与用户目录的构造图如以下图1-1:UFDMFD用户名文件目录指针用户名文件目录指针用户名文件目录指针文件名维护码文件长度文件名文件名维护码文件长度文件名图1-1 文件系统目录构造图4、翻开文件目录如以下图图1-2所示:翻开文件号翻开维护码读写指针图1-2 翻开文件目录图2、义务的设计与实现分别给出系统总控和本人担任实现的算法流程图与阐明(1)、在编译程序实现功能的义务中,我主要担任最初的构造体定义,对关键变量的初始化以及对全程序的修正及完善。定义构造体以及变量是程序的开头,也是关键要素之一,对程序编译时所采用的算法进展了决议性作用。(2)、定义的构造体以一维数组的方式定义,便于组员之间相互了解
9、与编译。构造体定义:a、Mfd用户目录对象名类型阐明username9Char型数组用户名CountInt对用户数的计数器Ufd UFDFilenum文件构造体数组文件目录数组Mfd MFDUsernum 数组用户数的数组b、Afd 文件目录文件翻开目录对象名类型阐明OpenNoInt翻开文件号ProInt维护码Afd AFDOpennum数组翻开文件数c、Ufd文件目录对象名类型阐明FilenameChar文件名Proint文件维护码Lengthint文件长度FlagInt文件翻开标识号Afd AFDOpennum数组翻开文件数Ufd UFDFilenum数组文件数量(3)、初始化定义:in
10、t i,j=0;两个变量分别代表MFD和UFD中所指的当前位置MFDi.UFDj.filename=NULL;文件名设为空MFDi.UFDj.flag=0;翻开标识符为封锁MFDi.UFDj.length=0;长度为0MFDi.UFD=3;维护码不存在MFDi.UFDj.AFD-OpenNo=0;翻开目录号为0(4)、操作模拟流程:翻开文件号j翻开维护码AFDUFDMFD用户名用户k用户名文件i维护码文件长度文件名(5)、详细阐明:在设计方面,是按数组套数组的思想进展定义。即Mfd数组中套Ufd数组,再Ufd数组中套Afd数组。这样不需求指针的定义,也能很有效的找到用户所对的文件以及
11、文件和所对的文件翻开号。但是这样也有缺陷,需求定义很大的数组容量,占用了很多空间,另外,由于定义的是字符型而没有定义字符型数组,导致对于文件名的定义执行和输出只能实现单字节。(6)、总体设计概要:a、构造体定义完成后,将定以后的变量以及数组等信息放入各个函数进展编译操作,做为最主要的开头中心函数Create创建文件函数,编译者按照定义的构造体把要求的3位平安码改成了1位,由“0-2三个数字实现对文件的读写操作的维护,同时用了多个循环体来对操作者能够出现的误操作做了相应合理的处置,另外,“MFDk.UFDi.AFDi.OpenNo=count+;对翻开函数中翻开号的处置也提早完成。Create的
12、前往值为“return count;的值要在翻开函数中赋值给翻开号。Open和Close函数由另一位成员完成,其中Open翻开函数按照要求进展,一个循环体“while(iFilenum)翻开文件“MFDk.UFDi.flag=1;为标识码的设置,初始为0如今翻开后改为1。Close封锁函数中“if(MFDk.UFDi.flag=1判别标识码,“MFDk.UFDi.flag=0;文件封锁后将标识码的值改为0。我和另一位成员一同完成write()写文件函数的编译,“MFDk.UFD=1|MFDk.UFD=2和“if(MFDk.UFDi.flag=1);两句判别语能否可写入和能否
13、文件曾经翻开将维护码和标识码的作用发扬出来,并且写函数添加了将文件长度添加的功能“length=len+MFDk.UFDi.length;Show显示信息函数将之前保管的信息输出,以简明概要的输出该文件管理系统对文件操作后的信息,Show函数主要需求之前函数的保管任务,之前函数编辑成员未能将内容保管在各自的函数中,在之后的修正中得以实现,Write函数中 对长度的保管:“MFDk.UFDi.length=length;Create函数中 对文件名的保管:“MFDk.UFDi.filename=name;对维护码的保管:“MFDk.UFD=pro;对长度的保管:“MFDk.UFDi.l
14、ength=length;翻开码的保管:“MFDk.UFDi.AFDi.OpenNo=count+;主函数main的编译成员,是将用户函数与主函数合并,整个程序中没有用户函数user,并导致MDF构造体所定义的username9和count没有利用。将主界面显示格式设为菜单操作,这对于思索题的要求打到了效果。此外,其定义了9 个用户并经过9个if语句判别用户名的存在性运用switch语句施行对界面的选择菜单操作。b、程序的主要的流程构造如下所示,图1-5Close()Write()Create()否选择用户名能否存在该用户报告无此用户重新选择初始化运转文件表AFD输入菜单号是什么命令封锁程序o
15、pen()退出Show()建立文件写程序显示当前目录保管当前文件目录翻开文件开场图1-5 文件系统的总流程图3、操作过程和结果分析1用户登录:在操作界面中选择用户登录0-9以及错误操作如图1-6所示图1-6 选择用户图1-7用户输入错误重新输入2建立文件,选择1进入建立文件的界面,输入文件的名字,维护码以及长度即可,可以建立多个文件,文件b长度210维护码2;文件a长度341维护码1;文件名m长度93维护码0。以及错误操作创建同名文件图1-8 进入用户6并建立文件b图1-9 在用户6下建立文件a图1-9 在用户6下建立文件m图1-10 文件存在3翻开文件,可以选择2号键来翻开曾经建立的文件;假
16、设翻开没有建立的文件会显示。分别翻开b、a、m和未建立的文件c。图1-11 胜利翻开文件b图1-12 胜利翻开文件a图1-13 胜利翻开文件m图1-14 翻开不存在的文件效果图4封锁文件,选择菜单3号,即可封锁曾经建立并且翻开的文件。假设封锁不存在的文件就会提示该文件不存在。分别封锁b、a、m以及未建立的文件d。图1-15 封锁文件b图1-16 封锁文件a图1-17 封锁文件m图1-18 翻开没有建立的文件5写文件,选择4即可写文件,在写文件的时候需输入文件名,所需写入文件信息的长度,对被封锁的文件写入和被维护不能写入的文件以及对不存在的文件写入。分别对b文件写入长度310,总长度520;对a
17、文件写入510,总长度810;文件m写维护不能写入。再执行菜单3,封锁b文件,再对b文件写入。图1-19 写文件b图1-20 写文件a图1-21 写文件m图1-22 写未建立文件q图1-23 写已被封锁的文件b (6)显示文件,输入5,系统会打印出当前用户曾经输入的文件信息。 图1-24 显示文件信息7用户改换,假设想改换用户的话,输入6即可。图1-25 用户改换8退出系统,按7即可退出程序。4、思索题的解答和讨论对于思索题1,本次课程设计程序曾经运用了菜一方式操作,每幅屏幕要为用户提供足够的选择信息,不需求打入冗长的命令。该方式使整个操作界面简约明了,还提高了操作效率,同时也为运用者提供了方
18、便。详细代码如下:printf(%s,请输入对文件的命令:n1:建立n2:翻开n3:封锁n4:写n5:显示文件n6:用户切换n7:退出n);scanf(%d,&order);while(order!=7)switch(order)case 1:count=create(use,count);break;case 2:open(use);break;case 3:close(use);break;case 4:Write(use);break;case 5:Show(use);break;case 6:main();printf(%s,n请输入对文件的命令:n1:建立n2:翻开n3:封锁n4:写
19、n5:显示文件n6:用户切换n7:退出n);scanf(%d,&order);对于思索题3,以为应该设置一个访问权值,类似该课程设计中的维护码,2是可以访问上级菜单和下级菜单,1是只可以访问下一级菜单,0是只可以访问上级菜单。经过设置共享码来实现同一级的共享化,类似这次课程设计的flag翻开标识码。校长教务处科研处校务处一 系十系教学行政科教学研讨所研讨生科科研科情报资料室技术效力部财务科基建科房管科总务科一一一实验室一二教研室一三研讨室一一教研室一一三实验室一二教研室一三研讨室一一教研室四、课程设计小结收获、缺乏与建议五、附录(主要源程序和运转结果的清单)主要函数代码:void Inciti
20、alize()/初始化int i,j=0;for(i=0;iOpenNo=0;int create(int k,int count)int i=0,length,pro;char name;printf(%s,请输入文件名(单字符):);scanf(%s,&name);/getchar();while(iFilenum)if(MFDk.UFDi.filename!=NULL)if(MFDk.UFDi.filename=name)printf(%s,该文件曾经存在!);return count;i+;else break;if(i=Filenum)printf(%s,用户文件已满,不可再创建!)
21、;return count;printf(%s,请输入文件的长度:);scanf(%d,&length);printf(%s,请输入文件的维护码(0-只可读 1-只可写 2-可读写):);scanf(%d,&pro);for(i=0;iFilenum;i+)if(MFDk.UFDi.filename=NULL)MFDk.UFDi.filename=name;MFDk.UFDi.length=length;MFDk.UFD=pro;MFDk.UFDi.AFDi.OpenNo=count+;printf(%s,创建胜利!);break;return count;void open(int
22、 k)int i=0;int pro,OpenNo;char name;printf(%s,请输入文件名:);scanf(%s,&name);while(iFilenum)if(MFDk.UFDi.filename=name)printf(输入该文件维护码:);scanf(%s,&pro);printf(该文件的翻开码为:);printf(%dn,MFDk.UFDi.AFDi.OpenNo);printf(文件曾经翻开!);MFDk.UFDi.flag=1;return;elsei+;if(i=Filenum)printf(%s,不存在该文件!n);void close(int k)int i=0;char name;printf(请输入文件名:);scanf(%s,&name);while(iFilenum)if(MFDk.UFDi.filename=name)if(MFDk.UFDi.flag=1)printf(%s,文件曾经胜利封锁!n);MFDk.UFDi.flag=0;return;else printf(文件本已处于封锁形状!n);return;else i+;if(i=Filenum)printf(%s,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蛇咬伤现场及院内分级救治指南
- 新生儿胃管喂养操作指南
- 宁夏银川贺兰 2026 乡村振兴岗公务员招录考试试卷 招聘 2 人
- 洛阳洛龙 2026 年房产销售岗位入职综合测评试题 招聘 39 人
- 河北邢台沙河 2026 市场监管岗公务员招录测评试题 招聘 6 人
- 高中二年级劳动技术《金秋果韵-锥栗的采收、加工与品质鉴评》教学设计
- 小学六年级下册综合实践活动《读万卷书行万里路》两课时教学设计
- 高中信息技术必修“表格信息的加工与表达”教学设计
- 高中信息技术选修3《网站的规划与设计》教学设计
- 小学三年级科学《周围的生物》教学设计
- 2023成德眉资中医考试题及答案
- 《2025患者身份识别管理标准》解读
- 《中华人民共和国水法》解读培训
- 教师信息化培训材料
- 九年级数学教学计划与实施方案
- 2025年防雷检测专项资格考试试题及答案
- 开采加工11万吨油砂、生产3万吨沥青油及8万吨尾砂项目可行性研究报告
- 贵州省望谟县2025年上半年公开招聘城市协管员试题含答案分析
- DB11T 593-2025 高速公路清扫保洁质量与作业要求
- 中国石油和化工勘察设计协会电气设计专业委员会公告2025版
- 癫痫的中医护理
评论
0/150
提交评论