




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、操作系統(tǒng)大型試驗(yàn)實(shí)驗(yàn)報(bào)告姓名:XX班級(jí):軟件工程110x學(xué)號(hào):201126630xxx、名稱操作系統(tǒng)大型試驗(yàn)。二、目的用C+珊寫出一個(gè)簡(jiǎn)單的模擬文件系統(tǒng),實(shí)現(xiàn)目錄的添加、刪除、重命名,文件的添加、刪除、重命名、文件和目錄、文件的拷貝。三、要求開發(fā)工具:word,vcwin32api1 .設(shè)計(jì)和實(shí)現(xiàn)一個(gè)簡(jiǎn)單的文件系統(tǒng),要求包括目錄、普通文件和文件的存儲(chǔ)2 .文件系統(tǒng)的目錄結(jié)構(gòu)采用類似Linux的樹狀結(jié)構(gòu);3 .要求模擬的操作包括:a)目錄的添加、刪除、重命名;b)目錄的顯示(列表)c)文件的添加、刪除、重命名d)文件和目錄的拷貝4 .用戶進(jìn)入時(shí)顯示可用命令列表;用戶輸入help時(shí)顯示所有命令的幫
2、助文檔;輸入某個(gè)命令+?時(shí)顯示該條命令的使用說明5 .用戶輸入exit時(shí)退出該系統(tǒng)6 .實(shí)驗(yàn)實(shí)現(xiàn)基于windows平臺(tái);7 .實(shí)驗(yàn)開發(fā)語言可以選用C/C+等四、設(shè)計(jì)1 .主要思路說明本模擬系統(tǒng)通過一個(gè)大小固定的數(shù)組要代表物理盤塊,假設(shè)共有1024塊,新增目錄占一塊,新增文件占一塊,文件中可輸入內(nèi)容,內(nèi)容假設(shè)定義為5個(gè)字符占一塊,超出則應(yīng)新申請(qǐng)空間。模擬物理盤塊的數(shù)組中,數(shù)組內(nèi)容為-99代表改物理盤塊內(nèi)容為空,可使用,其他數(shù)字均代表該物理盤塊被占用,其中-3代表是占用文件的末結(jié)點(diǎn),其他整數(shù)代表是文件內(nèi)容的下一個(gè)尋址下標(biāo),另有一個(gè)string類型的數(shù)組來存儲(chǔ)內(nèi)容,模擬文件寫入了對(duì)應(yīng)下標(biāo)的物理盤塊中
3、。設(shè)置了一個(gè)全局指針指向根結(jié)點(diǎn),一個(gè)全局指針指向當(dāng)前操作目錄。搜索空白物理盤塊時(shí)采用順序搜索物理盤塊數(shù)組。存儲(chǔ)形式主要采用類似二叉樹結(jié)構(gòu),如目錄為根,目錄下的第一個(gè)文件或目錄存在根的子節(jié)點(diǎn),目錄下的其他文件或目錄存在第一個(gè)文件或目錄的兄弟節(jié)點(diǎn),以此類推。本程序僅seperate()函數(shù)使用現(xiàn)成代碼,此函數(shù)功能為將輸入命令串分離,僅僅起到美觀作用,其余所有代碼均為原創(chuàng)!2 .中優(yōu)功能:1)能實(shí)現(xiàn)動(dòng)態(tài)增長(zhǎng),即當(dāng)輸入文件的內(nèi)容大小大于分配的模擬物理盤塊時(shí)系統(tǒng)能夠自動(dòng)尋找空物理盤塊并分配,將超出的內(nèi)容保存在新的物理盤塊中,若超出模擬磁盤大小,則超出部分不保存且返回提示。2)能實(shí)現(xiàn)級(jí)聯(lián)刪除,即當(dāng)刪除目錄
4、(文件夾)時(shí),目錄下的所有內(nèi)容也應(yīng)當(dāng)刪除并正確釋放物理盤塊空間。3)能實(shí)現(xiàn)目錄的復(fù)制,即復(fù)制目錄時(shí)(文件夾)時(shí),該目錄下的所有文件和目錄也應(yīng)準(zhǔn)確復(fù)制至目標(biāo)目錄中,并正確分配物理盤塊空間。3 .主要函數(shù)和類的定義1)主要函數(shù)定義#defineshow_bnum20#defineblock_size1024intblockblock_size;stringcontentblock_size;intMsize=5;fnode*root=newfnode("WP:",0,0);fnode*current_path=newfnode();fnode*seek_flag=newfnod
5、e();fnode*cp_flag=newfnode();voidinitialize。;intseekTarget(stringname);/顯示物理盤塊的塊數(shù)/物理盤塊塊數(shù)/假設(shè)有block_size 塊物理盤塊/存放文件內(nèi)容/此處為模擬磁盤大小為輸入5個(gè)字符/設(shè)置根目錄/當(dāng)前路徑/作為查找標(biāo)志/作為復(fù)制的位置標(biāo)志/初始化/搜索文件或目錄/搜索目錄/刪除節(jié)點(diǎn)/釋放物理盤塊/搜索可用物理盤塊/顯示當(dāng)前路徑/增加目錄、文件/顯示當(dāng)前目錄下的所有文件重命名/分離命令/進(jìn)入目錄/增加文件功能入口/增加目錄功能入口/刪除文件或目錄功能入口顯示物理盤塊占用情況/重命名功能入口查看幫助查看文件內(nèi)容/寫文
6、件/清屏/退出/復(fù)制功能入口/復(fù)制目錄/復(fù)制文件/復(fù)制節(jié)點(diǎn)/找到復(fù)制的目標(biāo)目錄計(jì)算目錄大小intseek_log(stringname);voiddelete_node(stringname);intfreeblock(fnode*);intseekfreeblock();voidshow_current_path();voidadd_file(stringname,intt);voidshow_curpath_all();voidrename_file(stringOname,stringNname);/voidseperate();voidcd();voidadd_File();voida
7、dd_Log();voiddelete_file();voidshow_memory();/voidre_name();voidhelp();/voidshow_content();/voidwrite_file();voidClear_();voidExit();voidcp();voidcp_log(fnode*target,fnode*source);voidcp_file(fnode*target,fnode*source);voidcp_node(fnode*target,fnode*source);intfind_target_log();intcalculate_logsizeM
8、ain(fnode*);intcalculate_logsize(fnode*);2)文件節(jié)點(diǎn)類的定義:教育資料classfnodepublic:stringfilename;inttype;fnode*parent;fnode*child;fnode*brother;intblock_num;intisBro;是intisCld;是fnode()type=-1;parent=NULL;child=NULL;brother=NULL;block_num=-1;isBro=0;isCld=0;fnode(stringn,intt,intb)type=t;filename=n;parent=NUL
9、L;child=NULL;brother=NULL;block_num=b;blockblock_num=-3;isBro=0;isCld=0;fnode(fnode*p,stringname,intt,intb)/文件名/文件類型,1為普通文件,0為目錄文件/父節(jié)點(diǎn)/子節(jié)點(diǎn)/兄弟節(jié)點(diǎn)/表示占用的物理盤塊塊號(hào)/表木是否是在同級(jí)目錄下,。表本不是,1表不/是否為目錄下第一個(gè)節(jié)點(diǎn),1表示是,0表示不/初始化/根節(jié)點(diǎn)初始化/文件節(jié)點(diǎn)初始化parent=p;filename=name;type=t;child=NULL;brother=NULL;block_num=b;blockblock_num=-
10、3;命令echo md delcdcpdirrenmem cls exitisBro=0;isCld=0;/拷貝函數(shù)voidcopy(fnode*cp)filename=cp->filename;type=cp->type;parent=cp->parent;child=cp->child;brother=cp->brother;block_num=cp->block_num;;4.命令:解釋echo命令可以在當(dāng)前目錄下創(chuàng)建一個(gè)文件,具體格式:echo+namemd命令可以在當(dāng)前目錄下創(chuàng)建一個(gè)目錄文件,具體格式:md+namedel命令可以在當(dāng)前目錄下刪除一
11、個(gè)已存在的文件或目錄(支持級(jí)聯(lián)刪除),具體格式:del+namecd命令可以進(jìn)入下一級(jí)目錄或返回上級(jí)目錄、根目錄,具體格式:cd+name或cd+.或cd+.cp命令可以復(fù)制當(dāng)前目錄下一個(gè)指定的文件或目錄至指定的目錄,具體格式:cp+name+roaddir命令可以顯示當(dāng)前目錄下的所有文件和目錄,具體格式:delren命令可以重命名一個(gè)存在于當(dāng)前目錄下的文件或目錄,具體格式:ren+name+newnametyptyp命令可以查看當(dāng)前目錄下一個(gè)文件的內(nèi)容,具體格式:typ+namewrtwrt命令可以在當(dāng)前目錄下寫內(nèi)容至一個(gè)已存在的文件,具體格式:wrt+name+contentmem令可以查
12、看模擬物理盤塊的使用情況,具體格式:memcls命令為清屏命令,具體格式:clsexit命令為退出命令,具體格式:exit五、關(guān)鍵技術(shù)流程圖及說明提示:若圖中文字無法看清,可用MicorsoftVisio打開壓縮包下“部分程序流程圖”文件夾的繪圖文件查看。1 .增加文件或目錄(此功能比較簡(jiǎn)單,流程圖寫的較詳細(xì)就不做說明):工由翼融收入工件名鄧z件類整2 .刪除目錄(實(shí)現(xiàn)級(jí)聯(lián)刪除):說明:刪除目錄時(shí)刪除文件和刪除目錄本身放在同一個(gè)函數(shù)中,刪除目錄下的所有文件放在freeblock函數(shù)里,這樣比較好處理。下面給只給出遞歸函數(shù)的流程圖。3 .將內(nèi)容寫入文件(實(shí)現(xiàn)動(dòng)態(tài)增長(zhǎng)):說明:圖中Msize為模擬
13、規(guī)定的文件塊字符串大小,比如Msize=5,那么一個(gè)物理盤塊只能存5個(gè)字符,超出則要申請(qǐng)新的空間。主要采用雙重循環(huán)方法寫入,外層循環(huán)為需要的塊數(shù),內(nèi)層循環(huán)為Msize,用string累加字符串內(nèi)容,內(nèi)層循環(huán)退出后新申請(qǐng)一個(gè)空間并content (為string 類型的數(shù)組,將對(duì)應(yīng)下標(biāo)賦給上一個(gè)物理盤塊數(shù)組,再將對(duì)應(yīng)內(nèi)容存入模擬存儲(chǔ)內(nèi)容)數(shù)組中,直至退出外層循環(huán)。4 .復(fù)制目錄:說明:這里和刪除目錄一樣,寫了兩個(gè)復(fù)制函數(shù),這樣寫同樣因?yàn)檫f歸調(diào)用是比較方便,第一個(gè)函數(shù)里新建了一個(gè)階段第一個(gè)函數(shù)傳入?yún)?shù)為目標(biāo)目錄指針和被復(fù)制的目錄的指針,復(fù)制被復(fù)制的目錄的內(nèi)容,然后將新建節(jié)點(diǎn)的子節(jié)點(diǎn)和被復(fù)制目錄的子
14、結(jié)點(diǎn)傳入下一個(gè)遞歸調(diào)用函數(shù)(因?yàn)槟夸浀膬?nèi)容存于目錄的子節(jié)點(diǎn),與兄弟節(jié)點(diǎn)無關(guān)),第二個(gè)函數(shù)就是遞歸調(diào)用函數(shù)cp_node,下面就只給出cp_node的流程圖(復(fù)制之前同樣進(jìn)行了路徑的判誤操作,內(nèi)存大小的判斷操作,是否重名的判斷操作,被復(fù)制目錄是否存在判斷操作,這些操作在遞歸函數(shù)之前完成,所以下面的遞歸函數(shù)不體現(xiàn)這些操作)。六、運(yùn)行結(jié)果1 .主界面展示:圖:主界面展示2.help命令展示:具體格式1feinulateFileSysten2014.01.0?1隘根所有喇吳勃俁富所有權(quán)札圖:help命令展示斗示義巨II二0呆目T-有Q情。所錄。用而新錄c.irH-3-目容使下T目錄目錄一芮“塊令num
15、b定444乂件內(nèi)理-nO1鼻,屏出71學(xué)復(fù)顯重顯寫查總可生¥明說休具加統(tǒng)加t令3ibB1X+f3.echo命令展示:圖:echo命令展示4.del命令展示:圖:del命令展示-普通刪除說明:創(chuàng)建了目錄logl,在logl中創(chuàng)建一系列文件和目錄,磁盤使用情況顯示已分配,實(shí)用del刪除命令后查看磁盤分配證明級(jí)聯(lián)刪除是可靠的。圖:del命令展示-級(jí)聯(lián)刪除5.md命令展示:圖:md命令展示6.cd命令展小:說明:圖中展示了cd+namecd+.、cd+.三種cd命令的使用和判別情況。圖:cd命令展示7.dir命令展示:圖:dir命令展示8.typ命令展示:圖:typ命令展示9.ren命令展示
16、:圖:ren命令展示10.wrt命令展示:圖:wrt命令展示說明:此處為了實(shí)驗(yàn)方便,將磁盤大小限定為5,每塊磁盤輸入的字符數(shù)限2,輸入的內(nèi)容112233445566778899需要9塊磁盤塊,而磁盤塊為5,根目錄占用一塊,只能輸入4塊大小的內(nèi)容,即11223344,所有文件file只寫入了11223344。圖:wrt動(dòng)態(tài)增長(zhǎng)展示11 .mem令展示:圖:mem令展示12 .cls命令展示:Si.Rulat«File£/白t哥it1*不2014=01,09版權(quán)所有<WP?吳彭口保鬻所有權(quán)利其TZ數(shù)7WP:>iftcfi!以下&前市'咂理盤您的實(shí)窕情
17、兄,川代羲可用.內(nèi)代表襤占翔且為書文竹塊,J1五下一塊的尋址下行-3-99-99-9寫-99-9勺-99TQ-»?-*?-99-91?一”T9-?»TQ-99一孑¥WPz、r?chof:i】吟U'PFiJ.e=rir;ss:ayexnpLutlic1lEjbMjr1JLdVP=>in*?Hi,塞辛罵翦曹棄?mèng)鄣膶?shí)驗(yàn)情況.用代表可用,7代表被占用且為末文件塊-32345:3-99夕97,-99T埠-?-99-?-92TQ-79-9?#?-99WP:>a一不是內(nèi)郃或外鄒命令,也不是可運(yùn)行的他字或或電港文件.Wfc5>di3不是內(nèi)部或外部命令,也
18、不是可運(yùn)行的程序或批處理文件,111mdMF不是內(nèi)苛或外部命令.也不是可運(yùn)行的程序就批處理文件/up=>dr1好不是內(nèi)部或外部琮齒.也不拈可運(yùn)行的程序或把處理文件。IfPCUfF不是內(nèi)部或外部命令.也不是可運(yùn)行的程序或掃處理文件,WP:>clo圖:cls命令展示-1.£:柝ilf5>itemFiie一System'DebuglFile一工戶tefE*圖:cls命令展示-213 .cp命令展示:說明:圖中根目錄(WP)下創(chuàng)建了目錄a(mda)、目錄b(mdb),在a目錄下創(chuàng)建了b目錄(mdb),在b目錄中創(chuàng)建了文件a(echoa)、目錄c(mdc),文件a中輸
19、入1111122222(wrta111112222)內(nèi)容代表占了兩塊物理盤塊(程序中Msize模擬大小,設(shè)為5個(gè)字符了),再進(jìn)入目錄c(cdc),c中先創(chuàng)建目錄f(mdf)再創(chuàng)建文件g(與之前創(chuàng)建順序不同說明程序在不同情況下能正常運(yùn)行),在g中輸入5個(gè)3,5個(gè)2,5個(gè)1(wrtg333332222211111)代表占用3塊物理盤塊空間,再返回目錄a(cd.cd.),將目錄a下的目錄b復(fù)制給目錄WPF的目錄c(cpbWP:c),再將目錄a中的目錄b刪除(delb證明的確是復(fù)制而非簡(jiǎn)單指針指向),進(jìn)入WPT的目錄c查看剛復(fù)制的內(nèi)容(dir)。物理盤塊使用情況中第一個(gè)-3為根目錄占用,第二個(gè)-3是目
20、錄a,第三個(gè)-3是目錄c,接下來的8個(gè)-99是目錄a中原目錄b占用的空間(此處證明刪除是可靠的),圖中顯示目錄c中確實(shí)成功復(fù)制了目錄b及目錄下的所有內(nèi)容(使用dir命令查看)。33332222211111箕表可.用文件 目錄文件點(diǎn)用羊:35坤! 占用首塊為第S hrulwlE 版權(quán)所有L月第;1,塊物理盤塊代去械占用且為未文件或,箕它數(shù)字WF; uMjXyp d文件衛(wèi)的內(nèi)容為11111122222WP: cXbz >dirFile 8v«cen I:拆率 2Q14. “上民彭.仔窗所有權(quán)利MP:o>ind b VP*a>cA b WP: Xn'JjEchu
21、a UP : XaXb>bJi*t a ' UP! Xa'Jbnid c UP:XBXb>nd C MP: y/Sc >nd f WP; Ynhr >wrM力 WP: aNb& >wrt : HP: 5、hy . WP;hMP;fl?cp h VF; UP:a>dDl bWPi'xjcVdir目錄名;h文件美星;目錄HP:>c>cd hHP:cXb>clir;Fi I _S/5Tpm:F I 戶jSyst它e' D?ru gFi' e_Sy5re<Ti圖:cp命令展示14.exit命令展
22、示:圖:exit命令展示15 .綜合展示:說明:echoa在根目錄(WP:)下創(chuàng)建了文件a,mdb在根目錄(WP:)下創(chuàng)建了目錄b,dir顯示根目錄下的所有文件和目錄,wrtaaaaaabbbbbccccc在文件a中輸入了一串內(nèi)容,typa顯示文件a中的內(nèi)容,cdb進(jìn)入目錄b,mda在目錄b下創(chuàng)建了目錄a,cda進(jìn)入目錄a,cd.返回目錄b,cd.返回根目錄WP:,renbnewname將目錄b重命名為newnamemen#示內(nèi)存情況,第一個(gè)-3代表根節(jié)點(diǎn)占用,第二個(gè)3代表文件a占用且下一塊盤塊下標(biāo)為3,第三個(gè)-3代表目錄b占用,之后的4代表被文件a占用且的下一塊盤塊的尋找下標(biāo)為4,下一個(gè)-3代表文件a的末盤塊,下一個(gè)-3代表目錄b內(nèi)的目錄a占用,dela在根目錄WP下刪除文件a,mem查看物理盤塊實(shí)驗(yàn)情況,圖中顯示原文件a占用的內(nèi)存空間已經(jīng)變?yōu)?99,代表成功刪除a并釋放磁盤空間(-99代表磁盤空間空閑可用),dir顯示根目錄WP下所有文件和目錄,顯示只有newname則證明重命名和刪除操作是成功的。>echo>dlr占用第I Z次物理盤抉aWF= >nsn以下為前加個(gè)物理盤塊的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國可編程全自動(dòng)軟水器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2 2025年小學(xué)教師資格考試復(fù)習(xí)寶典及試題
- 遺產(chǎn)繼承協(xié)議仲裁合同
- 2023年新疆公務(wù)員《行政職業(yè)能力測(cè)驗(yàn)》試題真題及答案
- 纖維專業(yè)知識(shí)培訓(xùn)課件
- 公司活動(dòng)策劃與執(zhí)行進(jìn)度報(bào)告
- 機(jī)械工程材料與設(shè)計(jì)實(shí)踐試題庫
- 公司加盟連鎖經(jīng)營(yíng)合同書
- 江蘇省南通市如皋市2024-2025學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量調(diào)研生物學(xué)試卷(必修)(含答案)
- 新聞媒體新聞稿件授權(quán)發(fā)布協(xié)議
- 室外消防鋼絲網(wǎng)骨架塑料復(fù)合PE管施工方案-2
- 執(zhí)業(yè)醫(yī)師注冊(cè)、變更申請(qǐng)表
- 消化科常見管道的護(hù)理課件
- 同濟(jì)大學(xué)信紙
- 項(xiàng)目申報(bào)表雙語教學(xué)示范課程建設(shè)項(xiàng)目
- (完整word版)新《中華頌》朗誦稿
- 《中小學(xué)美術(shù)教學(xué)論》第一章 美術(shù)教學(xué)論及其研究的對(duì)象
- 焊接專業(yè)英語詞典
- 糖尿病健康教育及飲食指導(dǎo)
- 三無曲線(有緩)繩正法撥道自動(dòng)計(jì)算表
- 《母雞》課件 王崧舟 千課萬人 (圖片版不可編輯)
評(píng)論
0/150
提交評(píng)論