資源描述:
《模擬文件全資料系統(tǒng)實(shí)驗(yàn)資料報(bào)告材料.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、操作系統(tǒng)大型試驗(yàn)實(shí)驗(yàn)報(bào)告:XX班級(jí):軟件工程110x學(xué)號(hào):201126630xxx一、名稱操作系統(tǒng)大型試驗(yàn)。二、目的用C++編寫出一個(gè)簡單的模擬文件系統(tǒng),實(shí)現(xiàn)目錄的添加、刪除、重命名,文件的添加、刪除、重命名、文件和目錄、文件的拷貝。三、要求開發(fā)工具:word,vcwin32api1.設(shè)計(jì)和實(shí)現(xiàn)一個(gè)簡單的文件系統(tǒng),要求包括目錄、普通文件和文件的存儲(chǔ)2.文件系統(tǒng)的目錄結(jié)構(gòu)采用類似Linux的樹狀結(jié)構(gòu);3.要求模擬的操作包括:a)目錄的添加、刪除、重命名;b)目錄的顯示(列表)c)文件的添加、刪除、重命名d)文件和目錄的拷貝4.用戶進(jìn)入
2、時(shí)顯示可用命令列表;用戶輸入help時(shí)顯示所有命令的幫助文檔;輸入某個(gè)命令+?時(shí)顯示該條命令的使用說明5.用戶輸入exit時(shí)退出該系統(tǒng)6.實(shí)驗(yàn)實(shí)現(xiàn)基于windows平臺(tái);7.實(shí)驗(yàn)開發(fā)語言可以選用C/c++等四、設(shè)計(jì)1.主要思路說明本模擬系統(tǒng)通過一個(gè)大小固定的數(shù)組要代表物理盤塊,假設(shè)共有1024塊,新增目錄占一塊,新增文件占一塊,文件中可輸入容,容假設(shè)定義為5個(gè)字符占一塊,超出則應(yīng)新申請空間。模擬物理盤塊的數(shù)組中,數(shù)組容為-99代表改物理盤塊容為空,可使用,其他數(shù)字均代表該物理盤塊被占用,其中-3代表是占用文件的末結(jié)點(diǎn),其他整數(shù)代表是
3、文件容的下一個(gè)尋址下標(biāo),另有一個(gè)string類型的數(shù)組來存儲(chǔ)容,模擬文件寫入了對應(yīng)下標(biāo)的物理盤塊中。設(shè)置了一個(gè)全局指針指向根結(jié)點(diǎn),一個(gè)全局指針指向當(dāng)前操作目錄。搜索空白物理盤塊時(shí)采用順序搜索物理盤塊數(shù)組。存儲(chǔ)形式主要采用類似二叉樹結(jié)構(gòu),如目錄為根,目錄下的第一個(gè)文件或目錄存在根的子節(jié)點(diǎn),目錄下的其他文件或目錄存在第一個(gè)文件或目錄的兄弟節(jié)點(diǎn),以此類推。本程序僅seperate()函數(shù)使用現(xiàn)成代碼,此函數(shù)功能為將輸入命令串分離,僅僅起到美觀作用,其余所有代碼均為原創(chuàng)!2.申優(yōu)功能:1)能實(shí)現(xiàn)動(dòng)態(tài)增長,即當(dāng)輸入文件的容大小大于分配的模擬物
4、理盤塊時(shí)系統(tǒng)能夠自動(dòng)尋找空物理盤塊并分配,將超出的容保存在新的物理盤塊中,若超出模擬磁盤大小,則超出部分不保存且返回提示。2)能實(shí)現(xiàn)級(jí)聯(lián)刪除,即當(dāng)刪除目錄(文件夾)時(shí),目錄下的所有容也應(yīng)當(dāng)刪除并正確釋放物理盤塊空間。3)能實(shí)現(xiàn)目錄的復(fù)制,即復(fù)制目錄時(shí)(文件夾)時(shí),該目錄下的所有文件和目錄也應(yīng)準(zhǔn)確復(fù)制至目標(biāo)目錄中,并正確分配物理盤塊空間。3.主要函數(shù)和類的定義1)主要函數(shù)定義#defineshow_bnum20//顯示物理盤塊的塊數(shù)#defineblock_size1024//物理盤塊塊數(shù)intblock[block_size];//
5、假設(shè)有block_size塊物理盤塊stringcontent[block_size];//存放文件容intMsize=5;//此處為模擬磁盤大小為輸入5個(gè)字符fnode*root=newfnode("WP:",0,0);//設(shè)置根目錄fnode*current_path=newfnode();//當(dāng)前路徑fnode*seek_flag=newfnode();//作為查找標(biāo)志fnode*cp_flag=newfnode();//作為復(fù)制的位置標(biāo)志voidinitialize();//初始化intseekTarget(stringna
6、me);//搜索文件或目錄intseek_log(stringname);//搜索目錄voiddelete_node(stringname);//刪除節(jié)點(diǎn)intfreeblock(fnode*);//釋放物理盤塊intseekfreeblock();//搜索可用物理盤塊voidshow_current_path();//顯示當(dāng)前路徑voidadd_file(stringname,intt);//增加目錄、文件voidshow_curpath_all();//顯示當(dāng)前目錄下的所有文件voidrename_file(stringOnam
7、e,stringNname);//重命名voidseperate();//分離命令voidcd();//進(jìn)入目錄voidadd_File();//增加文件功能入口voidadd_Log();//增加目錄功能入口voiddelete_file();//刪除文件或目錄功能入口voidshow_memory();//顯示物理盤塊占用情況voidre_name();//重命名功能入口voidhelp();//查看幫助voidshow_content();//查看文件容voidwrite_file();//寫文件voidClear_();//
8、清屏voidExit();//退出voidcp();//復(fù)制功能入口voidcp_log(fnode*target,fnode*source);//復(fù)制目錄voidcp_file(fnode*target,fnode*source);