版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、【實驗報告正文】一、實驗目的和要求(必填)實驗目的:通過在VC平臺下編程,設(shè)計和調(diào)試一個簡單的文件系統(tǒng),通過模擬文件操作命 令的執(zhí)行,來模擬文件系統(tǒng)對文件及目錄的管理。實驗要求:兩名學生成組結(jié)對完成實驗,仿真出文件系統(tǒng)中對文件和目錄的操作。二、實驗容(必填)文件管理:實現(xiàn)一個簡單的文件系統(tǒng)裝 三、實驗原理或?qū)嶒灧椒ǎū靥睿┯喸恚和ㄟ^結(jié)構(gòu)體來描述文件和目錄,利用鏈表知識實現(xiàn)目錄樹結(jié)構(gòu),通過對鏈表的操作實 線現(xiàn)整個文件系統(tǒng)中目錄和文件的相關(guān)操作。- 方法:學生兩人結(jié)對進行實驗,分別實現(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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆江蘇省部分學校高三上學期第三次聯(lián)考物理試題(解析版)
- 2024-2025學年北京市海淀區(qū)高三上學期10月月考生物試題(解析版)
- 隧道襯砌抗?jié)B性能研究-洞察分析
- 2024-2025學年陜西省西安市蓮湖區(qū)高三上學期11月期中物理試題(解析版)
- 2023-2024學年江西省萍鄉(xiāng)市高一上學期期末考試生物試題(解析版)
- 雄花分子標記開發(fā)-洞察分析
- 2023-2024年員工三級安全培訓考試題及答案【易錯題】
- 2023年企業(yè)主要負責人安全培訓考試題附完整答案(必刷)
- 依賴推理算法優(yōu)化-洞察分析
- 2024年企業(yè)主要負責人安全培訓考試題含答案【輕巧奪冠】
- 史記·秦始皇本紀課件
- 化妝品產(chǎn)品召回模擬演練記錄表格
- 痤瘡示意圖課件
- 機電拆除及施工方案0829
- 綜合管理部負責人(部長)崗位職責
- 腫瘤放射治療技術(shù)-總論課件
- 人才培養(yǎng)方案匯報課件
- 檢驗科15項質(zhì)量控制指標(檢驗科質(zhì)控小組活動記錄)
- 5S評分基準模板
- 外研社小學英語三起點五年級上冊(中英文對照)
- 重大行政執(zhí)法法制審核流程圖
評論
0/150
提交評論