操作系統(tǒng)課程設計匯本1_第1頁
操作系統(tǒng)課程設計匯本1_第2頁
操作系統(tǒng)課程設計匯本1_第3頁
免費預覽已結束,剩余18頁可下載查看

下載本文檔

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

文檔簡介

1、操作系統(tǒng)原理課程設計報告題目:采用二級目錄實現(xiàn)文件管理所在學院:班 級:學 號:姓 名:指導教師:2013年1月15日一、課程設計目的1二、課題容1三、總體路線 1四、概要設計 21. 數(shù)據(jù)構造 22. 所使用函數(shù)及其功能 3五、 詳纟田設計 41. 主函數(shù)流程圖 42. 創(chuàng)立文件函數(shù)流程圖 53. 刪除文件函數(shù)流程圖 74. 分解命令函數(shù)流程圖 10六、測試、修改及運行結果 10七、完畢語 13八、參考文獻 14、課程設計目的文件系統(tǒng)是現(xiàn)代OS用來存儲和管理信息機構,具有按名存取的功能,不僅能方便用戶 對信息的使用,也有效提高了信息的平安性。 本課題模擬文件系統(tǒng)的目錄構造, 并在此根底 上實

2、現(xiàn)文件的各種操作方法。通過本課題,深入理解文件文件目錄的作用和功能,掌握文件翻開構造,熟悉與文件 有關的系統(tǒng)調(diào)用,從而更好地掌握文件系統(tǒng)概念。、課題容1 文件目錄采用二級目錄構造,第一級為主文件目錄 master_file_directory;第二級為用戶文件目錄 user_file_directory 。用戶名用戶文件目錄地址圖 1 master file directory構造文件名文件保護方式文件設置長度文件所在地址圖 2 user_file_directory 構造2 為加速文件存取,為每個用戶建立一用戶翻開表fileTable ,用以記錄該用戶當前正在使用的文件。文件名文件長度文件所

3、在地址文件類型創(chuàng)立文件時間圖 3 fileTable 構造3 為該系統(tǒng)提供6條操作命令:創(chuàng)立、翻開、讀、寫、關閉、刪除等。4. 在該模擬系統(tǒng)中,應先建立主文件目錄、用戶目錄和用戶翻開文件表, 然后承受合法用戶,給出一個菜單,按用戶選擇執(zhí)行相關操作。三、總體路線1 在存中開辟一個虛擬磁盤空間作為文件存儲器,在其上實現(xiàn)一個簡單 的單用戶文件系統(tǒng)。在退出這個簡單的文件系統(tǒng)時,應將該虛擬文件系統(tǒng)保存到 磁盤上,以便下次可以再將它恢復到存的虛擬磁盤空間中。2 文件存儲空間的分配采用顯式分配。為了實現(xiàn)創(chuàng)立和刪除文件必須要10 / 19有一棵初始的文件樹存在,以便在文件樹的根節(jié)點下實現(xiàn)創(chuàng)立和刪除文件。3 文

4、件目錄構造采用二級目錄構造。為了簡單起見,可以使用文件構造體, 構造體容包括:文件名,文件目錄識別標示,文件數(shù),以及他的左孩子右孩子左 兄弟右兄弟指4.要有分解函數(shù)對輸入的命令進展分解。以識別那局部是哪局部是命令,哪局部是路徑和文件名。5.最后要有執(zhí)行函數(shù)。來執(zhí)行輸入的創(chuàng)立文件命令四、概要設計1.數(shù)據(jù)構造(1)函數(shù)中的主要構造體/兩級目錄構造體typedef struct master_file_directory 一 一 char userName10; char password10; UFD *user;MFD;MFD userTableMaxUser; int used=0;/type

5、def struct user_file_directory 一 一 /char fileName10; fileTable *file; user_file_directory *n ext;UFD;/UFD *headFile;typedef struct fileTablechar fileName10;int strat;int len gth;int maxle ngth; char fileKi nd3; struct tm *timei nfo; bool ope nF lag; /fileTable *n ext;2構造體相互之間的調(diào)用關系圖:/主文件目錄MFD定義MFD目錄中

6、用已有的用戶數(shù) 用戶文件目錄文件UFD文件塊構造體文件在磁盤存儲空間的起始地址文件容長度文件的最大長度文件的屬性一一讀寫方式判斷是否有進程翻開了該文件10 / 19圖4構造體關系圖2.模塊構造1所用函數(shù)及其功能:void Ini t();初始化文件樹int Parsema nd();承受輸入的命令并把其分解成操作名和路徑文件名void Executemand();執(zhí)行命令,分別執(zhí)行 edit ,del,dir, exit 命令int editd(); 處理edit命令,即創(chuàng)立文件,只要創(chuàng)立表示文件的節(jié)點即可, 容及大小不考慮int deld(); 處理del命令,即刪除指定文件,不存在是給出錯

