版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级操作作系统实实验报告告姓 名名:学 号号:专 业业:任 课 教 师:20144年011 月118 目录TOC o 1-3 h z u HYPERLINK l _Toc168672456 一、课程程设计题题目和目目的 PAGEREF _Toc168672456 h 1 HYPERLINK l _Toc168672457 二、课程程设计要要求 PAGEREF _Toc168672457 h 1 HYPERLINK l _Toc168672458 三、程序序设计思思想 PAGEREF _Toc168672458 h 1 HYPERLINK l _Toc168672459 四、文件件系统的的实现
2、PAGEREF _Toc168672459 h 22 HYPERLINK l _Toc168672460 1.数据据结构设设计 PAGEREF _Toc168672460 h 2 HYPERLINK l _Toc168672461 2.程序序功能图图 PAGEREF _Toc168672461 h 3 HYPERLINK l _Toc168672462 3.实体体关系图图 PAGEREF _Toc168672462 h 3 HYPERLINK l _Toc168672463 4.数据据流图 PAGEREF _Toc168672463 h 44 HYPERLINK l _Toc168672464
3、 5.程序序流程图图 PAGEREF _Toc168672464 h 5 HYPERLINK l _Toc168672465 (1) 建立立文件:creeatee(文件件名,记记录长度度) PAGEREF _Toc168672465 h 6 HYPERLINK l _Toc168672466 (2) 写文文件:wwritte(文文件名,开始位位置,字字符串) PAGEREF _Toc168672466 h 7 HYPERLINK l _Toc168672467 (3) 读文文件:rreadd(文件件名,开开始位置置,长度度) PAGEREF _Toc168672467 h 8 HYPERLIN
4、K l _Toc168672468 (4) 显示示文件所所有内容容 tyype(文件名名) PAGEREF _Toc168672468 h 8 HYPERLINK l _Toc168672469 (5) 删除除文件ddeleete(文件名名) PAGEREF _Toc168672469 h 9 HYPERLINK l _Toc168672470 (6) 重命命名文件件renn(文件件名,新新文件名名) PAGEREF _Toc168672470 h 10 HYPERLINK l _Toc168672471 (7) 查询询文件属属性assk(文文件名) PAGEREF _Toc168672471
5、 h 11 HYPERLINK l _Toc168672472 (8) 关闭闭文件cclosse(文文件名) PAGEREF _Toc168672472 h 12 HYPERLINK l _Toc168672473 五、程序序运行结结果及分分析 PAGEREF _Toc168672473 h 133 HYPERLINK l _Toc168672474 六、课程程设计总总结 PAGEREF _Toc168672474 h 155 HYPERLINK l _Toc168672475 七、参考考文献 PAGEREF _Toc168672475 h 16 HYPERLINK l _Toc1686724
6、76 八、附录录 PAGEREF _Toc168672476 h 17北京联合大学第 PAGE 45页 共 NUMPAGES 48页一、课程程设计题题目和目目的通过模拟拟文件系系统的实实现,深深入理解解操作系系统中文文件系统统的理论论知识,加深对对教材中中的重要要算法的的理解。同时通通过编程程实现这这些算法法,更好地地掌握操操作系统统的原理理及实现现方法,提高综综合运用用各专业业课知识识的能力力。二、课程程设计要要求通过组长长分工,我主要要完成了了如下几几个功能能的操作作:1创建建文件:从命令令中得到到文件名名,得到到该文件件的文件件长度,建立文文件。修修改目录录表。4读文文件:rreadd
7、文文件名 显显示开始始字节 显显示的字字节数 ,直直接显示示所需要要的字节节数。5写文文件:wwritte 文件名名 插入的的位置 插插入的内内容6修改改属性:修修改文件件属性文文件名,文件权权限,文文件长度度等。三、程序序设计思思想阅读操作作系统方方面的书书籍,了了解操作作系统的的文件系系统原理理。结合合分析课课程设计计要求,确定实实体以及及它们之之间的关关系。实实体关系系有三张张表(磁磁盘空间间分配表表、文件件表、打打开文件件表)、一个模模拟磁盘盘的数组组、命令令服务和和用户构构成。用用户负责责输入命命令。命命令服务务实现命命令的解解释、命命令检查查、命令令帮助以以及调用用相关模模块执行行
8、相应的的命令功功能。文件夹打打开是则则把文件件夹名称称及其地地址压入入打开文文件夹栈栈,文件件关闭则则把文件件夹名称称及其地地址从打打开文件件夹栈中中抛出。文件打开开则把文文件的名名称及其其父指针针写到文文件列表表同时置置文件打打开标志志为1,文件关关闭则把把文件从从打开列列表中删删除,同同时置文文件打开开指针为为0,文文件读取取和写入入都要检检查文件件是否在在文件打打开列表表中,未未打开文文件不能能读写,只读文文件不能能写,只只写文件件不能读读。文件夹和和文件创创建,文文件夹和和文件的的创建首首先检验验目录是是否为空空,为空空则把文文件夹或或文件连连接到该该目录下下,不为为空则把把检查目目录
9、下是是否有同同名文件件夹或文文件,有有则提示示创建不不成功,没有则则把文件件夹或文文件连接接到该目目录下的的最后一一个子节节点,作作为它的的兄弟节节点。文件夹和和文件的的删除,文件夹夹下没有有打开的的文件或或文件没没有打开开才能删删除,否否则删除除失败,删除文文件夹时时利用了了中序历历遍来删删除子树树。四、文件件系统的的实现1.数据据结构设设计通过分析析课程设设计要求求,具体体设计出出如下数数据结构构:typeedeff sttrucct uuof /文件属属性chaar ffileenamee144; /文件名名字int modde; /文文件的权权限0-reaadonnly;1-wwrit
10、teonnly;2-rreadd/wrriteeintt leengtth; /文件件长度intt adddr; /物物理块号号int staate; /00-建立立,1-建立int reaadpttr; ;通过结构构体,将将文件名名字、文文件在磁磁盘的开开始位置置、文件件长度、文件最最大长度度、文件件类型、创建时时间结合合在一起起。文件件类型,本模拟拟程序使使用txxt类型型。设置置一个线线性表来来存储文文件。2.程序序功能图图模拟文件系统创建文件删除文件条件读取写入文件查询属性显示内容显示目录重命名文件关闭文件文件系统统提供的的文件操操作有建建立文件件(crreatte)、删除文文件(dd
11、eleete)、条件件读取文文件(rreadd)、写写入文件件(wrritee)、查查询文件件的属性性(assk)、显示文文件所有有内容(typpe)、重命名名文件(renn)、关关闭文件件(cllosee)。可可以通过过键盘输输入命令令来模拟拟文件的的操作。通过eexitt命令退退出程序序。3.实体体关系图图用 户命令服务模拟磁盘磁盘空间分配表文件表打开文件表命令服服务使得得用户能能够输入入命令,在需要要时提供供命令的的帮助。同时能能够分析析命令,调用相相应的命命令模块块对模拟拟磁盘、磁盘空空间分配配表、文文件表、打开文文件表进进行操作作。磁盘盘空间分分配表记记录模拟拟磁盘的的使用情情况。文
12、文件表记记录文件件的信息息和在磁磁盘里的的位置等等信息。打开文文件表记记录已打打开的文文件,对对应文件件表中的的文件信信息,和和文件表表里的文文件节点点类似,记录了了文件在在模拟磁磁盘中的的信息。4.程序序流程图图模拟文件件系统提提供的文文件操作作有建立立(crreatte),读取(reaad),显示(typpe),删除(dettelee),写写入(wwritte),关闭(cloose),重命命名(rren)和查询询(assk)。在模拟拟程序中中可从键键盘上输输入文件件操作命命令来模模拟各用用户程序序中所调调用的各各种文件件操作,用一个个结束命命令(eexitt)停止止程序的的执行。开始系统格
13、式化Y/N/输入命令命令表中有该命令?分析命令显示:命令帮助无创建删除读取显示重命名写入查询列表关闭退出程序(exit)执行命令执行命令(1) 创建建文件:creeatee(文件件名,记记录长度度)模拟文件件系统进进行“创建文件件”的处理理流程如如下:开始查询文件表文件表中有名字?返回有显示重命申请磁盘空间空间申请成功?显示失败否返回无在磁盘分配表中登记登记:长度=0,最大长度=申请长度,开始位置申请节点位置空闲情况占用在文件表中登记登记:长度=0,最大长度=建立长度,开始位置分配位置文件类型txt,时间当前时间在打开文件表中登记登记:信息和文件表中类似显示创建成功返回(2) 写文文件:wwr
14、itte(文文件名,开始位位置,字字符串)模拟文件件系统进进行“建立文文件”的处理理流程如如下:开始查询打开文件表查询文件表在打开文件表里?不在在文件表里?显示无文件返回不在写进模拟磁盘在在读取文件记录write参数合法?合法显示成功返回显示参数非法非法(3) 读文文件:rreadd(文件件名,开开始位置置,长度度)模拟文件件系统进进行“读取文件件”的处理理流程如如下:开始查询文件表在打开文件表里?不在在文件表里?显示无文件返回不在在在读取文件记录read参数合法?非法显示参数非法返回根据参数读取模拟磁盘里的记录返回合法五实验验程序说说明:1.创建建文件:2.打开开文件:3.写文文件:4.修改
15、改文件属属性:六、课程程设计总总结通过本次次的课程程设计,使我能能够正确确运用操操作系统统课程中中所学的的基本理理论和知知识,加加深了对对文件系系统基本本概念的的理解,以及磁磁盘文件件系统的的文件操操作。还还有让我我感受挺挺深的是是对软件件工程方方法的应应用。设设计一个个软件,先要做做好需求求分析,这一点点很重要要,如果果没有分分析好需需求,到到软件设设计的最最后,发发现所做做的功能能不符合合要求,那么一一切都得得重做,前面所所有的努努力都付付诸东流流。在程程序设计计的开始始,由于于分析工工作做得得不够深深入和细细致,吃吃了点小小苦头。对于这这样一个个小设计计来说,都会吃吃苦头,要是大大工程更
16、更是无法法想像,有可能能会项目目失败。以后得得加强对对软件工工程的学学习。另另外在运运用C语语言的时时候,感感觉有点点生疏,在组织织语言时时时而出出错,在在编程和和调试的的过程中中,经常常会出现现意想不不到的问问题,并并非每个个问题都都可以从从相关资资料中找找到解决决方法,有些问问题是无无法预料料到的,这就需需要通过过自己理理性的分分析得出出问题的的解决方方案。在设计过过程中,查询了了不少相相关资料料,不断断的发现现问题、提出问问题、解解决问题题。在对对自己所所编写的的源程序序段的纠纠错的过过程中,使我更更好的理理解了操操作系统统中文件件系统的的理论知知识,同同时在编编程时用用到了模模块化的的
17、设计思思想,这这种编程程方法可可以使我我们的编编程变的的更简单单,可以以使我们们的查错错与纠错错变的更更方便。总的来来说通过过这次的的设计的的学习使使我学到到了很多多在平时时的学习习中学不不到的很很多东西西,通过过这次课课程设计计,使我我对操作作系统和和编程产产生兴趣趣,我想想我会在在这条路路上继续续前进下下去。我我相信,只要不不断的严严格要求求自己,注意培培养自己己的思维维能力,就一定定会有更更大更辉辉煌的发发展和提提高。七、参考考文献1美AAbraahamm Siilbeerscchattz PPeteer BBaerr Gaalviin GGregg Gaagnee 郑扣扣根 译译.OP
18、PERAATINNG SSYSTTEM CONNCEPPTSSixxth Ediitioon 操作系系统概念念.高等等教育出出版社,20004,0012(美)RRogeer SS.Prresssmann 著 梅宏 译.软软件工程程-实践践者的研研究方法法.机械械工业出出版社,20002,0093蔡蔡启先.C语言言程序设设计教程程(第二二版).重庆大大学出版版社,220033,0774朱朱战立.数据结结构.西西安电子子科技大大学出版版社,220033,055八、附录录1.程程序源代代码及注注释/ 编译工工具:VVisuual c+ 6.0 / / 作者:小楚楚*smmilll 、蓝色的的天空 /
19、 邮件:qvbb20997411511633.coom / / 复制、传播请请保留作作者信息息,谢谢谢! / /#inccludde #inccludde #inccludde #inccludde #inccludde voidd fiileCCreaate(chaar *filleNaame,intt fiileLLengght); /创创建文件件voidd fiileDDel(chaar *filleNaame); /删删除文件件voidd fiileRReadd(chhar *fiileNNamee,innt pposttionn,innt llengght);voidd fiileW
20、Writte(ccharr *ffileeNamme,iint possitiion,chaar *s); /函函数声明明voidd fiileAAsk(chaar *filleNaame); /查查询文件件属性voidd fiileTTypee(chhar *fiileNNamee); /显显示文件件内容voidd fiileRRen(chaar *filleNaame,chaar *newwNamme); /重重命名文文件voidd fiileDDir(); /列列出所有有文件voidd fiileCClosse(ccharr *ffileeNamme); /关关闭一个个文件int ree
21、queestDDiskk(innt *staartPPosiitioon,iint *maaxLeengtth); /分配磁磁盘空间间/模拟拟磁盘空空间charr diisk100000; /磁盘盘空间管管理 struuct freeeDiiskTTablle intt sttartt; /开始位位置intt leengtth; /占用长长度intt maaxLeengtth; /最大长长度intt usseFllag; /使用标标志,11为占用用,0为为空闲;/文件件表struuct filleTaableechaar ffileeNamme220; /文件件名字intt sttartt;
22、/开始始位置intt leengtth; /文件件长度intt maaxLeengtth; /最大大长度 chaar ffileeKinnd88; /文件件种类,此默认认为txxtstrructt tmm *ttimeeinffo; /文文件创建建时间;/打开开文件表表struuct opeenFiileTTabllechaar ffileeNamme220; /文文件名字字chaar ffileeKinnd88; /文文件类型型intt sttartt; /文文件开始始位置intt leengtth; /文文件长度度intt maaxLeengtth; /最最大长度度intt oppenCC
23、ounnt; /打打开文件件的进程程数strructt tmm *ttimeeinffo; /文文件创建建时间;/typeedeff sttrucct ffreeeDisskTaablee LiinDaataTTypee; /定义义链表的的数据类类型#inccludde LinnLisst.hh /链表操操作集合合SLNoode *frreeDDiskkTabbleHHeadd; /定义磁磁盘分配配表链表表 头指指针#deffinee MaaxSiize 1000 /定义线线性表 最大长长度typeedeff sttrucct ffileeTabble SeqqDattaTyype; /定义线
24、线性表数数据类型型#inccludde SeqqLisst.hh /线线性表操操作集合合SeqLListt L; /文件表表,模拟拟文件操操作嘛,文件数数不多,故可以以用 线线性表,简化操操作_struuct opeenFiileTTablle OOFT10; /打打开文件件表数组组int OFTT_coountt=0; /打打开文件件表占用用长度voidd maain()strructt orrderrTabble /命令表表chhar namme88; ;chaar oordeerInnputt300; /存储储用户输输入的命命令字符符串chaar oordeerNaame8; /命令令名
25、字chaar ffileeNamme220; /命令参参数1,是文件件名字chaar pparaametter226; /命令参参数2,是个数数字chaar pparaametter33300; /命令参参数3,是字符符串或数数字strructt orrderrTabble u99; /命令表表intt i=0; intt fllag=0; /用用户输入入串 读读写位置置 标志志intt fllagOOrdeer=-1;/LinnLisstInnitiiatee(&ffreeeDisskTaableeHeaad);/磁磁盘空间间分配键键表初始始化strructt frreeDDiskkTabb
26、le temmp; temmp.llenggth=0;temmp.mmaxLLenggth=100000;temmp.sstarrt=00;temmp.uuseFFlagg=0;if(!LiinLiistIInseert(freeeDiiskTTablleHeead,0,ttempp)prrinttf(初始磁磁盘空闲闲表失败败!);syysteem(pauuse);exxit(0);/文文件表初初始化SeqqLisstInnitiiatee(&LL); /初初始化 文件表表/forr(i=0;ii2;i+) forr(innt jj=0;j22;j+)syysteem(collor fc);p
27、rrinttf(nnnnnnnnnnnn 计 0466 何珠珠举 操操作系统统课程设设计nn);foor(iint k=00;k3000000000;k+);syysteem(clss);syysteem(collor f3);prrinttf(nnnnnnnnnnnn 计 0466 何珠珠举 操操作系统统课程设设计nn);foor(kk=0;k);ffflussh(sstdiin); /清清空缓冲冲区geets(ordderIInpuut); /获获取用户户输入串串iff(!sstrccmp(ordderIInpuut,exiit)exxit(0); /当用户户输入 exiit 退退出程序序
28、syysteem(clss); /清屏屏foor(ii=0;ordderIInpuutii!= &oordeerInnputti!=0;i+)/以空空格为界界 分解解用户输输入串oordeerNaamei=ordderIInpuutii;fllag=i;/保存存读写指指针iff(fllag6) /命令名名长度 小于66pprinntf(输入入的命令令有误,请重新新输入!n);cconttinuue ;orrderrNammeii=0;fllagOOrdeer=-1; /初始化化标志位位,fllagOOrdeer 指指明命令令在命令令表中的的位置foor(ii=0;i99;i+)iif(!str
29、rcmpp(orrderrNamme,uui.naame)flaagOrrderr=i; /记记录命令令的位置置,以便便访问breeak;iff(fllagOOrdeer=-1)pprinntf(你输输入的命命令有误误!请重重新输入入!nn);cconttinuue ;/以空格格为界,分解字字符串,分解出出第一个个字符串串放到ffileeNamme中foor(ii=fllag+1;oordeerInnputti!= &orrderrInpputi!=0;i+)ffileeNammeii-fllag-1=ordderIInpuutii;fiileNNameei-flaag-11=0; /为字字符
30、串数数组 置置一个结结束标志志/fllag=i; /下下一个字字符串 读写指指针iff(!sstrccmp(filleNaame,?) /显显示命令令帮助sswittch(flaagOrrderr)ccasee 0: priintff(创创建一个个文件 格式 creeatee ffileenammefilleleengtthn);priintff(例例如: creeatee a11 10000 ,将创创建名为为a1,长度为为10000字节节的文件件n);breeak;ccasee 1:priintff(删删除一个个文件 格式 delletee ffileenamme n);priintff(例
31、例如: delletee a11,将删删除名为为a1的的文件n);breeak;ccasee 2: priintff(读读取一个个文件 格式 reaad fillenaamepoostiionleengtthn);priintff(例例如: reaad aa1 88 3,从a11文件第第8个字字节开始始,显示示3字节节内容n);breeak;ccasee 3:priintff(写写一个文文件 格式式 wrritee ffileeNammeposstioonconntenn n);priintff(例例始: wriite a1 15 tesst,从从a1文文件第115字节节开始写写入 ttest
32、t 字符符串nn);breeak;ccasee 4:priintff(显显示文件件的属性性,格式式 assk fillenaamen); priintff(例例如 aask a1 ,将显显示文件件 a11的属性性n);breeak; ccasee 5:priintff(显显示文件件的所有有内容,格式 typpe fillenaamen);priintff(例例如 ttypee a11,将显显示文件件 a11的所有有内容n);breeak;ccasee 6:priintff(重重命名一一个文件件,格式式 reen olddFilleNaameneewFiileNNameenn);priintff
33、(例例如reen aa1 bb1 ,将a11改名为为b1n);breeak;ccasee 7:priintff(显显示所有有文件,例如 dirr,将显显示所有有文件n);breeak;caase 8:priintff(关关闭文件件,格式式 cllosee ffileeNammen);priintff(例例如,cclosse aa1,将将关闭文文件a11n);breeak;ddefaaultt:priintff(命命令错误误);ggetcch();ellsesswittch(flaagOrrderr)/对相应应的命令令 进行行参数处处理ccasee 0:intt Teemp4=1,10,1000
34、,10000;intt suum=00;intt leen=00;forr(i=flaag+11;orrderrInpputi!= &ordderIInpuutii!=00;ii+)parrameeterr2ii-fllag-1=ordderIInpuutii;parrameeterr2ii-fllag-1=00; /为为字符串串数组 置一个个结束标标志flaag=ii; lenn=sttrleen(pparaametter22); /求求字符串串数组的的长度forr(i=0;iileen;ii+) /把第第二个参参数 字字符串变变成整数数summ=suum+(innt)pparaamette
35、r22leen-ii-1-488)*TTemppi;filleCrreatte(ffileeNamme,ssum); /将命命令和参参数 传传给建文文件模块块执行breeak;ccasee 1:filleDeel(ffileeNamme); /删除文文件 breeak;ccasee 2:intt Teemp4=1,10,1000,10000;intt suum=00;intt leen=00;intt suum2=0;/forr(i=flaag+11;orrderrInpputi!= &ordderIInpuutii!=00;ii+)parrameeterr2ii-fllag-1=ordder
36、IInpuutii;parrameeterr2ii-fllag-1=00;flaag=ii; lenn=sttrleen(pparaametter22); /求求字符串串数组的的长度forr(i=0;iileen;ii+) /把第第二个参参数 字字符串变变成整数数summ=suum+(innt)pparaametter22leen-ii-1-488)*TTemppi;/forr(i=flaag+11;orrderrInpputi!= &ordderIInpuutii!=00;ii+)parrameeterr3ii-fllag-1=ordderIInpuutii; /把把第三个个参数变变成整型型
37、parrameeterr3ii-fllag-1=00;flaag=ii; lenn=sttrleen(pparaametter33);forr(i=0;iileen;ii+)summ2=ssum22+(intt)paarammeteer3lenn-i-1-48)*Teempi;filleReead(filleNaame,summ,suum2); /调用用读文件件模块breeak;ccasee 3:intt Teemp4=1,10,1000,10000;intt suum=00;intt leen=00;/forr(i=flaag+11;orrderrInpputi!= &ordderIInpu
38、utii!=00;ii+)parrameeterr2ii-fllag-1=ordderIInpuutii;parrameeterr2ii-fllag-1=00;flaag=ii; lenn=sttrleen(pparaametter22); /求求字符串串数组的的长度forr(i=0;iileen;ii+) /把第第二个参参数 字字符串变变成整数数summ=suum+(innt)pparaametter22leen-ii-1-488)*TTemppi;/forr(i=flaag+11;orrderrInpputi!= &ordderIInpuutii!=00;ii+)parrameeterr3
39、ii-fllag-1=ordderIInpuutii; /获获取第三三个参数数,为字字符串parrameeterr3ii-fllag-1=00;flaag=ii; /filleWrritee(fiileNNamee,suum,pparaametter33); /调调用写文文件模块块 breeak;ccasee 4:filleAssk(ffileeNamme); /查询文文件属性性breeak;ccasee 5:filleTyype(filleNaame); /显示示文件内内容breeak;ccasee 6:forr(i=flaag+11;orrderrInpputi!= &ordderIInp
40、uutii!=00;ii+)parrameeterr2ii-fllag-1=ordderIInpuutii;parrameeterr2ii-fllag-1=00;flaag=ii; filleReen(ffileeNamme,pparaametter22);breeak;ccasee 7:filleDiir();breeak;ccasee 8:filleCllosee(fiileNNamee);breeak;ddefaaultt:priintff(错错误!没没有可执执行的命命令);/以上上主函数数,主函函数进行行数据结结构的定定义 分分析用户户输入的的命令。/提供供命令帮帮助。把把命令和和参数
41、,传递给给执行模模块/voidd fiileCCreaate(chaar *filleNaame,intt fiileLLenggth)/没没有写到到打开文文件表intt i=0;timme_tt raawtiime;intt sttarttPossitiion=0; /文文件开始始位置,等磁盘盘分配函函数 返返回值intt maaxLeengtth=ffileeLenngthh;strructt fiileTTablle ttempp;forr(i=0;iiL.sizze;ii+)if(!sttrcmmp(ffileeNamme,LL.liisti.filleNaame) /判断断是否重重名
42、,如如果重名名直接返返回prrinttf(文件重重名,请请取别的的名字!n);reeturrn ; /文件重重名,退退出创建建函数 if(!reequeestDDiskk(&sstarrtPoosittionn,&mmaxLLenggth)prrinttf(申请磁磁盘空间间失败!无法建建立文件件!nn);reeturrn ; /申请磁磁盘空间间失败,退出创创建函数数strrcpyy(teemp.filleNaame,filleNaame); strrcpyy(teemp.filleKiind,txxt); /设置置文件类类型为 txtttemmp.llenggth=0; /创建建的时候候,还没
43、没写入内内容,是是空文件件,长度度设为00temmp.mmaxLLenggth=filleLeengtth; /文件的的最大长长度temmp.sstarrt=sstarrtPoosittionn; /文件的的开始位位置timme(&rawwtimme); /获取时时间temmp.ttimeeinffo=llocaaltiime(&raawtiime); /把时时间写到到结构体体里去if(!SeeqLiistIInseert(&L,L.ssizee,teemp) /把文文件 插插入到文文件表prrinttf(插入文文件表失失败!n);syysteem(pauuse);exxit(0); /把文件
44、件插入到到 文件件表,如如果失败败,退出出程序priintff(成成功创建建文件!nn);priintff(=n);priintff(文文件名 长度 最大长长度 类型型 开开始位置置n);/显示示刚建立立的文件件priintff(%s ,ttempp.fiileNNamee);priintff(%d ,teemp.lenngthh);priintff(%d ,temmp.mmaxLLenggth);priintff(%s ,teemp.filleKiind);priintff(%d ,teemp.staart);priintff(n=n);priintff(ccreaate进进程打开开了文件件
45、%s,关闭请请用cllosee命令!nn,filleNaame);/写写到打开开文件表表strrcpyy(OFFTOOFT_couunt.fiileNNamee,teemp.filleNaame);strrcpyy(OFFTOOFT_couunt.fiileKKindd,teemp.filleKiind);OFTTOFFT_ccounnt.lenngthh=teemp.lenngthh;OFTTOFFT_ccounnt.maxxLenngthh=teemp.maxxLenngthh;OFTTOFFT_ccounnt.staart=temmp.sstarrt;OFTTOFFT_ccounnt.o
46、peenCoountt=1;OFTTOFFT_ccounnt.timmeinnfo=temmp.ttimeeinffo;OFTT_coountt+; /打开开表 记记录的是是文件数数 /pprinntf(coountt%d,OFFT_ccounnt);voidd fiileDDel(chaar *filleNaame)intt i;intt fllag=0; intt k=0; /记记录文件件在 文文件表中中的位置置SLNNodee *pp; /磁盘盘空间分分配表 指针SeqqDattaTyype x; /存存储被删删除的结结点,无无特殊意意义forr(i=0;iiOFFT_ccounnt;i
47、i+) /判断是是否被别别的进程程占用,若被占占用,打打印出错错,直接接返回 if(!sttrcmmp(ffileeNamme,OOFTi.filleNaame)pprinntf(别的的进程占占用文件件!无法法删除!);rretuurn ;forr(i=0;iineext!=NUULL;p=pp-nnextt)iif(pp-nnextt-ddataa.sttartt=LL.liistk.staart)p-nexxt-datta.uuseFFlagg=0;priintff(成成功删除除!nn);breeak;SeeqLiistDDeleete(&L,k,&x);/从从文件表表中删除除voidd
48、fiileRReadd(chhar *fiileNNamee,innt pposiitioon,iint lenngthh)intt i;intt fllag=0;intt k=0;forr(i=0;iiOFFT_ccounnt;ii+) /查查找文件件打开表表,如果果存在,则不需需要再查查找文件件表iff(!sstrccmp(filleNaame,OFTTi.fiileNNamee)kk=i;fflagg=1;OOFTi.opeenCoountt+;/多多个进程程打开,计算器器加1bbreaak;if(flaag!=1) /文文件不在在打开表表,找到到它,并并写到打打开表最最后foor(ii
49、=0;iLL.siize;i+)iif(!strrcmpp(fiileNNamee,L.lisstii.ffileeNamme) /找到文文件,写写到文件件打开表表strrcpyy(OFFTOOFT_couunt.fiileNNamee,L.lisstii.ffileeNamme);strrcpyy(OFFTOOFT_couunt.fiileKKindd,L.lisstii.ffileeKinnd);OFTTOFFT_ccounnt.lenngthh=L.lisstii.llenggth;OFTTOFFT_ccounnt.maxxLenngthh=L.lisstii.mmaxLLenggth;
50、OFTTOFFT_ccounnt.staart=L.llistti.sttartt;OFTTOFFT_ccounnt.timmeinnfo=L.llistti.tiimeiinfoo;OFTTOFFT_ccounnt.opeenCoountt+;k=OOFT_couunt;/OOFT_couunt=1;/初次次打开,赋值为为1flaag=11; /标志志在打开开文件表表里if(flaag=1)iff(poosittionnOOFTk.lenngthh)pprinntf(读取取参数错错误,请请检查参参数!n);rretuurn ;foor(ii=0;illenggth;i+)pprinntf(%
51、cc,ddiskkOFFTkk.sstarrt+pposiitioon+ii-1); /读读取内容容prrinttf(nrreadd进程打打开了文文件%ss,关闭闭请用cclosse命令令!nnn,fiileNNamee);voidd fiileWWritte(ccharr *ffileeNamme,iint possitiion,chaar *s)/找到到文件,写到打打开表,根据打打开表操操作intt i=0;intt leen=00; /计算算写入字字串长度度,跟原原来长度度相加,如果超超过最大大长度,就失败败intt k=0; /如果果在 打打开表里里打到记记录,则则记录位位置intt
52、fllag=0; /如如果fllag=1,说说明在打打开表里里找到了了,不用用在文件件表里找找了lenn=sttrleen(ss);forr(i=0;iiOFFT_ccounnt;ii+)iff(!sstrccmp(filleNaame,OFTTi.fiileNNamee)kk=i;fflagg=1;OOFTi.opeenCoountt+;/多多个进程程打开,计算器器加1bbreaak;if(flaag!=1) /文文件不在在打开表表,找到到它,并并写到打打开表最最后foor(ii=0;iOFFTkk.mmaxLLenggth)pprinntf(超过过文件最最大长度度,写入入失败!n);rre
53、tuurn ;ellse if(possitiionOFTTk.leengtth)pprinntf(插入入位置非非法!请请检查参参数nn);rretuurn ;ellseiint j=00;ffor(i=OOFTk.lenngthh-1;i=OFTTk.sttartt+poosittionn;i)ddiskki+lenn=ddiskki; /给给插入的的字符串串 空出出位置ffor(i=OOFTk.staart+possitiion;iOOFTk.staart+possitiion+lenn;i+,jj+)ddiskki=sj; /写进磁磁盘ffor(i=00;iL.ssizee;i+) /改
54、变文文件长度度if(!sttrcmmp(ffileeNamme,LL.liisti.filleNaame)L.llistti.leengtth=LL.liisti.lenngthh+leen; /设置文文件长度度breeak; OOFTk.lenngthh=OFFTkk.llenggth+lenn; /同时更更新打开开文件表表中文件件的长度度pprinntf(成功功写入!n);pprinntf(wrritee进程打打开了文文件%ss,关闭闭请用cclosse命令令!nnn,fiileNNamee);elssepriintff(无无此文件件,请输输入正确确的文件件名!);voidd fiileA
55、Ask(chaar *filleNaame)intt i;intt fllag=0;forr(i=0;iiOFFT_ccounnt;ii+) /如果在在打开表表里 找找到文件件,则不不用再找找文件表表iff(!sstrccmp(filleNaame,OFTTi.fiileNNamee)pprinntf(文件件名:%snn,OOFTi.filleNaame);pprinntf(类型型:%ssn,OFFTii.ffileeKinnd);pprinntf(长度度:%ddn,OFFTii.llenggth);pprinntf(打开开进程数数:%ddn,OFFTii.oopennCouunt);ppri
56、nntf(创建建时间:%sn,ascctimme(OOFTi.timmeinnfo);fflagg=1;bbreaak;if(flaag!=1)foor(ii=0;iLL.siize;i+) /从从文件表表里查找找文件iif(!strrcmpp(fiileNNamee,L.lisstii.ffileeNamme)priintff(文文件名:%sn,L.llistti.fiileNNamee);priintff(类类型:%snn,LL.liisti.filleKiind);priintff(长长度:%dnn,LL.liisti.lenngthh);priintff(创创建时间间:%ssn,ass
57、ctiime(L.llistti.tiimeiinfoo);flaag=11;breeak;if(flaag=0)priintff(无无此文件件!nn);voidd fiileTTypee(chhar *fiileNNamee)intt i;intt fllag=0;intt k=0;forr(i=0;iiOFFT_ccounnt;ii+)iff(!sstrccmp(filleNaame,OFTTi.fiileNNamee)kk=i;fflagg=1;OOFTi.opeenCoountt+;/多多个进程程打开,计算器器加1bbreaak;if(flaag!=1) /文文件不在在打开表表,找到到
58、它,并并写到打打开表最最后foor(ii=0;iLL.siize;i+)iif(!strrcmpp(fiileNNamee,L.lisstii.ffileeNamme) /找到文文件,写写到文件件打开表表strrcmpp(OFFTOOFT_couunt.fiileNNamee,L.lisstii.ffileeNamme);strrcmpp(OFFTOOFT_couunt.fiileKKindd,L.lisstii.ffileeKinnd);OFTTOFFT_ccounnt.lenngthh=L.lisstii.llenggth;OFTTOFFT_ccounnt.maxxLenngthh=L.liss
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 暑假安全专题节目观后感(31篇)
- 期中考试学生发言稿范文15篇
- 有关新学期的计划范文合集十篇
- 绿色殡葬服务提升方案
- 漫谈商品房逾期交付的诉讼时效问题
- 科技巡视方案
- 山东面试模拟46
- 建筑垃圾处置项目规划设计方案
- 化工公司企划书
- 体育与健康教育教案
- 送货简易合同范本(2篇)
- 七年级上册音乐教案 人音版
- 某小区住宅楼工程施工组织设计方案
- 3-4单元测试-2024-2025学年统编版语文六年级上册
- 2025届湖北省武汉市新洲一中阳逻校区高二上数学期末学业水平测试模拟试题含解析
- 2024年新青岛版六年级上册(六三制)科学全册知识点
- 2024河南郑州热力集团限公司招聘(高频重点提升专题训练)共500题附带答案详解
- 中国手语文化智慧树知到答案2024年上海大学
- 2024年度山东省招聘社区工作者试题及答案
- GB/T 43934-2024煤矿土地复垦与生态修复技术规范
- 赴美国自由行旅行英文行程单模板(面签必备)
评论
0/150
提交评论