高級操作系統(tǒng)實驗報告課程設(shè)計_第1頁
高級操作系統(tǒng)實驗報告課程設(shè)計_第2頁
高級操作系統(tǒng)實驗報告課程設(shè)計_第3頁
高級操作系統(tǒng)實驗報告課程設(shè)計_第4頁
高級操作系統(tǒng)實驗報告課程設(shè)計_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、高級操作系系統(tǒng)實驗驗報告姓 名: 學(xué) 號: 專 業(yè): 任 課 教 師師: 2014年年01 月188 目 錄TOC o 1-3 h z u HYPERLINK l _Toc168672456 一、課程設(shè)設(shè)計題目目和目的的 PAGEREF _Toc168672456 h 1 HYPERLINK l _Toc168672457 二、課程設(shè)設(shè)計要求求 PAGEREF _Toc168672457 h 1 HYPERLINK l _Toc168672458 三、程序設(shè)設(shè)計思想想 PAGEREF _Toc168672458 h 1 HYPERLINK l _Toc168672459 四、文件系系統(tǒng)的實實現(xiàn)

2、 PAGEREF _Toc168672459 h 2 HYPERLINK l _Toc168672460 1.數(shù)據(jù)結(jié)結(jié)構(gòu)設(shè)計計 PAGEREF _Toc168672460 h 2 HYPERLINK l _Toc168672461 2.程序功功能圖 PAGEREF _Toc168672461 h 3 HYPERLINK l _Toc168672462 3.實體關(guān)關(guān)系圖 PAGEREF _Toc168672462 h 3 HYPERLINK l _Toc168672463 4.數(shù)據(jù)流流圖 PAGEREF _Toc168672463 h 4 HYPERLINK l _Toc168672464 5.

3、程序流流程圖 PAGEREF _Toc168672464 h 5 HYPERLINK l _Toc168672465 (1) 建立文文件:ccreaate(文文件名,記記錄長度度) PAGEREF _Toc168672465 h 6 HYPERLINK l _Toc168672466 (2) 寫文件件:wrritee(文件件名,開開始位置置,字符符串) PAGEREF _Toc168672466 h 7 HYPERLINK l _Toc168672467 (3) 讀文件件:reead(文文件名,開開始位置置,長度度) PAGEREF _Toc168672467 h 8 HYPERLINK l

4、_Toc168672468 (4) 顯示文文件所有有內(nèi)容 typpe(文文件名) PAGEREF _Toc168672468 h 8 HYPERLINK l _Toc168672469 (5) 刪除文文件deelette(文文件名) PAGEREF _Toc168672469 h 9 HYPERLINK l _Toc168672470 (6) 重命名名文件rren(文件名名,新文文件名) PAGEREF _Toc168672470 h 10 HYPERLINK l _Toc168672471 (7) 查詢文文件屬性性askk(文件件名) PAGEREF _Toc168672471 h 11 H

5、YPERLINK l _Toc168672472 (8) 關(guān)閉文文件cllosee(文件件名) PAGEREF _Toc168672472 h 12 HYPERLINK l _Toc168672473 五、程序運(yùn)運(yùn)行結(jié)果果及分析析 PAGEREF _Toc168672473 h 13 HYPERLINK l _Toc168672474 六、課程設(shè)設(shè)計總結(jié)結(jié) PAGEREF _Toc168672474 h 15 HYPERLINK l _Toc168672475 七、參考文文獻(xiàn) PAGEREF _Toc168672475 h 16 HYPERLINK l _Toc168672476 八、附錄 P

6、AGEREF _Toc168672476 h 17北京聯(lián)合大學(xué)第48頁 共51頁一、課程設(shè)設(shè)計題目目和目的的通過模擬文文件系統(tǒng)統(tǒng)的實現(xiàn)現(xiàn),深入入理解操操作系統(tǒng)統(tǒng)中文件件系統(tǒng)的的理論知知識, 加深對對教材中中的重要要算法的的理解。同時通通過編程程實現(xiàn)這這些算法法,更好地地掌握操操作系統(tǒng)統(tǒng)的原理理及實現(xiàn)現(xiàn)方法,提高綜綜合運(yùn)用用各專業(yè)業(yè)課知識識的能力力。二、課程設(shè)設(shè)計要求求通過組長分分工,我我主要完完成了如如下幾個個功能的的操作:1創(chuàng)建文文件:從從命令中中得到文文件名,得得到該文文件的文文件長度度,建立立文件。修修改目錄錄表。4讀文件件:reead 文件件名 顯示示開始字字節(jié) 顯示示的字節(jié)節(jié)數(shù) ,直

