操作系統(tǒng)課程設(shè)計Linux二級文件資料系統(tǒng)設(shè)計_第1頁
操作系統(tǒng)課程設(shè)計Linux二級文件資料系統(tǒng)設(shè)計_第2頁
操作系統(tǒng)課程設(shè)計Linux二級文件資料系統(tǒng)設(shè)計_第3頁
操作系統(tǒng)課程設(shè)計Linux二級文件資料系統(tǒng)設(shè)計_第4頁
操作系統(tǒng)課程設(shè)計Linux二級文件資料系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、操作系統(tǒng)的課程設(shè)計Linux二級文件資料系統(tǒng)設(shè)計操作系統(tǒng)的課程設(shè)計Linux二級文件資料系統(tǒng)設(shè)計操作系統(tǒng)的課程設(shè)計Linux二級文件資料系統(tǒng)設(shè)計操作系統(tǒng)課程設(shè)計報告專業(yè):軟件工程學(xué)號:姓名:馬提交日期:2017/1/10適用標(biāo)準(zhǔn)文案【設(shè)計目的】1、經(jīng)過一個簡單多用戶文件系統(tǒng)的設(shè)計,加深理解文件系統(tǒng)的內(nèi)部功能和內(nèi)部實(shí)現(xiàn)2、聯(lián)合數(shù)據(jù)構(gòu)造、程序設(shè)計、計算機(jī)原理等課程的知識,設(shè)計一個二級文件系統(tǒng),進(jìn)一步理解操作系統(tǒng)、經(jīng)過對實(shí)質(zhì)問題的剖析、設(shè)計、編程實(shí)現(xiàn),提升學(xué)生實(shí)質(zhì)應(yīng)用、編程的能力【設(shè)計內(nèi)容】為Linux系統(tǒng)設(shè)計一個簡單的二級文件系統(tǒng)。要求做到以下幾點(diǎn):1.能夠?qū)崿F(xiàn)以下幾條命令:login用戶登錄di

2、r列目錄create創(chuàng)立文件delete刪除文件open翻開文件close封閉文件read讀文件write寫文件cd出入目錄列目錄時要列出文件名,物理地點(diǎn),保護(hù)碼和文件長度源文件能夠進(jìn)行讀寫保護(hù)出色文檔適用標(biāo)準(zhǔn)文案【實(shí)驗(yàn)環(huán)境】C+DevCpp【設(shè)計思路】本文件系統(tǒng)采納兩級目錄,此中第一級對應(yīng)于用戶賬號,第二級對應(yīng)于用戶帳號下的文件。此外,為了簡易文件系統(tǒng)未考慮文件共享,文件系統(tǒng)安全以及管道文件與設(shè)施文件等特殊內(nèi)容。第一應(yīng)確立文件系統(tǒng)的數(shù)據(jù)構(gòu)造:主目錄、子目錄及活動文件等。主目錄和子目錄都以文件的形式寄存于磁盤,這樣便于查找和改正。用戶創(chuàng)立的文件,能夠編號儲存于磁盤上。如:file0,file1

3、,file2并以編號作為物理地點(diǎn),在目錄中進(jìn)行登記。構(gòu)造體:typedefstruct/*thestructureofOSFILE*/intfpaddr;/*filephysicaladdress*/intflength;/*filelength*/intfmode;/*filemode:0-ReadOnly;1-WriteOnly;2-ReadandWrite;3-Protect;*/charfnameMAXNAME;/*filename*/OSFILE;/寄存重要信息typedefstruct/*thestructureofOSUFD*/出色文檔適用標(biāo)準(zhǔn)文案charufdnameMAXNA

4、ME;/*ufdname*/OSFILEufdfileMAXCHILD;/*ufdownfile*/OSUFD;/用戶下邊的文件typedefstruct/*thestructureofOSUFDLOGIN*/charufdnameMAXNAME;/*ufdname*/charufdpword8;/*ufdpassword*/OSUFD_LOGIN;typedefstruct/*fileopenmode*/intifopen;/*ifopen:0-close,1-open*/intopenmode;/*0-readonly,1-writeonly,2-readandwrite,3-initia

5、l*/OSUFD_OPENMODE;主要的函數(shù)說明:voidLoginF();/*LOGINFileSystem用戶登錄*/voidDirF();/*DirFileSystem列目錄*/voidCdF();/*ChangeDir改變目錄*/voidCreateF();/*CreateFile創(chuàng)立文件*/voidDeleteF();/*DeleteFile刪除文件*/出色文檔適用標(biāo)準(zhǔn)文案voidModifyFM();/*ModifyFileMode改正*/voidOpenF();/*OpenFile翻開文件*/voidCloseF();/*CloseFile封閉文件*/voidReadF();/

