操作系統(tǒng)試驗?zāi)M文件管理系統(tǒng)_第1頁
操作系統(tǒng)試驗?zāi)M文件管理系統(tǒng)_第2頁
操作系統(tǒng)試驗?zāi)M文件管理系統(tǒng)_第3頁
操作系統(tǒng)試驗?zāi)M文件管理系統(tǒng)_第4頁
操作系統(tǒng)試驗?zāi)M文件管理系統(tǒng)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、【實驗報告正文】一、實驗?zāi)康暮鸵螅ū靥睿嶒災(zāi)康模和ㄟ^在VC平臺下編程,設(shè)計和調(diào)試一個簡單的文件系統(tǒng),通過模擬文件操作命 令的執(zhí)行,來模擬文件系統(tǒng)對文件及目錄的管理。實驗要求:兩名學(xué)生成組結(jié)對完成實驗,仿真出文件系統(tǒng)中對文件和目錄的操作。二、實驗容(必填)文件管理:實現(xiàn)一個簡單的文件系統(tǒng)裝 三、實驗原理或?qū)嶒灧椒ǎū靥睿┯喸恚和ㄟ^結(jié)構(gòu)體來描述文件和目錄,利用鏈表知識實現(xiàn)目錄樹結(jié)構(gòu),通過對鏈表的操作實 線現(xiàn)整個文件系統(tǒng)中目錄和文件的相關(guān)操作。- 方法:學(xué)生兩人結(jié)對進(jìn)行實驗,分別實現(xiàn)對文件和目錄的操作。:對文件的操作包括:創(chuàng)建文件 create、讀文件read、寫文件write、刪除文件del

2、ete- 對目錄的操作包括:創(chuàng)建目錄 mkdir、切換目錄cd、展示目錄容dir、刪除目錄rm。四、主要儀器設(shè)備或?qū)嶒灄l件jWindows操作系統(tǒng),VC開發(fā)環(huán)境. 五、實驗步驟(含實驗數(shù)據(jù)記錄處理)或操作設(shè)計過程記錄#i nclude stdio.h#i nclude iostream.h#in clude stri ng.h #defi ne FILENAME_LENGTH 10 / 文件名稱長度: #define COMMAND_LENGTH 10/ 命令行長度j #define PATH_LENGTH 30/ 參數(shù)長度struct file nodechar file nameFILEN

3、AME_LENGTH;int isdir;char conten t255;file node *pare nt;file node *child;file node *prev;file node *n ext;file node *in it no de(char file name,i nt isdir);void createroot();in t ru n();in t fin dpath(char *topath);void help();int mkdir();int create();int read();int write();int del();in t rm();int

4、cd();int dir();file node *root,*rece nt,*temp,*ttemp,*temp_child;charpathPATH_LENGTH,comma ndCOMMAND_LENGTH,temppathPATH_LENGTH ,rece ntpathPATH_LENGTH;/創(chuàng)建文件或目錄的存儲節(jié)點file no de* in it no de(char file name,i nt isdir) file node *node=new file no de;strcpy (no de-file name,file name);no de-isdir=isdir;

5、no de-pare nt=NULL;n ode-child=NULL;no de-prev=NULL;no de-n ext=NULL;retur n no de;/初始化文件系統(tǒng)根結(jié)點void createroot ()recen t=root=i nitno de(/,1); root-pare nt=NULL; root-child=NULL;root-prev=root- n ext=NULL; strcpy(path,/);void help()coute ndl;coutcreate:建立文件。e ndl;coutread:讀取文件。e ndl;coutwrite:寫入文件。e

6、ndl;coutdelete:刪除文件。e ndl;coutrm:刪除目錄。e ndl;coutmkdir:建立目錄。e ndl;專業(yè)資料coutcd:切換目錄。coutvdir:顯示目錄。coutlogout:退出登錄。e ndl;e ndl;e ndl;int dir()int i=O,j=O;temp=new file no de;temp=rece nt;if(temp=root)coutif(temp!=root)coutif(temp-child=NULL)coutTotal: directorschild;while(temp)if(temp-isdir)coutfile nam

7、ee ndl;i+;elsecouttemp=temp-n ext;coutTotal: directors.e ndl; .e ndl;i+;vvivvfilesfile namee ndl;j+;vvivvfiles jvv j file name;if(rece nt-child=NULL)cout 文件不存在!child-file name,file name)=0) coutrece nt-child-c onten tchild;while(temp-n ext)if(strcmp(temp-n ext-file name,file name)=0)couttemp-n ext-c

8、 onten te ndl;return 0;cout 文件不存在! file name;if(rece nt-child=NULL)cout 文件不存在!child-file name,file name)=0) cin rece nt-child-c ontent;cout文件寫入成功!child;while(temp-n ext)if(strcmp(temp-n ext-file name,file name)=0)cin temp-n ext-c ontent;cout文件寫入成功!endl;return 0;cout文件不存在! file name;temp=new file no

