廣工-操作系統(tǒng)-課程設(shè)計(jì)-源代碼_第1頁(yè)
廣工-操作系統(tǒng)-課程設(shè)計(jì)-源代碼_第2頁(yè)
廣工-操作系統(tǒng)-課程設(shè)計(jì)-源代碼_第3頁(yè)
廣工-操作系統(tǒng)-課程設(shè)計(jì)-源代碼_第4頁(yè)
廣工-操作系統(tǒng)-課程設(shè)計(jì)-源代碼_第5頁(yè)
已閱讀5頁(yè),還剩44頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

./課程設(shè)計(jì)課程名稱________操作系統(tǒng)_______題目名稱_多用戶多級(jí)目錄文件系統(tǒng)的實(shí)現(xiàn)_學(xué)生學(xué)院________計(jì)算機(jī)學(xué)院____________專業(yè)班級(jí)_______________學(xué)號(hào)___________________學(xué)生XX______________________指導(dǎo)教師__________林穗______________20xx1月18日XX工業(yè)大學(xué)課程設(shè)計(jì)任務(wù)書題目名稱多用戶多級(jí)目錄文件系統(tǒng)的實(shí)現(xiàn)學(xué)生學(xué)院計(jì)算機(jī)學(xué)院專業(yè)班級(jí)08軟件工程一班姓名學(xué)號(hào)一、課程設(shè)計(jì)的內(nèi)容本課程設(shè)計(jì)要求設(shè)計(jì)一個(gè)模擬的多用戶多級(jí)目錄的文件系統(tǒng)。通過(guò)具體的文件存儲(chǔ)空間的管理、文件的物理結(jié)構(gòu)、目錄結(jié)構(gòu)和文件操作的實(shí)現(xiàn),加深對(duì)文件系統(tǒng)內(nèi)部功能和實(shí)現(xiàn)過(guò)程的理解。二、課程設(shè)計(jì)的要求與數(shù)據(jù)在內(nèi)存中開(kāi)辟一個(gè)虛擬磁盤空間作為文件存儲(chǔ)器,在其上實(shí)現(xiàn)一個(gè)多用戶多目錄的文件系統(tǒng)。文件物理結(jié)構(gòu)可采用顯式或其他方法。磁盤空閑空間的管理可選擇位示圖或其他方法。如果采用位示圖來(lái)管理文件存儲(chǔ)空間,并采用顯式分配方式,則可以將位示圖合并到FAT中。文件目錄結(jié)構(gòu)采用多用戶多級(jí)目錄結(jié)構(gòu),每個(gè)目錄項(xiàng)包含文件名、物理地址、長(zhǎng)度等信息,還可以通過(guò)目錄項(xiàng)實(shí)現(xiàn)對(duì)文件的讀和寫的保護(hù)。目錄組織方式可以不使用索引結(jié)點(diǎn)的方式,但使用索引結(jié)點(diǎn),則難度系數(shù)為1.2。設(shè)計(jì)一個(gè)較實(shí)用的用戶界面,方便用戶使用。要求提供以下相關(guān)文件操作:〔1〕具有l(wèi)ogin<用戶登錄>〔2〕系統(tǒng)初始化〔建文件卷、提供登錄模塊〕〔3〕文件的創(chuàng)建:create〔4〕文件的打開(kāi):open〔5〕文件的讀:read〔6〕文件的寫:write〔7〕文件關(guān)閉:close〔8〕刪除文件:delete〔9〕創(chuàng)建目錄〔建立子目錄〕:mkdir〔10〕改變當(dāng)前目錄:cd〔11〕列出文件目錄:dir〔12〕退出:logout系統(tǒng)必須可實(shí)際演示,選用程序設(shè)計(jì)語(yǔ)言:C++、C等。三、課程設(shè)計(jì)應(yīng)完成的工作1.充分理解設(shè)計(jì)的任務(wù),完成設(shè)計(jì)的基本要求。然后根據(jù)自己的基礎(chǔ)和能力選擇不同難度的算法和實(shí)現(xiàn)方式,以取得更高的分?jǐn)?shù)。2.獨(dú)立獨(dú)立完成系統(tǒng)的分析、設(shè)計(jì)、編碼、測(cè)試工作。3.完成設(shè)計(jì)報(bào)告的撰寫。4.以光盤〔以班為單位刻錄〕方式提交已調(diào)試通過(guò)的完整的相關(guān)源程序和能夠運(yùn)行的執(zhí)行文件;提交"課程設(shè)計(jì)報(bào)告"的書面和電子兩種版本。四、課程設(shè)計(jì)進(jìn)程安排序號(hào)設(shè)計(jì)各階段內(nèi)容地點(diǎn)起止日期1查閱資料、分析題目、概要設(shè)計(jì)分散周一2詳細(xì)設(shè)計(jì)、編碼分散周二3調(diào)試實(shí)驗(yàn)室周三4撰寫設(shè)計(jì)報(bào)告分散周四5運(yùn)行、驗(yàn)收實(shí)驗(yàn)室周五五、應(yīng)收集的資料與主要參考文獻(xiàn)[1]計(jì)算機(jī)操作系統(tǒng),湯小丹等,XX電子科技大學(xué)[2]操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書,傅秀芬,XX工業(yè)大學(xué)〔自編〕[3]計(jì)算機(jī)操作系統(tǒng)教程<第二版>,X堯?qū)W、史美林,清華大學(xué)[4]現(xiàn)代操作系統(tǒng),A.S.Tanenbaum著,陳向群等譯機(jī)械工業(yè)發(fā)出任務(wù)書日期:20xx12月22日指導(dǎo)教師簽名:林穗計(jì)劃完成日期:20xx1月21日基層教學(xué)單位責(zé)任人簽章:滕少華目錄設(shè)計(jì)目的…………………開(kāi)發(fā)工具與環(huán)境…………設(shè)計(jì)思想…………………系統(tǒng)結(jié)構(gòu)說(shuō)明……………數(shù)據(jù)結(jié)構(gòu)說(shuō)明……………各模塊的算法流程圖……………………1、程序總體源流程圖……………………2、主要模塊的算法流程圖………………3、函數(shù)聲明………………程序運(yùn)行與清單…………1、用戶管理操作界面……………………2、文件管理操作界面……………………3、主要核心源代碼………操作說(shuō)明書………………1、用戶管理使用手冊(cè)…………………2、文件操作管理使用手冊(cè)……………體會(huì)和建議………………………設(shè)計(jì)目的本課程設(shè)計(jì)要求設(shè)計(jì)一個(gè)模擬的多用戶多級(jí)目錄的文件系統(tǒng)。通過(guò)具體的文件存儲(chǔ)空間的管理、文件的物理結(jié)構(gòu)、目錄結(jié)構(gòu)和文件操作的實(shí)現(xiàn),加深對(duì)文件系統(tǒng)內(nèi)部功能和實(shí)現(xiàn)過(guò)程的理解。開(kāi)發(fā)工具與環(huán)境a〕程序設(shè)計(jì)語(yǔ)言:C語(yǔ)言b〕計(jì)算機(jī)與操作系統(tǒng):PC機(jī),WindowsXPc〕開(kāi)發(fā)平臺(tái):MicrosoftVisualC++6.0簡(jiǎn)化版d〕運(yùn)行平臺(tái):PC機(jī),WindowsXP設(shè)計(jì)思想課程設(shè)計(jì)采用MicrosoftVisualC++6.0簡(jiǎn)化版作為開(kāi)發(fā)工具,參照了windows資源管理器的結(jié)構(gòu),模擬文件管理的工作過(guò)程,通過(guò)創(chuàng)建一棵多叉樹(shù),與對(duì)這棵多叉樹(shù)的操作,建立了一個(gè)樹(shù)型文件系統(tǒng),實(shí)現(xiàn)了文件和文件夾的創(chuàng)建,打開(kāi),讀寫,刪除,關(guān)閉,復(fù)制,粘貼,查看,屬性設(shè)置等十來(lái)個(gè)功能。操作界面簡(jiǎn)單明了,操作方便。系統(tǒng)結(jié)構(gòu)說(shuō)明模擬文件管理系統(tǒng)可以自行設(shè)置多個(gè)用戶進(jìn)行管理操作,當(dāng)選擇已有用戶時(shí)便可進(jìn)入其文件管理菜單進(jìn)行相應(yīng)的操作〔有界面提示功能〕,當(dāng)進(jìn)入系統(tǒng)已建立的某個(gè)用戶時(shí),可以創(chuàng)建用戶自己的文件夾或文件,當(dāng)flag=0時(shí)為創(chuàng)建文件,flag=1時(shí)創(chuàng)建文件夾〔這里設(shè)置了標(biāo)志位〕。文件除了名稱和打開(kāi)標(biāo)志外,還可對(duì)他們的訪問(wèn)權(quán)限、文件類型和文件長(zhǎng)度進(jìn)行設(shè)置〔長(zhǎng)度設(shè)置主要在寫入文件時(shí)會(huì)用到〕;而文件夾則可以設(shè)置訪問(wèn)權(quán)限等,打開(kāi)文件列表的結(jié)構(gòu)體包括文件名和文件的父節(jié)點(diǎn)地址,打開(kāi)文件夾的鏈表中包括文件夾名稱與其地址等;對(duì)文件的管理包含復(fù)制、打開(kāi)、關(guān)閉、寫入、讀出、粘貼、新建文件〔夾〕、刪除文件〔夾〕和顯示文件〔夾〕等等,為方便操作還設(shè)置了各功能操作〔如進(jìn)入下一級(jí)、返回上一級(jí)、返回初始菜單、直接退出等等〕。下面的系統(tǒng)結(jié)構(gòu)說(shuō)明圖示:其中P表示parent指針,C表示child指針,N表示next指針數(shù)據(jù)結(jié)構(gòu)說(shuō)明該模擬文件管理系統(tǒng)的文件目錄檢索采用簡(jiǎn)單的線性搜索,系統(tǒng)所采用的數(shù)據(jù)結(jié)構(gòu):typedefstructlistLIST;structlist{charlistname[10];inttype;intlength;intprotect;intflag;char*content;structlist*parent;structlist*child;structlist*next;};typedefstructusdUSD;structusd{charusername[10];LIST*list;structusd*next;};各模塊的算法流程圖程序總體流程圖開(kāi)始開(kāi)始顯示用戶管理菜單顯示用戶管理菜單輸入操作命令輸入操作命令退出系統(tǒng)幫助文檔系統(tǒng)時(shí)間列出用戶選擇用戶刪除用戶新建用戶退出系統(tǒng)幫助文檔系統(tǒng)時(shí)間列出用戶選擇用戶刪除用戶新建用戶結(jié)束程序結(jié)束程序顯示文件管理菜單顯示文件管理菜單輸入操作命令輸入操作命令直接退出系統(tǒng)幫助與支持返回上一級(jí)文件夾進(jìn)入下一級(jí)文件夾顯示當(dāng)前路徑文件/夾粘貼文件復(fù)制文件關(guān)閉文件寫入文件讀出文件打開(kāi)文件刪除文件夾新建文件夾新建文件直接退出系統(tǒng)幫助與支持返回上一級(jí)文件夾進(jìn)入下一級(jí)文件夾顯示當(dāng)前路徑文件/夾粘貼文件復(fù)制文件關(guān)閉文件寫入文件讀出文件打開(kāi)文件刪除文件夾新建文件夾新建文件返回用戶管理菜單刪除文件結(jié)束程序結(jié)束程序主要模塊的算法流程圖創(chuàng)建用戶模塊:刪除用戶創(chuàng)建文件<夾>刪除文件夾復(fù)制文件函數(shù)聲明voiddisplayusermenu<>;///用戶管理界面菜單voidtime<>;///系統(tǒng)時(shí)間voiddisplayfilemenu<>;///文件管理界面菜單voidcreatuser<>;///新建用戶voiddeleteuser<>;///刪除用戶voiddisplayuser<>;///顯示用戶voiduserhelp<>;///用戶管理幫助voidfilehelp<>;///文件管理幫助voidselectuser<>;///選擇用戶voiddisplaylist<>;///顯示文件或者文件夾voidcreatfile<LIST*,intflag>;///創(chuàng)建文件<夾>voiddeletefile<LIST*,intflag>;///刪除文件<夾>voidopenfile<>;///打開(kāi)文件voidreadfile<>;///讀取文件voidwritefile<>;///寫入文件voidclosefile<>;///關(guān)閉文件voidnext<>;///下一層文件夾voidback<>;//上一層文件夾voidcopyfile<>;//復(fù)制文件voidpastedfile<>;///粘貼文件voidquit<>;///直接退出系統(tǒng)程序運(yùn)行與清單系統(tǒng)界面簡(jiǎn)潔美觀實(shí)用,用戶無(wú)須輸入過(guò)長(zhǎng)指令就可以完成操作。本系統(tǒng)還附帶操作指南,用戶如有疑問(wèn)可查看指南說(shuō)明。雖不如可視化易操作,但也不難。用戶管理操作程序登陸界面程序開(kāi)始界面〔即用戶管理界面〕新建用戶列出用戶刪除用戶系統(tǒng)日期時(shí)間幫助文檔退出系統(tǒng)選擇用戶輸入用戶名〔若系統(tǒng)無(wú)此用戶會(huì)有提示〕按回車后即進(jìn)入文件操作界面。2、對(duì)文件管理操作進(jìn)入用戶后對(duì)文件操作初始界面新建文件新建文件夾顯示當(dāng)前路徑文件〔夾〕刪除文件文件存在時(shí)刪除文件夾文件夾存在時(shí)打開(kāi)文件文件存在時(shí)讀出文件文件需要先置于打開(kāi)狀態(tài),方可讀取由于沒(méi)有輸入內(nèi)容所以文件內(nèi)容為空。寫入文件讀出剛才寫入的內(nèi)容關(guān)閉文件復(fù)制文件〔先將剛才關(guān)閉的文件aa1打開(kāi)再?gòu)?fù)制〕如果輸入的文件名不存在該用戶中時(shí)會(huì)有提示信息.3、主要核心源代碼〔見(jiàn)電子版〕.#include<stdio.h>#include<math.h>#include<malloc.h>#include<string.h>#include<conio.h>#include<time.h>#include"stdlib.h"#defineNULL0#defineget<type><type*>malloc<sizeof<type>> //分配空間typedefstructlistLIST;structlist{ charlistname[10]; //文件名長(zhǎng)度 inttype; intlength; //文件長(zhǎng)度 intprotect; //保護(hù)模式,0為只讀,1為可讀寫 intflag; //標(biāo)志,為0時(shí)創(chuàng)建文件夾,為1時(shí)創(chuàng)建文件 char*content; structlist*parent; structlist*child; structlist*next;};typedefstructusdUSD;structusd{charusername[10]; //用戶名長(zhǎng)度LIST*list;structusd*next;};//函數(shù)聲明voiddisplayusermenu<>; //用戶管理界面菜單voidlogin<>; //系統(tǒng)登陸界面voidtime<>; //系統(tǒng)時(shí)間voiddisplayfilemenu<>; //文件管理界面菜單voidcreatuser<>; //新建用戶voiddeleteuser<>; //刪除用戶voiddisplayuser<>; //顯示用戶voiduserhelp<>; //用戶管理幫助voidfilehelp<>; //文件管理幫助voidselectuser<>; //選擇用戶voiddisplaylist<>; //顯示文件或者文件夾voidcreatfile<LIST*,intflag>;//創(chuàng)建文件<夾>voiddeletefile<LIST*,intflag>;//刪除文件〔夾〕voidopenfile<>; //打開(kāi)文件voidreadfile<>; //讀取文件voidwritefile<>; //寫入文件voidclosefile<>; //關(guān)閉文件voidnext<>; //下一層文件夾voidback<>; //上一層文件夾voidcopyfile<>; //復(fù)制文件voidpastedfile<>; //粘貼文件voidquit<>; //直接退出系統(tǒng)USD*user=NULL,*currentuser=NULL;LIST*list=NULL,*currentlist=NULL,*copylist=NULL;voiddisplayusermenu<> //顯示用戶菜單{ system<"cls">; //清屏 intbutton; printf<"\n\n\t\t\t歡迎使用多用戶多級(jí)目錄文件系統(tǒng)\n\n">; printf<"\t\t計(jì)算機(jī)學(xué)院\t\t軟件工程1班\n\n">; printf<"\t\t\t\t\n\n\n">; printf<"\t\t1、新建用戶\n">; printf<"\t\t2、刪除用戶\n">; printf<"\t\t3、選擇用戶\n">; printf<"\t\t4、列出用戶\n">; printf<"\t\t5、系統(tǒng)時(shí)間\n">; printf<"\t\t6、幫助文檔\n">; printf<"\t\t7、退出系統(tǒng)\n\n">; printf<"\t\t請(qǐng)按功能選擇操作:">; scanf<"%d",&button>; switch<button> { case1: creatuser<>; break; //創(chuàng)建新用戶 case2: deleteuser<>; break; //刪除用戶 case3: selectuser<>; displayfilemenu<>; break; //選擇一個(gè)用戶 case4: displayuser<>; //顯示用戶 getchar<>; getchar<>; displayusermenu<>; break; case5: system<"cls">; //系統(tǒng)時(shí)間顯示 time<>; displayusermenu<>; break; case6: userhelp<>; //幫助 getch<>;displayusermenu<>; break; case7: system<"cls">; //退出 printf<"\n\n\n\t\t\t\t歡迎再次使用!!\n\n">; getch<>; exit<0>; break; default: printf<"\n\n\t\t\t你的輸入有誤!請(qǐng)重新輸入!!!\n">; getch<>; displayusermenu<>; break; //輸入非上述數(shù)字重新輸入 }}voiddisplayfilemenu<>//顯示文件管理操作菜單{ system<"cls">;//清屏 intchoice; LIST*p=currentlist; printf<"\n\t\t[%s]你好,歡迎進(jìn)入文件管理系統(tǒng)\n",currentuser->username>;//提示信息 printf<"\n當(dāng)前的文件路徑:">;//接入目錄地址 do{ printf<"<%s",p->listname>; p=p->parent; }while<p!=NULL>; printf<"\t\t[格式:子目錄<--根目錄](méi)\n\n">; printf<"功能選擇\n\n">;//菜單 printf<"\t\t1、新建文件\t\t\t9、復(fù)制文件\n">; printf<"\t\t2、刪除文件\t\t\t10、粘貼文件\n">; printf<"\t\t3、新建文件夾\t\t\t11、顯示當(dāng)前路徑文件<夾>\n">; printf<"\t\t4、刪除文件夾\t\t\t12、進(jìn)入下一級(jí)文件夾\n">; printf<"\t\t5、打開(kāi)文件\t\t\t13、返回上一級(jí)文件夾\n">; printf<"\t\t6、讀出文件\t\t\t14、返回用戶管理菜單\n">; printf<"\t\t7、寫入文件\t\t\t15、幫助與支持\n">; printf<"\t\t8、關(guān)閉文件\t\t\t16、直接退出系統(tǒng)\n\n">; printf<"\n\n">; printf<"\t\t\t按功能選擇選擇相應(yīng)的操作<輸入相關(guān)數(shù)字>:">; scanf<"%d",&choice>; printf<"\n">; system<"cls">; switch<choice>//switch語(yǔ)句 { case1: creatfile<currentlist,0>; break; //創(chuàng)建文件 case2: deletefile<currentlist,0>; break;//刪除文件 case3: creatfile<currentlist,1>; break; //創(chuàng)建文件夾 case4: deletefile<currentlist,1>; break; //刪除文件夾 case5: openfile<>; break; //打開(kāi)文件 case6: readfile<>; displayfilemenu<>; break; //讀出文件case7: writefile<>; displayfilemenu<>; break; //寫入文件 case8: closefile<>; break; //關(guān)閉文件 case9: copyfile<>; break; //復(fù)制文件 case10: pastedfile<>; break; //粘貼文件 case11: displaylist<>; //顯示文件〔夾〕 getch<>; displayfilemenu<>; break; case12: next<>; break; //進(jìn)入下一級(jí)文件夾 case13: back<>; break; //返回上一級(jí)文件夾 case14: displayusermenu<>; break; //退出,返回上用戶管理菜單case15: filehelp<>; displayfilemenu<>; break;case16: quit<>; break; default: printf<"\n\n\t\t\t你的輸入有誤!請(qǐng)重新輸入!!!\n">; getch<>; displayfilemenu<>; break; //非法輸入,返回文件管理菜單重新輸入 }}voidlogin<>{ charusername[20]; charpassword[20]; printf<"\n\n\n\n">; printf<"\t\t\t系統(tǒng)登陸:<用戶密碼均為admin>\n\n">; printf<"\t\t\t請(qǐng)輸入用戶名:">; scanf<"%s",username>; printf<"\t\t\t請(qǐng)輸入密碼:">; scanf<"%s",password>; if<strcmp<username,"admin">||strcmp<password,"admin">> { printf<"\n\t\t用戶名或密碼錯(cuò)誤,請(qǐng)重新輸入!\n">; getch<>; system<"cls">; login<>; }}voidtime<> //顯示系統(tǒng)時(shí)間日期{time_tnow; //調(diào)用系統(tǒng)日期時(shí)間time<&now>; printf<"\n\n\t\t\t系統(tǒng)當(dāng)前日期時(shí)間\n\n">;printf<"\t\t\t%s",asctime<localtime<&now>>>;//顯示系統(tǒng)詳細(xì)時(shí)間 printf<"\n\n\n">; getch<>;}voidcreatuser<> //創(chuàng)建用戶{ inti; chars; USD*p,*q=user; system<"cls">; p=get<USD>; for<i=1;q!=NULL;i++>q=q->next;//i指示當(dāng)前用戶個(gè)數(shù) q=user; printf<"\n\t\t\t\t[創(chuàng)建一個(gè)新用戶]\n">; printf<"\n\t\t\t\t請(qǐng)輸入NO.%d個(gè)用戶名:",i>; scanf<"%s",p->username>;//輸入新用戶的名字 LIST*l=list; l=get<LIST>; strcpy<l->listname,p->username>; l->next=NULL; l->type=1; l->parent=NULL; l->child=NULL; p->list=l; p->next=NULL; if<user==NULL> { user=p;//若user為空,則把P復(fù)給user } else//若user不為空,則以有舊用戶存在 { while<q->next!=NULL>{ //尋找最后一個(gè)用戶 if<strcmp<p->username,q->username>==0>{//比較,看系統(tǒng)是否已經(jīng)存在該用戶 printf<"\n\ttheuserhasexit!tryagain!\n\n">;//提示出錯(cuò)信息 getchar<>;getchar<>;system<"cls">; displayusermenu<>; } q=q->next; } if<strcmp<p->username,q->username>==0>{///檢查提示重名并提示信息 printf<"\n\t\t\t該用戶已經(jīng)存在!無(wú)法創(chuàng)建該用戶!\n\n">; getchar<>;getchar<>;system<"cls">; displayusermenu<>; } q->next=p;//繼續(xù)尋找下一個(gè)字符 } printf<"\n\t\t\t\t是否要再創(chuàng)建一個(gè)用戶?<Y/N>:">;//輸入下一個(gè)用戶 scanf<"%s",&s>; switch<s>{ case'y':creatuser<>;break; case'Y':creatuser<>;break; case'n':displayusermenu<>;break;case'N':displayusermenu<>;break; default:displayusermenu<>;break; }}voiddeleteuser<>//刪除用戶{ charn[10]; USD*p=user,*pre=NULL; displayuser<>; if<!p>{printf<"\n\t\t\t\t系統(tǒng)無(wú)用戶可刪除!\n">;//P為空,報(bào)錯(cuò),必須先創(chuàng)建一個(gè)用戶 getchar<>;getchar<>;system<"cls">; displayusermenu<>;} printf<"\n\n\t\t\t\t請(qǐng)輸入要?jiǎng)h除的用戶名:">; scanf<"%s",n>; while<p!=NULL> { if<strcmp<p->username,n>==0>//尋找所要?jiǎng)h除的用戶 { if<p==user> { user=user->next;//若是第一個(gè)用戶,則釋放P } else { pre->next=p->next; } free<p>; printf<"\n\n\n\t\t\t\t已經(jīng)成功刪除用戶[%s]!!!",n>; break; } else { pre=p; p=p->next; } } if<p==NULL>//找不到用戶 { printf<"\n\n\t\t\t找不到該用戶!請(qǐng)確認(rèn)該用戶是否存在!\n">; } getchar<>;getchar<>;system<"cls">;displayusermenu<>;}voidselectuser<>//選擇用戶{charn[10]; USD*p=user; displayuser<>; if<!p>{printf<"\n\t\t\t該用戶不存在!請(qǐng)確認(rèn)用戶名是否正確!!!">;//沒(méi)有用戶 getchar<>;getchar<>;system<"cls">; displayusermenu<>;} printf<"\n\t\t\t\t[選擇一個(gè)用戶]">; printf<"\n\n\t\t\t\t請(qǐng)輸入用戶名:">; scanf<"%s",n>;//輸入用戶名 while<p!=NULL> { if<strcmp<p->username,n>==0>//逐個(gè)比較尋找用戶 { currentuser=p;//找到對(duì)應(yīng)用戶,則把currentuser指向該用戶 currentlist=p->list; printf<"%s\n",currentlist->listname>; return; } else { p=p->next; } } if<p==NULL>//找不到用戶 { printf<"\n\n\t\t\t\t該用戶不存在!!!">; getchar<>; system<"cls">; displayusermenu<>; }}voidcreatfile<LIST*,intflag>//創(chuàng)建文件<夾>{LIST*temp; LIST*p=->child;LIST*q;temp=get<LIST>;loop: q=->child; if<flag==0>{printf<"\n\t\t\t\t[創(chuàng)建一個(gè)新文件]\n">; printf<"\n\t\t\t\t請(qǐng)輸入新建文件名:">;//輸入文件名 } else { printf<"\n\t\t\t\t[創(chuàng)建一個(gè)新文件夾]\n">; printf<"\n\t\t\t\t請(qǐng)輸入新建文件夾名:">;//輸入文件名 } scanf<"%s",temp->listname>; while<q!=NULL> { if<strcmp<temp->listname,q->listname>==0> { printf<"\n\t\t\t相同路徑下有重名文件!請(qǐng)重新輸入!">; gotoloop; } q=q->next; } temp->content=NULL; printf<"\n\t\t文件屬性:0、只讀Read\t\t1、讀和寫Read&Write">;//設(shè)置保護(hù)模式 printf<"\n\n\t\t\t請(qǐng)根據(jù)提示選擇保護(hù)模式<0/1>?:">; scanf<"%d",&temp->protect>; if<temp->protect!=0&&temp->protect!=1> {printf<"\n\n\t\t\t你的選擇有誤!請(qǐng)重新輸入<0/1>?:">; scanf<"%d",&temp->protect>; } if<flag==0> { printf<"\n\t\t\t\t請(qǐng)輸入該文件的長(zhǎng)度:">;//設(shè)置文件長(zhǎng)度,供寫入文件時(shí)會(huì)用到 scanf<"%d",&temp->length>; }if<flag==0> temp->type=0;//0為文件 elsetemp->type=1; temp->flag=0;//文件默認(rèn)為關(guān)閉狀態(tài),以后需要時(shí)再打開(kāi) temp->child=NULL; temp->next=NULL; temp->parent=currentlist; if<p==NULL>{->child=temp;} else{ while<p->next!=NULL> {p=p->next;} p->next=temp; }getchar<>; displayfilemenu<>;}voiddeletefile<LIST*,intflag>//刪除文件<夾>{ charn[10]; LIST*p=->child; LIST*pre=NULL; if<flag==0> { printf<"\n\t\t\t\t[刪除一個(gè)文件]\n">; printf<"\n\t\t\t\t請(qǐng)輸入要?jiǎng)h除的文件名:">; } else { printf<"\n\t\t\t\t[刪除文件夾]\n">; printf<"\n\t\t\t\t請(qǐng)輸入要?jiǎng)h除的文件夾名:">; } scanf<"%s",n>; while<p!=NULL>{if<<strcmp<p->listname,n>==0>&&<p->type==0>> {if<pre==NULL>//第一個(gè)節(jié)點(diǎn) {->child=p->next;free<p>; printf<"\n\n\t\t\t\t文件%s已刪除成功!!!\n",n>; }else { pre->next=p->next;//把前一個(gè)指針的NEXT指向N當(dāng)前指針的NEXT,則刪除該文件 printf<"\n\n\t\t\t\t文件%s已刪除成功!!!\n",n>; free<p>; } break; } elseif<<strcmp<p->listname,n>==0>&&<p->type==1>> {if<pre==NULL>//第一個(gè)節(jié)點(diǎn) {->child=p->next;free<p>; printf<"\n\n\t\t\t\t文件夾%s已經(jīng)成功刪除!!!\n",n>; }else { pre->next=p->next;//把前一個(gè)指針的NEXT指向N當(dāng)前指針的NEXT,則刪除該文件 printf<"\n\n\t\t\t\t文件夾%s已經(jīng)成功刪除!!!\n",n>; free<p>;} break; } else { pre=p; p=p->next; } } if<p==NULL&&flag==0>//該文件不存在 printf<"\n\n\t\t\t\t找不到該文件!">; elseif<p==NULL&&flag==1>printf<"\n\n\t\t\t\t找不到該文件夾!\n">; getchar<>;//用戶輸入的字符被存放在鍵盤緩沖區(qū)中.直到用戶按回車為止<回車字符也放在緩沖區(qū)中> getchar<>;displayfilemenu<>;}voidopenfile<>////打開(kāi)文件{ charn[10]; LIST*p=currentlist->child; printf<"\n\t\t\t\t[打開(kāi)一個(gè)文件]\n">; printf<"\n\t\t\t\t請(qǐng)輸入要打開(kāi)的文件名:">;//輸入文件名 scanf<"%s",n>;while<p!=NULL> { if<<strcmp<p->listname,n>==0>&&<p->type==0>&&<p->flag==0>>//比較文件以尋找要打開(kāi)的文件 { p->flag=1; printf<"\n\t\t\t\t文件%s成功打開(kāi)!!!\n",n>; break; } elseif<<strcmp<p->listname,n>==0>&&<p->type==0>&&<p->flag==1>> { printf<"\n\t\t\t\t文件%s打開(kāi)已經(jīng)!!!\n",n>; break; }p=p->next; } if<p==NULL> { printf<"\n\n\t\t\t\t找不到該文件!\n">; } getchar<>; getchar<>; displayfilemenu<>;}voidreadfile<>//讀出文件{ charn[10]; LIST*p=currentlist->child; printf<"\n\t\t\t\t[讀取一個(gè)文件]\n">; printf<"\n\n\t\t\t\t請(qǐng)輸入要讀的文件名:">; scanf<"%s",n>; while<p!=NULL> { if<<strcmp<p->listname,n>==0>&&<p->type==0>&&<p->flag==1>>//比較 { printf<"\n\t\t\t文件%s內(nèi)容是:%s",p->listname,p->content>; getchar<>;getchar<>;system<"cls">; return;} p=p->next; }printf<"\n\n\t\t讀文件失敗,請(qǐng)確認(rèn)該文件是否已經(jīng)打開(kāi)或文件是否存在!\n">;getchar<>; getchar<>;}voidwritefile<>//寫入文件{ charn[10],*temp; LIST*p=currentlist->child; printf<"\n\t\t\t\t[寫入文件]\n">; printf<"\n\t\t\t\t請(qǐng)輸入要寫的文件名:">; scanf<"%s",n>; while<p!=NULL> { if<<strcmp<p->listname,n>==0>&&<p->type==0>> { if<p->flag==0> {printf<"\n\t\t\t文件未打開(kāi),無(wú)法寫入!請(qǐng)將文件置打開(kāi)狀態(tài)!!!\n">;getchar<>;getchar<>;system<"cls">;} elseif<p->protect==0> {printf<"\n\n\t\t\t操作受限!該文件不能寫!!!\n">;//該文件限制讀寫getchar<>; system<"cls">;return; } else { temp=<char*>malloc<sizeof<char>*p->length>; printf<"\n\n\t\t\t\t請(qǐng)輸入文件內(nèi)容<length<=%d>:\n\n\t",p->length>; scanf<"%s",temp>; p->content=temp; getchar<>; system<"cls">; } return;} p=p->next; }printf<"\n\n\t\t\t該文件不存在!獲取失敗!!!\n">;//提示getchar<>; getchar<>;}voidclosefile<>//關(guān)閉文件{ charn[10]; LIST*p=currentlist->child; printf<"\n\t\t\t\t[關(guān)閉一個(gè)文件]\n">; printf<"\n\t\t\t\t請(qǐng)輸入要關(guān)閉的文件名:">; scanf<"%s",n>;while<p!=NULL> { if<<strcmp<p->listname,n>==0>&&<p->type==0>&&<p->flag==1>>//尋找需要文件 { p->flag=0; printf<"\n\t\t\t\t文件%s關(guān)閉成功.\n",n>; break; } elseif<<strcmp<p->listname,n>==0>&&<p->type==0>&&<p->flag==0>> { printf<"\n\t\t\t\t文件%s已經(jīng)關(guān)閉.\n",n>; break; }p=p->next; } if<p==NULL> { printf<"\n\n\t\t\t\t找不到該文件!\n">; } getchar<>; getchar<>; displayfilemenu<>;/////返回文件管理菜單}voidnext<>///進(jìn)入一下層文件夾{ charn[10]; LIST*p=currentlist->child; printf<"\n\t\t\t\t[進(jìn)入一個(gè)文件夾]\n">; printf<"\n\t\t\t\t請(qǐng)輸入要進(jìn)入的文件夾名:">; scanf<"%s",n>;while<p!=NULL> { if<<strcmp<p->listname,n>==0>&&<p->type==1>> {currentlist=p; printf<"\n\n\t\t\t\t已成功進(jìn)入文件夾%s!\n",n>; break; }p=p->next; } if<p==NULL> { printf<"\n\n\t\t\t\t找不到該文件夾!!!\n">; } getchar<>; getchar<>; displayfilemenu<>;///返回文件管理菜單}voidback<>///返回上一怪菜單{LIST*p=currentlist; currentlist=currentlist->parent; printf<"\n\n\t\t\t\t已經(jīng)成功退出文件夾%s!!!\n",p->listname>;getchar<>; getchar<>; displayfilemenu<>;}voidcopyfile<>//復(fù)制文件{ charn[10]; LIST*p=currentlist->child; printf<"\n\t\t\t\t[復(fù)制一個(gè)文件]\n">; printf<"\n\t\t\t\t請(qǐng)輸入要復(fù)制的文件名:">; scanf<"%s",n>;while<p!=NULL> { if<<strcmp<p->listname,n>==0>&&<p->type==0>> {copylist=p; printf<"\n\n\t\t\t\t復(fù)制文件%s成功!!!\n",n>; break; }p=p->next; } if<p==NULL> { printf<"\n\n\t\t\t\t找不到該文件!!!\n">; } getchar<>; getch<>; displayfilemenu<>;//返回文件管理界面}voidpastedfile<>///粘貼文件{LIST*temp,*q; LIST*p=currentlist->child; while<p!=NULL> { if<strcmp<p->listname,copylist->listname>==0> { printf<"\n\n\t\t\t\t無(wú)法粘貼該文件!該文件夾下有同名文件<夾>!!!\n">; break; } q=p;p=p->next; } temp=get<LIST>; temp=copylist; if<p==NULL&&p!=currentlist->child> { q->next=temp; } else { currentlist->child=temp; } temp->parent=currentlist; temp->child=NULL; temp->next=NULL; printf<"\n\n\t\t\t\t粘貼文件%s成功!!!\n",copylist->listname>;//提示 getchar<>;//回車執(zhí)行下一步///控制屏幕停留 getchar<>; displayfilemenu<>;//返回文件管理界面}voiddisplayuser<>//顯示用戶名{ system<"cls">; inti=0; USD*temp=user; printf<"\n[用戶列表]\n\n">; while<temp!=NULL> {i++; printf<"\t\t\t\tNO.%d:%s\n",i,temp->username>; temp=temp->next; } if<user==NULL>{printf<"\n\t\t\t\t系統(tǒng)無(wú)用戶!">;} printf<"\n\n\n">;}voiddisplaylist<>////顯示文件/文件夾{ LIST*p=currentlist->child;if<p==NULL> { printf<"\n[當(dāng)前目錄下的文件和文件夾為]\n">; printf<"\n\t\t\t\t無(wú)任何文件和文件夾!!\n\n">; printf<"\n">; return; } else { printf<"\n[當(dāng)前目錄下的文件和文件夾為]\n">; printf<"\n\t\t文件<夾>名\t\t文件類型\n">; } while<p!=NULL> { if<p->type==0> printf<"\n\t\t%s\t\t\t文件",p->listname>; elseprintf<"\n\t\t%s\t\t\t文件夾",p->listname>; p=p->next; }printf<"\n\n\n">;}voiduserhelp<>//幫助{ system<"cls">; printf<"\n[用戶管理界面幫助與支持]\n\n">; printf<"\t\t1、新建用戶:每次可以新建一個(gè)或者多個(gè)用戶\n\n">; printf<"\t\t2、刪除用戶:每次可以刪除一個(gè)用戶\n\n">; printf<"\t\t3、選擇用戶:選擇一個(gè)用戶進(jìn)行訪問(wèn)操作\n\n">; printf<"\t\t4、列出用戶:顯示系統(tǒng)目前所有用戶\n\n">; printf<"\t\t5、系統(tǒng)時(shí)間:顯示當(dāng)前系統(tǒng)日期和時(shí)間\n\n">; printf<"\t\t6、幫助文檔:提供本界面幫助信息\n\n">; printf<"\t\t7、退出系統(tǒng):退出模擬文件管理系統(tǒng)\n\n">; printf<"\n\n">;}voidfilehelp<>//幫助{ system<"cls">; printf<"\n[用戶管理界面幫助與支持]\n\n">; printf<"\t\t1、新建文件:新建一個(gè)文件\n">; printf<"\t\t2、刪除文件:刪除一個(gè)文件\n">; printf<"\t\t3、新建文件夾:新建一個(gè)文件夾\n">; printf<"\t\t4、刪除文件夾:刪除一個(gè)文件夾

溫馨提示

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

評(píng)論

0/150

提交評(píng)論