版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、11摘 要本程序?qū)⒛M一個很簡單的文件系統(tǒng),實現(xiàn)對文件的管理和控制功能,文件系統(tǒng)向用戶提供了一整套的文件體統(tǒng)調(diào)用命令,在用戶程序中用戶可通過使用文件系統(tǒng)提供的一系列命令對文件進行操作。其功能對文件的增加、刪除、顯示、修改,以及對文件目錄的查詢(顯示)、改變、創(chuàng)建、刪除、等操作文件采用的物理結(jié)構(gòu)為連續(xù)。程序是采用二級文件目錄。(即設置主目錄(MFD)和用戶文件目錄(UFD)。另外,為打開文件設置指針。為了方便實現(xiàn),對文件的讀寫作了簡化。在執(zhí)行讀寫命令時,只需改讀寫指針。并不進行實際的讀寫操作。關鍵詞: 文件系統(tǒng) 文件指針 模擬 管理信息正 文1. 設計思想程序是采用二級文件目錄。(即設置主目錄(
2、MFD)和用戶文件目錄(UFD)。另外,為打開文件設置指針。為了方便實現(xiàn),對文件的讀寫作了簡化。在執(zhí)行讀寫命令時,只需改讀寫指針。并不進行實際的讀寫操作??驁D如下: (用戶“1”文件目錄)(用戶目錄)1文件名 保護碼 文件長度 文件指針MFD2 用戶1(名字)3用戶24用戶35用戶4678910 (用戶“2”文件目錄) 1 文件名保護碼 文件長度 文件指針 2 3 4 5 6 7 8 9 10圖1 目錄框圖實驗開始,先進入MFD表,初值為空。輸入用戶名字,需要保存用戶名字,同時也有了有個新文件目錄表。接著是文件的一系列的基本操作:1、 打印所有文件名。2、 打開一個文件。3、 添加一個文件。4
3、、 刪除一個文件。5、 改文件的保護碼。6、 寫文件。7、 讀文件。8、 退出。2. 函數(shù)調(diào)用關系圖:在MFD中找到該用戶輸入用戶名開始輸入操作命令初始化運行文件表AFD顯示該用戶目錄表UFD中的所有文件是什么命令打開全部文件打開一個文件創(chuàng)建一個文件刪除文件讀文件寫文件改變保護碼退出結(jié)束圖2 流程圖3. 算法用到的主要數(shù)據(jù)結(jié)構(gòu)/結(jié)構(gòu)體,用戶變量struct user char name10; user10;/結(jié)構(gòu)體,文件變量struct link struct file char name10; /文件名int lenght;/文件長度int write; /讀文件int read; /寫文件
4、int exe;file10;int used;link10;4. 相關的各模塊的偽碼算法檢測用戶函數(shù)checkuser() for(int i=0;i<10;i+)s=strcmp(“cin<<name”,);if(s=0) return i;建立用戶函數(shù)createuser()strcpy(,”cin<<name”);linkin.used=0;in+;打開所有文件openall()If :file p=0 ,file is empty;else :cout<<"文件名讀保護寫保護執(zhí)保護"&l
5、t;<endl;cout<<、相、關、值、打開單個文件openfile() if :cin>>name;int i=find();cannot find;file not exist else :cout<<"文件名讀保護寫保護執(zhí)保護文件長度”<<endl; cout <<、相、關、值、 建立文件createfile()cin>>file name; write=0;read=0;exe=0;lenght=0;刪除文件deletefile()cin>>file nameUse function
6、find() If cannot find;cout<<"此文件不存在!"else deletefile and some filepointers;寫文件write() cin>>file name Function find();If:cannot findcout<<"此文件不存在!"else : cin>>length file.lenght+=l;讀文件 read() cin>>file name;Function find();If :cannot findcout<<此
7、文件不存在!else :cout<<文件已經(jīng)打開cout<<"文件長度為 :file.length查找 find()for(int i=0;i<10;i+)a=strcmp(“cin <<name”,);if :a=0 ,return i;5. 調(diào)試分析調(diào)試中遇到的問題及對問題的解決方法:由于文件管理系統(tǒng)相對于本人來說不是那么容易就可以輕易實現(xiàn)的,在設計之前,我先做了些準備工作,首先設計在實現(xiàn)程序中要用到的數(shù)據(jù)結(jié)構(gòu)模型,使用了結(jié)構(gòu)體數(shù)據(jù)結(jié)構(gòu),然后將各個功能模塊化,依次編寫,調(diào)試。在設計過程中遇到的問題主要有兩大方面:1.以前
8、C語言相關知識的淡忘,特別是在定義結(jié)構(gòu)體時候,剛開始甚至都沒想到結(jié)構(gòu)體這個概念,還在一味思考著如何用鏈表實現(xiàn)一個包含相當多數(shù)據(jù)信息的數(shù)據(jù)表,直到在參考以前課本的時候,偶然瞥見結(jié)構(gòu)體的部分,頓時恍然大悟,就像一下子找到了救星一樣,結(jié)果將每個教師的相關信息定義成一個結(jié)構(gòu)體,以及鏈表的結(jié)構(gòu)體,很輕松的解決了問題,回想一下,這個課題本來就必須用到結(jié)構(gòu)體的知識,但是自己卻把它忘記得干干凈凈,往后去還應該好好復習舊知識。2.自己不注意細節(jié)而造成的問題;程序感覺一切OK,操作運行時發(fā)現(xiàn)第一次輸入用戶名后就在無法再添加用戶,于是改添了主菜單和判斷條件,使程序可以轉(zhuǎn)入主菜單進行添加用戶操作;不過還因有時操作不當
9、使程序陷入死循環(huán),原來是goto功能的使用,使程序的跳轉(zhuǎn)有些亂,修改后就Ok了。雖然goto的使用可能是程序顯得有些亂,但在此程序中使用,使程序的編寫容易了很多。6. 測試結(jié)果進入Vc+6.0。運行源代碼,結(jié)果如下圖所示:圖3 開始界面選擇”2”添加用戶,輸入用戶名,選擇”1”進行文件,如下圖所示:圖4 用戶進入文件選擇”3”添加文件后,選”6”寫文件,如下圖所示:圖5 文件操參考文獻1. 湯子瀛,哲鳳屏.計算機操作系統(tǒng).西安電子科技大學學出版社.2. 王清,李光明.計算機操作系統(tǒng).冶金工業(yè)出版社.3.孫鐘秀等. 操作系統(tǒng)教程. 高等教育出版社4.曾明. Linux操作系統(tǒng)應用教程
10、. 陜西科學技術出版社. 5. 張麗芬,劉利雄.操作系統(tǒng)實驗教程. 清華大學出版社.6. 孟靜, 操作系統(tǒng)教程原理和實例分析. 高等教育出版社7. 周長林,計算機操作系統(tǒng)教程. 高等教育出版社8. 張堯?qū)W,計算機操作系統(tǒng)教程,清華大學出版社9. 任滿杰,操作系統(tǒng)原理實用教程,電子工業(yè)出版社附錄源程序:#include <iostream.h>#include <string.h>#include <stdio.h>#include<iomanip.h>struct user char name10;user10;int in=0;str
11、uct link struct file char name10;int lenght;int write;int read;int exe;file10;int used;link10;char name10;int p;/檢測用戶返回值/*以下是函數(shù)聲明*int checkuser();/檢測用戶是否存在void createuser();/創(chuàng)建用戶void openall();/打開所有文件void openfile();/打開某一文件void createfile();/添加文件void deletefile();/刪除文件void changeprotect();/執(zhí)行保護void
12、write();/寫文件void read();/讀文件int find();/查找文件void main() int n;int ch;char c;cout<<"*文件管理統(tǒng)*"<<endl<<endl<<endl;str: cout<<"請選擇操作:"<<endl; cout<<"-"<<endl; cout<<"- 1 用戶操作-"<<endl;cout<<"- 2
13、添加用戶-"<<endl;cout<<"- 3 退出 -"<<endl;cout<<"-"<<endl;cin>>n; if(n!=1&&n!=2&&n!=3) cout<<"輸入有誤請從新輸入." else if(n=1)cout<<"用戶名:" cin>>name;p=checkuser();if(p=10) cout<<"用戶不存在!&qu
14、ot;<<endl;cout<<"是否加為用戶(y/n):"cin>>c;if(c='y')createuser();elsegoto str;cout<<"請輸入操作:"<<endl;menu:cout<<"-"<<endl; cout<<"1.打開所有文件"<<endl;cout<<"2.打開某一文件"<<endl;cout<<&qu
15、ot;3.添加文件"<<endl;cout<<"4.刪除文件"<<endl;cout<<"5.修改文件保護位"<<endl;cout<<"6.寫文件"<<endl;cout<<"7.讀文件"<<endl;cout<<"8.退出"<<endl;cout<<"選擇1,2,3,4,5,6,7,8進行操作:"<<endl
16、;cout<<"-"<<endl;cin>>ch; if(ch=1)openall();if(ch=2)openfile();if(ch=3)createfile();if(ch=4)deletefile();if(ch=5)changeprotect();if(ch=6)write();if(ch=7)read();if(ch=8) printf("是否退出操作(y/n):");cin>>c;if(c='y')goto str;goto menu; else if(n=2)cout<
17、<"請輸入用戶名:" cin>>name; createuser(); goto str;else cout<<"拜拜"<<endl;int checkuser()int s;for(int i=0;i<10;i+)s=strcmp(name,); /與輸入的用戶名逐個比較,看用戶是否存在if(s=0) return i;return 10;void createuser()strcpy(,name); /將輸入的用戶名復制到用戶名里linkin.used=0;in
18、+;void openall()if(linkp.used=0)cout<<"此文件夾為空!"<<endl;elsecout<<"文件名讀保護寫保護執(zhí)保護"<<endl;for(int i=0;i<linkp.used;i+)cout<<<<setw(12)<<linkp.filei.write<<setw(12)<<linkp.filei.read<<setw(12)<<linkp.f
19、ilei.exe<<endl;void openfile()cout<<"輸入文件名:"cin>>name;int i=find();if(i=10)cout<<"此文件不存在!"<<endl;elsecout<<"文件名讀保護寫保護執(zhí)保護文件長度"<<endl;cout<<<<setw(12)<<linkp.filei.write<<setw(12)<<lin
20、kp.filei.read<<setw(12)<<linkp.filei.exe<<setw(12)<<linkp.filei.lenght<<endl;void createfile()int a=linkp.used;linkp.used+;cout<<"輸入文件名:"cin>>;linkp.filea.write=0;linkp.filea.read=0;linkp.filea.exe=0;linkp.filea.lenght=0;void delete
21、file()cout<<"輸入文件名:"cin>>name;int i=find();if(i=10)cout<<"此文件不存在!"else for(int j=i;j<9;j+)strcpy(,linkp.filei+1.name);linkp.filei.write=linkp.filei+1.write;linkp.filei.read=linkp.filei+1.read;linkp.filei.exe=linkp.filei+1.exe;linkp.used-;void changeprotect()cout<<"輸入文件名:"<<endl;cin>>name;int i=find();if(i=10)cout<<"此文件不存在!"else cout<<"改變保護值:
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖北電力建設第一工程公司招聘筆試參考題庫含答案解析
- 2025年度個人信用擔保裝修借款合同范本3篇
- 2025年個人金融理財產(chǎn)品投資合同4篇
- 2025年度油氣輸送鋼管租賃合作合同2篇
- 2025年度個人農(nóng)田科技種植項目合作協(xié)議4篇
- 2025版二手房免稅托管與租賃一體化服務合同
- 2025版協(xié)議離婚全程法律服務及婚姻財產(chǎn)分割合同3篇
- 2025年度二零二五年度鋼廠廢鋼再生產(chǎn)品銷售合同2篇
- 2025版新能源電池生產(chǎn)承包經(jīng)營合同示范文本3篇
- 2025-2030全球叉車機器人行業(yè)調(diào)研及趨勢分析報告
- (完整版)高考英語詞匯3500詞(精校版)
- 我的家鄉(xiāng)瓊海
- (2025)專業(yè)技術人員繼續(xù)教育公需課題庫(附含答案)
- 《互聯(lián)網(wǎng)現(xiàn)狀和發(fā)展》課件
- 【MOOC】計算機組成原理-電子科技大學 中國大學慕課MOOC答案
- 2024年部編版八年級語文上冊電子課本(高清版)
- 2024年上海健康醫(yī)學院單招職業(yè)適應性測試題庫及答案解析
- 2024年湖北省武漢市中考語文適應性試卷
- 2024-2025學年廣東省大灣區(qū)40校高二上學期聯(lián)考英語試題(含解析)
- 非新生兒破傷風診療規(guī)范(2024年版)解讀
- 2024-2030年電炒鍋項目融資商業(yè)計劃書
評論
0/150
提交評論