7、接接顯示所所需要的的字節(jié)數(shù)數(shù)。5寫文件件:wrritee 文文件名 插插入的位位置 插入入的內(nèi)容容6修改屬屬性:修修改文件件屬性 文件件名,文文件權(quán)限限,文件件長度等等。三、程序設(shè)設(shè)計思想想閱讀操作系系統(tǒng)方面面的書籍籍,了解解操作系系統(tǒng)的文文件系統(tǒng)統(tǒng)原理。結(jié)結(jié)合分析析課程設(shè)設(shè)計要求求,確定定實體以以及它們們之間的的關(guān)系。實實體關(guān)系系有三張張表(磁磁盤空間間分配表表、文件件表、打打開文件件表)、一一個模擬擬磁盤的的數(shù)組、命命令服務(wù)務(wù)和用戶戶構(gòu)成。用用戶負(fù)責(zé)責(zé)輸入命命令。命命令服務(wù)務(wù)實現(xiàn)命命令的解解釋、命命令檢查查、命令令幫助以以及調(diào)用用相關(guān)模模塊執(zhí)行行相應(yīng)的的命令功功能。文件夾打開開是則把把文件

8、夾夾名稱及及其地址址壓入打打開文件件夾棧,文文件關(guān)閉閉則把文文件夾名名稱及其其地址從從打開文文件夾棧棧中拋出出。文件打開則則把文件件的名稱稱及其父父指針寫寫到文件件列表同同時置文文件打開開標(biāo)志為為1,文文件關(guān)閉閉則把文文件從打打開列表表中刪除除,同時時置文件件打開指指針為00,文件件讀取和和寫入都都要檢查查文件是是否在文文件打開開列表中中,未打打開文件件不能讀讀寫,只只讀文件件不能寫寫,只寫寫文件不不能讀。文件夾和文文件創(chuàng)建建,文件件夾和文文件的創(chuàng)創(chuàng)建首先先檢驗?zāi)磕夸浭欠穹駷榭?,為為空則把把文件夾夾或文件件連接到到該目錄錄下,不不為空則則把檢查查目錄下下是否有有同名文文件夾或或文件,有有則提示

9、示創(chuàng)建不不成功,沒沒有則把把文件夾夾或文件件連接到到該目錄錄下的最最后一個個子節(jié)點點,作為為它的兄兄弟節(jié)點點。文件夾和文文件的刪刪除,文文件夾下下沒有打打開的文文件或文文件沒有有打開才才能刪除除,否則則刪除失失敗,刪刪除文件件夾時利利用了中中序歷遍遍來刪除除子樹。四、文件系系統(tǒng)的實實現(xiàn)1.數(shù)據(jù)結(jié)結(jié)構(gòu)設(shè)計計通過分析課課程設(shè)計計要求,具具體設(shè)計計出如下下數(shù)據(jù)結(jié)結(jié)構(gòu):typeddef strructt uoof /文文件屬性性charr fiilennamee144; /文件名名字int mmodee; /文件件的權(quán)限限0-rreaddonlly;11-wrriteeonlly;22-reead/w

10、riiteint lenngthh; /文件長長度int adddr; /物理理塊號int sstatte; /0-建立,11-建立立int reaadpttr; ;通過結(jié)構(gòu)體體,將文文件名字字、文件件在磁盤盤的開始始位置、文文件長度度、文件件最大長長度、文文件類型型、創(chuàng)建建時間結(jié)結(jié)合在一一起。文文件類型型,本模模擬程序序使用ttxt類類型。設(shè)設(shè)置一個個線性表表來存儲儲文件。2.程序功功能圖 模擬文件系統(tǒng)模擬文件系統(tǒng)創(chuàng)建文件刪除文件條件讀取寫入文件查詢屬性顯示內(nèi)容顯示目錄重命名文件關(guān)閉文件文件系統(tǒng)提提供的文文件操作作有建立立文件(creeatee)、刪刪除文件件(deelette)、條條件讀取

11、取文件(reaad)、寫寫入文件件(wrritee)、查查詢文件件的屬性性(assk)、顯顯示文件件所有內(nèi)內(nèi)容(ttypee)、重重命名文文件(rren)、關(guān)閉閉文件(cloose)??梢砸酝ㄟ^鍵鍵盤輸入入命令來來模擬文文件的操操作。通通過exxit命命令退出出程序。3.實體體關(guān)系圖圖用 戶命令服務(wù)用 戶命令服務(wù)模擬磁盤磁盤空間分配表文件表打開文件表命令服務(wù)務(wù)使得用用戶能夠夠輸入命命令,在在需要時時提供命命令的幫幫助。同同時能夠夠分析命命令,調(diào)調(diào)用相應(yīng)應(yīng)的命令令模塊對對模擬磁磁盤、磁磁盤空間間分配表表、文件件表、打打開文件件表進(jìn)行行操作。磁盤空間分配表記錄模擬磁盤的使用情況。文件表記錄文件的信

12、息和在磁盤里的位置等信息。打開文件表記錄已打開的文件,對應(yīng)文件表中的文件信息,和文件表里的文件節(jié)點類似,記錄了文件在模擬磁盤中的信息。4.程序流流程圖模擬文件件系統(tǒng)提提供的文文件操作作有建立立(crreatte),讀讀?。╮readd),顯顯示(ttypee),刪刪除(ddeteele),寫寫入(wwritte),關(guān)閉(cclosse),重命名名(reen)和和查詢(askk)。在在模擬程程序中可可從鍵盤盤上輸入入文件操操作命令令來模擬擬各用戶戶程序中中所調(diào)用用的各種種文件操操作,用用一個結(jié)結(jié)束命令令(exxit)停停止程序序的執(zhí)行行。開始開始系統(tǒng)格式化Y/N/輸入命令命令表中有該命令?分析命

