版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 操作系統(tǒng)課程設計</b></p><p><b> 說 明 書</b></p><p><b> 前言</b></p><p> 簡單地說,Linux是一套免費使用和自由傳播的類Unix操作系統(tǒng),它主要用于基于Intel x86系列CPU的計算機上。這個系
2、統(tǒng)是由世界各地的成千上萬的程序員設計和實現(xiàn)的。其目的是建立不受任何商品化軟件的版權制約的、全世界都能自由使用的Unix兼容產(chǎn)品。</p><p> Linux不僅為用戶提供了強大的操作系統(tǒng)功能,而且還提供了豐富的應用軟件。用戶不但可以從Internet上下載Linux及其源代碼,而且還可以從Internet上下載許多Linux的應用程序。可以說,Linux本身包含的應用程序以及移植到Linux上的應用程序包羅萬
3、象,任何一位用戶都能從有關Linux的網(wǎng)站上找到適合自己特殊需要的應用程序及其源代碼,這樣,用戶就可以根據(jù)自己的需要下載源代碼,以便修改和擴充操作系統(tǒng)或應用程序的功能。這對Windows NT、Windows98、MS-DOS或OS/2等商品化操作系統(tǒng)來說是無法做到的。</p><p> Linux具有:穩(wěn)定、可靠、安全的優(yōu)點,并且有強大的網(wǎng)絡功能。其中有對讀、寫進行權限控制、審計跟蹤、核心授權等技術
4、,這些都為安全提供了保障。在相關軟件的支持下,可實現(xiàn)WWW、FTP、DNS、DHCP、E-mail等服務,還可作為路由器使用,利用IPCHAINS/IPTABLE網(wǎng)絡治理工具可構建NAT及功能全面的防火墻。</p><p> Linux是在GNU公共許可權限下免費獲得的,是一個符合POSIX標準的操作系統(tǒng)。Linux操作系統(tǒng)軟件包不僅包括完整的Linux操作系統(tǒng),而且還包括了文本編輯器、高級語言編譯器等應用軟件
5、。它還包括帶有多個窗口管理器的X-Windows圖形用戶界面,如同我們使用Windows NT一樣,允許我們使用窗口、圖標和菜單對系統(tǒng)進行操作。</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 設計成果7</p><p><b> 2總體設計8</b></p><p><b> 2.1功能介紹8</b><
7、/p><p><b> 2.2模塊關聯(lián)9</b></p><p><b> 3詳細設計12</b></p><p> 3.1用戶結(jié)構12</p><p> 3.2數(shù)據(jù)結(jié)構說明12</p><p> 3.3主要功能的關鍵代碼13</p><p
8、> 4測試及運行結(jié)果18</p><p> 4.1 測試定義18</p><p> 4.2 測試目的18</p><p> 4.3 測試結(jié)果19</p><p> 4.3.1 文件測試19</p><p><b> 5心得23</b></p><p
9、><b> 1需求分析</b></p><p><b> 1.1 功能介紹</b></p><p> 基于Linux的模擬文件系統(tǒng)的設計與實現(xiàn)完成以下功能:</p><p> (1)創(chuàng)建用戶:手動的創(chuàng)建10個用戶,都在界面上完成,輸入用戶名;每個用戶最多可以保存10個文件。</p><p&
10、gt; ?。?)用戶登錄:手動的登錄已經(jīng)創(chuàng)建的用戶,正確輸入用戶名即可成功登錄。 </p><p> ?。?)顯示所有用戶:首先會創(chuàng)建很多用戶,為了清晰、便捷的查看用戶,所以在界面上可以顯示所有的用戶,這一功能的實現(xiàn),主要是針對忘記自己用戶名的用戶,可以通過查看全部用戶來查找自己的用戶名。</p><p> ?。?)創(chuàng)建二級文件目錄(MD):手動的輸入目錄名稱,(即設置主目錄(MFD)和用
11、戶文</p><p> 件目錄(UFD))。</p><p> ?。?)顯示目錄:將用戶創(chuàng)建的目錄顯示在界面上。</p><p> (6)刪除目錄:手動輸入目錄的名稱即可刪除已經(jīng)創(chuàng)建的目錄。</p><p> ?。?)進入目錄:進入目錄內(nèi)部,可以進行文件的各種操作。</p><p> ?。?)修改目錄:在用戶登錄后
12、,輸入要修改的目錄名稱,對其進行修改,輸入新的目</p><p><b> 錄名并保存。</b></p><p> ?。?)建立一個文件(create):在目錄中手動輸入文件名,可以創(chuàng)建新的文件,在創(chuàng)建</p><p> 的同時輸入文件的保護碼,對文件內(nèi)容進行保護,防止信息泄露。</p><p> ?。?0)打開全部
13、文件(openall):將已經(jīng)創(chuàng)建的文件夾全部顯示在界面上。</p><p> ?。?1)刪除一個文件(delete):手動輸入已經(jīng)創(chuàng)建的文件的名稱,即可刪除此文件。</p><p> ?。?2)寫文件(write):手動的在文件中寫入內(nèi)容。</p><p> ?。?3)讀文件(read):查看文件中的已經(jīng)寫入的內(nèi)容。</p><p> ?。?/p>
14、14)移動文件:用戶可以將某個目錄下的文件移動到其它的目錄中,只為了整理文件,便于查詢,使用。</p><p> ?。?5)改文件的保護碼(change):手動修改文件的密碼(保護碼)。</p><p> 基于以上的功能,可以使用戶選擇操作,模擬文件系統(tǒng)的設計與實現(xiàn);此類功能都是在頁面上手動操作完成。</p><p><b> 1.2 目的及意義<
15、;/b></p><p><b> 1.2.1 目的</b></p><p> 通過課程設計,加深對操作系統(tǒng)各資源管理模塊的理解,掌握操作系統(tǒng)的基本原理及功能,具有初步分析實際操作系統(tǒng)、設計、構造和開發(fā)現(xiàn)代操作系統(tǒng)的基本能力?;贚inux的模擬文件系統(tǒng)的設計與實現(xiàn),熟悉基本的網(wǎng)絡命令以及他們的使用方法,體會Linux多用戶的特點,熟悉網(wǎng)絡配置文件的配置方法
16、。本系統(tǒng)是基于linux平臺運行在終端上的虛擬二級文件管理系統(tǒng)。模擬真正的文件管理系統(tǒng),并采用用戶登錄機制對文件和目錄進行創(chuàng)建,增加內(nèi)容,修改,刪除的操作。對于目錄而言,可以進行創(chuàng)建刪除新添文件的操作;對于文件而言,可以創(chuàng)建,修改,刪除。刪除目錄時,同時刪除相應目錄下的文件以及文件中的內(nèi)容。采用用戶登錄使得用戶管理文件更方便, 并形成了二級的文件管理模式。</p><p> 操作系統(tǒng)(OS)是重要的計
17、算機系統(tǒng)軟件,同時也是最活躍的學科之一,其發(fā)展極為迅速。它是配置在計算機硬件上的第一層軟件,是對硬件系統(tǒng)的首次擴充。它在計算機系統(tǒng)中占據(jù)了特別重要的地位;而其它的諸如匯編程序、編譯程序、數(shù)據(jù)庫管理系統(tǒng)等系統(tǒng)軟件,以及大量的應用軟件,都將依賴于操作系統(tǒng)的支持,取得它的服務。操作系統(tǒng)已成為現(xiàn)代計算機系統(tǒng)、多處理機系統(tǒng)、計算機網(wǎng)絡、多媒體系統(tǒng)以及嵌入式系統(tǒng)中都必須配置的、最重要的系統(tǒng)軟件。</p><p> 課程設計
18、是學習的總結(jié),通過課程設計溫習我們已經(jīng)學到的知識并加以運用,還可以了解到其它的知識,來充實自己,充分掌握操作系統(tǒng)的基本原理及各方面知識。</p><p><b> 1.2.2 意義</b></p><p> 基于其低廉成本與高度可設定性,Linux常常被應用于嵌入式系統(tǒng),例如機頂盒、移動電話及行動裝置等。在移動電話上,Linux已經(jīng)成為與Symbian
19、OS、Windows Mobile系統(tǒng)并列的三大智能手機操作系統(tǒng)之一;而在移動裝置上,則成為Windows CE與Palm OS外之另一個選擇。目前流行的TiVo數(shù)位攝影機使用了經(jīng)過定制化后的Linux。此外,有不少硬件式的網(wǎng)絡防火墻及路由器,例如部份LinkSys的產(chǎn)品,其內(nèi)部都是使用Linux來驅(qū)動、并采用了操作系統(tǒng)提供的防火墻及路由功能。 </p><p> Lin
20、ux以它的高效性和靈活性著稱。它能夠在PC計算機上實現(xiàn)全部的Unix特性,具有多任務、多用戶的能力。Linux是在GNU公共許可權限下免費獲得的,是一個符合POSIX標準的操作系統(tǒng)。Linux操作系統(tǒng)軟件包不僅包括完整的Linux操作系統(tǒng),而且還包括了文本編輯器、高級語言編譯器等應用軟件。它還包括帶有多個窗口管理器的X-Window圖形用戶界面,如同我們使用Windows NT一樣,允許我們使用窗口、圖標和菜單對系統(tǒng)進行操作。
21、 </p><p> Linux之所以受到廣大計算機愛好者的喜愛,主要原因有兩個,一是它屬于自由軟件,用戶不用支付任何費用就可以獲得它和它的源代碼,并且可以根據(jù)自己的需要對它進行必要的修改,無償對它使用,無約束地繼續(xù)傳播。另一個原因是,它具有Unix的全部功能,任何使用Unix操作系統(tǒng)或想要學習Unix操作系統(tǒng)的人都可以從Linux中獲益。</p><p> 在L
22、inux操作系統(tǒng)中實現(xiàn)文件的各種操作,即創(chuàng)建、刪除、修改、寫入、讀取等。通過課程設計讓我們進一步了解操作系統(tǒng),學習操作系統(tǒng)的各方面知識,加深對操作系統(tǒng)的認識,溫習課上學過的知識,明確操作系統(tǒng)的作用??梢栽诓煌慕嵌葋碛^察操作系統(tǒng)的作用。從一般客戶的觀點,可把操作系統(tǒng)看做是用戶與計算機硬件系統(tǒng)之間的接口;從資源管理的觀點看,則可把操作系統(tǒng)視為計算機系統(tǒng)資源的管理者。另外,操作系統(tǒng)實現(xiàn)了對計算機資源的抽象,隱藏了對硬件操作的細節(jié),使用戶能更
23、方便地使用機器。</p><p><b> 1.3 設計成果</b></p><p> 基于Linux的模擬文件系統(tǒng)的設計與實現(xiàn),實現(xiàn)了采用用戶登錄機制,可以查看文件信息,管理文件及文件夾。在界面中用戶可以手動的進行操作,每一步都有操作成功或失敗的提示,清晰的展示每一步的操作過程,用戶可以方便的實現(xiàn)對文件的操作,例如:創(chuàng)建、修改、刪除等。</p>&
24、lt;p> 經(jīng)過幾天的努力完成了基于Linux的模擬文件系統(tǒng)的設計與實現(xiàn)這一課題,按照具體的要求,將每個功能實現(xiàn)并附上溫馨提示,主要的功能有:展示了添加用戶、用戶登錄、創(chuàng)建二級目錄、修改目錄名、刪除目錄、顯示全部目錄、創(chuàng)建文件、修改文件名、刪除文件、寫入文件、讀取文件、修改文件保護碼等功能。</p><p><b> 2總體設計</b></p><p>&l
25、t;b> 2.1功能介紹</b></p><p> 本系統(tǒng)包括用戶管理、目錄管理、文件管理共3個模塊。在用戶管理模塊中,包括創(chuàng)建用戶,輸入用戶名;用戶登錄等功能。在目錄管理模塊中,包括創(chuàng)建二級文件目錄,輸入文件的目錄名稱;顯示目錄,輸入文件目錄的名字,顯示出對應的目;刪除目錄;進入目錄主要是為了操作目錄內(nèi)部的文件。文件管理模塊,包括文件的創(chuàng)建,在進入目錄后可以按照提示輸入文件的名稱,輸入密碼
26、,創(chuàng)建新的文件并添加文件的保護碼;打開一個文件,在目錄中按照提示輸入文件的名稱,便可以打開目錄中對應的文件;打開全部文件,進入目錄后,按照提示輸入相應的操作,即可打開本目錄下所有的文件;刪除一個文件,進入目錄按照提示選擇相應的操作,輸入文件名稱,即可刪除此文件;寫入文件,在目錄中打開一個文件,寫入內(nèi)容;讀取文件,在目錄中打開文件,查看文件的內(nèi)容。修改保護碼,進入目錄輸入文件的名稱,按照提示修改文件的保護碼。形象展示見下圖2.1</
27、p><p><b> 圖2.1</b></p><p><b> 2.2模塊關聯(lián)</b></p><p> 在系統(tǒng)中各個模塊之間有著一定的聯(lián)系,系統(tǒng)中創(chuàng)建10個用戶,每一個用戶可以創(chuàng)建多個目錄,在目錄中最多創(chuàng)建10個文件。用戶與目錄之間存在一對多的關系,目錄與文件之間也存在一對多的關系,用戶與文件之間也存在一對多的關系。
28、具體描述見下圖:</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詳細設計</b></p><p><b> 3.1用戶結(jié)構</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個用戶,用戶登陸時只要輸入正確便可進入系統(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請重新輸入:");</p><p> }while(exist==1);</p><p><b> 3.2數(shù)據(jù)結(jié)構說明</b></p><p><b&g
34、t; 文件結(jié)構鏈表</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);//移動文件</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);//修改文件保護碼</p><p> int readall_files(Content *con);//讀取所有文件</p><p> 3.3主要功能的關鍵代碼</p><p><b> 創(chuàng)建文件</b></p><p&g
41、t; 在用戶成功的創(chuàng)建目錄后,就可以創(chuàng)建文件了,創(chuàng)建新的文件時首先判斷文件名是否已經(jīng)存在,如果存在則提示重新輸入,否則提示“請輸入文件保護碼!”,在輸入文件保護碼后,將創(chuàng)建新的文件成功。</p><p><b> 關鍵代碼:</b></p><p> do{</p><p><b> exist=0;
42、</b></p><p> printf("請輸入新文件名:");</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("請輸入文件保護碼:\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)容,當輸入要讀取的文件名后,進行判斷
47、文件名稱是否存在,若存在則打開文件,查看文件的內(nèi)容,否側(cè)提示“文件名不存在!”,重新選擇讀取的文件名,進行下一步的操作。</p><p><b> 關鍵代碼:</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ā)揮文件的作用。首先判斷用戶輸入的文件名是否存在,再判斷用戶輸入的保護碼是否正確,正確進入文件后便可以進入文件,進行寫操作。</p><p><b> 關鍵代碼:</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("請輸入保護碼:");</p><p&g
54、t; scanf("%s",password);</p><p> if(strcmp(password,file->password)==0) login=1;</p><p> if(login==0) printf("保護碼錯誤!\n請重新輸入:");</p><p> }while(login==0);&
55、lt;/p><p> printf("現(xiàn)在文件已經(jīng)被打開了...\n");</p><p> write(name);</p><p> printf("\n文件%s寫入成功!\n",name);</p><p><b> 移動文件</b></p><p&g
56、t; 移動文件是很常用的操作,用戶經(jīng)常整理自己的文件,將一些文件移動到其它的目錄下,此操作首先輸入要移動的文件的名稱,確認用戶輸入的文件存在后,再輸入移動的目標目錄,進行判斷后將文件移動到此處,并提示“移動成功!”。</p><p><b> 關鍵代碼:</b></p><p><b> do{</b></p><p&g
57、t;<b> exist=1;</b></p><p> printf("請輸入你想要移動的文件名:");</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("移動中...\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("請輸入您想要移動到的目標目錄名: ");</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("移動成功!\n");</p><p><b> 刪除文件</b></p><p> 有時一些文件對用戶來說是沒有什么意義的,便可以將其刪除,在用戶登錄成功后,進入目錄選擇刪除文件操作,輸入要刪除的文件名,系統(tǒng)進行判斷文件名是否存在,當文件存
64、在時可以執(zhí)行刪除操作,提示“文件刪除成功!”。</p><p><b> 關鍵代碼:</b></p><p> if(display_files(con)==0) printf("抱歉,你沒有文件可刪除!\n");</p><p><b> else{</b></p><p&g
65、t;<b> do{</b></p><p><b> exist=1;</b></p><p> printf("請輸入您想要刪除的文件名:");</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> 修改文件的保護碼</b></p><p> 保護碼是文件的安全保護,現(xiàn)在的信息技術不斷增強,也有很多人通過獲取其它人的文件來盜用他人重要
69、資料或信息,所以很多人采取密保來防止自己的文件內(nèi)容泄露。有時人們會隨意的設置自己的密碼,可能在設置后需要修改更加嚴密的密碼。再次我們設計了修改文件保護碼,方便用戶的更改。用戶選擇要修改的文件,系統(tǒng)判斷文件名是否存在,若存在則提示輸入原文件的保護碼,再次進行判斷保護碼是否輸入正確,最后輸入新的保護碼,并進行保存,提示“密碼修改成功!”。</p><p><b> 關鍵代碼:</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("請輸入要修改保護碼的文件名:");</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("請輸入原密碼:
75、");</p><p> scanf("%s",password);</p><p> if(strcmp(password,file->password)==0) login=1;</p><p> if(login==0) printf("真是悲哀,原密碼輸入錯誤!\n請重新輸入:");</p&
76、gt;<p> }while(login==0);</p><p> printf("請輸入新密碼:");</p><p> scanf("%s",newpassword);</p><p> strcpy(file->password,newpassword);</p><p&
77、gt; printf("\n密碼修改成功!\n");</p><p><b> }</b></p><p> 以上是每個模塊的具體的操作介紹并附加關鍵代碼,關鍵代碼對一個系統(tǒng)來說是非常重要的,有時候我們可以通過關鍵代碼以及注釋等來理解系統(tǒng)中的各種功能。在此系統(tǒng)中主要展示了添加用戶、用戶登錄、創(chuàng)建二級目錄、修改目錄名、刪除目錄、顯示全部目錄、創(chuàng)
78、建文件、修改文件名、刪除文件、寫入文件、讀取文件、修改文件保護碼等功能。</p><p><b> 4測試及運行結(jié)果</b></p><p><b> 4.1 測試定義</b></p><p> 任何項目的開發(fā)成功都離不開測試,說明測試起著重要的作用。測試使用人工或者自動手段來運行或測試某個系統(tǒng)的過程,其目的在于檢驗
79、它是否滿足規(guī)定的去求或弄清楚預期結(jié)果與實際結(jié)果之間的差別。它是幫助識別開發(fā)完成(中間或最終的版本)的計算機軟件(整體或部分)的正確度(correctness)完全度(completeness)和質(zhì)量(quality)的軟件過程;是SQA的重要子域。</p><p> 測試并不僅僅是為了找出錯誤,通過分析錯誤產(chǎn)生的原因和錯誤的發(fā)生趨勢,可以幫助項目管理者發(fā)現(xiàn)當前軟件開發(fā)過程中的缺陷,以便及時改進;</p&g
80、t;<p> 這種分析也能幫助測試人員設計出有針對性的測試方法,改善測試的效果和有效性;</p><p> 沒有發(fā)現(xiàn)錯誤的測試也是有價值的,完成的測試是評定軟件質(zhì)量的一種方法。</p><p> 測試可以分為黑盒測試和白盒測試,測試的方法不同,測試的結(jié)果、重點也不相同,選擇合適的測試方法對項目的承重有著重要的作用。</p><p><b&g
81、t; 4.2 測試目的</b></p><p> 如果測試的目的是為了盡可能多地找出錯誤,那么測試就應該直接針對軟件比較復雜的部分或者以前出錯比較多的位置。如果測試的目的是為了給最終用戶提供具有一定可信度的質(zhì)量評價,那么測試就應該直接針對在實際應用中會經(jīng)常用到的商業(yè)假設。當然測試的目的不僅僅如此,也不會只針對某個部分進行測試,而忽略其它部分,測試必須要全面。</p><p>
82、; 測試是為了發(fā)現(xiàn)錯誤而執(zhí)行的過程;</p><p> 測試是為了證明程序有錯,而不是證明程序無錯誤;</p><p> 一個好的測試用例是在于它能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;</p><p> 一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。</p><p><b> 4.3 測試結(jié)果</b></p>
83、<p> 4.3.1 文件測試</p><p> 用戶的操作對象是文件,首先創(chuàng)建文件,當輸入文件名時,測試文件名輸入的是否正確,輸入的文件名已經(jīng)存在時,會出現(xiàn)提示信息;在文件中寫入內(nèi)容時,測試輸入任何字符都可以,像普通的記事本一樣;在讀取文件時,可以正常的讀取出文件中存在的內(nèi)容;刪除文件時,輸入文件名,測試文件名是否輸入正確,在文件名不存在時,界面出現(xiàn)提示信息;修改文件保護碼,測試輸入的初始文件保護
84、碼是否輸入正確,顯示提示信息,當輸入正確時,可以對保護碼進行修改,并修改成功。測試的結(jié)果是正確的。</p><p> 成功創(chuàng)建文件界面設計:示圖4.3.1</p><p><b> 圖4.3.1</b></p><p> 寫入文件界面設計:示圖4.3.2</p><p><b> 圖4.3.2</
85、b></p><p> 讀取文件界面設計:示圖4.3.3</p><p><b> 圖4.3.3</b></p><p> 刪除文件界面設計:示圖4.3.4</p><p><b> 圖4.3.4</b></p><p> 修改文件保護碼界面設計:示圖4.3.
86、5</p><p><b> 圖4.3.5</b></p><p> 移動文件界面設計:示圖4.3.6</p><p><b> 圖4.3.6</b></p><p> 顯示所有文件界面設計:示圖4.3.7</p><p><b> 圖4.3.7</
87、b></p><p><b> 4.4 測試總結(jié)</b></p><p> 經(jīng)過測試,按照要求進行測試,確保功能的完整性,是否有不正確或遺漏了的功能;在接口上輸入能否正確接受?能否輸出正確的結(jié)果?是否有數(shù)據(jù)結(jié)構錯誤或外部信息(例如數(shù)據(jù)文件)訪問錯誤?性能上是否能夠滿足要求?是否有初始化或終止性錯誤?黑盒測試發(fā)現(xiàn)程序中的錯誤,必須在所有可能的輸入條件和輸出條件
88、中確定廁所是數(shù)據(jù),來檢查程序是否都能產(chǎn)生正確的輸出。</p><p> 在系統(tǒng)開發(fā)的過程中,進行每一步的調(diào)試,確保每一個方法、語句都被執(zhí)行到;開發(fā)后,針對具體的要求,進行測試,測試出系統(tǒng)中的功能能正常運行,切每一步不合理的操作,界面上都有提示信息,便于用戶的操作、使用。經(jīng)過測試,在此系統(tǒng)中的所有功能都是按照要求實現(xiàn)的,且都附有操作提示,避免用戶操作失誤而導致不必要的麻煩。</p><p>
89、; 4.4 詳細代碼(在Linux環(huá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é)構 */&l
93、t;/p><p> //typedef struct _FileTable</p><p><b> //{</b></p><p> //char *FileName;//文件名</p><p> //int strat;//文件在磁盤存儲空間的起始地址</p><p> /
94、/int length; //文件內(nèi)容長度</p><p> //int maxlength; //文件的最大長度</p><p> //char FileKind[3]; //文件的屬性——讀寫方式</p><p> //struct tm *timeinfo;</p><p> //
95、BOOL openFlag;//判斷是否有進程打開了該文件</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;//文件夾編號</p><p><b> };</b></p><p> struct File1 fileName[10];//10個用戶文件</p><p> int I=0;//全局變量,用來控制用戶文件數(shù)目
97、</p><p> int init(); //初始化界面</p><p> void check(); //密碼認證</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、() ; //打開文件操作</p><p> void writefile(); //寫文件</p><p> void catalogue() ; //目錄管理子程序</p><p> void modifyfile(); //修改屬性操作</p><p> void c
100、opyfile(); // 復制文件操作</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("請選擇\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;請選擇\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、("請輸入您所要創(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("請輸入您所要創(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個用戶文件目錄,不能再創(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("請輸入你要刪除的目錄:\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、//打開目錄</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("沒有該目錄!");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é)果中有兩個特殊的文件“.”和“..”其中文件“.”表示當前目錄的入口,文件“..”表示父目錄的入口</p><p><b> }</b></p><p> print
132、f(" \n");</p><p> closedir(dp);</p><p><b> }</b></p><p> void check() //密碼認證</p><p><b> {</b></p><p> int check,a=1;
133、</p><p> char pin1[]="admin"; //設定口令</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("請選擇用戶:\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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設計--模擬文件系統(tǒng)
- 操作系統(tǒng)課程設計---模擬文件系統(tǒng)
- 操作系統(tǒng)課程設計-模擬文件系統(tǒng)
- 操作系統(tǒng)課程設計報告--虛擬文件系統(tǒng)的實現(xiàn)
- 《操作系統(tǒng)》課程設計-- 模擬文件管理系統(tǒng)
- 操作系統(tǒng)課程設計---文件系統(tǒng)的模擬
- 《操作系統(tǒng)》課程設計--模擬文件管理系統(tǒng)
- 操作系統(tǒng)文件系統(tǒng)的設計與實現(xiàn)課程設計
- 操作系統(tǒng)課程設計linux二級文件系統(tǒng)設計
- 操作系統(tǒng)課程設計簡單文件系統(tǒng)的實現(xiàn)
- 操作系統(tǒng)課程設計--簡單文件系統(tǒng)的實現(xiàn)
- 操作系統(tǒng)課程設計報告--linux二級文件系統(tǒng)設計
- 操作系統(tǒng)課程設計--樹形目錄文件系統(tǒng)
- 操作系統(tǒng)課程設計報告--多級文件系統(tǒng)
- 操作系統(tǒng)課程設計報告--多級文件系統(tǒng)
- 操作系統(tǒng)課程設計報告--多級文件系統(tǒng)
- 操作系統(tǒng)課程設計--模擬操作系統(tǒng)的實現(xiàn)
- 操作系統(tǒng)課程設計報告--多級文件系統(tǒng).doc
- 操作系統(tǒng)課程設計二級文件系統(tǒng)
- 操作系統(tǒng)課程設計---多用戶多級目錄文件系統(tǒng)的實現(xiàn)
評論
0/150
提交評論