版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 操作系統(tǒng)課程設(shè)計(jì)</b></p><p><b> 說(shuō) 明 書</b></p><p><b> 前言</b></p><p> 簡(jiǎn)單地說(shuō),Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),它主要用于基于Intel x86系列CPU的計(jì)算機(jī)上。這個(gè)系
2、統(tǒng)是由世界各地的成千上萬(wàn)的程序員設(shè)計(jì)和實(shí)現(xiàn)的。其目的是建立不受任何商品化軟件的版權(quán)制約的、全世界都能自由使用的Unix兼容產(chǎn)品。</p><p> Linux不僅為用戶提供了強(qiáng)大的操作系統(tǒng)功能,而且還提供了豐富的應(yīng)用軟件。用戶不但可以從Internet上下載Linux及其源代碼,而且還可以從Internet上下載許多Linux的應(yīng)用程序??梢哉f(shuō),Linux本身包含的應(yīng)用程序以及移植到Linux上的應(yīng)用程序包羅萬(wàn)
3、象,任何一位用戶都能從有關(guān)Linux的網(wǎng)站上找到適合自己特殊需要的應(yīng)用程序及其源代碼,這樣,用戶就可以根據(jù)自己的需要下載源代碼,以便修改和擴(kuò)充操作系統(tǒng)或應(yīng)用程序的功能。這對(duì)Windows NT、Windows98、MS-DOS或OS/2等商品化操作系統(tǒng)來(lái)說(shuō)是無(wú)法做到的。</p><p> Linux具有:穩(wěn)定、可靠、安全的優(yōu)點(diǎn),并且有強(qiáng)大的網(wǎng)絡(luò)功能。其中有對(duì)讀、寫進(jìn)行權(quán)限控制、審計(jì)跟蹤、核心授權(quán)等技術(shù)
4、,這些都為安全提供了保障。在相關(guān)軟件的支持下,可實(shí)現(xiàn)WWW、FTP、DNS、DHCP、E-mail等服務(wù),還可作為路由器使用,利用IPCHAINS/IPTABLE網(wǎng)絡(luò)治理工具可構(gòu)建NAT及功能全面的防火墻。</p><p> Linux是在GNU公共許可權(quán)限下免費(fèi)獲得的,是一個(gè)符合POSIX標(biāo)準(zhǔn)的操作系統(tǒng)。Linux操作系統(tǒng)軟件包不僅包括完整的Linux操作系統(tǒng),而且還包括了文本編輯器、高級(jí)語(yǔ)言編譯器等應(yīng)用軟件
5、。它還包括帶有多個(gè)窗口管理器的X-Windows圖形用戶界面,如同我們使用Windows NT一樣,允許我們使用窗口、圖標(biāo)和菜單對(duì)系統(tǒng)進(jìn)行操作。</p><p><b> 目錄</b></p><p><b> 1需求分析3</b></p><p> 1.1 功能介紹3</p><p
6、> 1.2 目的及意義5</p><p> 1.2.1 目的5</p><p> 1.2.2 意義6</p><p> 1.3 設(shè)計(jì)成果7</p><p><b> 2總體設(shè)計(jì)8</b></p><p><b> 2.1功能介紹8</b><
7、/p><p><b> 2.2模塊關(guān)聯(lián)9</b></p><p><b> 3詳細(xì)設(shè)計(jì)12</b></p><p> 3.1用戶結(jié)構(gòu)12</p><p> 3.2數(shù)據(jù)結(jié)構(gòu)說(shuō)明12</p><p> 3.3主要功能的關(guān)鍵代碼13</p><p
8、> 4測(cè)試及運(yùn)行結(jié)果18</p><p> 4.1 測(cè)試定義18</p><p> 4.2 測(cè)試目的18</p><p> 4.3 測(cè)試結(jié)果19</p><p> 4.3.1 文件測(cè)試19</p><p><b> 5心得23</b></p><p
9、><b> 1需求分析</b></p><p><b> 1.1 功能介紹</b></p><p> 基于Linux的模擬文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)完成以下功能:</p><p> (1)創(chuàng)建用戶:手動(dòng)的創(chuàng)建10個(gè)用戶,都在界面上完成,輸入用戶名;每個(gè)用戶最多可以保存10個(gè)文件。</p><p&
10、gt; (2)用戶登錄:手動(dòng)的登錄已經(jīng)創(chuàng)建的用戶,正確輸入用戶名即可成功登錄。 </p><p> ?。?)顯示所有用戶:首先會(huì)創(chuàng)建很多用戶,為了清晰、便捷的查看用戶,所以在界面上可以顯示所有的用戶,這一功能的實(shí)現(xiàn),主要是針對(duì)忘記自己用戶名的用戶,可以通過(guò)查看全部用戶來(lái)查找自己的用戶名。</p><p> (4)創(chuàng)建二級(jí)文件目錄(MD):手動(dòng)的輸入目錄名稱,(即設(shè)置主目錄(MFD)和用
11、戶文</p><p> 件目錄(UFD))。</p><p> ?。?)顯示目錄:將用戶創(chuàng)建的目錄顯示在界面上。</p><p> (6)刪除目錄:手動(dòng)輸入目錄的名稱即可刪除已經(jīng)創(chuàng)建的目錄。</p><p> (7)進(jìn)入目錄:進(jìn)入目錄內(nèi)部,可以進(jìn)行文件的各種操作。</p><p> ?。?)修改目錄:在用戶登錄后
12、,輸入要修改的目錄名稱,對(duì)其進(jìn)行修改,輸入新的目</p><p><b> 錄名并保存。</b></p><p> ?。?)建立一個(gè)文件(create):在目錄中手動(dòng)輸入文件名,可以創(chuàng)建新的文件,在創(chuàng)建</p><p> 的同時(shí)輸入文件的保護(hù)碼,對(duì)文件內(nèi)容進(jìn)行保護(hù),防止信息泄露。</p><p> ?。?0)打開(kāi)全部
13、文件(openall):將已經(jīng)創(chuàng)建的文件夾全部顯示在界面上。</p><p> (11)刪除一個(gè)文件(delete):手動(dòng)輸入已經(jīng)創(chuàng)建的文件的名稱,即可刪除此文件。</p><p> ?。?2)寫文件(write):手動(dòng)的在文件中寫入內(nèi)容。</p><p> ?。?3)讀文件(read):查看文件中的已經(jīng)寫入的內(nèi)容。</p><p> (
14、14)移動(dòng)文件:用戶可以將某個(gè)目錄下的文件移動(dòng)到其它的目錄中,只為了整理文件,便于查詢,使用。</p><p> ?。?5)改文件的保護(hù)碼(change):手動(dòng)修改文件的密碼(保護(hù)碼)。</p><p> 基于以上的功能,可以使用戶選擇操作,模擬文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn);此類功能都是在頁(yè)面上手動(dòng)操作完成。</p><p><b> 1.2 目的及意義<
15、;/b></p><p><b> 1.2.1 目的</b></p><p> 通過(guò)課程設(shè)計(jì),加深對(duì)操作系統(tǒng)各資源管理模塊的理解,掌握操作系統(tǒng)的基本原理及功能,具有初步分析實(shí)際操作系統(tǒng)、設(shè)計(jì)、構(gòu)造和開(kāi)發(fā)現(xiàn)代操作系統(tǒng)的基本能力?;贚inux的模擬文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),熟悉基本的網(wǎng)絡(luò)命令以及他們的使用方法,體會(huì)Linux多用戶的特點(diǎn),熟悉網(wǎng)絡(luò)配置文件的配置方法
16、。本系統(tǒng)是基于linux平臺(tái)運(yùn)行在終端上的虛擬二級(jí)文件管理系統(tǒng)。模擬真正的文件管理系統(tǒng),并采用用戶登錄機(jī)制對(duì)文件和目錄進(jìn)行創(chuàng)建,增加內(nèi)容,修改,刪除的操作。對(duì)于目錄而言,可以進(jìn)行創(chuàng)建刪除新添文件的操作;對(duì)于文件而言,可以創(chuàng)建,修改,刪除。刪除目錄時(shí),同時(shí)刪除相應(yīng)目錄下的文件以及文件中的內(nèi)容。采用用戶登錄使得用戶管理文件更方便, 并形成了二級(jí)的文件管理模式。</p><p> 操作系統(tǒng)(OS)是重要的計(jì)
17、算機(jī)系統(tǒng)軟件,同時(shí)也是最活躍的學(xué)科之一,其發(fā)展極為迅速。它是配置在計(jì)算機(jī)硬件上的第一層軟件,是對(duì)硬件系統(tǒng)的首次擴(kuò)充。它在計(jì)算機(jī)系統(tǒng)中占據(jù)了特別重要的地位;而其它的諸如匯編程序、編譯程序、數(shù)據(jù)庫(kù)管理系統(tǒng)等系統(tǒng)軟件,以及大量的應(yīng)用軟件,都將依賴于操作系統(tǒng)的支持,取得它的服務(wù)。操作系統(tǒng)已成為現(xiàn)代計(jì)算機(jī)系統(tǒng)、多處理機(jī)系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、多媒體系統(tǒng)以及嵌入式系統(tǒng)中都必須配置的、最重要的系統(tǒng)軟件。</p><p> 課程設(shè)計(jì)
18、是學(xué)習(xí)的總結(jié),通過(guò)課程設(shè)計(jì)溫習(xí)我們已經(jīng)學(xué)到的知識(shí)并加以運(yùn)用,還可以了解到其它的知識(shí),來(lái)充實(shí)自己,充分掌握操作系統(tǒng)的基本原理及各方面知識(shí)。</p><p><b> 1.2.2 意義</b></p><p> 基于其低廉成本與高度可設(shè)定性,Linux常常被應(yīng)用于嵌入式系統(tǒng),例如機(jī)頂盒、移動(dòng)電話及行動(dòng)裝置等。在移動(dòng)電話上,Linux已經(jīng)成為與Symbian
19、OS、Windows Mobile系統(tǒng)并列的三大智能手機(jī)操作系統(tǒng)之一;而在移動(dòng)裝置上,則成為Windows CE與Palm OS外之另一個(gè)選擇。目前流行的TiVo數(shù)位攝影機(jī)使用了經(jīng)過(guò)定制化后的Linux。此外,有不少硬件式的網(wǎng)絡(luò)防火墻及路由器,例如部份LinkSys的產(chǎn)品,其內(nèi)部都是使用Linux來(lái)驅(qū)動(dòng)、并采用了操作系統(tǒng)提供的防火墻及路由功能。 </p><p> Lin
20、ux以它的高效性和靈活性著稱。它能夠在PC計(jì)算機(jī)上實(shí)現(xiàn)全部的Unix特性,具有多任務(wù)、多用戶的能力。Linux是在GNU公共許可權(quán)限下免費(fèi)獲得的,是一個(gè)符合POSIX標(biāo)準(zhǔn)的操作系統(tǒng)。Linux操作系統(tǒng)軟件包不僅包括完整的Linux操作系統(tǒng),而且還包括了文本編輯器、高級(jí)語(yǔ)言編譯器等應(yīng)用軟件。它還包括帶有多個(gè)窗口管理器的X-Window圖形用戶界面,如同我們使用Windows NT一樣,允許我們使用窗口、圖標(biāo)和菜單對(duì)系統(tǒng)進(jìn)行操作。
21、 </p><p> Linux之所以受到廣大計(jì)算機(jī)愛(ài)好者的喜愛(ài),主要原因有兩個(gè),一是它屬于自由軟件,用戶不用支付任何費(fèi)用就可以獲得它和它的源代碼,并且可以根據(jù)自己的需要對(duì)它進(jìn)行必要的修改,無(wú)償對(duì)它使用,無(wú)約束地繼續(xù)傳播。另一個(gè)原因是,它具有Unix的全部功能,任何使用Unix操作系統(tǒng)或想要學(xué)習(xí)Unix操作系統(tǒng)的人都可以從Linux中獲益。</p><p> 在L
22、inux操作系統(tǒng)中實(shí)現(xiàn)文件的各種操作,即創(chuàng)建、刪除、修改、寫入、讀取等。通過(guò)課程設(shè)計(jì)讓我們進(jìn)一步了解操作系統(tǒng),學(xué)習(xí)操作系統(tǒng)的各方面知識(shí),加深對(duì)操作系統(tǒng)的認(rèn)識(shí),溫習(xí)課上學(xué)過(guò)的知識(shí),明確操作系統(tǒng)的作用??梢栽诓煌慕嵌葋?lái)觀察操作系統(tǒng)的作用。從一般客戶的觀點(diǎn),可把操作系統(tǒng)看做是用戶與計(jì)算機(jī)硬件系統(tǒng)之間的接口;從資源管理的觀點(diǎn)看,則可把操作系統(tǒng)視為計(jì)算機(jī)系統(tǒng)資源的管理者。另外,操作系統(tǒng)實(shí)現(xiàn)了對(duì)計(jì)算機(jī)資源的抽象,隱藏了對(duì)硬件操作的細(xì)節(jié),使用戶能更
23、方便地使用機(jī)器。</p><p><b> 1.3 設(shè)計(jì)成果</b></p><p> 基于Linux的模擬文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),實(shí)現(xiàn)了采用用戶登錄機(jī)制,可以查看文件信息,管理文件及文件夾。在界面中用戶可以手動(dòng)的進(jìn)行操作,每一步都有操作成功或失敗的提示,清晰的展示每一步的操作過(guò)程,用戶可以方便的實(shí)現(xiàn)對(duì)文件的操作,例如:創(chuàng)建、修改、刪除等。</p>&
24、lt;p> 經(jīng)過(guò)幾天的努力完成了基于Linux的模擬文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)這一課題,按照具體的要求,將每個(gè)功能實(shí)現(xiàn)并附上溫馨提示,主要的功能有:展示了添加用戶、用戶登錄、創(chuàng)建二級(jí)目錄、修改目錄名、刪除目錄、顯示全部目錄、創(chuàng)建文件、修改文件名、刪除文件、寫入文件、讀取文件、修改文件保護(hù)碼等功能。</p><p><b> 2總體設(shè)計(jì)</b></p><p>&l
25、t;b> 2.1功能介紹</b></p><p> 本系統(tǒng)包括用戶管理、目錄管理、文件管理共3個(gè)模塊。在用戶管理模塊中,包括創(chuàng)建用戶,輸入用戶名;用戶登錄等功能。在目錄管理模塊中,包括創(chuàng)建二級(jí)文件目錄,輸入文件的目錄名稱;顯示目錄,輸入文件目錄的名字,顯示出對(duì)應(yīng)的目;刪除目錄;進(jìn)入目錄主要是為了操作目錄內(nèi)部的文件。文件管理模塊,包括文件的創(chuàng)建,在進(jìn)入目錄后可以按照提示輸入文件的名稱,輸入密碼
26、,創(chuàng)建新的文件并添加文件的保護(hù)碼;打開(kāi)一個(gè)文件,在目錄中按照提示輸入文件的名稱,便可以打開(kāi)目錄中對(duì)應(yīng)的文件;打開(kāi)全部文件,進(jìn)入目錄后,按照提示輸入相應(yīng)的操作,即可打開(kāi)本目錄下所有的文件;刪除一個(gè)文件,進(jìn)入目錄按照提示選擇相應(yīng)的操作,輸入文件名稱,即可刪除此文件;寫入文件,在目錄中打開(kāi)一個(gè)文件,寫入內(nèi)容;讀取文件,在目錄中打開(kāi)文件,查看文件的內(nèi)容。修改保護(hù)碼,進(jìn)入目錄輸入文件的名稱,按照提示修改文件的保護(hù)碼。形象展示見(jiàn)下圖2.1</
27、p><p><b> 圖2.1</b></p><p><b> 2.2模塊關(guān)聯(lián)</b></p><p> 在系統(tǒng)中各個(gè)模塊之間有著一定的聯(lián)系,系統(tǒng)中創(chuàng)建10個(gè)用戶,每一個(gè)用戶可以創(chuàng)建多個(gè)目錄,在目錄中最多創(chuàng)建10個(gè)文件。用戶與目錄之間存在一對(duì)多的關(guān)系,目錄與文件之間也存在一對(duì)多的關(guān)系,用戶與文件之間也存在一對(duì)多的關(guān)系。
28、具體描述見(jiàn)下圖:</p><p><b> 圖2.2</b></p><p> 圖2.3 </p><p><b> 圖2.4 </b></p><p><b> 圖2.5 </b></p><p>&l
29、t;b> 3詳細(xì)設(shè)計(jì)</b></p><p><b> 3.1用戶結(jié)構(gòu)</b></p><p> typedef struct user{</p><p> char name[10];</p><p> Content *con;</p><p> struct u
30、ser *next;</p><p><b> }User;</b></p><p> 本系統(tǒng)可以創(chuàng)建10個(gè)用戶,用戶登陸時(shí)只要輸入正確便可進(jìn)入系統(tǒng),否則提示失敗要求重新輸入。</p><p><b> do{</b></p><p> printf("輸入新用戶名:\n"
31、;);</p><p> scanf("%s",name);</p><p><b> exist=0;</b></p><p> head=user->next;</p><p> while(head!=NULL){</p><p> if(strcmp(h
32、ead->name,name)==0){</p><p><b> exist=1;</b></p><p><b> break;</b></p><p><b> }</b></p><p> head=head->next;</p>&l
33、t;p><b> }</b></p><p> if(exist==1) printf("用戶名已存在!\n請(qǐng)重新輸入:");</p><p> }while(exist==1);</p><p><b> 3.2數(shù)據(jù)結(jié)構(gòu)說(shuō)明</b></p><p><b&g
34、t; 文件結(jié)構(gòu)鏈表</b></p><p> struct fnode { </p><p> char filename[FILENAME_LENGTH]; </p><p> int isdir; </p><p> int
35、isopen; </p><p> char content[255]; </p><p> fnode *parent; </p><p> fnode *child; </p><p> fnode *prev;
36、160;</p><p> fnode *next; </p><p><b> };</b></p><p><b> 函數(shù)介紹</b></p><p> void zengjiayonghu();//增加新用戶 </p><p> void
37、newfile(Content *con);//創(chuàng)建新文件</p><p> int display_files(Content *con);//展示所有文件</p><p> void dufile(Content *con);//讀取文件</p><p> void writefile(Content *con);//寫入文件</p><
38、;p> void shanchufile(Content *con);刪除文件</p><p> void yidongfile(User *u,Content *con);//移動(dòng)文件</p><p> int zhankaiallconcent(User *u);//展示所有文件</p><p> void newcontentname(Conte
39、nt *c,char name[]);//更改目錄名稱 </p><p> void newconcent(User *u);//增加新目錄 </p><p> void shanchuconcent(User *u);//刪除目錄 </p><p> void xiugaiconcentname(User *u);//修改目錄名稱</p>&l
40、t;p> void change_filepassword(Content *con);//修改文件保護(hù)碼</p><p> int readall_files(Content *con);//讀取所有文件</p><p> 3.3主要功能的關(guān)鍵代碼</p><p><b> 創(chuàng)建文件</b></p><p&g
41、t; 在用戶成功的創(chuàng)建目錄后,就可以創(chuàng)建文件了,創(chuàng)建新的文件時(shí)首先判斷文件名是否已經(jīng)存在,如果存在則提示重新輸入,否則提示“請(qǐng)輸入文件保護(hù)碼!”,在輸入文件保護(hù)碼后,將創(chuàng)建新的文件成功。</p><p><b> 關(guān)鍵代碼:</b></p><p> do{</p><p><b> exist=0;
42、</b></p><p> printf("請(qǐng)輸入新文件名:");</p><p> scanf("%s",f_name);</p><p> strcat(f_name,tail);</p><p> if(is_exist_file(con->file,f_name)) e
43、xist=1;</p><p> if(exist==1) printf("文件名已存在!\n");</p><p> }while(exist==1);</p><p> printf("請(qǐng)輸入文件保護(hù)碼:\n");</p><p> scanf("%s",passwor
44、d);</p><p> q=fopen(f_name,"w");</p><p> fclose(q);</p><p> while(file->next!=NULL) file=file->next;</p><p> new_f=(File *)malloc(sizeof(File));&
45、lt;/p><p> strcpy(new_f->name,f_name);</p><p> strcpy(new_f->password,password);</p><p> new_f->next=NULL;</p><p> file->next=new_f;</p><p>
46、con->filenum++;</p><p> printf("添加文件成功!\n",f_name);</p><p><b> }</b></p><p><b> 讀取文件</b></p><p> 讀取文件即查看文件中的內(nèi)容,當(dāng)輸入要讀取的文件名后,進(jìn)行判斷
47、文件名稱是否存在,若存在則打開(kāi)文件,查看文件的內(nèi)容,否側(cè)提示“文件名不存在!”,重新選擇讀取的文件名,進(jìn)行下一步的操作。</p><p><b> 關(guān)鍵代碼:</b></p><p> strcat(name,tail);</p><p> while(file!=NULL){</p><p> if(strcm
48、p(name,file->name)==0){</p><p><b> find=1;</b></p><p><b> break;</b></p><p><b> }</b></p><p> file=file->next;</p>
49、<p><b> }</b></p><p> if(find==0){</p><p> printf("文件名不存在!\n");</p><p><b> return;</b></p><p><b> }</b></p>
50、;<p><b> 寫入文件</b></p><p> 在正常的操作中,用戶創(chuàng)建文件主要是保存一些信息;在此系統(tǒng)中,用戶創(chuàng)建文件后可以在文件中寫入一些內(nèi)容,發(fā)揮文件的作用。首先判斷用戶輸入的文件名是否存在,再判斷用戶輸入的保護(hù)碼是否正確,正確進(jìn)入文件后便可以進(jìn)入文件,進(jìn)行寫操作。</p><p><b> 關(guān)鍵代碼:</b>&
51、lt;/p><p> strcat(name,tail);</p><p> while(file!=NULL){</p><p> if(strcmp(name,file->name)==0){</p><p><b> find=1;</b></p><p><b> b
52、reak;</b></p><p><b> }</b></p><p> file=file->next;</p><p><b> }</b></p><p> if(find==0){</p><p> printf("抱歉,文件名
53、不存在\n");</p><p><b> return;</b></p><p><b> }</b></p><p><b> do{</b></p><p> printf("請(qǐng)輸入保護(hù)碼:");</p><p&g
54、t; scanf("%s",password);</p><p> if(strcmp(password,file->password)==0) login=1;</p><p> if(login==0) printf("保護(hù)碼錯(cuò)誤!\n請(qǐng)重新輸入:");</p><p> }while(login==0);&
55、lt;/p><p> printf("現(xiàn)在文件已經(jīng)被打開(kāi)了...\n");</p><p> write(name);</p><p> printf("\n文件%s寫入成功!\n",name);</p><p><b> 移動(dòng)文件</b></p><p&g
56、t; 移動(dòng)文件是很常用的操作,用戶經(jīng)常整理自己的文件,將一些文件移動(dòng)到其它的目錄下,此操作首先輸入要移動(dòng)的文件的名稱,確認(rèn)用戶輸入的文件存在后,再輸入移動(dòng)的目標(biāo)目錄,進(jìn)行判斷后將文件移動(dòng)到此處,并提示“移動(dòng)成功!”。</p><p><b> 關(guān)鍵代碼:</b></p><p><b> do{</b></p><p&g
57、t;<b> exist=1;</b></p><p> printf("請(qǐng)輸入你想要移動(dòng)的文件名:");</p><p> scanf("%s",name);</p><p> strcat(name,tail);</p><p> if(!is_exist_file(
58、con->file,name)) exist=0;</p><p> if(exist==0) printf("該文件名不存在!\n");</p><p> }while(exist==0);</p><p> printf("移動(dòng)中...\n");</p><p> file=con-&
59、gt;file;</p><p> f=file->next;</p><p> while(f!=NULL){</p><p> if(strcmp(f->name,name)==0) break;</p><p> file=file->next;</p><p> f=f->ne
60、xt;</p><p><b> } </b></p><p><b> temp_f=f;</b></p><p> file->next=f->next;</p><p> printf("請(qǐng)輸入您想要移動(dòng)到的目標(biāo)目錄名: ");</p>&
61、lt;p> scanf("%s",c_name);</p><p><b> c=u->con;</b></p><p> while(c->next!=NULL){</p><p> if(strcmp(c->name,c_name)==0) break;</p><p&
62、gt; c=c->next;</p><p><b> }</b></p><p> f=c->file;</p><p> while(f->next!=NULL) f=f->next;</p><p> f->next=temp_f;</p><p>
63、 temp_f->next=NULL;</p><p> printf("移動(dòng)成功!\n");</p><p><b> 刪除文件</b></p><p> 有時(shí)一些文件對(duì)用戶來(lái)說(shuō)是沒(méi)有什么意義的,便可以將其刪除,在用戶登錄成功后,進(jìn)入目錄選擇刪除文件操作,輸入要?jiǎng)h除的文件名,系統(tǒng)進(jìn)行判斷文件名是否存在,當(dāng)文件存
64、在時(shí)可以執(zhí)行刪除操作,提示“文件刪除成功!”。</p><p><b> 關(guān)鍵代碼:</b></p><p> if(display_files(con)==0) printf("抱歉,你沒(méi)有文件可刪除!\n");</p><p><b> else{</b></p><p&g
65、t;<b> do{</b></p><p><b> exist=1;</b></p><p> printf("請(qǐng)輸入您想要?jiǎng)h除的文件名:");</p><p> scanf("%s",name);</p><p> strcat(name,ta
66、il);</p><p> if(!is_exist_file(con->file,name)) exist=0;</p><p> if(exist==0) printf("抱歉,該文件不存在!\n");</p><p> }while(exist==0);</p><p> printf("文件
67、刪除中...");</p><p> file=con->file;</p><p> f=file->next;</p><p> while(f!=NULL){</p><p> if(strcmp(f->name,name)==0) break;</p><p><b&g
68、t; file=f;</b></p><p> f=f->next;</p><p><b> } </b></p><p><b> 修改文件的保護(hù)碼</b></p><p> 保護(hù)碼是文件的安全保護(hù),現(xiàn)在的信息技術(shù)不斷增強(qiáng),也有很多人通過(guò)獲取其它人的文件來(lái)盜用他人重要
69、資料或信息,所以很多人采取密保來(lái)防止自己的文件內(nèi)容泄露。有時(shí)人們會(huì)隨意的設(shè)置自己的密碼,可能在設(shè)置后需要修改更加嚴(yán)密的密碼。再次我們?cè)O(shè)計(jì)了修改文件保護(hù)碼,方便用戶的更改。用戶選擇要修改的文件,系統(tǒng)判斷文件名是否存在,若存在則提示輸入原文件的保護(hù)碼,再次進(jìn)行判斷保護(hù)碼是否輸入正確,最后輸入新的保護(hù)碼,并進(jìn)行保存,提示“密碼修改成功!”。</p><p><b> 關(guān)鍵代碼:</b></
70、p><p> void change_filepassword(Content *con){</p><p> int login=0;</p><p> char name[10];</p><p> char tail[]=".txt";</p><p> int find=0;</
71、p><p> char password[10];</p><p> char newpassword[10];</p><p> File *file=con->file->next;</p><p> printf("請(qǐng)輸入要修改保護(hù)碼的文件名:");</p><p> sca
72、nf("%s",name);</p><p> strcat(name,tail);</p><p> while(file!=NULL){</p><p> if(strcmp(name,file->name)==0){</p><p><b> find=1;</b></p&g
73、t;<p><b> break;</b></p><p><b> }</b></p><p> file=file->next;</p><p><b> }</b></p><p> if(find==0){</p><p
74、> printf("啊噢。。。文件名不存在\n");</p><p><b> return;</b></p><p><b> }</b></p><p><b> do{</b></p><p> printf("請(qǐng)輸入原密碼:
75、");</p><p> scanf("%s",password);</p><p> if(strcmp(password,file->password)==0) login=1;</p><p> if(login==0) printf("真是悲哀,原密碼輸入錯(cuò)誤!\n請(qǐng)重新輸入:");</p&
76、gt;<p> }while(login==0);</p><p> printf("請(qǐng)輸入新密碼:");</p><p> scanf("%s",newpassword);</p><p> strcpy(file->password,newpassword);</p><p&
77、gt; printf("\n密碼修改成功!\n");</p><p><b> }</b></p><p> 以上是每個(gè)模塊的具體的操作介紹并附加關(guān)鍵代碼,關(guān)鍵代碼對(duì)一個(gè)系統(tǒng)來(lái)說(shuō)是非常重要的,有時(shí)候我們可以通過(guò)關(guān)鍵代碼以及注釋等來(lái)理解系統(tǒng)中的各種功能。在此系統(tǒng)中主要展示了添加用戶、用戶登錄、創(chuàng)建二級(jí)目錄、修改目錄名、刪除目錄、顯示全部目錄、創(chuàng)
78、建文件、修改文件名、刪除文件、寫入文件、讀取文件、修改文件保護(hù)碼等功能。</p><p><b> 4測(cè)試及運(yùn)行結(jié)果</b></p><p><b> 4.1 測(cè)試定義</b></p><p> 任何項(xiàng)目的開(kāi)發(fā)成功都離不開(kāi)測(cè)試,說(shuō)明測(cè)試起著重要的作用。測(cè)試使用人工或者自動(dòng)手段來(lái)運(yùn)行或測(cè)試某個(gè)系統(tǒng)的過(guò)程,其目的在于檢驗(yàn)
79、它是否滿足規(guī)定的去求或弄清楚預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別。它是幫助識(shí)別開(kāi)發(fā)完成(中間或最終的版本)的計(jì)算機(jī)軟件(整體或部分)的正確度(correctness)完全度(completeness)和質(zhì)量(quality)的軟件過(guò)程;是SQA的重要子域。</p><p> 測(cè)試并不僅僅是為了找出錯(cuò)誤,通過(guò)分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的發(fā)生趨勢(shì),可以幫助項(xiàng)目管理者發(fā)現(xiàn)當(dāng)前軟件開(kāi)發(fā)過(guò)程中的缺陷,以便及時(shí)改進(jìn);</p&g
80、t;<p> 這種分析也能幫助測(cè)試人員設(shè)計(jì)出有針對(duì)性的測(cè)試方法,改善測(cè)試的效果和有效性;</p><p> 沒(méi)有發(fā)現(xiàn)錯(cuò)誤的測(cè)試也是有價(jià)值的,完成的測(cè)試是評(píng)定軟件質(zhì)量的一種方法。</p><p> 測(cè)試可以分為黑盒測(cè)試和白盒測(cè)試,測(cè)試的方法不同,測(cè)試的結(jié)果、重點(diǎn)也不相同,選擇合適的測(cè)試方法對(duì)項(xiàng)目的承重有著重要的作用。</p><p><b&g
81、t; 4.2 測(cè)試目的</b></p><p> 如果測(cè)試的目的是為了盡可能多地找出錯(cuò)誤,那么測(cè)試就應(yīng)該直接針對(duì)軟件比較復(fù)雜的部分或者以前出錯(cuò)比較多的位置。如果測(cè)試的目的是為了給最終用戶提供具有一定可信度的質(zhì)量評(píng)價(jià),那么測(cè)試就應(yīng)該直接針對(duì)在實(shí)際應(yīng)用中會(huì)經(jīng)常用到的商業(yè)假設(shè)。當(dāng)然測(cè)試的目的不僅僅如此,也不會(huì)只針對(duì)某個(gè)部分進(jìn)行測(cè)試,而忽略其它部分,測(cè)試必須要全面。</p><p>
82、; 測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行的過(guò)程;</p><p> 測(cè)試是為了證明程序有錯(cuò),而不是證明程序無(wú)錯(cuò)誤;</p><p> 一個(gè)好的測(cè)試用例是在于它能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤;</p><p> 一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。</p><p><b> 4.3 測(cè)試結(jié)果</b></p>
83、<p> 4.3.1 文件測(cè)試</p><p> 用戶的操作對(duì)象是文件,首先創(chuàng)建文件,當(dāng)輸入文件名時(shí),測(cè)試文件名輸入的是否正確,輸入的文件名已經(jīng)存在時(shí),會(huì)出現(xiàn)提示信息;在文件中寫入內(nèi)容時(shí),測(cè)試輸入任何字符都可以,像普通的記事本一樣;在讀取文件時(shí),可以正常的讀取出文件中存在的內(nèi)容;刪除文件時(shí),輸入文件名,測(cè)試文件名是否輸入正確,在文件名不存在時(shí),界面出現(xiàn)提示信息;修改文件保護(hù)碼,測(cè)試輸入的初始文件保護(hù)
84、碼是否輸入正確,顯示提示信息,當(dāng)輸入正確時(shí),可以對(duì)保護(hù)碼進(jìn)行修改,并修改成功。測(cè)試的結(jié)果是正確的。</p><p> 成功創(chuàng)建文件界面設(shè)計(jì):示圖4.3.1</p><p><b> 圖4.3.1</b></p><p> 寫入文件界面設(shè)計(jì):示圖4.3.2</p><p><b> 圖4.3.2</
85、b></p><p> 讀取文件界面設(shè)計(jì):示圖4.3.3</p><p><b> 圖4.3.3</b></p><p> 刪除文件界面設(shè)計(jì):示圖4.3.4</p><p><b> 圖4.3.4</b></p><p> 修改文件保護(hù)碼界面設(shè)計(jì):示圖4.3.
86、5</p><p><b> 圖4.3.5</b></p><p> 移動(dòng)文件界面設(shè)計(jì):示圖4.3.6</p><p><b> 圖4.3.6</b></p><p> 顯示所有文件界面設(shè)計(jì):示圖4.3.7</p><p><b> 圖4.3.7</
87、b></p><p><b> 4.4 測(cè)試總結(jié)</b></p><p> 經(jīng)過(guò)測(cè)試,按照要求進(jìn)行測(cè)試,確保功能的完整性,是否有不正確或遺漏了的功能;在接口上輸入能否正確接受?能否輸出正確的結(jié)果?是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息(例如數(shù)據(jù)文件)訪問(wèn)錯(cuò)誤?性能上是否能夠滿足要求?是否有初始化或終止性錯(cuò)誤?黑盒測(cè)試發(fā)現(xiàn)程序中的錯(cuò)誤,必須在所有可能的輸入條件和輸出條件
88、中確定廁所是數(shù)據(jù),來(lái)檢查程序是否都能產(chǎn)生正確的輸出。</p><p> 在系統(tǒng)開(kāi)發(fā)的過(guò)程中,進(jìn)行每一步的調(diào)試,確保每一個(gè)方法、語(yǔ)句都被執(zhí)行到;開(kāi)發(fā)后,針對(duì)具體的要求,進(jìn)行測(cè)試,測(cè)試出系統(tǒng)中的功能能正常運(yùn)行,切每一步不合理的操作,界面上都有提示信息,便于用戶的操作、使用。經(jīng)過(guò)測(cè)試,在此系統(tǒng)中的所有功能都是按照要求實(shí)現(xiàn)的,且都附有操作提示,避免用戶操作失誤而導(dǎo)致不必要的麻煩。</p><p>
89、; 4.4 詳細(xì)代碼(在Linux環(huán)境下可運(yùn)行成功)</p><p> #include<sys/stat.h>//調(diào)用系統(tǒng)函數(shù)</p><p> #include<sys/types.h></p><p> #include<stdio.h></p><p> #include<uni
90、std.h></p><p> #include<dirent.h></p><p> #include<stdlib.h></p><p> #include <errno.h></p><p> #include<fcntl.h> </p>
91、<p> #include <string.h></p><p> struct Flie</p><p><b> {</b></p><p> int ed; //判斷是否正存放文件</p><p> char f_name[8]; //文件名</p>
92、<p> char f_c[8]; //存放文件內(nèi)容</p><p> int att ; // 文件屬性0為只讀 //用于指向文件內(nèi)容模塊</p><p> }fa[8],fg[8];</p><p> int x; //全局變量</p><p> /* 文件塊數(shù)據(jù)結(jié)構(gòu) */&l
93、t;/p><p> //typedef struct _FileTable</p><p><b> //{</b></p><p> //char *FileName;//文件名</p><p> //int strat;//文件在磁盤存儲(chǔ)空間的起始地址</p><p> /
94、/int length; //文件內(nèi)容長(zhǎng)度</p><p> //int maxlength; //文件的最大長(zhǎng)度</p><p> //char FileKind[3]; //文件的屬性——讀寫方式</p><p> //struct tm *timeinfo;</p><p> //
95、BOOL openFlag;//判斷是否有進(jìn)程打開(kāi)了該文件</p><p> //struct _fileTable *next;</p><p> //}FileTable;</p><p> struct File1</p><p><b> {</b></p><p> c
96、har *filename;//用戶文件夾名</p><p> int id;//文件夾編號(hào)</p><p><b> };</b></p><p> struct File1 fileName[10];//10個(gè)用戶文件</p><p> int I=0;//全局變量,用來(lái)控制用戶文件數(shù)目
97、</p><p> int init(); //初始化界面</p><p> void check(); //密碼認(rèn)證</p><p> void fileopera();//文件操作</p><p> int content(void);//目錄操作</p><p> void add_conten
98、t(void);//創(chuàng)建目錄</p><p> void delete_content();//刪除目錄</p><p> void createfile(); //創(chuàng)建文件操作</p><p> void deletefile() ; //刪除文件的操作</p><p> void openfile
99、() ; //打開(kāi)文件操作</p><p> void writefile(); //寫文件</p><p> void catalogue() ; //目錄管理子程序</p><p> void modifyfile(); //修改屬性操作</p><p> void c
100、opyfile(); // 復(fù)制文件操作</p><p> int show_content(int a,char argv[10]);//顯示目錄</p><p> int main(void)</p><p><b> {</b></p><p><b> while(1)</b>
101、;</p><p><b> {</b></p><p><b> int n;</b></p><p> printf("******************************\n");</p><p> printf("******* 1.目錄管理
102、 *********\n");</p><p> printf("******* 2.文件管理 *********\n");</p><p> printf("******* 3.退 出 *********\n");</p><p> printf("******************
103、************\n");</p><p> printf("請(qǐng)選擇\n" );</p><p> scanf("%d",&n);</p><p><b> switch(n)</b></p><p><b> {</b>&
104、lt;/p><p><b> case 1:</b></p><p> content();//調(diào)用目錄管理函數(shù)</p><p><b> break;</b></p><p><b> case 2:</b></p><p> fileop
105、era();//調(diào)用文件管理函數(shù)</p><p><b> case 3:</b></p><p><b> exit(0);</b></p><p><b> default :</b></p><p> printf("您的輸入有誤,退出!\n&quo
106、t;);</p><p> printf("\n");</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> int content(void)&
107、lt;/p><p><b> {</b></p><p><b> while(1)</b></p><p><b> {</b></p><p><b> int m;</b></p><p> printf("*
108、*****************************\n");</p><p> printf("******* 1.創(chuàng)建目錄 *********\n");</p><p> printf("******* 2.刪除目錄 *********\n");</p><p> printf("
109、******* 3.顯示目錄 *********\n");</p><p> printf("******* 4.退出 *********\n");</p><p> printf("******************************\n");</p><p> printf(&quo
110、t;請(qǐng)選擇\n" );</p><p> scanf("%d",&m);</p><p><b> switch(m)</b></p><p><b> {</b></p><p><b> case 1:</b></p>
111、;<p> add_content();//創(chuàng)建目錄</p><p><b> break;</b></p><p><b> case 2:</b></p><p> delete_content();//刪除目錄</p><p><b> break;
112、</b></p><p><b> case 3:</b></p><p> show_content(2,"/liwei");//顯示目錄</p><p><b> break;</b></p><p> case 4:</p>
113、<p> //exit(0);//退出目錄管理</p><p><b> return 0;</b></p><p><b> default:</b></p><p> printf("您的輸入有誤,退出!\n");</p><p><b>
114、 return 0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void add_content(void)</p><p><b
115、> {</b></p><p> char ptr[20];</p><p><b> int a;</b></p><p> while(I<=10){</p><p><b> if(I==0)</b></p><p> {printf
116、("請(qǐng)輸入您所要?jiǎng)?chuàng)建的主目錄:\n");scanf("%s",ptr);</p><p> a = mkdir(ptr,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH | S_IRWXO | S_IWOTH);</p><p><b> if(a==0)</b></p><p&
117、gt; {printf("主目錄創(chuàng)建成功!\n");fileName[I++].filename=ptr;break;} </p><p><b> else</b></p><p> {printf("目錄創(chuàng)建失?。n");break;}</p><p><b> }</b&g
118、t;</p><p> printf("請(qǐng)輸入您所要?jiǎng)?chuàng)建的用戶目錄:\n");</p><p> scanf("%s",ptr);</p><p> a = mkdir(ptr,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH | S_IRWXO | S_IWOTH); </p>
119、<p><b> if(a==0)</b></p><p> {printf("目錄創(chuàng)建成功!\n");fileName[I++].filename=ptr;break;}</p><p><b> else</b></p><p> {printf("目錄創(chuàng)建失??!\n&q
120、uot;);break;}</p><p><b> //將目錄保存</b></p><p><b> if(I>10)</b></p><p> printf("已經(jīng)有10個(gè)用戶文件目錄,不能再創(chuàng)建了!\n");</p><p><b> }</b
121、></p><p><b> }</b></p><p><b> //刪除目錄</b></p><p> void delete_content()</p><p><b> {</b></p><p><b> DIR *d
122、ir;</b></p><p> char ptr[20];</p><p><b> int a,i;</b></p><p> printf("請(qǐng)輸入你要?jiǎng)h除的目錄:\n");</p><p> scanf("%s",ptr);</p><
123、;p> for(i=0;i<10;i++)</p><p><b> {</b></p><p> if((strcmp(fileName[i++].filename,ptr) ))</p><p><b> {</b></p><p> dir=opendir(ptr);
124、//打開(kāi)目錄</p><p> if(dir!=NULL)</p><p><b> {</b></p><p> if(readdir(dir))</p><p><b> {</b></p><p> a=rmdir(ptr);//執(zhí)行刪除操作</p
125、><p><b> if(a==0)</b></p><p> {printf("目錄刪除成功!\n");I--;fileName[i++].filename=NULL;break;}</p><p><b> else</b></p><p> {printf("
126、目錄刪除失敗!\n");break;}</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p> {printf("文件目錄不存在!\n");break;}&l
127、t;/p><p><b> }</b></p><p> else printf("沒(méi)有該目錄!");break;</p><p><b> }</b></p><p><b> }</b></p><p> int show
128、_content(int argc,char argv[10])</p><p><b> {</b></p><p><b> DIR *dp;</b></p><p> struct dirent *dirp;</p><p><b> int n=0;</b>&l
129、t;/p><p> if(argc != 2)</p><p><b> {</b></p><p> printf("a single argument is required \n");</p><p><b> exit(0);</b></p><p
130、><b> }</b></p><p> if((dp=opendir(argv)) == NULL)</p><p> printf("can't open %s\n", argv);</p><p> while(((dirp=readdir(dp)) != NULL))</p>&l
131、t;p><b> {</b></p><p> printf("%10s",dirp->d_name);//輸出結(jié)果中有兩個(gè)特殊的文件“.”和“..”其中文件“.”表示當(dāng)前目錄的入口,文件“..”表示父目錄的入口</p><p><b> }</b></p><p> print
132、f(" \n");</p><p> closedir(dp);</p><p><b> }</b></p><p> void check() //密碼認(rèn)證</p><p><b> {</b></p><p> int check,a=1;
133、</p><p> char pin1[]="admin"; //設(shè)定口令</p><p> char pin[20];</p><p><b> while(a)</b></p><p><b> {</b></p><p> printf(&
134、quot;* * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");</p><p> printf(" * 文件管理系統(tǒng)用戶登錄 *\n");</p><p> printf("* * * * * * * * * * * * * * * * * * * *
135、 * * * * * * * *\n");</p><p> printf("請(qǐng)選擇用戶:\n");</p><p> printf(" 1.Administrator 2.Guest 3.退出系統(tǒng)\n");</p><p> scanf("%d",&x)
136、;</p><p><b> if(x==3)</b></p><p><b> {</b></p><p><b> break;</b></p><p><b> }</b></p><p> printf("
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)--模擬文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)---模擬文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)-模擬文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--虛擬文件系統(tǒng)的實(shí)現(xiàn)
- 《操作系統(tǒng)》課程設(shè)計(jì)-- 模擬文件管理系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)---文件系統(tǒng)的模擬
- 《操作系統(tǒng)》課程設(shè)計(jì)--模擬文件管理系統(tǒng)
- 操作系統(tǒng)文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)linux二級(jí)文件系統(tǒng)設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)簡(jiǎn)單文件系統(tǒng)的實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)--簡(jiǎn)單文件系統(tǒng)的實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--linux二級(jí)文件系統(tǒng)設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)--樹(shù)形目錄文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--多級(jí)文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--多級(jí)文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--多級(jí)文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)--模擬操作系統(tǒng)的實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--多級(jí)文件系統(tǒng).doc
- 操作系統(tǒng)課程設(shè)計(jì)二級(jí)文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)---多用戶多級(jí)目錄文件系統(tǒng)的實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論