13、令顯示:命令幫助無創(chuàng)建刪除讀取顯示重命名寫入查詢列表關(guān)閉退出程序(exit)執(zhí)行命令執(zhí)行命令(1) 創(chuàng)建文件件:crreatte(文文件名,記記錄長度度)模擬文件系系統(tǒng)進(jìn)行行“創(chuàng)建文件件”的處理理流程如如下:開始開始查詢文件表文件表中有名字?返回有顯示重命申請磁盤空間空間申請成功?顯示失敗否返回?zé)o在磁盤分配表中登記登記:長度=0,最大長度=申請長度,開始位置申請節(jié)點位置空閑情況占用在文件表中登記登記:長度=0,最大長度=建立長度,開始位置分配位置文件類型txt,時間當(dāng)前時間在打開文件表中登記登記:信息和文件表中類似顯示創(chuàng)建成功返回(2) 寫文件件:wrritee(文件件名,開開始位置置,字符符

14、串)模擬文件系系統(tǒng)進(jìn)行行“建立文文件”的處理理流程如如下:開始開始查詢打開文件表查詢文件表在打開文件表里?不在在文件表里?顯示無文件返回不在寫進(jìn)模擬磁盤在在讀取文件記錄write參數(shù)合法?合法顯示成功返回顯示參數(shù)非法非法(3) 讀文件件:reead(文文件名,開開始位置置,長度度)模擬文件系系統(tǒng)進(jìn)行行“讀取文件件”的處理理流程如如下:開始開始查詢文件表在打開文件表里?不在在文件表里?顯示無文件返回不在在在讀取文件記錄read參數(shù)合法?非法顯示參數(shù)非法返回根據(jù)參數(shù)讀取模擬磁盤里的記錄返回合法五實驗程程序說明明:1.創(chuàng)建文文件:2.打開文文件:3.寫文件件:4.修改文文件屬性性:六、課程設(shè)設(shè)計總結(jié)

15、結(jié)通過本次的的課程設(shè)設(shè)計,使使我能夠夠正確運(yùn)運(yùn)用操作作系統(tǒng)課課程中所所學(xué)的基基本理論論和知識識,加深深了對文文件系統(tǒng)統(tǒng)基本概概念的理理解,以以及磁盤盤文件系系統(tǒng)的文文件操作作。還有有讓我感感受挺深深的是對對軟件工工程方法法的應(yīng)用用。設(shè)計計一個軟軟件,先先要做好好需求分分析,這這一點很很重要,如如果沒有有分析好好需求,到到軟件設(shè)設(shè)計的最最后,發(fā)發(fā)現(xiàn)所做做的功能能不符合合要求,那那么一切切都得重重做,前前面所有有的努力力都付諸諸東流。在在程序設(shè)設(shè)計的開開始,由由于分析析工作做做得不夠夠深入和和細(xì)致,吃吃了點小小苦頭。對對于這樣樣一個小小設(shè)計來來說,都都會吃苦苦頭,要要是大工工程更是是無法想想像,有

16、有可能會會項目失失敗。以以后得加加強(qiáng)對軟軟件工程程的學(xué)習(xí)習(xí)。另外外在運(yùn)用用C語言言的時候候,感覺覺有點生生疏,在在組織語語言時時時而出錯錯,在編編程和調(diào)調(diào)試的過過程中,經(jīng)經(jīng)常會出出現(xiàn)意想想不到的的問題,并并非每個個問題都都可以從從相關(guān)資資料中找找到解決決方法,有有些問題題是無法法預(yù)料到到的,這這就需要要通過自自己理性性的分析析得出問問題的解解決方案案。 在設(shè)設(shè)計過程程中,查查詢了不不少相關(guān)關(guān)資料,不不斷的發(fā)發(fā)現(xiàn)問題題、提出出問題、解解決問題題。在對對自己所所編寫的的源程序序段的糾糾錯的過過程中,使使我更好好的理解解了操作作系統(tǒng)中中文件系系統(tǒng)的理理論知識識,同時時在編程程時用到到了模塊塊化的設(shè)設(shè)

17、計思想想,這種種編程方方法可以以使我們們的編程程變的更更簡單,可可以使我我們的查查錯與糾糾錯變的的更方便便。總的的來說通通過這次次的設(shè)計計的學(xué)習(xí)習(xí)使我學(xué)學(xué)到了很很多在平平時的學(xué)學(xué)習(xí)中學(xué)學(xué)不到的的很多東東西,通通過這次次課程設(shè)設(shè)計,使使我對操操作系統(tǒng)統(tǒng)和編程程產(chǎn)生興興趣,我我想我會會在這條條路上繼繼續(xù)前進(jìn)進(jìn)下去。我我相信,只只要不斷斷的嚴(yán)格格要求自自己,注注意培養(yǎng)養(yǎng)自己的的思維能能力,就就一定會會有更大大更輝煌煌的發(fā)展展和提高高。七、參考文文獻(xiàn)1美美Abbrahham Sillberrschhatzz Peeterr Baaer Gallvinn Grreg Gaggne 鄭扣根根 譯.OPEE