7、誤信息int dird();處理dir命令。問了能顯示的看出創(chuàng)立文件和刪除文件是否成功,把根目錄的文件都顯示出來int Fin dFile name(char Para2);查找文件名struct FileNode* CreateFileNode(char file name,i ntisdir,i nti_nli nk);創(chuàng)立結點int GetI nput(char* buffer,u nsig ned int buffer_le n);獲取輸入2所使用變量struct FileNode *cp, *tp, *root; *cp, *tp, *root是根目錄節(jié)點char pathINPUT

8、_LEN-MAND_LEN; 記錄當前走過的路徑char Para1MAND_LEN,Para2INPUT_LEN-MAND_LEN;/para1 數(shù)組存儲輸入的命令,para2數(shù)組存儲輸入的文件名char file nameFILENAME_LEN,tmp;un sig ned int i,j;五、詳細設計1.主函數(shù)流程圖圖5主函數(shù)流程圖2.創(chuàng)立文件函數(shù)流程圖圖6創(chuàng)立文件函數(shù)流程圖具體函數(shù)實現(xiàn)過程如下:int editd()/char tmp;struct FileNode * temp=CreateFileNode("",0,0); int sig n;struct F

9、ileNode *tp;/路徑不能為空if(strle n(Para2)=0)printf("n 命令格式有錯誤.n"); return 0;/長度檢查if(strle n(Para2)>50) printf("n 文件名過長n");return 0;/格式檢查if(!(isalpha(Para20)|Para20='_'|Para20='0'|Para20='/')printf("文件名格式有錯!n");/*文件首字母可以為字母或數(shù)字'或'_'或'

10、/'或回車'*/return 0;/獲取文件名sig n=Fin dFile name(Para2);if(sig n=0)return 0;if(cp->isdir!=1)如當前指針指向的是文件,那么報錯prin tf("you cannot edit a file in un der a file!n");return 0;/創(chuàng)立文件結點,并插入到指定目錄下tp=CreateFileNode("",1,0);strcpy(tp->file name,file name);tp->isdir=0;tp->i_nl

11、i nk=0;if(cp->child=NULL) tp->pare nt=cp;tp->child=NULL;cp->child=tp;tp->sibli ng_prev=NULL;tp->sibli ng_n ext=NULL;else temp=cp;/用temp找到新結點插入處temp=temp->child;while(temp->sibli ng_n ext )/find the last sib ing nodetemp=temp->sibli ng_n ext;if(strcmp(temp->file name,fil

12、e name)=0&&temp->isdir=O) printf(" 此文件名已存在n"); 重名報錯return 0;/找到了最后一個結點 temp->sibli ng_n ext=tp;tp->pare nt=NULL; tp->child=NULL; tp->sibli ng_prev=temp; tp->sibli ng_n ext=NULL; return 1;3.刪除文件函數(shù)流程圖圖7刪除函數(shù)流程圖 具體函數(shù)實現(xiàn)過程如下:int deld()/ char tmp;int sig n;struct FileNod

13、e *temp;/參數(shù)不能為空if(strle n(Para2)=0)printf("n命令格式有錯誤.n");return 0;/獲取文件名sig n=Fin dFile name(Para2);if(sign=0) return 0;/用temp指向要刪除的結點if(cp->child)temp=cp->child;while(temp->sibli ng_n ext&& (strcmp(temp->file name,file name)!=O| temp->isdir!=O)temp=temp->sibli ng_

14、n ext;if(strcmp(temp->file name,file name)!=O)printf(" 不存在該文件!n");return 0;elseprintf("不存在該文件!n");return 0;/要刪除的不能是目錄if(temp->isdir!=0)printf("ERROR!該命令只能刪除文件,不可刪除目錄!n");return 0;/如仍有用戶使用該文件,那么不能刪除if(temp->i_nli nk!=0)printf("還有用戶共享了該文件,不能刪除!n");retur

15、n 0;/刪除工作if(temp->pare nt=NULL)不是第一個孩子temp->sibli ng_prev->sibli ng_n ext=temp->sibli ng_n ext;if(temp->sibli ng_next)處理是最后一個兄弟的情況temp->sibli ng_n ext->sibli ng_prev=temp->sibli ng_prev;temp->sibli ng_prev=temp->sibli ng_n ext=NULL;/ifelse/第一個孩子if(temp->sibli ng_next

16、)處理是最后一個兄弟的情況temp->sibli ng_n ext->pare nt=temp->pare nt;temp->pare nt->child= temp->sibli ng_n ext;/elsefree(temp);return 1;4.分解命令函數(shù)流程圖圖8分解命令函數(shù)流程圖六、測試修改及運行結果1. 實際運行結果:初始界面-"F:llsDebujYls. eie"g "F:llsDebugls. eze員嵐 WXitK!(賀:MSOtKK*聲員翼JOf 址宦嵐星ICMmtJiMMM試買恆嵐8買*歡迎進入系統(tǒng)*

17、«F1Cpet nsepM2, login*W其耳TtXMl(驀X3(X?(3(JCM 算耳 XW XKKMjCKICmCXMXHNXWMXMTCXXXWXKPlease ehooce tlie f unct ion k&yt >1 請輸入用戶名:liuslia請輸入密狗:*3. 登陸c" *F;MMsXDcbucMs. exe歡迎進入系統(tǒng)Great user2 loginOC名:*功 ho戶爲 匚用密錄 £e入入普亠4.文件操作1創(chuàng)立文件"F:llsPebiigXls_ e>e*:詢I鱉格忠Ife謀歸創(chuàng)建名機長度曲字節(jié)可朗寫嚴 ca

18、t件內(nèi)番格式=cat a顯存i的內(nèi)容writejg-TX,; write a4込-顯示文件稻式* dir 1,將顯示"用戶的所有文件 c lose-關閉文件close h*嗚親閉文佯理叩-退出用戶,疸回矍錄界面空沁七-退由程點create 片皿-卅 cat- write-A 竝廠顯示文-創(chuàng)建格式:“E就E A 500 rw, pm孔,將刪除名為a的丈, 鑾格武J cat刊顯亦a的內(nèi)容 式主 wiite a 睡 g丄-將砌決甩£釣所有文件 稿A:el"®» 6喘親閉文佯呂 氣?;刎N錄界面exitplease intput cup canmand:

19、 >i/pite Is pLease irkpui; content -this is a project made h* linsha*匱社寫入咸功請用匚"命令將該文件關閉3讀文件葉*"-創(chuàng)建 格式 二:鱉騙 write-A T& die-顯不文件卑return-M 戶,I exit-JR岀程序*F:lMs»ebugls. execreate a 500 pvj”將倉勺"將刪除名為&砲閔f各式=cat已,顯不朮的內(nèi)容亍£: urite &,齊式 dir亠將戶恂所有文件 稿式t closr iU寤關|詢文伴a登錄界

20、畫Fmplease ZLmput our command: >cat IsXM M:K>EKiMKlf KME UKSMlil; WXKWKK餐KiH KX M:虛寰EMEKKM;XKK共HSCM;X其 KX KXM: WEmfthis is a project made by liusha*擔賓 M:Z*K:M XU JCM:X X 嵐其 M其 X 毘 X胃 M Jt 耳!KX 址貝其貝X己被Kead逬程打開吊用上命令將其關閉4顯示文件1 VllsDel)u.g13. eie*c右杳看交件刃窒格式:臥和顯示已的內(nèi)容 write-A 格式£ write adir-L示文件

21、貉式0將顯示山甩戶的所有文件 剤可対飪格或;close閉支氐return滾回登錄界面exit-fiffi 程岸please imput: your CDinvriand: >dlr li-iishaNX梵KlieXMHKXXXXltJfXMMltiMXXNJtfXNXiOCMiKMEHWiKUlCXMZKiMKUffMiKiKXHiCMEiMlOfKMrJCXJiEMZJfiitJfKXltfMiZMKlOCMi,文件名 文件長度文件在磁盤的起妬地址文件類型創(chuàng)建時間is660pw Ued Jan 16 15:16 *21 2013X>M;K!KKXM;>«!KXX*

22、:K3i<a<>t>CK*KXa<XX3<Xa<>£X3<XX>0<3<irX/M:X!HXXM;<XK>Og!KXXW:3<XXaC:M>«X!KX>CM!3<!KK>CM!b5關閉文件6刪除文件create a 500 F叭將創(chuàng)建名為盼長度為£師字節(jié)可誘可寫的文件create-創(chuàng)建”格式 "-刪|除_稻芮 cat -查看文件 mith寫入 扌_ “ dW-顯下文件 格式dlr is, clOSe-mfr C FEtUPn-fi.岀用戶,

23、EX譏-退占程序run n.*F:lMsDebugls. eMe*rm-Wft蚩式:rm au垃刪除名為a的文件 oat-*看爻件內(nèi)容 格式:cat顯示亂的內(nèi)容write-, write adir-顯護文件t&iti dir Is,將顯亦“用戶 close-關閉文件 稻歩close視,蔣親閉文半 戶,逅回登錄界嗇exit-退岀程序和所rt件please imput i/cmjii* eomnand : >cl_sB文件己關閉g並示d的內(nèi)容亍£= wiite a疇J舉黠所有文杵喊回登錄界面please input youp contnand: >i*m七、完畢語雖然

24、我們做過很屢次課程設計了,但是感覺自己還有好多需要學習的地方, 接到題目要求時,設計大體的框架, 考慮好所使用的數(shù)據(jù)構造,然后用高級編程 語言分模塊的把架子的思路編寫出來,調(diào)試, 運行,再看看是不是符合題目的要 求,上網(wǎng)找些資料,看看想想是不是要提高要求,才可以滿足實際的需要,最后 把收集的勞動成果組合起來,一個小程序終于成型了,雖然每次的過程差不多都 一樣,但是每次都會有不同的體會。在這中間,敲代碼,調(diào)試程序的過程比擬枯燥,每次思考一個問題很久不能解決的時候, 真的很想放棄它,試著找客觀的 原因,幸好,我的周圍有學習好的同學, 他們不僅幫我解答了我遇到的一些當時 困擾著我的問題,還給了我很多鼓勵,交流了一下做程序的思想,方法,跟我談 毅力,決心,還有什么是進步,這些是平時聽教師講

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論