6、*ReadFile讀文件*/voidWriteF();/*WriteFile寫文件*/voidQuitF();/*QuitFileSystem走開文件系統(tǒng)*/voidhelp();其余重要函數(shù):voidclrscr()/清屏intExistD(char*dirname)/*WhetherDirNameExist,Exist-i,NotExist-0*/intExistF(char*filename)/*WhetherFileNameExist,Exist-i,NotExist-0*/intFindPANo()/*findoutphysicaladdressnum*/voidSetPANo(in

7、tRorW)/*Setphysicaladdressnum,0-read,1-write*/voidInputPW(char*password)/*inputpassword,use*replace*/char*ltrim(char*str)/*removetheheadingblanks.去除左空白*/char*rtrim(char*str)/*removethetrailingblanks.去除右空白*/intWriteF1()/*writefile相當(dāng)于置換文件*/出色文檔適用標(biāo)準(zhǔn)文案程序流程說明:整體流程:開始Login(Name/Pw/Cpw)修創(chuàng)打?qū)懽x刪關(guān)更改退建出色文檔開文文除閉

8、改文清出文文件件文文目件屏系件件件件錄屬統(tǒng)性適用標(biāo)準(zhǔn)文案添覆加蓋結(jié)束出色文檔適用標(biāo)準(zhǔn)文案各部分功能流程:Open:開始出色文檔適用標(biāo)準(zhǔn)文案NNY出色文檔適用標(biāo)準(zhǔn)文案Delete:開始Delete主目錄能否為空?Y確認(rèn)刪除文件在用戶目錄下!N用戶能否在用戶目錄下?N出色文檔適用標(biāo)準(zhǔn)文案只好改正用戶目錄下的文件!Y接收刪除文件名獲得文件文件被翻開或被保護(hù)?Y翻開或被保護(hù)狀態(tài)不行刪除N獲得物理塊號文件向前挪動刪除文件,文件數(shù)減一刪除文件成功!出色文檔適用標(biāo)準(zhǔn)文案結(jié)束Write:開始Write用戶能否在目錄下?NY文件不存在!獲得文件確認(rèn)該文件被翻開文件權(quán)限為只寫或讀寫N文件為只讀和保護(hù),不允許寫!出