18、RATTINGG SYYSTEEM CCONCCEPTTSSSixtth EEdittionn 操操作系統(tǒng)統(tǒng)概念.高等教教育出版版社,220044,0112(美美)Roogerr S.Preessmman 著 梅梅宏 譯譯.軟件件工程-實踐者者的研究究方法.機(jī)械工工業(yè)出版版社,220022,0993蔡啟啟先.CC語言程程序設(shè)計計教程(第第二版).重慶大大學(xué)出版版社,220033,0774朱戰(zhàn)戰(zhàn)立.數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu).西安安電子科科技大學(xué)學(xué)出版社社,20003,05八、附錄1.程序序源代碼碼及注釋釋/ 編編譯工具具:Viisuaal cc+ 6.00 / / 作作者:小楚*smiill 、藍(lán)藍(lán)色的天天

19、空 / 郵郵件:m / / 復(fù)復(fù)制、傳傳播請保保留作者者信息,謝謝謝! / /#inclludee #inclludee #inclludee #inclludee #inclludee void filleCrreatte(ccharr *ffileeNamme,iint filleLeenghht); /創(chuàng)建建文件void filleDeel(ccharr *ffileeNamme); /刪除除文件void filleReead(chaar *filleNaame,intt poostiion,intt leenghht);void filleWrritee(chhar *fiileNNa

20、mee,innt pposiitioon,ccharr *ss); /函數(shù)數(shù)聲明void filleAssk(ccharr *ffileeNamme); /查詢詢文件屬屬性void filleTyype(chaar *filleNaame); /顯示示文件內(nèi)內(nèi)容void filleReen(ccharr *ffileeNamme,ccharr *nnewNNamee); /重命命名文件件void filleDiir(); /列出出所有文文件void filleCllosee(chhar *fiileNNamee); /關(guān)閉閉一個文文件int reqquesstDiisk(intt *sstar

21、rtPoosittionn,innt *maxxLenngthh); /分分配磁盤盤空間/模擬磁磁盤空間間char dissk1100000; /磁盤空空間管理理 strucct ffreeeDisskTaablee int staart; /開開始位置置int lenngthh; /占占用長度度int maxxLenngthh; /最最大長度度int useeFlaag; /使使用標(biāo)志志,1為為占用,00為空閑閑;/文件表表strucct ffileeTabblecharr fiileNNamee200; /文件名名字int staart; /開始位位置int lenngthh; /文件長長

22、度int maxxLenngthh; /最大長長度 ccharr fiileKKindd8; /文件種種類,此此默認(rèn)為為txttstruuct tm *tiimeiinfoo; /文件件創(chuàng)建時時間;/打開文文件表strucct oopennFilleTaableecharr fiileNNamee200; /文件件名字charr fiileKKindd8; /文件件類型int staart; /文件件開始位位置int lenngthh; /文件件長度int maxxLenngthh; /最大大長度int opeenCoountt; /打開開文件的的進(jìn)程數(shù)數(shù)struuct tm *tiimeii

23、nfoo; /文件件創(chuàng)建時時間;/typeddef strructt frreeDDiskkTabble LinnDattaTyype; /定義鏈鏈表的數(shù)數(shù)據(jù)類型型#inclludee LLinLListt.h /鏈鏈表操作作集合SLNodde *freeeDiiskTTablleHeead; /定定義磁盤盤分配表表鏈表 頭指針針#defiine MaxxSizze 1100 /定定義線性性表 最最大長度度typeddef strructt fiileTTablle SSeqDDataaTyppe; /定定義線性性表數(shù)據(jù)據(jù)類型#inclludee SSeqLListt.h /線性性表操作作集合

24、SeqLiist L; /文文件表,模模擬文件件操作嘛嘛,文件件數(shù)不多多,故可可以用 線性表表,簡化化操作_strucct oopennFilleTaablee OFFT110; /打開開文件表表數(shù)組int OOFT_couunt=0; /打開開文件表表占用長長度void maiin()struuct ordderTTablle /命命令表chaar nnamee8; ;charr orrderrInpput30; /存儲用用戶輸入入的命令令字符串串charr orrderrNamme88; /命令名名字charr fiileNNamee200; /命命令參數(shù)數(shù)1,是是文件名名字charr p

25、aarammeteer26; /命命令參數(shù)數(shù)2,是是個數(shù)字字charr paarammeteer330; /命命令參數(shù)數(shù)3,是是字符串串或數(shù)字字struuct ordderTTablle uu9; /命命令表int i=00; int flaag=00; /用戶戶輸入串串 讀寫寫位置 標(biāo)志int flaagOrrderr=-11;/ LinLListtIniitiaate(&frreeDDiskkTabbleHHeadd);/磁盤盤空間分分配鍵表表初始化化struuct freeeDiiskTTablle ttempp; tempp.leengtth=00;tempp.maaxLeengtth