9、de;if(rece nt-child)temp=rece nt-child;while(temp-n ext& (strcmp(temp-file name,file name)!=0|temp-isdir!=O)temp=temp-n ext;if(strcmp(temp-filename,filename)!=0 | temp-isdir!=0)cout 不存在該文件! e ndl;return 0;elsecout 不存在該文件! pare nt=NULL)temp-prev- n ext=temp-n ext; if(temp-n ext)temp-n ext-prev=temp-p

10、rev; temp-prev=temp-n ext=NULL;elseif(temp-n ext)temp-n ext-pare nt=temp-pare nt; temp-pare nt-child=temp-n ext;delete temp;cout 文件已刪除! file name;temp=new file no de;if(rece nt-child)&(strcmp(temp-file name,file name)!=0|temp=rece nt-child; while(temp-n ext temp-isdir!=1)temp=temp-n ext;if(strcmp(te

11、mp-filename,filename)!=0 | temp-isdir!=1)專業(yè)資料cout 不存在該目錄! e ndl;return 0;elsecout 不存在該目錄! pare nt=NULL)temp-prev- n ext=temp-n ext;if(temp-n ext)temp-n ext-prev=temp-prev; temp-prev=temp-n ext=NULL;elseif(temp-n ext)temp-n ext-pare nt=temp-pare nt;temp-pare nt-child=temp-n ext;delete temp;cout目錄已刪除!

12、 topath;if(strcmp(topath,.)=0)return 0;if(strcmp(topath,.)=0)int i;while(rece nt-prev)rece nt=rece nt-prev; /向前回溯,找到第一次創(chuàng)建的目錄if(rece nt-pare nt)rece nt=rece nt-pare nt;i=strle n(path);/ prin tf(%d %sn,i,path);while(pathi!=/ & i0)i-; /找到最右邊的/if(i!=0)pathi=0;中不止有一個/prin tf(%s,path); /pathelsepathi+1=0;

13、elsefin dpath(topath);return 0;int fin dpath(char *topath)un sig ned int i=0;int sig n=1;if(strcmp(topath,/)=0) /如果命令是 cd /rece nt=root;strcpy(path,/);return 0;temp=rece nt;strcpy(temppath,path);if(topath0=/) /cd命令以 cd / 開始rece nt=root-child;i+;strcpy(path,/);/ prin tf(n%s,path);elseif(rece nt!=NULL

14、 & recen t!=root)strcat(path,/);/ prin tf(n%sn,path);if(rece nt & rece nt-child)if(rece nt-isdir)rece nt=rece nt-child;elseprintf(路徑錯誤! n);return 1;while(ichild)i+;if(rece nt-isdir)rece nt=rece nt-child;elseprintf(路徑錯誤 n); return 1;strcat(path,/);while(topathi!=/ & iisdir!=1)&recen tpathj=0;while(st

15、rcmp(rece nt-file name,rece ntpath)!=0recen t- next!=NULL)專業(yè)資料rece nt=rece nt-n ext;if(strcmp(rece nt-file name,rece ntpath)=O)if(rece nt-isdir=O)strcpy(path,temppath);rece nt=temp;prin tf( 是文件不是目錄。n);return 1;strcat(path,rece nt-file name);if(strcmp(rece nt-file name,rece ntpath)!=O | rece nt=NULL)

16、 strcpy(path,temppath);recen t=temp;printf(輸入路徑錯誤n);return 1;return 0; int mkdir()temp=in it no de( ,1); cin temp-file name; if(rece nt-child=NULL)temp-pare nt=rece nt;temp-child=NULL;rece nt-child=temp;temp-prev=temp-n ext=NULL;printf(目錄建立成功!n);elsettemp=rece nt-child;if(strcmp(ttemp-file name,temp

17、-file name)=0&ttemp-isdir=1)printf(目錄已存在!n);return 1;while(ttemp-n ext)ttemp=ttemp-n ext;if(strcmp(ttemp-file name,temp-file name)=0&ttemp-isdir=1) printf(目錄已存在!n);return 1;ttemp-n ext=temp;temp-pare nt=NULL;temp-child=NULL;temp-prev=ttemp;temp-n ext=NULL;printf(目錄建立成功!n);return 0; int create()temp=

18、in it no de( ,0);cin temp-file name;if(rece nt-child=NULL)temp-pare nt=rece nt;temp-child=NULL;rece nt-child=temp;temp-prev=temp- n ext=NULL;cout 文件創(chuàng)建成功!child;if(strcmp(ttemp-file name,temp-file name)=0&ttemp-isdir=O) printf(文件已存在!n);return 1;while(ttemp-n ext) ttemp=ttemp-n ext;if(strcmp(ttemp-file name,temp-file name)=0&ttemp-isdir=0)printf(文件已存在!n);return 1;ttemp-n ext=temp; temp-pare nt=NULL; temp-child=NULL; temp-prev=ttemp; temp-n ext=NULL; cout 文件建立成功!endl;return 0; int run()coutvfilesystem

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論