操作系統(tǒng)課程設(shè)計(jì)匯本1_第1頁(yè)
操作系統(tǒng)課程設(shè)計(jì)匯本1_第2頁(yè)
操作系統(tǒng)課程設(shè)計(jì)匯本1_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余18頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

4、件目錄構(gòu)造采用二級(jí)目錄構(gòu)造。為了簡(jiǎn)單起見(jiàn),可以使用文件構(gòu)造體, 構(gòu)造體容包括:文件名,文件目錄識(shí)別標(biāo)示,文件數(shù),以及他的左孩子右孩子左 兄弟右兄弟指4.要有分解函數(shù)對(duì)輸入的命令進(jìn)展分解。以識(shí)別那局部是哪局部是命令,哪局部是路徑和文件名。5.最后要有執(zhí)行函數(shù)。來(lái)執(zhí)行輸入的創(chuàng)立文件命令四、概要設(shè)計(jì)1.數(shù)據(jù)構(gòu)造(1)函數(shù)中的主要構(gòu)造體/兩級(jí)目錄構(gòu)造體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構(gòu)造體相互之間的調(diào)用關(guān)系圖:/主文件目錄MFD定義MFD目錄中

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

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

8、_LEN-MAND_LEN; 記錄當(dāng)前走過(guò)的路徑char Para1MAND_LEN,Para2INPUT_LEN-MAND_LEN;/para1 數(shù)組存儲(chǔ)輸入的命令,para2數(shù)組存儲(chǔ)輸入的文件名char file nameFILENAME_LEN,tmp;un sig ned int i,j;五、詳細(xì)設(shè)計(jì)1.主函數(shù)流程圖圖5主函數(shù)流程圖2.創(chuàng)立文件函數(shù)流程圖圖6創(chuàng)立文件函數(shù)流程圖具體函數(shù)實(shí)現(xiàn)過(guò)程如下: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 命令格式有錯(cuò)誤.n"); return 0;/長(zhǎng)度檢查if(strle n(Para2)>50) printf("n 文件名過(guò)長(zhǎng)n");return 0;/格式檢查if(!(isalpha(Para20)|Para20='_'|Para20='0'|Para20='/')printf("文件名格式有錯(cuò)!n");/*文件首字母可以為字母或數(shù)字'或'_'或'

10、/'或回車'*/return 0;/獲取文件名sig n=Fin dFile name(Para2);if(sig n=0)return 0;if(cp->isdir!=1)如當(dāng)前指針指向的是文件,那么報(bào)錯(cuò)prin tf("you cannot edit a file in un der a file!n");return 0;/創(chuàng)立文件結(jié)點(diǎn),并插入到指定目錄下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找到新結(jié)點(diǎn)插入處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"); 重名報(bào)錯(cuò)return 0;/找到了最后一個(gè)結(jié)點(diǎn) 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ù)實(shí)現(xiàn)過(guò)程如下:int deld()/ char tmp;int sig n;struct FileNod

13、e *temp;/參數(shù)不能為空if(strle n(Para2)=0)printf("n命令格式有錯(cuò)誤.n");return 0;/獲取文件名sig n=Fin dFile name(Para2);if(sign=0) return 0;/用temp指向要?jiǎng)h除的結(jié)點(diǎn)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;/要?jiǎng)h除的不能是目錄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)不是第一個(gè)孩子temp->sibli ng_prev->sibli ng_n ext=temp->sibli ng_n ext;if(temp->sibli ng_next)處理是最后一個(gè)兄弟的情況temp->sibli ng_n ext->sibli ng_prev=temp->sibli ng_prev;temp->sibli ng_prev=temp->sibli ng_n ext=NULL;/ifelse/第一個(gè)孩子if(temp->sibli ng_next

16、)處理是最后一個(gè)兄弟的情況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ù)流程圖六、測(cè)試修改及運(yùn)行結(jié)果1. 實(shí)際運(yùn)行結(jié)果:初始界面-"F:llsDebujYls. eie"g "F:llsDebugls. eze員嵐 WXitK!(賀:MSOtKK*聲員翼JOf 址宦嵐星ICMmtJiMMM試買恆嵐8買*歡迎進(jìn)入系統(tǒng)*

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

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

19、 >i/pite Is pLease irkpui; content -this is a project made h* linsha*匱社寫入咸功請(qǐng)用匚"命令將該文件關(guān)閉3讀文件葉*"-創(chuàng)建 格式 二:鱉騙 write-A T& die-顯不文件卑return-M 戶,I exit-JR岀程序*F:lMs»ebugls. execreate a 500 pvj”將倉(cāng)勺"將刪除名為&砲閔f各式=cat已,顯不朮的內(nèi)容亍£: urite &,齊式 dir亠將戶恂所有文件 稿式t closr iU寤關(guān)|詢文伴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*擔(dān)賓 M:Z*K:M XU JCM:X X 嵐其 M其 X 毘 X胃 M Jt 耳!KX 址貝其貝X己被Kead逬程打開(kāi)吊用上命令將其關(guān)閉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,文件名 文件長(zhǎng)度文件在磁盤的起妬地址文件類型創(chuàng)建時(shí)間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關(guān)閉文件6刪除文件create a 500 F叭將創(chuàng)建名為盼長(zhǎ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-顯護(hù)文件t&iti dir Is,將顯亦“用戶 close-關(guān)閉文件 稻歩close視,蔣親閉文半 戶,逅回登錄界嗇exit-退岀程序和所rt件please imput i/cmjii* eomnand : >cl_sB文件己關(guān)閉g並示d的內(nèi)容亍£= wiite a疇J舉黠所有文杵喊回登錄界面please input youp contnand: >i*m七、完畢語(yǔ)雖然

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

溫馨提示

  • 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ù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論