26、=1100000;tempp.sttartt=0;tempp.usseFllag=0;if(!LinnLisstInnserrt(ffreeeDisskTaableeHeaad,00,teemp)priintff(初初始磁盤盤空閑表表失敗!);sysstemm(ppausse);exiit(00);/文件件表初始始化SeqLListtIniitiaate(&L); /初始始化 文文件表/for(i=00;i2;ii+) for(intt j=0;jj2;j+)sysstemm(ccoloor ffc);priintff(nnnnnnnnnnnn 計 0046 何珠舉舉 操作作系統(tǒng)課課程設(shè)計計n

27、);forr(innt kk=0;k33000000000;kk+);sysstemm(ccls);sysstemm(ccoloor ff3);priintff(nnnnnnnnnnnn 計 0046 何珠舉舉 操作作系統(tǒng)課課程設(shè)計計n);forr(k=0;kk);ffllushh(sttdinn); /清空空緩沖區(qū)區(qū)getts(oordeerInnputt); /獲取取用戶輸輸入串if(!sttrcmmp(oordeerInnputt,eexitt)exiit(00); /當(dāng)當(dāng)用戶輸輸入 eexitt 退出出程序sysstemm(ccls); /清屏forr(i=0;oordeerInnpu

28、tti!= &orrderrInpputi!=0;i+)/以空格格為界 分解用用戶輸入入串orrderrNammeii=oordeerInnputti;flaag=ii;/保存讀讀寫指針針if(flaag66) /命命令名長長度 小小于6prrinttf(輸入的的命令有有誤,請請重新輸輸入!n);coontiinuee ;ordderNNameei=0;flaagOrrderr=-11; /初初始化標(biāo)標(biāo)志位,fflaggOrdder 指明命命令在命命令表中中的位置置forr(i=0;ii9;i+)iff(!sstrccmp(ordderNNamee,ui.namme)fflaggOrdder=

29、i; /記錄錄命令的的位置,以以便訪問問bbreaak;if(flaagOrrderr=-1)prrinttf(你輸入入的命令令有誤!請重新新輸入!n);coontiinuee ;/以以空格為為界,分分解字符符串,分分解出第第一個字字符串放放到fiileNNamee中forr(i=flaag+11;orrderrInpputi!= &ordderIInpuutii!=00;ii+)fiileNNameei-flaag-11=oordeerInnputti;filleNaamei-fflagg-1=0; /為字符符串?dāng)?shù)組組 置一一個結(jié)束束標(biāo)志/flaag=ii; /下一一個字符符串 讀讀寫指針針

30、if(!sttrcmmp(ffileeNamme,?) /顯示示命令幫幫助swwitcch(fflaggOrdder)caase 0: pprinntf(創(chuàng)建建一個文文件 格格式 ccreaate fiilennameeffileelenngthhnn);pprinntf(例如如: ccreaate a1 10000 ,將創(chuàng)建建名為aa1,長長度為110000字節(jié)的的文件n);bbreaak;caase 1:pprinntf(刪除除一個文文件 格格式 ddeleete fiilennamee n);pprinntf(例如如: ddeleete a1,將刪除除名為aa1的文文件nn);bbrea

31、ak;caase 2: pprinntf(讀取取一個文文件 格格式 rreadd ffileenammeposstioonlenngthhnn);pprinntf(例如如: rreadd a11 8 3,從從a1文文件第88個字節(jié)節(jié)開始,顯顯示3字字節(jié)內(nèi)容容n);bbreaak;caase 3:pprinntf(寫一一個文件件 格式 wriite fiileNNameepposttionnccontten nn);pprinntf(例始始: wwritte aa1 115 ttestt,從aa1文件件第155字節(jié)開開始寫入入 teest 字符串串n);bbreaak;caase 4:pprin

32、ntf(顯示示文件的的屬性,格式 askk ffileenammen); pprinntf(例如如 assk aa1 ,將顯示示文件 a1的的屬性n);bbreaak; caase 5:pprinntf(顯示示文件的的所有內(nèi)內(nèi)容,格格式 ttypee ffileenammen);pprinntf(例如如 tyype a1,將顯示示文件 a1的的所有內(nèi)內(nèi)容nn);bbreaak;caase 6:pprinntf(重命命名一個個文件,格式 renn ooldFFileeNammenewwFilleNaamen);pprinntf(例如如renn a11 b11 ,將將a1改改名為bb1nn);bb

33、reaak;caase 7:pprinntf(顯示示所有文文件,例例如 ddir,將顯示示所有文文件nn);bbreaak;caase 8:pprinntf(關(guān)閉閉文件,格格式 cclosse filleNaamen);pprinntf(例如如,cllosee a11,將關(guān)關(guān)閉文件件a1n);bbreaak;deefauult:pprinntf(命令令錯誤);geetchh();elsseswwitcch(fflaggOrdder)/對對相應(yīng)的的命令 進(jìn)行參參數(shù)處理理caase 0:intt Teemp4=1,10,1000,10000;intt suum=00;intt leen=00;fo

34、rr(i=flaag+11;orrderrInpputi!= &ordderIInpuutii!=00;ii+)parrameeterr2ii-fllag-1=ordderIInpuutii;parrameeterr2ii-fllag-1=00; /為為字符串串?dāng)?shù)組 置一個個結(jié)束標(biāo)標(biāo)志flaag=ii; lenn=sttrleen(pparaametter22); /求求字符串串?dāng)?shù)組的的長度forr(i=0;iileen;ii+) /把第第二個參參數(shù) 字字符串變變成整數(shù)數(shù)summ=suum+(innt)pparaametter22leen-ii-1-488)*TTemppi;filleCrre

