版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計(jì)課程名稱_____操作系統(tǒng)____題目名稱多顧客多級目錄文獻(xiàn)系統(tǒng)的實(shí)現(xiàn)一、課程設(shè)計(jì)的內(nèi)容本課程設(shè)計(jì)規(guī)定設(shè)計(jì)一種模擬的多顧客多級目錄的文獻(xiàn)系統(tǒng)。通過具體的文獻(xiàn)存儲空間的管理、文獻(xiàn)的物理構(gòu)造、目錄構(gòu)造和文獻(xiàn)操作的實(shí)現(xiàn),加深對文獻(xiàn)系統(tǒng)內(nèi)部功效和實(shí)現(xiàn)過程的理解。二、課程設(shè)計(jì)的規(guī)定與數(shù)據(jù)在內(nèi)存中開辟一種虛擬磁盤空間作為文獻(xiàn)存儲器,在其上實(shí)現(xiàn)一種多顧客多目錄的文獻(xiàn)系統(tǒng)。文獻(xiàn)物理構(gòu)造可采用顯式鏈接或其它辦法。磁盤空閑空間的管理可選擇位示圖或其它辦法。如果采用位示圖來管理文獻(xiàn)存儲空間,并采用顯式鏈接分派方式,則能夠?qū)⑽皇緢D合并到FAT中。文獻(xiàn)目錄構(gòu)造采用多顧客多級目錄構(gòu)造,每個目錄項(xiàng)包含文獻(xiàn)名、物理地址、長度等信息,還能夠通過目錄項(xiàng)實(shí)現(xiàn)對文獻(xiàn)的讀和寫的保護(hù)。目錄組織方式能夠不使用索引結(jié)點(diǎn)的方式,但使用索引結(jié)點(diǎn),則難度系數(shù)為1.2。設(shè)計(jì)一種較實(shí)用的顧客界面,方便顧客使用。規(guī)定提供下列有關(guān)文獻(xiàn)操作:(1)含有l(wèi)ogin(顧客登錄)(2)系統(tǒng)初始化(建文獻(xiàn)卷、提供登錄模塊)(3)文獻(xiàn)的創(chuàng)立:create(4)文獻(xiàn)的打開:open(5)文獻(xiàn)的讀:read(6)文獻(xiàn)的寫:write(7)文獻(xiàn)關(guān)閉:close(8)刪除文獻(xiàn):delete(9)創(chuàng)立目錄(建立子目錄):mkdir(10)變化現(xiàn)在目錄:cd(11)列出文獻(xiàn)目錄:dir(12)退出:logout系統(tǒng)必須可實(shí)際演示,選用程序設(shè)計(jì)語言:C++、C等。三、課程設(shè)計(jì)應(yīng)完畢的工作1.充足理解設(shè)計(jì)的任務(wù),完畢設(shè)計(jì)的基本規(guī)定。然后根據(jù)自己的基礎(chǔ)和能力選擇不同難度的算法和實(shí)現(xiàn)方式,以獲得更高的分?jǐn)?shù)。2.獨(dú)立獨(dú)立完畢系統(tǒng)的分析、設(shè)計(jì)、編碼、測試工作。3.完畢設(shè)計(jì)報告的撰寫。4.以光盤(以班為單位刻錄)方式提交已調(diào)試通過的完整的有關(guān)源程序和能夠運(yùn)行的執(zhí)行文獻(xiàn);提交“課程設(shè)計(jì)報告”的書面和電子兩種版本。四、課程設(shè)計(jì)進(jìn)程安排序號設(shè)計(jì)各階段內(nèi)容地點(diǎn)起止日期1查閱資料、分析題目、概要設(shè)計(jì)分散周一2具體設(shè)計(jì)、編碼分散周二3調(diào)試實(shí)驗(yàn)室周三4撰寫設(shè)計(jì)報告分散周四5運(yùn)行、驗(yàn)收實(shí)驗(yàn)室周五五、應(yīng)收集的資料及重要參考文獻(xiàn)[1]計(jì)算機(jī)操作系統(tǒng)(修訂版),湯子瀛等,西安電子科技大學(xué)出版社,[2]操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書,傅秀芬,廣東工業(yè)大學(xué)(自編)[3]計(jì)算機(jī)操作系統(tǒng)教程(第二版),張堯?qū)W、史美林,清華大學(xué)出版社,[4]當(dāng)代操作系統(tǒng),A.S.Tanenbaum著,陳向群等譯機(jī)械工業(yè)出版社,年發(fā)出任務(wù)書日期:6月15日指導(dǎo)教師簽名:計(jì)劃完畢日期:6月24日基層教學(xué)單位負(fù)責(zé)人簽章:主管院長簽章:目錄1.設(shè)計(jì)思想闡明 12.系統(tǒng)構(gòu)造闡明 13.數(shù)據(jù)構(gòu)造闡明 13.1開發(fā)環(huán)境 13.2數(shù)據(jù)存儲 23.3數(shù)據(jù)構(gòu)造 23.3.1數(shù)據(jù)塊在內(nèi)存中的物理構(gòu)造 23.3.2文獻(xiàn)索引構(gòu)造 23.3.3文獻(xiàn)系統(tǒng)中文獻(xiàn)元素的構(gòu)造(含文獻(xiàn)夾和文獻(xiàn)) 23.3.4文獻(xiàn)系統(tǒng)構(gòu)造 33.3.5文獻(xiàn)系統(tǒng)的現(xiàn)在運(yùn)行狀態(tài) 33.3.6顧客構(gòu)造 44.各重要模塊的算法流程圖 44.1整體思路概述 44.1.1login(顧客登錄) 44.1.2系統(tǒng)初始化 54.1.3文獻(xiàn)的創(chuàng)立:create 54.1.4文獻(xiàn)的打開:open 64.1.5文獻(xiàn)的讀:read 64.1.6文獻(xiàn)的寫:write 84.1.7文獻(xiàn)關(guān)閉:close 94.1.8刪除文獻(xiàn):delete 104.1.9創(chuàng)立目錄(建立子目錄):mkdir 124.1.10變化現(xiàn)在目錄:cd 124.1.11列出文獻(xiàn)目錄:dir 144.1.12退出:logout 154.2算法流程圖 165.使用闡明書 175.1登錄 175.2新建目錄和列出文獻(xiàn)目錄 175.3變化現(xiàn)在目錄 175.4文獻(xiàn)的創(chuàng)立 185.5文獻(xiàn)的打開 185.6文獻(xiàn)的寫 185.7文獻(xiàn)的讀 185.8文獻(xiàn)的關(guān)閉 185.9文獻(xiàn)的刪除 195.10返回根目錄 195.11退出 196.心得體會 19參考文獻(xiàn) 191.設(shè)計(jì)思想闡明本課程設(shè)計(jì)規(guī)定設(shè)計(jì)一種模擬的多顧客多級目錄的文獻(xiàn)系統(tǒng)。通過具體的文獻(xiàn)存儲空間的管理、文獻(xiàn)的物理構(gòu)造、目錄構(gòu)造和文獻(xiàn)操作的實(shí)現(xiàn),加深對文獻(xiàn)系統(tǒng)內(nèi)部功效和實(shí)現(xiàn)過程的理解。2.系統(tǒng)構(gòu)造闡明2.1在內(nèi)存中開辟一種虛擬磁盤空間作為文獻(xiàn)存儲器,在其上實(shí)現(xiàn)一種多顧客多目錄的文獻(xiàn)系統(tǒng)。2.2文獻(xiàn)物理構(gòu)造可采用顯式鏈接或其它辦法。2.3磁盤空閑空間的管理可選擇位示圖或其它辦法。如果采用位示圖來管理文獻(xiàn)存儲空間,并采用顯式鏈接分派方式,則能夠?qū)⑽皇緢D合并到FAT中。2.4文獻(xiàn)目錄構(gòu)造采用多顧客多級目錄構(gòu)造,每個目錄項(xiàng)包含文獻(xiàn)名、物理地址、長度等信息,還能夠通過目錄項(xiàng)實(shí)現(xiàn)對文獻(xiàn)的讀和寫的保護(hù)。2.5設(shè)計(jì)一種較實(shí)用的顧客界面,方便顧客使用。規(guī)定提供下列有關(guān)文獻(xiàn)操作:2.5.1含有l(wèi)ogin(顧客登錄)2.5.2系統(tǒng)初始化(建文獻(xiàn)卷、提供登錄模塊)2.5.3文獻(xiàn)的創(chuàng)立:create2.5.4文獻(xiàn)的打開:open2.5.5文獻(xiàn)的讀:read2.5.6文獻(xiàn)的寫:write2.5.7文獻(xiàn)關(guān)閉:close2.5.8刪除文獻(xiàn):delete2.5.9創(chuàng)立目錄(建立子目錄):mkdir2.5.10變化現(xiàn)在目錄:cd2.5.11列出文獻(xiàn)目錄:dir2.5.12退出:logout3.數(shù)據(jù)構(gòu)造闡明3.1開發(fā)環(huán)境VisualC++6.0下的win32控制臺程序,C語言。3.2數(shù)據(jù)存儲在內(nèi)存中申請1M的空間來模擬存取設(shè)備,空間劃分為三部分,第一部分用來寄存位示圖,用于標(biāo)記數(shù)據(jù)塊的使用狀況,第二部分放置一種文獻(xiàn)索引的數(shù)據(jù),用于快速的查找數(shù)據(jù),第三部分放置數(shù)據(jù)信息,第三部分劃分為512塊,每塊512B,其256K,放置在1M空間的最末端,由第三部分的大小可知,第一部分只需64B即可,中間的部分用來寄存文獻(xiàn)索引。其它用到的存儲單元由系統(tǒng)分派。3.3數(shù)據(jù)構(gòu)造3.3.1數(shù)據(jù)塊在內(nèi)存中的物理構(gòu)造typedefstructfb{ unsignedFileBlockId; //文獻(xiàn)塊編號 unsignedBLOCK_SIZE; //文獻(xiàn)塊的容量 char*FileBlockAddr; //文獻(xiàn)塊地址 structfb*next; //下一種文獻(xiàn)塊的地址}FileBlock;3.3.2文獻(xiàn)索引構(gòu)造typedefstruct{ unsignedIndex; //文獻(xiàn)元素索引編號 charFileName[NAME_LEN]; //文獻(xiàn)元素名 charParentName[NAME_LEN]; //父節(jié)點(diǎn)名 unsignedFileBlockId; //文獻(xiàn)元素所在物理塊編號 unsignedFileLevel; //文獻(xiàn)元素所在層次,層+文獻(xiàn)元素名為一種文獻(xiàn)元素邏輯位置 unsignedeffect; //與否有效,0-無效,1-有效}FileIndexElement;3.3.3文獻(xiàn)系統(tǒng)中文獻(xiàn)元素的構(gòu)造(含文獻(xiàn)夾和文獻(xiàn))typedefstructfse{ structfse*parent; //指向自己的父親節(jié)點(diǎn) unsignedFileLevel; //文獻(xiàn)元素所在層次,層+文獻(xiàn)元素名為一種文獻(xiàn)元素的邏輯位置 charFileName[NAME_LEN]; //文獻(xiàn)元素名 unsignedFileBlockId; //文獻(xiàn)元素所在物理塊編號 unsignedFileElemLen; //文獻(xiàn)元素的長度 FileTypeType; //文獻(xiàn)元素類型 FileAccessAccess; //文獻(xiàn)元素可供操作的權(quán)限 UserCreator; //文獻(xiàn)創(chuàng)立者 charCreateTime[18]; //創(chuàng)立時間,日期格式:MM/DD/YYHH:MI:SS charLastModTime[18]; //最后一次修改時間 char*FileData; //一種文獻(xiàn)的數(shù)據(jù)開始地址,文獻(xiàn)夾時該值為NULL FileStatusfileStu; //如果是一種文獻(xiàn)表達(dá)文獻(xiàn)現(xiàn)在的狀態(tài)}FSElement;3.3.4文獻(xiàn)系統(tǒng)構(gòu)造typedefstruct{ char*FSStart; //文獻(xiàn)系統(tǒng)的起始地址 unsignedSuperBlockSize; //文獻(xiàn)系統(tǒng)的容量 BitMapbm; //文獻(xiàn)系統(tǒng)中的位示圖 unsignedBLOCK_COUNT; //文獻(xiàn)系統(tǒng)中文獻(xiàn)塊的數(shù)量 FileBlock*head; //文獻(xiàn)系統(tǒng)中文獻(xiàn)塊首地址 FileIndexFI; //文獻(xiàn)系統(tǒng)中的文獻(xiàn)索引}SuperBlock;3.3.5文獻(xiàn)系統(tǒng)的現(xiàn)在運(yùn)行狀態(tài)typedefstruct{ UserCurrentUser; //現(xiàn)在顧客 unsignedFileLevel; //顧客所在文獻(xiàn)系統(tǒng)層 FSElement*CurrParent; //現(xiàn)在層的父節(jié)點(diǎn) char*CurrentPath; //現(xiàn)在途徑}CurrentStatus;3.3.6顧客構(gòu)造typedefstruct{ char*UserName; //顧客名稱 UserTypeut; //顧客類型}User;4.各重要模塊的算法流程圖4.1整體思路概述首先系統(tǒng)要完畢初始化的任務(wù),建立一種系統(tǒng),并等待顧客登錄使用文獻(xiàn)系統(tǒng),顧客登錄系統(tǒng)時,系統(tǒng)對顧客的顧客名和密碼進(jìn)行驗(yàn)證(允許顧客用限次的嘗試,多最多嘗試五次),如果顧客登錄成功,則系統(tǒng)進(jìn)入命令提示符狀態(tài),等顧客輸入指令后,系統(tǒng)得用一種解釋程序按照指定方式解決顧客請求,顧客退出后,系統(tǒng)轉(zhuǎn)入登錄模塊,等待下一位顧客的登錄。4.1.1login(顧客登錄)內(nèi)置9個顧客名和密碼,用來驗(yàn)證登錄顧客的身份,顧客登錄成功后會初始化現(xiàn)在顧客等一系列的系統(tǒng)現(xiàn)在信息,默認(rèn)顧客的類型為普通顧客,如果顧客未能通過身份驗(yàn)證,提示顧客登錄失敗,退出整個系統(tǒng)。顧客登錄流程圖4.1.2系統(tǒng)初始化系統(tǒng)的初始化要完畢文獻(xiàn)系統(tǒng)的建立,涉及下列幾部分:請求內(nèi)存、設(shè)立位示圖、初始化文獻(xiàn)索引、初始化文本塊鏈表、初始化系統(tǒng)的現(xiàn)在狀態(tài)、創(chuàng)立一種根目錄做為系統(tǒng)的根。4.1.3文獻(xiàn)的創(chuàng)立:create只支持在現(xiàn)在目錄創(chuàng)立文獻(xiàn),根據(jù)位示圖找到一種未使用的文獻(xiàn)塊用來寄存顧客的文獻(xiàn)信息,根據(jù)系統(tǒng)現(xiàn)在狀態(tài)來構(gòu)建一種文獻(xiàn)系統(tǒng)元素放入到找到的文獻(xiàn)塊中,新創(chuàng)立的文獻(xiàn)狀態(tài)為關(guān)閉,同時更新位示圖和文獻(xiàn)索引。文獻(xiàn)創(chuàng)立流程圖voidCreate(char*filename){ if(strcmp(filename,"")==0) { printf("對不起,文獻(xiàn)名不能為空。\n"); } else { CreateFileElement(protect,filename,file,NULL,CS.CurrParent); } printf("[%s@localhost%s]$",CS.CurrentUser.UserName,CS.CurrentPath);}4.1.4文獻(xiàn)的打開:open只支持在現(xiàn)在目錄進(jìn)行操作,通過顧客給定的文獻(xiàn)名在文獻(xiàn)索引中搜索到文獻(xiàn)的物理文獻(xiàn)塊ID,找到該文獻(xiàn)元素后,將文獻(xiàn)現(xiàn)在狀態(tài)置為打開。打開文獻(xiàn)流程圖voidOpen(char*path){ chardisplay[100]; for(unsignedi=0;i<FS.FI.FICount;i++) { if(!strcmp(FS.FI.FIStart[i].ParentName,CS.CurrParent->FileName)&& FS.FI.FIStart[i].FileLevel==CS.FileLevel&&FS.FI.FIStart[i].effect==1&&strcmp(FS.FI.FIStart[i].FileName,path)==0) { FSElement*fselem=(FSElement*)FindBlankFileBlock(FS.FI.FIStart[i].FileBlockId); fselem->fileStu=opened; strcpy(display,"文獻(xiàn)已打開完畢。\n"); break; } } if(strcmp(display,"")==0) { strcpy(display,"現(xiàn)在目錄下沒有您要打開的文獻(xiàn)。\n"); } printf("%s\n",display); printf("[%s@localhost%s]$",CS.CurrentUser.UserName,CS.CurrentPath);}4.1.5文獻(xiàn)的讀:read只支持在現(xiàn)在目錄進(jìn)行操作,前提是顧客已執(zhí)行文獻(xiàn)打開的命令,否則會提示顧客先打開文獻(xiàn)。通過類似的查找方式,找到文獻(xiàn)的數(shù)據(jù)部分,將數(shù)據(jù)顯示到界面。讀文獻(xiàn)流程圖voidRead(char*path){ chardisplay[BLOCK_SIZE]; for(unsignedi=0;i<FS.FI.FICount;i++) { if(!strcmp(FS.FI.FIStart[i].ParentName,CS.CurrParent->FileName)&&FS.FI.FIStart[i].FileLevel==CS.FileLevel&&FS.FI.FIStart[i].effect==1&& strcmp(FS.FI.FIStart[i].FileName,path)==0) { FSElement*fselem=(FSElement*)FindBlankFileBlock(FS.FI.FIStart[i].FileBlockId); if(fselem->fileStu==closed) { strcpy(display,"文獻(xiàn)尚未打開,請先打開文獻(xiàn)。\n"); } else { if(!fselem->FileData||!strcmp(fselem->FileData,"")) { strcpy(display,"文獻(xiàn)無內(nèi)容。\n"); } else { strcpy(display,fselem->FileData); } fselem->fileStu=reading; } break; } } if(strcmp(display,"")==0) { strcpy(display,"現(xiàn)在目錄下沒有您要打開的文獻(xiàn)。\n"); } printf("%s\n",display); printf("[%s@localhost%s]$",CS.CurrentUser.UserName,CS.CurrentPath);}4.1.6文獻(xiàn)的寫:write只支持在現(xiàn)在目錄進(jìn)行操作,前提是顧客已執(zhí)行文獻(xiàn)打開的命令,否則會提示顧客先打開文獻(xiàn)。命令成功后,會等待顧客的輸入,顧客輸入完畢,使用CTRL+D,結(jié)束輸入,系統(tǒng)會讀入顧客的輸入內(nèi)容,保存到對應(yīng)的文獻(xiàn)塊(注意,如果顧客的輸入太多,會出現(xiàn)越界或截取顧客輸入一部分的現(xiàn)象)。voidWrite(char*path){ chardisplay[BLOCK_SIZE]; memset(display,'\0',BLOCK_SIZE); for(unsignedi=0;i<FS.FI.FICount;i++) { if(!strcmp(FS.FI.FIStart[i].ParentName,CS.CurrParent->FileName)&& FS.FI.FIStart[i].FileLevel==CS.FileLevel&&FS.FI.FIStart[i].effect==1&&strcmp(FS.FI.FIStart[i].FileName,path)==0) { FSElement*fselem=(FSElement*)FindBlankFileBlock(FS.FI.FIStart[i].FileBlockId); if(fselem->fileStu==closed) { strcpy(display,"文獻(xiàn)尚未打開,請先打開文獻(xiàn)。\n"); } else { printf("\n注意:文獻(xiàn)最大不能夠超出%d字節(jié)??!按CTRL+D結(jié)束編輯。\n",BLOCK_SIZE-sizeof(FSElement)); charc; inti=0; while((c=getchar())!=0x04) { display[i++]=c; } getchar(); //解決回車 display[i]='\0'; strcpy(fselem->FileData,display); unsignedlen=strlen(display)<BLOCK_SIZE-sizeof(FSElement)?strlen(display):BLOCK_SIZE-sizeof(FSElement); strncpy(fselem->FileData,display,len); fselem->fileStu=writing; strcpy(display,"文獻(xiàn)寫入成功。\n"); } break; } } printf("%s\n",display); printf("[%s@localhost%s]$",CS.CurrentUser.UserName,CS.CurrentPath);}4.1.7文獻(xiàn)關(guān)閉:close只支持在現(xiàn)在目錄進(jìn)行操作,通過顧客給定的文獻(xiàn)名在文獻(xiàn)索引中搜索到文獻(xiàn)的物理文獻(xiàn)塊ID,找到該文獻(xiàn)元素后,將文獻(xiàn)現(xiàn)在狀態(tài)置為關(guān)閉。voidClose(char*path){ chardisplay[100]; for(unsignedi=0;i<FS.FI.FICount;i++) { if(!strcmp(FS.FI.FIStart[i].ParentName,CS.CurrParent->FileName)&& FS.FI.FIStart[i].FileLevel==CS.FileLevel&&FS.FI.FIStart[i].effect==1&&strcmp(FS.FI.FIStart[i].FileName,path)==0) { FSElement*fselem=(FSElement*)FindBlankFileBlock(FS.FI.FIStart[i].FileBlockId); fselem->fileStu=opened; strcpy(display,"文獻(xiàn)已關(guān)閉。\n"); break; } } if(strcmp(display,"")==0) { strcpy(display,"現(xiàn)在目錄下沒有您要關(guān)閉的文獻(xiàn)。\n"); } printf("%s\n",display); printf("[%s@localhost%s]$",CS.CurrentUser.UserName,CS.CurrentPath);}4.1.8刪除文獻(xiàn):delete刪除文獻(xiàn)并不真正清理文獻(xiàn)的物理存儲內(nèi)容,只是將文獻(xiàn)的有效狀態(tài)更改為無效。刪除文獻(xiàn)流程圖voidDelete(char*path){ chardisplay[100]=""; for(unsignedi=0;i<FS.FI.FICount;i++) { if(!strcmp(FS.FI.FIStart[i].ParentName,CS.CurrParent->FileName)&&FS.FI.FIStart[i].FileLevel==CS.FileLevel&&FS.FI.FIStart[i].effect==1&& strcmp(FS.FI.FIStart[i].FileName,path)==0) { FS.FI.FIStart[i].effect=0; //刪除標(biāo)記 strcpy(display,"文獻(xiàn)已刪除。\n"); break; } } if(strcmp(display,"")==0) { strcpy(display,"現(xiàn)在目錄下沒有您要刪除的文獻(xiàn)。\n"); } printf("%s\n",display); printf("[%s@localhost%s]$",CS.CurrentUser.UserName,CS.CurrentPath);}4.1.9創(chuàng)立目錄(建立子目錄):mkdir只支持在現(xiàn)在目錄創(chuàng)立文獻(xiàn),與創(chuàng)立文獻(xiàn)有點(diǎn)類似,只是文獻(xiàn)夾在文獻(xiàn)元素構(gòu)造中的數(shù)據(jù)部分為空。同樣會更新位示圖和文獻(xiàn)索引。創(chuàng)立目錄流程圖voidMkdir(char*filename){ if(strcmp(filename,"")==0) { printf("對不起,文獻(xiàn)夾名不能為空。\n"); } else { CreateFileElement(protect,filename,dir,NULL,CS.CurrParent); } printf("[%s@localhost%s]$",CS.CurrentUser.UserName,CS.CurrentPath);}4.1.10變化現(xiàn)在目錄:cd只支持進(jìn)入下一層的一種文獻(xiàn)夾和回到父目錄,實(shí)現(xiàn)方式為通過系統(tǒng)的現(xiàn)在狀態(tài),獲取一種指向目的文獻(xiàn)夾的指針做為現(xiàn)在的父節(jié)點(diǎn),變化現(xiàn)在的途徑為目的途徑,變化顧客現(xiàn)在所在層。變化現(xiàn)在目錄流程圖voidCd(char*path){ intsplitDisplayCou=0; //分割符出現(xiàn)的次數(shù) if(strcmp(path,"..")==0)//返回上一級目錄,即父目錄 { if(CS.FileLevel>0) { CS.FileLevel--; CS.CurrParent=CS.CurrParent->parent; for(unsignedi=strlen(CS.CurrentPath)-1;i>0;i--) { if(CS.CurrentPath[i]=='/') { splitDisplayCou++; if(splitDisplayCou==2) //已過濾掉最后一種目錄名 { break; } } } chartemppath[1000]; strcpy(temppath,CS.CurrentPath); memset(CS.CurrentPath,'\0',1000); strncpy(CS.CurrentPath,temppath,i+1); } } else { chardisplay[100]=""; for(unsignedi=0;i<FS.FI.FICount;i++) { if(!strcmp(FS.FI.FIStart[i].ParentName,CS.CurrParent->FileName)&& FS.FI.FIStart[i].FileLevel==CS.FileLevel&&FS.FI.FIStart[i].effect==1&&strcmp(FS.FI.FIStart[i].FileName,path)==0) { strcpy(display,"文獻(xiàn)存在。\n"); CS.CurrParent=(FSElement*)FindBlankFileBlock(FS.FI.FIStart[i].FileBlockId); CS.FileLevel++; strcat(CS.CurrentPath,path); strcat(CS.CurrentPath,"/"); break; } } if(strcmp(display,"")==0) //文獻(xiàn)夾不存在,什么都不做 { printf("現(xiàn)在目錄下沒有您要進(jìn)入的文獻(xiàn)夾。\n"); } } printf("[%s@localhost%s]$",CS.CurrentUser.UserName,CS.CurrentPath);}4.1.11列出文獻(xiàn)目錄:dir只支持在現(xiàn)在目錄進(jìn)行操作,根據(jù)文獻(xiàn)元素的名稱+文獻(xiàn)元素所在層+父節(jié)點(diǎn)能夠唯一的標(biāo)記一種文獻(xiàn)元素的關(guān)系在文獻(xiàn)索引中搜索出現(xiàn)在層的全部文獻(xiàn)元素。voidDir(char*path){ chardisplay[1000]; memset(display,'\0',1000); //查找顯示內(nèi)容 for(unsignedi=0;i<FS.FI.FICount;i++) { if(!strcmp(FS.FI.FIStart[i].ParentName,CS.CurrParent->FileName)&&FS.FI.FIStart[i].FileLevel==CS.FileLevel&&FS.FI.FIStart[i].effect==1) { strcat(display,FS.FI.FIStart[i].FileName); strcat(display,"\t\t"); } } printf("%s\n",display); printf("[%s@localhost%s]$",CS.CurrentUser.UserN
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年消防工程簡易分包協(xié)議2篇
- 2024年標(biāo)準(zhǔn)貨物裝卸作業(yè)合同樣本版B版
- 2024年度在線教育平臺普通合伙合同3篇
- 2025代理合同協(xié)議
- 2024年物業(yè)租賃續(xù)租合同協(xié)議
- 2025農(nóng)產(chǎn)品簡單購銷合同范本
- 2024年危險品運(yùn)輸企業(yè)運(yùn)輸車輛安全檢查及維修服務(wù)協(xié)議3篇
- 2024年寄賣商家銷售業(yè)績獎勵協(xié)議2篇
- 2024年度石膏板市場調(diào)研采購合同協(xié)議3篇
- 2025餐飲食品供貨合同范本
- 新版高中物理必做實(shí)驗(yàn)?zāi)夸浖捌鞑?(電子版)
- (正式版)QC∕T 625-2024 汽車用涂鍍層和化學(xué)處理層
- 創(chuàng)意改變生活智慧樹知到期末考試答案章節(jié)答案2024年中國石油大學(xué)(華東)
- 中國重癥卒中管理指南2024解讀
- 售后服務(wù)部部門組織架構(gòu)
- 興安盟2024年內(nèi)蒙古興安盟盟直事業(yè)單位人才引進(jìn)10人 筆試歷年典型考題寄考點(diǎn)剖析含答案附詳解
- 你我同行-大學(xué)生朋輩心理互助智慧樹知到期末考試答案章節(jié)答案2024年湖南工學(xué)院
- 2024年北京大學(xué)“物理卓越計(jì)劃”選拔考試數(shù)學(xué)試題含答案
- 2024年高考語文閱讀之肖復(fù)興散文專練全國解析版
- 健康管理大學(xué)生職業(yè)生涯規(guī)劃書
- 高中生如何提升自己的學(xué)習(xí)效率
評論
0/150
提交評論