9、色文檔適用標(biāo)準(zhǔn)文案Y獲得路徑0追加,1覆蓋?1覆蓋0追加文件寫入成功!結(jié)束出色文檔適用標(biāo)準(zhǔn)文案Close:開始CloseN用戶能否在目錄下?Y排列已經(jīng)翻開的文件獲得文件名獲得物理地點(diǎn)請確認(rèn)要封閉的文件是在用戶目錄下!文件能否處于封閉狀態(tài)?出色文檔適用標(biāo)準(zhǔn)文案Y該文件已被封閉N封閉文件文件成功封閉結(jié)束【源程序清單】出色文檔適用標(biāo)準(zhǔn)文案Open:voidOpenF()/*OpenFile*/printf(nnC:%s,strupr(dirname);/顯示目前路徑intfcoun,i;/定義兩個整形變量charfnameMAXNAME,fmode25;/定義兩個字符串變量intfmod;/文件模式

10、printf(nPleaseinputFileName:);gets(fname);/接收翻開文件的文件名ltrim(rtrim(fname);/去除左右空白if(ExistF(fname)0)/判斷文件能否存在/不存在printf(nError.文件名%s不存在n,fname);wgetchar=1;else/存在i=ExistD(username);/獲得用戶物理信息for(inta=0;aufdfilea.fname)=0)/找到文件fcoun=a;break;出色文檔適用標(biāo)準(zhǔn)文案ifopenifcoun.ifopen=1;/將文件狀態(tài)置為翻開狀態(tài)printf(PleaseinputOp

11、enMode(0-ReadOnly,1-WriteOnly,2-ReadandWrite,3-Protect):);/翻開文件模式gets(fmode);/獲得模式fmod=atoi(fmode);/將字符串變換為整型ifopenifcoun.openmode=fmod;/將文件的模式置為OpenModeprintf(nOpenSuccessed);wgetchar=1;Delete:voidDeleteF()/*DeleteFile*/printf(nnC:%s,strupr(dirname);/顯示路徑charfnameMAXNAME,str50,str150;/定義三個字符串變量inti

12、,k,j;intfpaddrno1;/記錄文件物理地點(diǎn)塊號出色文檔適用標(biāo)準(zhǔn)文案if(strcmp(strupr(ltrim(rtrim(dirname),)=0)/判斷主目錄能否為空printf(nError.請確認(rèn)您要刪除的能否在用戶目錄下!n);wgetchar=1;if(strcmp(strupr(dirname),strupr(username)!=0)/判斷用戶能否在用戶目錄下printf(nError.您只好刪除改正自己用戶目錄下的文件哦!n);wgetchar=1;elseprintf(nPleaseinputFileName:);gets(fname);/接收刪除的文件名ltr

13、im(rtrim(fname);/去除文件名的左右空白i=ExistF(fname);/用戶文件地點(diǎn)if(i=0)k=ExistD(username);/獲得用戶所在儲存地點(diǎn)if(ifopenki.ifopen=1)/文件狀態(tài)處于翻開狀態(tài),不準(zhǔn)刪除printf(nError.%s處于翻開狀態(tài)!請先封閉喲!n,fname);wgetchar=1;elseif(ufdk-ufdfilei.fmode=3)/保護(hù)文件,不行刪除printf(nError.%s處于被保護(hù)狀態(tài)!請先封閉喲!n,fname);出色文檔適用標(biāo)準(zhǔn)文案wgetchar=1;elsefpaddrno1=ufdk-ufdfilei.

14、fpaddr;/獲得文件的物理地址塊號fpaddrnofpaddrno1=0;/回收物理地點(diǎn)塊號for(j=i;jufdfilej=ufdk-ufdfilej+1;/將j+1地點(diǎn)為jstrcpy(str,c:osfilefile);itoa(fpaddrno1,str1,10);/將整數(shù)轉(zhuǎn)變成字符串strcat(str,str1);strcat(str,.txt);/連結(jié)remove(str);/刪除物理文件fcountk-;/文件個數(shù)減一printf(n%sisdeletedsuccessfully.n,fname);wgetchar=1;elseprintf(nError.%s文件不存在!

15、n,fname);/文件不存在出色文檔適用標(biāo)準(zhǔn)文案wgetchar=1;Write:voidWriteF()/*WriteFile*/printf(nnC:%s,strupr(dirname);/顯示用戶路徑inti,k,m=0;/定義整形變量intlength;/定義長度整形變量charfnameMAXNAME;/定義文件名字符串charstr255,str1255;/定義兩個字符串變量if(strcmp(strupr(dirname),strupr(username)!=0)/判斷用戶能否在用戶目錄下printf(nError!請確認(rèn)您要寫的在用戶目錄下!n);wgetchar=1;ret

16、urn;printf(n請先翻開文件!n);printf(OpenedFile(s)List:n);k=ExistD(dirname);/獲得用戶文件信息出色文檔適用標(biāo)準(zhǔn)文案for(i=0;iufdfilei.fname);m+;if(m%4=0&m!=0)/每創(chuàng)立4個文件換一行printf(n);printf(n%d文件已經(jīng)翻開啦!n,m);if(m=0)wgetchar=1;if(m!=0)/創(chuàng)立文件printf(nPleaseinputFileName:);gets(fname);/接收文件名ltrim(rtrim(fname);/去除左右空白i=ExistF(fname);/獲得文件物

17、理地點(diǎn)if(i=0)/文件存在if(ifopenki.ifopen=1)/文件處于翻開狀態(tài)if(ifopenki.openmode=1|ifopenki.openmode=2)出色文檔適用標(biāo)準(zhǔn)文案/文件權(quán)限是只寫或讀寫itoa(ufdk-ufdfilei.fpaddr,str,10);/獲得文件路徑strcpy(str1,file);strcat(str1,str);strcpy(str,c:osfilefile);strcat(str,str1);strcat(str,.txt);/文件路徑charstr23;intchoice=3;strcpy(str2,ab);printf(Youcan

18、choise0-CoveredW1-AdditonalW:);/選擇追加仍是覆蓋scanf(%d,&choice);if(choice=0)/0-覆蓋strcpy(str2,wb);fp_file=fopen(str,str2);/翻開文件length=WriteF1();ufdk-ufdfilei.flength=ufdk-ufdfilei.flength+length;/改正文件長度if(choice=0)出色文檔適用標(biāo)準(zhǔn)文案ufdk-ufdfilei.flength=length;printf(nnYouhavewritefilesuccessfully!);fclose(fp_file

19、);/封閉文件wgetchar=0;elseif(ifopenki.openmode=0)/文件處于只讀狀態(tài),不同意寫printf(nError.%s文件以只讀狀態(tài)翻開,不同意寫!n,fname);wgetchar=1;elseprintf(nError.%s文件處于封閉狀態(tài),請先翻開!n,fname);wgetchar=1;elseprintf(nError.%s文件不存在!n,fname);/文件不存在wgetchar=1;出色文檔適用標(biāo)準(zhǔn)文案Close:voidCloseF()/*CloseFile*/printf(nnC:%s,strupr(dirname);/顯示路徑charfnam

20、eMAXNAME;/定義字符串變量inti,k,n=0;if(strcmp(strupr(dirname),strupr(username)!=0)/封閉用戶文件需在用戶目錄下printf(nError!請確認(rèn)您要封閉的是在用戶目錄下!n);elseprintf(nnOpenedFile(s)List:n);/排列已處于翻開的文件k=ExistD(dirname);for(i=0;iufdfilei.fname);出色文檔適用標(biāo)準(zhǔn)文案n+;if(n%4=0)&(n!=0)printf(n);printf(n%d文件已被翻開!n,n);if(n=0)wgetchar=1;printf(nPleaseinputFileName:);gets(fname);/接收封閉文件的文件名ltrim(rtrim(fname);/除掉首尾空格i=ExistF(fname);/獲得文件物理地點(diǎn)if(i=0)k=ExistD(username);/獲得用戶文件信息if(ifopenki.ifopen=0)/文件處于封閉狀態(tài)printf(nError!%s文件已經(jīng)被封閉!n,fname);else/將文件封閉ifopenki.ifopen=0;ifopenki.openmode=4;printf(%shasbeenclosedsuccessfully!,f

溫馨提示

  • 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

提交評論