35、atte(ffileeNamme,ssum); /將命命令和參參數(shù) 傳傳給建文文件模塊塊執(zhí)行bbreaak;caase 1:filleDeel(ffileeNamme); /刪除文文件 breeak;caase 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=ordderIInpuutii;parrameeterr2ii-fllag-1=00

36、;flaag=ii; lenn=sttrleen(pparaametter22); /求求字符串串?dāng)?shù)組的的長度forr(i=0;iileen;ii+) /把第第二個參參數(shù) 字字符串變變成整數(shù)數(shù)summ=suum+(innt)pparaametter22leen-ii-1-488)*TTemppi;/forr(i=flaag+11;orrderrInpputi!= &ordderIInpuutii!=00;ii+)parrameeterr3ii-fllag-1=ordderIInpuutii; /把把第三個個參數(shù)變變成整型型parrameeterr3ii-fllag-1=00;flaag=ii;

37、 lenn=sttrleen(pparaametter33);forr(i=0;iileen;ii+)summ2=ssum22+(intt)paarammeteer3lenn-i-1-48)*Teempi;filleReead(filleNaame,summ,suum2); /調(diào)用用讀文件件模塊bbreaak;caase 3:intt Teemp4=1,10,1000,10000;intt suum=00;intt leen=00;/forr(i=flaag+11;orrderrInpputi!= &ordderIInpuutii!=00;ii+)parrameeterr2ii-fllag-1

38、=ordderIInpuutii;parrameeterr2ii-fllag-1=00;flaag=ii; lenn=sttrleen(pparaametter22); /求求字符串串?dāng)?shù)組的的長度forr(i=0;iileen;ii+) /把第第二個參參數(shù) 字字符串變變成整數(shù)數(shù)summ=suum+(innt)pparaametter22leen-ii-1-488)*TTemppi;/forr(i=flaag+11;orrderrInpputi!= &ordderIInpuutii!=00;ii+)parrameeterr3ii-fllag-1=ordderIInpuutii; /獲獲取第三三個

39、參數(shù)數(shù),為字字符串parrameeterr3ii-fllag-1=00;flaag=ii; /filleWrritee(fiileNNamee,suum,pparaametter33); /調(diào)調(diào)用寫文文件模塊塊 bbreaak;caase 4:filleAssk(ffileeNamme); /查詢文文件屬性性breeak;caase 5:ffileeTyppe(ffileeNamme); /顯示文文件內(nèi)容容bbreaak;caase 6:forr(i=flaag+11;orrderrInpputi!= &ordderIInpuutii!=00;ii+)parrameeterr2ii-fllag

