




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課 程 設(shè) 計(jì) 課程名稱 操作系統(tǒng) 題目名稱 多用戶多級(jí)目錄文件系統(tǒng)的實(shí)現(xiàn) 學(xué)生學(xué)院 計(jì)算機(jī)學(xué)院 專業(yè)班級(jí)_計(jì)算機(jī)科學(xué)與技術(shù)4班 學(xué) 號(hào) 學(xué)生姓名_ _ 指導(dǎo)教師 2011年6月29日廣東工業(yè)大學(xué)課程設(shè)計(jì)任務(wù)書題目名稱多用戶多級(jí)目錄文件系統(tǒng)的實(shí)現(xiàn)學(xué)生學(xué)院計(jì)算機(jī)學(xué)院專業(yè)班級(jí)計(jì)算機(jī)科學(xué)與技術(shù)4班姓 名丘裕學(xué) 號(hào)3108006581一、課程設(shè)計(jì)的內(nèi)容本課程設(shè)計(jì)要求設(shè)計(jì)一個(gè)模擬的多用戶多級(jí)目錄的文件系統(tǒng)。通過(guò)具體的文件存儲(chǔ)空間的管理、文件的物理結(jié)構(gòu)、目錄結(jié)構(gòu)和文件操作的實(shí)現(xiàn),加深對(duì)文件系統(tǒng)內(nèi)部功能和實(shí)現(xiàn)過(guò)程的理解。 二、課程設(shè)計(jì)的要求與數(shù)據(jù)1 在內(nèi)存中開(kāi)辟一個(gè)虛擬磁盤空間作為文件存儲(chǔ)器,在其上實(shí)現(xiàn)一個(gè)
2、多用戶多目錄的文件系統(tǒng)。2 文件物理結(jié)構(gòu)可采用顯式鏈接或其他方法。3 磁盤空閑空間的管理可選擇位示圖或其他方法。如果采用位示圖來(lái)管理文件存儲(chǔ)空間,并采用顯式鏈接分配方式,則可以將位示圖合并到fat中。4 文件目錄結(jié)構(gòu)采用多用戶多級(jí)目錄結(jié)構(gòu),每個(gè)目錄項(xiàng)包含文件名、物理地址、長(zhǎng)度等信息,還可以通過(guò)目錄項(xiàng)實(shí)現(xiàn)對(duì)文件的讀和寫的保護(hù)。目錄組織方式可以不使用索引結(jié)點(diǎn)的方式,但使用索引結(jié)點(diǎn),則難度系數(shù)為1.2。5 設(shè)計(jì)一個(gè)較實(shí)用的用戶界面,方便用戶使用。要求提供以下相關(guān)文件操作:(1)具有l(wèi)ogin (用戶登錄)(2)系統(tǒng)初始化(建文件卷、提供登錄模塊)(3)文件的創(chuàng)建: create(4)文件的打開(kāi):op
3、en(5)文件的讀:read(6)文件的寫:write(7)文件關(guān)閉:close(8)刪除文件:delete (9)創(chuàng)建目錄(建立子目錄):mkdir(10)改變當(dāng)前目錄:cd(11)列出文件目錄:dir(12)退出:logout6 系統(tǒng)必須可實(shí)際演示,選用程序設(shè)計(jì)語(yǔ)言:c、c等。三、課程設(shè)計(jì)應(yīng)完成的工作1充分理解設(shè)計(jì)的任務(wù),完成設(shè)計(jì)的基本要求。然后根據(jù)自己的基礎(chǔ)和能力選擇不同難度的算法和實(shí)現(xiàn)方式,以取得更高的分?jǐn)?shù)。 2. 獨(dú)立獨(dú)立完成系統(tǒng)的分析、設(shè)計(jì)、編碼、測(cè)試工作。3完成設(shè)計(jì)報(bào)告的撰寫。4以光盤(以班為單位刻錄)方式提交已調(diào)試通過(guò)的完整的相關(guān)源程序和能夠運(yùn)行的執(zhí)行文件;提交“課程設(shè)計(jì)報(bào)告”
4、的書面和電子兩種版本。四、課程設(shè)計(jì)進(jìn)程安排五、應(yīng)收集的資料及主要參考文獻(xiàn)1 計(jì)算機(jī)操作系統(tǒng)(修訂版), 湯子瀛等 ,西安電子科技大學(xué)出版社, 2001 2 操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書,傅秀芬,廣東工業(yè)大學(xué)(自編)3 計(jì)算機(jī)操作系統(tǒng)教程 ( 第二版 ), 張堯?qū)W、 史美林,清華大學(xué)出版社,2000 4 現(xiàn)代操作系統(tǒng),a.s.tanenbaum 著,陳向群等譯機(jī)械工業(yè)出版社,2002 年發(fā)出任務(wù)書日期:2011年06月20日 指導(dǎo)教師簽名:計(jì)劃完成日期: 2011年06月29日 基層教學(xué)單位責(zé)任人簽章:目錄1 設(shè)計(jì)思想說(shuō)明71.1 設(shè)計(jì)環(huán)境71.2 設(shè)計(jì)思想72. 系統(tǒng)結(jié)構(gòu)的說(shuō)明73. 數(shù)據(jù)結(jié)構(gòu)的說(shuō)明74
5、. 各模塊的算法流程圖95. 程序源代碼155.1函數(shù)聲明155.2部分源代碼166. 程序運(yùn)行界面257. 操作說(shuō)明書288. 體會(huì)、建議281、 設(shè)計(jì)思想說(shuō)明1.1、設(shè)計(jì)環(huán)境 (1)計(jì)算機(jī)及操作系統(tǒng):pc機(jī),windowsxp (2)程序設(shè)計(jì)語(yǔ)言:c語(yǔ)言 (3)開(kāi)發(fā)平臺(tái):c+ builder (4)運(yùn)行平臺(tái):windows xp sp2,pc機(jī) 1.2、設(shè)計(jì)思想 本系統(tǒng)是模擬文件樹(shù)型管理方式,用界面直觀的實(shí)現(xiàn)文件的管理,以及用戶方便的對(duì)文件進(jìn)行操作,其中操作包括:打開(kāi)文件和文件夾、新建、剪切、復(fù)制、粘貼、刪除、重命名、刷新、文件屬性。文件管理系統(tǒng)的首先有一個(gè)登陸界面,提示用戶進(jìn)入主界面,主
6、界面有三個(gè)窗口:主菜單,下面兩個(gè)窗口體,左邊的一個(gè)顯示樹(shù)型的文件夾的顯示,右邊的窗口體是左邊選中的文件夾中的第一層內(nèi)容。 文件操作執(zhí)行都在右邊的窗口點(diǎn)擊右鍵選擇操作。2、 系統(tǒng)結(jié)構(gòu)的說(shuō)明系統(tǒng)主要分為四個(gè)窗口:登陸窗口,主窗口,文件的打開(kāi)編寫窗,文件屬性窗。其中主窗口包含了所有的操作。返回、打開(kāi)、新建、剪切、復(fù)制、粘貼、刪除、重命名、刷新、屬性這些功能都是由相應(yīng)的點(diǎn)擊事件劃分為不動(dòng)的函數(shù)。unit1.cpp為主窗口函數(shù),包含了以上所有函數(shù),unit2.cpp為文件編寫窗函數(shù),unit3.cpp為文件屬性窗函數(shù)。3、 數(shù)據(jù)結(jié)構(gòu)說(shuō)明文件夾結(jié)構(gòu)體: struct ufd /文件目錄結(jié)構(gòu)體 int si
7、gn; /標(biāo)志 0-file /1-folder ansistring filename; /文件/目錄名 char protect3; /文件保護(hù)碼 int length; /文件大小 ansistring content; /文件內(nèi)容 ufd *up; /父節(jié)點(diǎn)指針 struct ufd *next; /下一節(jié)點(diǎn)指針 struct ufd *folder; /目錄下一層指針 文件結(jié)構(gòu)體:struct mfd /用戶結(jié)構(gòu)體 ansistring username; /用戶名 struct ufd *ufd; /用戶目錄指針 struct mfd *link; /下一節(jié)點(diǎn)指針treeview
8、與ufd關(guān)系結(jié)構(gòu)體 struct ft_connect struct ufd *folder; /ufd指針 ttreenode *tree; /treeview節(jié)點(diǎn)指針 ft_connect *next; /下一節(jié)點(diǎn)指針 listview 與ufd關(guān)系結(jié)構(gòu)體struct fv_connect struct ufd *file; /ufd指針 tlistitem *item; /listview節(jié)點(diǎn)指針 fv_connect *next; /下一節(jié)點(diǎn)指針 4、 各模塊的算法流程圖主函數(shù)所有功能流程圖:登陸窗口的流程圖:打開(kāi)文件或者文件夾流程圖:添加文件文件夾流程圖:刷新函數(shù)流程圖剪切復(fù)制模塊流
9、程圖重命名模塊流程圖粘貼模塊流程圖刪除模塊流程圖查看模塊流程圖屬性模塊流程圖5、 程序源代碼5.1、 函數(shù)聲明int all_size();/統(tǒng)計(jì)listview中所有文件的大小int check_file_name(ufd *start,ansistring filename,int type); /尋找重名節(jié)點(diǎn)ufd *create_file(); /遞歸復(fù)制各節(jié)點(diǎn)void create_up_link(ufd *up,ufd *p); /復(fù)制后填寫每個(gè)節(jié)點(diǎn)中的up指針void createfile(ansistring filename); /新建文件void createfolder(
10、ansistring filename); /新建目錄ufd *copy_file(ufd *del);/遞歸復(fù)制各節(jié)點(diǎn)void delete_f(ufd *del); /遞歸刪除節(jié)點(diǎn)void delete_file(ufd *del); /刪除文件/文件夾void destory_ft(); /銷毀 文件-tree 鏈表void destory_fv(); /銷毀 文件-list 鏈表void disable_all(); /禁止控件ft_connect *draw_tree(ttreenode *tree_p,ufd *p); /遞歸生成樹(shù)狀結(jié)構(gòu)void enable_all(); /激活
11、控件void file_copy_paste(ufd *directory); /復(fù)制后的粘貼void file_cut(ufd *pcut); /剪切文件/文件夾void file_paste(ufd *directory); /剪切后粘貼ansistring file_path(ufd *p);/計(jì)算文件路徑void folder_view_ini(); /初始化目錄顯示void item_view_ini(); /初始化文件顯示void login(); /登錄void mfd_in(); /初始化用戶文件鏈表,并賦予用戶文件數(shù)據(jù)void per_copy(ufd *p); /復(fù)制voi
12、d refrash(); /刷新void reset(); /重置int subrelative(ufd *a,ufd *b); /判斷a是否從屬于b a在b里?void ufd_in(); /初始化用戶文件鏈表,并賦予用戶文件數(shù)據(jù)5.2、 部分源代碼void login() /登錄 ansistring username=user1; int sign=0; mfd *p,*q; reset(); disable_all(); if(!inputquery(用戶登錄,請(qǐng)輸入用戶名,username) return; p=mfd_head; while(p) if(p-username=use
13、rname) break; q=p; p=p-link; if(!p) sign=application-messageboxa(用戶不存在,是否創(chuàng)建?,登錄提示,mb_yesno); if(sign=idyes) p=new(mfd); p-username=username; p-link=null; p-ufd=create_file(null,原始文件); q-link=p; else return; current_user=p; form1-statusbar1-panels-items0-text=當(dāng)前用戶:+username; enable_all(); folder_view
14、_ini();void reset() /重置 form1-treeview1-items-clear(); form1-listview1-items-clear(); destory_ft(); cut=0; cut_prev=0; cut_up=0;void disable_all() /禁止控件 form1-listview1-enabled=0; form1-treeview1-enabled=0; form1-n11-enabled=0; form1-n12-enabled=0; form1-n13-enabled=0;void enable_all() /激活控件 form1-l
15、istview1-enabled=1; form1-treeview1-enabled=1; form1-n11-enabled=1; form1-n12-enabled=1; form1-n13-enabled=1;/-void _fastcall tform1:n2click(tobject *sender) /登錄按鈕 login();void folder_view_ini() /初始化目錄顯示 ft_connect *p; ttreenode *tree_p; form1-treeview1-items-clear(); tree_p=form1-treeview1-items-ad
16、dchild(null,current_user-username+ 的根目錄); ft_head=new(ft_connect); ft_head-next=null; ft_head-folder=0; ft_head-tree=tree_p; ft_p=ft_head; draw_tree(tree_p,current_user-ufd); p=ft_head; while(p&ufd_p) if(p-folder=ufd_p) break; p=p-next; if(p) p-tree-selected=1; else ft_head-tree-selected=1;ft_connec
17、t *draw_tree(ttreenode *tree_p,ufd *p) /遞歸生成樹(shù)狀結(jié)構(gòu) ttreenode *tree_q; while(p) if(p-sign=1) tree_q=form1-treeview1-items-addchild(tree_p,p-filename); ft_q=new(ft_connect); ft_q-next=null; ft_q-tree=tree_q; ft_q-folder=p; ft_p-next=ft_q; ft_p=ft_p-next; if(p-folder) draw_tree(tree_q,p-folder); p=p-next
18、; void item_view_ini() /初始化文件顯示 ansistring str; ufd *p; tlistitem *list_p; form1-listview1-items-clear(); if(!now_ft-tree) /無(wú)當(dāng)前選擇文件夾 p=current_user-ufd; else ft_p=ft_head; if(now_ft-folder=0) p=current_user-ufd; else p=now_ft-folder-folder; destory_fv(); /先銷毀原鏈表 fv_p=new(fv_connect); fv_p-next=null;
19、 fv_head=fv_p; while(p) /顯示并建立關(guān)系鏈表 list_p=form1-listview1-items-add(); list_p-caption=p-filename; if(p-sign=0) list_p-imageindex=1; fv_q=new(fv_connect); fv_q-item=list_p; fv_q-file=p; fv_q-next=null; fv_p-next=fv_q; fv_p=fv_p-next; p=p-next; fv_p=fv_head; fv_head=fv_head-next; free(fv_p); str=(stri
20、ng)form1-listview1-items-count+ 個(gè)對(duì)象; form1-statusbar1-panels-items1-text=str; if(now_ft-folder) str=now_ft-folder-filename; else str=根目錄; form1-statusbar1-panels-items3-text=當(dāng)前位置:+str; form1-statusbar1-panels-items2-text=總大?。?(string)all_size()+字節(jié);void destory_fv() /銷毀 文件-list 鏈表 fv_p=fv_head; while
21、(fv_p) fv_head=fv_p; fv_p=fv_p-next; free(fv_head); fv_head=null;void destory_ft() /銷毀 文件-tree 鏈表 ft_p=ft_head; while(ft_p) ft_head=ft_p; ft_p=ft_p-next; free(ft_head); ft_head=null;void _fastcall tform1:listview1dblclick(tobject *sender) /listview上雙擊圖表事件響應(yīng) tlistitem *p; p=listview1-selected; if(p)
22、fv_p=fv_head; while(fv_p) /已知list指針,通過(guò)文件-list鏈表獲取文件鏈表節(jié)點(diǎn)指針 if(fv_p-item=p) break; fv_p=fv_p-next; if(fv_p) ufd_p=fv_p-file; if(ufd_p-sign=1) ft_p=ft_head; while(ft_p) /已知文件鏈表節(jié)點(diǎn)指針,通過(guò)文件-tree 鏈表 獲取tree節(jié)點(diǎn)指針 if(ft_p-folder=ufd_p) break; ft_p=ft_p-next; if(ft_p) ft_p-tree-selected=true; /通過(guò)節(jié)點(diǎn)選中屬性展開(kāi)tree(并激活
23、之前定義的選中后更改右邊項(xiàng)目框顯示) else return; else if(!ufd_p-protect0) application-messageboxa(權(quán)限不足,無(wú)法讀取文件,錯(cuò)誤,mb_iconerror); return; if(!ufd_p-protect1) form2-memo1-readonly=1; form2-button1-enabled=0; else form2-button1-enabled=1; form2-memo1-readonly=0; edit=ufd_p; form2-show(); form2-caption=編輯文件 +ufd_p-filena
24、me; form2-memo1-text=ufd_p-content; 主界面的部分代碼:object form1: tform1 left = 238 top = 207 width = 697 height = 538 caption = 文件管理系統(tǒng) 08級(jí)計(jì)算機(jī)科學(xué)與技術(shù)4班 3108006581 丘裕 color = clbtnface font.charset = default_charset font.color = clwindowtext font.height = -13 font.name = ms sans serif font.style = menu = main
25、menu1 oldcreateorder = false oncreate = formcreate pixelsperinch = 96 textheight = 16 object splitter2: tsplitter left = 281 top = 0 width = 3 height = 465 cursor = crhsplit end object treeview1: ttreeview left = 0 top = 0 width = 281 height = 465 align = alleft autoexpand = true hideselection = false images = imagelist1 indent = 35 popupmenu = popupmenu2 readonly = true rightclickselect = true taborder = 0 onchange = treeview1change ondragdrop = treeview1dragdrop ondragover = treeview1dragover endobject listview1: tlistview left = 284 top = 0 width =
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 西安理工大學(xué)高科學(xué)院《生物醫(yī)學(xué)安全與法規(guī)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廈門城市職業(yè)學(xué)院《護(hù)理倫理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年去年語(yǔ)文會(huì)考試題及答案
- 2025年面試題排序分類及答案
- 2025年飛船太空考試試題及答案
- 2025年超聲科三基試題及答案
- 2025年貴州藥廠面試試題及答案
- 2025年集成電路省賽試題及答案
- 2025年安徽蚌埠中考英語(yǔ)試題及答案
- 2025年客運(yùn)培訓(xùn)考試題及答案
- 2024年單招考試題
- 人教版三年級(jí)下冊(cè)勞動(dòng)教育《清潔教室衛(wèi)生》
- DL∕T 802.8-2014 電力電纜用導(dǎo)管技術(shù)條件 第8部分:埋地用改性聚丙烯塑料單壁波紋電纜導(dǎo)管
- 反賄賂與反腐敗管理制度
- 2024屆北京市海淀區(qū)小學(xué)英語(yǔ)五年級(jí)第二學(xué)期期末質(zhì)量檢測(cè)試題含解析
- 鄉(xiāng)村振興相關(guān)知識(shí)備考試題庫(kù)(含答案)
- G -B- 43630-2023 塔式和機(jī)架式服務(wù)器能效限定值及能效等級(jí)(正式版)
- QC/T 1091-2023 客車空氣凈化裝置 (正式版)
- 2024年節(jié)水知識(shí)競(jìng)賽考試題及答案
- 《子路、曾皙、冉有、公西華侍坐》練習(xí)及參考答案
- 2024年江蘇醫(yī)藥職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完整
評(píng)論
0/150
提交評(píng)論