版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《腦出血護(hù)理》課件
- 2024年收購互聯(lián)網(wǎng)公司股權(quán)及共同運營合作協(xié)議3篇
- 2025年瀘州道路運輸貨運考試題庫
- 2025年內(nèi)蒙古貨運從業(yè)資格考試模擬考試題目
- 《裝修流程圖課件》課件
- 2025年遼陽道路貨物運輸從業(yè)資格證考試
- 2024年度國際貿(mào)易貨物包裝與標(biāo)識合同范本6篇
- 《兒少與教育》課件
- 2024年旅游業(yè)務(wù)合作經(jīng)營合同
- 四川省達(dá)州市第一中學(xué)2023-2024學(xué)年八年級上學(xué)期第一次月考地理試題
- 廣西民族大學(xué)?;招?biāo)
- 車輛駕駛員管理臺帳
- 教師晉升副高述職報告范文
- DBJ50T-123-2020 建筑護(hù)欄技術(shù)標(biāo)準(zhǔn)
- 2021知到答案【音樂的美及其鑒賞】智慧樹網(wǎng)課章節(jié)測試答案
- 小學(xué)足球課時教案:足球隊訓(xùn)練計劃
- 流感疫苗PPT課件
- 招投標(biāo)法律責(zé)任知識講解(PPT講稿)
- 硅酸鹽水泥熟料礦物組成及其配料計教案
- 契稅補(bǔ)貼申請表
- 螺旋千斤頂課程設(shè)計說明書
評論
0/150
提交評論