40、-1=ordderIInpuutii;parrameeterr2ii-fllag-1=00;flaag=ii; filleReen(ffileeNamme,pparaametter22);bbreaak;caase 7:ffileeDirr();bbreaak;caase 8:ffileeCloose(filleNaame);bbreaak;deefauult:pprinntf(錯誤誤!沒有有可執(zhí)行行的命令令);/以上主主函數(shù),主主函數(shù)進(jìn)進(jìn)行數(shù)據(jù)據(jù)結(jié)構(gòu)的的定義 分析用用戶輸入入的命令令。/提供命命令幫助助。把命命令和參參數(shù),傳傳遞給執(zhí)執(zhí)行模塊塊/void filleCrreatte(cchar

41、r *ffileeNamme,iint filleLeengtth)/沒有有寫到打打開文件件表int i=00;timee_t rawwtimme;int staartPPosiitioon=00; /文件件開始位位置,等等磁盤分分配函數(shù)數(shù) 返回回值int maxxLenngthh=fiileLLenggth;struuct filleTaablee teemp;for(i=00;iL.ssizee;i+)if(!strrcmpp(fiileNNamee,L.lisstii.ffileeNamme) /判斷是是否重名名,如果果重名直直接返回回priintff(文文件重名名,請取取別的名名字!n

42、);retturnn ; /文文件重名名,退出出創(chuàng)建函函數(shù) iif(!reqquesstDiisk(&sttarttPossitiion,&maaxLeengtth)priintff(申申請磁盤盤空間失失敗!無無法建立立文件!n);retturnn ; /申申請磁盤盤空間失失敗,退退出創(chuàng)建建函數(shù)strccpy(temmp.ffileeNamme,ffileeNamme); strccpy(temmp.ffileeKinnd,txtt); /設(shè)置文文件類型型為 ttxttempp.leengtth=00; /創(chuàng)建的的時候,還還沒寫入入內(nèi)容,是是空文件件,長度度設(shè)為00tempp.maaxLeen

43、gtth=ffileeLenngthh; /文文件的最最大長度度tempp.sttartt=sttarttPossitiion; /文文件的開開始位置置timee(&rrawttimee); /獲獲取時間間tempp.tiimeiinfoo=loocalltimme(&rawwtimme); /把時間間寫到結(jié)結(jié)構(gòu)體里里去if(!SeqqLisstInnserrt(&L,LL.siize,temmp) /把文件件 插入入到文件件表priintff(插插入文件件表失敗敗!nn);sysstemm(ppausse);exiit(00); /把把文件插插入到 文件表表,如果果失敗,退退出程序序prin

44、ntf(成功功創(chuàng)建文文件!nnn);prinntf(=n);prinntf(文件件名 長長度 最最大長度度 類型 開始始位置n);/顯示剛剛建立的的文件prinntf(%ss ,teemp.filleNaame);prinntf(%dd ,temmp.llenggth);prinntf(%dd ,ttempp.maaxLeengtth);prinntf(%ss ,temmp.ffileeKinnd);prinntf(%dd ,temmp.sstarrt);prinntf(nn=nn);prinntf(crreatte進(jìn)程程打開了了文件%s,關(guān)關(guān)閉請用用cloose命命令!nnn,ffileeN

45、amme);/寫到到打開文文件表strccpy(OFTTOFFT_ccounnt.filleNaame,temmp.ffileeNamme);strccpy(OFTTOFFT_ccounnt.filleKiind,temmp.ffileeKinnd);OFTOFTT_coountt.llenggth=temmp.llenggth;OFTOFTT_coountt.mmaxLLenggth=temmp.mmaxLLenggth;OFTOFTT_coountt.sstarrt=ttempp.sttartt;OFTOFTT_coountt.oopennCouunt=1;OFTOFTT_coountt.

46、ttimeeinffo=ttempp.tiimeiinfoo;OFT_couunt+; /打開表表 記錄錄的是文文件數(shù) /prrinttf(couunt%d,OFTT_coountt);void filleDeel(ccharr *ffileeNamme)int i;int flaag=00; int k=00; /記錄錄文件在在 文件件表中的的位置SLNoode *p; /磁盤空空間分配配表 指指針SeqDDataaTyppe xx; /存儲儲被刪除除的結(jié)點點,無特特殊意義義for(i=00;iOFTT_coountt;i+) /判判斷是否否被別的的進(jìn)程占占用,若若被占用用,打印印出錯,直直

47、接返回回 iif(!strrcmpp(fiileNNamee,OFFTii.ffileeNamme)prrinttf(別的進(jìn)進(jìn)程占用用文件!無法刪刪除!);reeturrn ;for(i=00;inexxt!=NULLL;pp=p-neext)iff(p-neext-daata.staart=L.lisstkk.sstarrt)pp-nnextt-ddataa.usseFllag=0;pprinntf(成功功刪除!n);bbreaak;SeqqLisstDeelette(&L,kk,&xx);/從文文件表中中刪除void filleReead(chaar *filleNaame,intt po

48、osittionn,innt llenggth)int i;int flaag=00;int k=00;for(i=00;iOFTT_coountt;i+) /查找找文件打打開表,如如果存在在,則不不需要再再查找文文件表if(!sttrcmmp(ffileeNamme,OOFTi.filleNaame)k=i;fllag=1;OFFTii.oopennCouunt+;/多個個進(jìn)程打打開,計計算器加加1brreakk;if(fflagg!=11) /文件件不在打打開表,找找到它,并并寫到打打開表最最后forr(i=0;iiL.sizze;ii+)iff(!sstrccmp(filleNaame,

49、L.llistti.fiileNNamee) /找找到文件件,寫到到文件打打開表sstrccpy(OFTTOFFT_ccounnt.filleNaame,L.llistti.fiileNNamee);sstrccpy(OFTTOFFT_ccounnt.filleKiind,L.llistti.fiileKKindd);OOFTOFTT_coountt.llenggth=L.llistti.leengtth;OOFTOFTT_coountt.mmaxLLenggth=L.llistti.maaxLeengtth;OOFTOFTT_coountt.sstarrt=LL.liisti.staart;

50、OOFTOFTT_coountt.ttimeeinffo=LL.liisti.timmeinnfo;OOFTOFTT_coountt.oopennCouunt+;kk=OFFT_ccounnt;/OFFT_ccounnt=11;/初次打打開,賦賦值為11fflagg=1; /標(biāo)志在在打開文文件表里里if(fflagg=11)if(possitiionOFFTkk.llenggth)prrinttf(讀取參參數(shù)錯誤誤,請檢檢查參數(shù)數(shù)!nn);reeturrn ;forr(i=0;iileengtth;ii+)prrinttf(%c,diiskOFTTk.sttartt+poosittionn+i

51、-1); /讀取取內(nèi)容priintff(nreead進(jìn)進(jìn)程打開開了文件件%s,關(guān)閉請請用cllosee命令!nn,filleNaame);void filleWrritee(chhar *fiileNNamee,innt pposiitioon,ccharr *ss)/找到文文件,寫寫到打開開表,根根據(jù)打開開表操作作int i=00;int lenn=0; /計算寫寫入字串串長度,跟跟原來長長度相加加,如果果超過最最大長度度,就失失敗int k=00; /如果在在 打開開表里打打到記錄錄,則記記錄位置置int flaag=00; /如果果flaag=11,說明明在打開開表里找找到了,不不用在文

52、文件表里里找了len=strrlenn(s);for(i=00;iOFTT_coountt;i+)if(!sttrcmmp(ffileeNamme,OOFTi.filleNaame)k=i;fllag=1;OFFTii.oopennCouunt+;/多個個進(jìn)程打打開,計計算器加加1brreakk;if(fflagg!=11) /文件件不在打打開表,找找到它,并并寫到打打開表最最后forr(i=0;iiOFTTk.maaxLeengtth)prrinttf(超過文文件最大大長度,寫寫入失敗敗!nn);reeturrn ;elsse iif(pposiitioonOOFTk.lenngthh)pr

53、rinttf(插入位位置非法法!請檢檢查參數(shù)數(shù)n);reeturrn ;elsseinnt jj=0;foor(ii=OFFTkk.llenggth-1;ii=OOFTk.staart+possitiion;i)diiski+llen=diiski; /給插插入的字字符串 空出位位置foor(ii=OFFTkk.sstarrt+pposiitioon;iiOFFTkk.sstarrt+pposiitioon+llen;i+,j+)diiski=sjj; /寫寫進(jìn)磁盤盤foor(ii=0;iLL.siize;i+) /改改變文件件長度iif(!strrcmpp(fiileNNamee,L.lis

54、stii.ffileeNamme)L.llistti.leengtth=LL.liisti.lenngthh+leen; /設(shè)置文文件長度度breeak; OFFTkk.llenggth=OFTTk.leengtth+llen; /同同時更新新打開文文件表中中文件的的長度prrinttf(成功寫寫入!n);prrinttf(wriite進(jìn)進(jìn)程打開開了文件件%s,關(guān)閉請請用cllosee命令!nn,filleNaame);elseeprinntf(無此此文件,請請輸入正正確的文文件名!);void filleAssk(ccharr *ffileeNamme)int i;int flaag=00;

55、for(i=00;iOFTT_coountt;i+) /如如果在打打開表里里 找到到文件,則則不用再再找文件件表if(!sttrcmmp(ffileeNamme,OOFTi.filleNaame)prrinttf(文件名名:%ssn,OFFTii.ffileeNamme);prrinttf(類型:%sn,OFTTi.fiileKKindd);prrinttf(長度:%dn,OFTTi.leengtth);prrinttf(打開進(jìn)進(jìn)程數(shù):%dn,OFTTi.oppenCCounnt);prrinttf(創(chuàng)建時時間:%snn,aascttimee(OFFTii.ttimeeinffo);fllag

56、=1;brreakk;if(fflagg!=11)forr(i=0;iiL.sizze;ii+) /從文文件表里里查找文文件iff(!sstrccmp(filleNaame,L.llistti.fiileNNamee)pprinntf(文件件名:%snn,LL.liisti.filleNaame);pprinntf(類型型:%ssn,L.lisstii.ffileeKinnd);pprinntf(長度度:%ddn,L.lisstii.llenggth);pprinntf(創(chuàng)建建時間:%sn,ascctimme(LL.liisti.timmeinnfo);fflagg=1;bbreaak;if(

57、fflagg=00)prinntf(無此此文件!n);void filleTyype(chaar *filleNaame)int i;int flaag=00;int k=00;for(i=00;iOFTT_coountt;i+)if(!sttrcmmp(ffileeNamme,OOFTi.filleNaame)k=i;fllag=1;OFFTii.oopennCouunt+;/多個個進(jìn)程打打開,計計算器加加1brreakk;if(fflagg!=11) /文件件不在打打開表,找找到它,并并寫到打打開表最最后forr(i=0;iiL.sizze;ii+)iff(!sstrccmp(filleNaame,L.llistti.fiileNNamee) /找找到文件件,寫到到文件打打開表sstrccmp(OFTTOFFT_ccounnt.filleNaame,L.llistti.fiileNNamee);sstrccmp(OFTTOFFT_ccounnt.filleKiind,L.llistti.fiileKKindd);OOFTOFTT_coountt.llenggth=L.llistti.leengtth;OOFTOFTT_coountt.mmaxLLenggth

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論