操作系統(tǒng)課程設(shè)計(jì)-一個(gè)簡(jiǎn)單的文件系統(tǒng)的詳細(xì)設(shè)計(jì)_第1頁(yè)
操作系統(tǒng)課程設(shè)計(jì)-一個(gè)簡(jiǎn)單的文件系統(tǒng)的詳細(xì)設(shè)計(jì)_第2頁(yè)
操作系統(tǒng)課程設(shè)計(jì)-一個(gè)簡(jiǎn)單的文件系統(tǒng)的詳細(xì)設(shè)計(jì)_第3頁(yè)
操作系統(tǒng)課程設(shè)計(jì)-一個(gè)簡(jiǎn)單的文件系統(tǒng)的詳細(xì)設(shè)計(jì)_第4頁(yè)
操作系統(tǒng)課程設(shè)計(jì)-一個(gè)簡(jiǎn)單的文件系統(tǒng)的詳細(xì)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩37頁(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)介

計(jì)算機(jī)系課程設(shè)計(jì)

實(shí)驗(yàn)報(bào)告

課程名稱操作系統(tǒng)課程設(shè)計(jì)________________

實(shí)驗(yàn)學(xué)期2012至2013學(xué)年第1學(xué)期

學(xué)生所在系部計(jì)算機(jī)與信息管理系

年級(jí)2010專業(yè)班級(jí)計(jì)算機(jī)001班

學(xué)生姓名學(xué)號(hào)

任課教師___________________________________

實(shí)驗(yàn)成績(jī)_________________________________________

計(jì)算機(jī)系制

word文檔可自由復(fù)制編輯

一個(gè)簡(jiǎn)單的文件系統(tǒng)的詳細(xì)設(shè)計(jì)

一、實(shí)驗(yàn)?zāi)康?/p>

(1)閱讀并調(diào)試一個(gè)簡(jiǎn)單的文件系統(tǒng),模擬文件管理的工作過(guò)程。從而對(duì)各種文件操

作命令的實(shí)質(zhì)內(nèi)容和執(zhí)行過(guò)程有比較深入的了解。

(2)了解設(shè)計(jì)一個(gè)n個(gè)用戶的文件系統(tǒng),每個(gè)用戶可以保存M個(gè)文件。用戶在一次運(yùn)

行中只能打開(kāi)一個(gè)文件,對(duì)文件必須設(shè)置保護(hù)措施,且至少有create、delete,open,close,

read、write等命令°

二、實(shí)驗(yàn)要求

1、閱讀所給文件系統(tǒng)源程序,并加注釋(注釋量達(dá)60%),

2、修改、完善該系統(tǒng),畫(huà)出所設(shè)計(jì)的文件系統(tǒng)的詳細(xì)流程圖。

三、文件系統(tǒng)功能設(shè)計(jì)

1.功能設(shè)計(jì)

該文件系統(tǒng)是一個(gè)多用戶、多任務(wù)的文件系統(tǒng)。對(duì)用戶和用戶的文件數(shù)目并沒(méi)有上限。

也就是說(shuō)該系統(tǒng)允許任何用戶申請(qǐng)空間,而且在其目錄下的文件數(shù)目并不做任何的限制。

該系統(tǒng)可以支持的操作命令如下:

①bye一用戶注銷命令。當(dāng)使用該命令時(shí),用戶退出系統(tǒng),注銷該用戶功能設(shè)計(jì)并回

到登陸界面。

命令格式:bye

②一刪除用戶注冊(cè)信息命令。執(zhí)行該命令后,用戶在系統(tǒng)中的所有信息,包括

該用戶目錄下的所有文件都被刪除。命令執(zhí)行完成后返回登陸界面。

命令格式:close

③create_在當(dāng)前目錄下創(chuàng)建一個(gè)文件,且該文件不能跟當(dāng)前已有的文件重名。該文

件的管理信息登記在用戶文件信息管理模塊中。執(zhí)行完該命令后回到執(zhí)行命令行。

命令格式:create>filel

其中:符為提示符,filel為要?jiǎng)?chuàng)建的文件名。

④delete—?jiǎng)h除當(dāng)前用戶目錄下的一個(gè)文件,命令執(zhí)行完畢返回至命令行。

命令格式:delete>filel

其中:filel為要?jiǎng)h除的文件名。

⑤1對(duì)一顯示當(dāng)前注冊(cè)目錄下的所有文件信息,包括文件名、文件長(zhǎng)度、文件操作權(quán)

限。

命令格式:list

⑥chmod——改變某個(gè)文件的執(zhí)行權(quán)限,但前提是該文件是該用戶目錄下的文件。

命令格式:chmod>filelo

其中:filel為要授權(quán)的文件名。

⑦open-----在window界面下打開(kāi)某個(gè)文件。執(zhí)行該命令后,文件filel將用在windows

界面下的文件形式打開(kāi)。用戶可以在這個(gè)方式中對(duì)文件進(jìn)行修改,并將修改后的內(nèi)容保存。

命令格式:open>filel

word文檔可自由復(fù)制編輯

其中:filel為要打開(kāi)的文件名。

⑧read——讀文件信息。將文件信息讀入并顯示在終端上。

命令格式:read>filel

其中:filel為要讀的文件名。

⑨write一向某個(gè)文件寫入新的信息。用戶可以選擇用覆蓋原來(lái)內(nèi)容的方式或和在文

件的末尾追加新信息的方式寫入信息。當(dāng)要退出時(shí)輸入即可。

(2)系統(tǒng)采用二級(jí)文件目錄。設(shè)置主目錄(MFD)和用戶文件目錄(UFD),分別以文

件的方式保存在磁盤中。在主目錄中有注冊(cè)用戶的用戶名和另一標(biāo)志該用戶目錄下是否有文

件的指針標(biāo)記。用戶文件目錄采用用戶名作為文件名保存于磁盤,以便檢索時(shí)方便對(duì)應(yīng)。在

用戶文件目錄中保存著該目錄下所有文件的文件名稱、保護(hù)碼、文件長(zhǎng)度。

(3)該系統(tǒng)大量使用高級(jí)語(yǔ)言中的文件操作函數(shù),所以能實(shí)際看到文件的創(chuàng)建、寫入、

讀出、刪除等效果。

2.功能設(shè)計(jì)實(shí)現(xiàn)總體流程

用戶登錄

3.主要數(shù)據(jù)結(jié)構(gòu)

4主要功能模塊

word文檔可自由復(fù)制編輯

四、文件系統(tǒng)功能模塊詳細(xì)設(shè)計(jì)流程圖

2.boolLogin(intSELETE)〃用戶登陸,注冊(cè)函數(shù)

圖2:函數(shù)Login(intSELETE)流程圖

word文檔可自由復(fù)制編輯

3.voidDisplayUFDO〃打印用戶信息,包括用戶的各個(gè)文件

圖3:函數(shù)DisplayUFDO流程圖

4.voidByeFile(boolBOOL)〃注銷函數(shù),調(diào)用此函數(shù)后用戶可以退出系統(tǒng)

圖4:函數(shù)ByeFile(boolBOOL)流程圖

5.boolClearUserFile。〃用戶要將自己的注冊(cè)目錄從系統(tǒng)徹底刪除

圖5:函數(shù)ClearUserFileO流程圖

word文檔可自由復(fù)制編輯

6.voidClearUserMesO//刪除用戶全部信息

圖6:函數(shù)ClearUserMesO流程圖

7.voidDeleteUser()〃刪除用戶注冊(cè)目錄的操作

圖7:函數(shù)DeleteUserO流程圖

8.voidCreatFile?!ㄔ诋?dāng)前用戶目錄下創(chuàng)建文件

圖8:函數(shù)CreatFileO流程圖

word文檔可自由復(fù)制編輯

9.voidDeleteFileO〃刪除當(dāng)前目錄下一個(gè)文件的操作

10.boolQueryModElse(boolBOOL,bool&flag)〃查詢其它用戶目錄下的文件

圖10:函數(shù)QueryModElse(boolBOOL,bool&flag)流程圖

word文檔可自由復(fù)制編輯

11.boolQueryMod(boolBOOL)〃查詢權(quán)限

圖11:函數(shù)QueryMod(boolBOOL)流程圖

12.boolWriteRight(intlen,boolBOOL)〃查看是否已經(jīng)正確地寫入到該文件

信息中,是則返回真值

圖12:函數(shù)WriteRight(intlen,boolBOOL)流程圖

word文檔可自由復(fù)制編輯

13.voidWriteLengthToFile(intLen,boolBOOL)〃將文件長(zhǎng)度寫入文件管理

模塊中

圖13:函數(shù)WriteLengthToFile(:intLen,boolBOOL)流程圖

14.voidWriteFile()〃向文件寫入信息的操作

word文檔可自由復(fù)制編輯

16.voidChangeMod()〃修改某文件的執(zhí)行權(quán)限

圖16:函數(shù)ChangeModO流程圖

17.voidExecute(inti,intlen,intcmdset)〃執(zhí)行命令函數(shù)

判斷命令并選擇

V

%cL

E■軒

開(kāi)

權(quán)

統(tǒng)

數(shù)

數(shù)

數(shù)

數(shù)

數(shù)

.U

DelekDeleuFilcOstope

圖17:函數(shù)Execute。流程圖

word文檔可自由復(fù)制編輯

18.voidCommand()〃讀取用戶輸入的命令,并將其轉(zhuǎn)換成系統(tǒng)能識(shí)別的命令

圖18:函數(shù)Command。流程圖

word文檔可自由復(fù)制編輯

五、實(shí)驗(yàn)運(yùn)行結(jié)果

1、用戶注冊(cè):

2、創(chuàng)建文件:

圖20:創(chuàng)建文件

word文檔可自由復(fù)制編輯

3、用戶注冊(cè)時(shí)重名:

圖22:已注冊(cè)用戶登陸,并打開(kāi)文件進(jìn)行寫入操作

word文檔可自由復(fù)制編輯

5、讀出文件內(nèi)容到終端:

圖23:讀出文件內(nèi)容到終端

6、刪除文件:

圖24:刪除文件

7、打印文件清單:

圖25:打印文件清單

word文檔可自由復(fù)制編輯

8、修改用戶權(quán)限:

■C:\Users\wuhen\Desktop候作系統(tǒng)課程設(shè)計(jì)收件系統(tǒng)\文件系統(tǒng).exe

XXXXX登陸

用戶名:王珊

用戶:王珊目錄下的文件:

壬珊1?txt383H

-Fffi3.txt030

bun\chmod>干珊3

體如

:具T

X

魯寫

0魯

1寫

H寫

2

3讀

輸入文件王珊3.txt的新的權(quán)限值:3。

當(dāng)前權(quán)限設(shè)置:其他用戶對(duì)王珊3"xt既沒(méi)讀權(quán)也沒(méi)寫權(quán)!

確認(rèn)按V,取消按”,:Y

i*un\^

半:

圖26:

9、刪除用戶全部文件與信息:

io、退出系統(tǒng):

圖28:退出系統(tǒng)

word文檔可自由復(fù)制編輯

六、系統(tǒng)改進(jìn)的設(shè)想與實(shí)現(xiàn)

1、修改內(nèi)容說(shuō)明:

(1)、對(duì)源程序中的函數(shù)進(jìn)行了聲明和排序(按首字母排列);

⑵、在登陸選項(xiàng)操作函數(shù)LoginDisplayO和修改文件權(quán)限函數(shù)ChangeModO中添加了

人性化提示語(yǔ)句,方便用戶操作。

2、實(shí)現(xiàn)程序(用小六字體打印):

(1)、程序如下:

//--—-------函數(shù)聲明----------------------------------------------------------

voidByeFile(boolBOOL);〃注銷函數(shù),調(diào)用此函數(shù)用戶可以退出系統(tǒng)

voidChangeMod():〃修改某文件的執(zhí)行權(quán)限

voidClearUserMesO;〃刪除用戶全部信息

voidCommandO://讀取用戶輸入的命令,并將其轉(zhuǎn)換成系統(tǒng)能識(shí)別的命令

voidCreatFileO;〃在當(dāng)前用戶目錄下創(chuàng)建文件

voidDclctcFile()://刪除當(dāng)前目錄下一個(gè)文件的操作

voidDeleteUserO:〃刪除用戶注冊(cè)目錄的操作

voidDisplayUFDO;〃打印用戶信息,包括用戶的各個(gè)文件名稱、長(zhǎng)度和操作權(quán)限的設(shè)營(yíng)信息

voidExecute(inti,intlen.intcmdset):〃執(zhí)行命令函數(shù)

voidKcyWord():〃初始化命令關(guān)鍵字

voidListAHFileO;〃顯示當(dāng)前用戶目錄下的文件信息

voidOpcnFile();〃在window模式下打開(kāi)該文件

voidReadFileO:〃讀文件函數(shù)

voidWriteFileO;〃向文件寫入信息的操作

voidWiiteLengthToFile(intLen,boolBOOL)://將文件長(zhǎng)度寫入文件管理模塊中

boolClearUserFileO;〃用戶要將自己的注冊(cè)目錄從系統(tǒng)徹底刪除,首先應(yīng)將該用戶目錄下的全部文件刪除

boolLogin(intSELETE):〃用戶登陸,注冊(cè)函數(shù)。

boolQueryMod(boolBOOL);〃查詢權(quán)限

boolQueryModElse(boolBOOL,bool&flag);//查詢其它用戶目錄下文件的文件

boolWriteRight(intlen,boolBOOL):〃查看是否已經(jīng)正確地寫入到該文件信息中,若是,則返回真值

intLoginDisplayO:〃登陸選項(xiàng)操作函數(shù)(登陸界面模塊)。

intmainO:/*主函數(shù)聲明,與其他函數(shù)聲明一樣,其功能是:使編譯居進(jìn)行預(yù)編譯時(shí)為主函數(shù)預(yù)留內(nèi)存空間。

只有主函數(shù)可以不要聲明,直接定義使用。YC6.0里用voidmain。;。*/

(2)、程序如下:

A、登陸選項(xiàng)操作函數(shù)LoginDisplayO

system("cls"):〃清屏函數(shù)。

cout<<********歡迎使用本文件系統(tǒng)*******"<<endl;

cout?******您可以進(jìn)行以下操作*****"<<endl;

coul。”**溫馨提示.輸入操作序號(hào),如“2”,再按回車鍵**\n**即可進(jìn)入“用戶注冊(cè)”功能界面,下同。***?endl;

cout?"\n*****請(qǐng)選擇操作*****\nl、用戶登陸2、用戶注冊(cè)0、退出"<<endl:

cin?SELETE_l:〃鍵盤輸入一個(gè)序號(hào),如1、2、0。

word文檔可自由復(fù)制編輯

B、修改文件權(quán)限函數(shù)ChangeModO

coul?”\n文件的權(quán)限值具體如下:";

cout?-\n30:其他用戶既沒(méi)讀權(quán)也沒(méi)寫權(quán);":

cout?*\n31:其他用戶沒(méi)有讀權(quán)但有寫權(quán);”;

cout?*\n32:其他用戶具有讀權(quán)但沒(méi)寫權(quán);”:

coul?"\n33:其他用戶既有讀權(quán)也有寫權(quán)。\n";

cout?"\n輸入文件-?buffer?*的新的權(quán)限值:”;

cin?mod;〃輸入權(quán)限值

3、源程序(用小六字體打印):

,*****************************************************************

*文件名:Simple_file_system.c

*功能:簡(jiǎn)單文件管理系統(tǒng)模擬程序

?指導(dǎo)老師:陸麗娜

*組長(zhǎng):王珊

*組員:王珊、韓二雄

*********************************************>ME********************J

//—頭文件包含

#include<iostream.h>〃定義“數(shù)據(jù)流輸入/輸出函數(shù)”的頭文件。

#include<stdio.h>〃定義“輸入/輸出函數(shù)”的頭文件。

#include<stdlib.h>〃定義“C語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)”的頭文件.

#include<string.h>〃定義"字符串處理函數(shù)”的頭文件。

ttinclude*conio.h"〃定義“控制臺(tái)輸入輸出函數(shù)”的頭文件。

#include<dos.h>〃定義“BIOS和DOS調(diào)用函數(shù)”的頭文件。

/*?表示在包含文件目錄中去查找,而不在源文件目錄中找;

’”表示首先在當(dāng)前的源文件目錄中查找,若未找到,才到包含目錄中去查找。*/

//-------------------編譯預(yù)處理-----------------------------------------------------------------

//defineNULL0〃不帶參的宏定義,功能為:用宏名(NULL)替換宏體(0)o

#definckeynum10〃同上《

Udefinegetspace(type)(type*)malloc(sizeof(type))/*帶參的宏定義.功能為用宏名(gelspace(type))替換宏體

((typc*)malloc(sizeof(type)))0

其中l(wèi)ype為形式參數(shù)°*/

charcmd[64];〃存放用戶輸入的命令

charbuffer[36]://

charuser[32];〃存放當(dāng)前登陸的用戶名

〃定義了3個(gè)全局變量(外部變量),當(dāng)函數(shù)內(nèi)部定義了與其同名的局部變量(內(nèi)部變量)時(shí),全局變量就會(huì)被屏蔽,

typedefcharALFA[12];〃用戶自定義類型,其功能為:用“ALFA[12]”代替“char",其實(shí)換湯不換藥,

ALFAKWORD[keynum]:〃此處若用charKWORD[keynum];會(huì)有24個(gè)錯(cuò)誤出現(xiàn)。

word文檔可自由復(fù)制編輯

//-

structUFD〃用戶文件管理模塊

charfilename[32};〃文件名

intsafecode:〃文件保護(hù)碼

longlength:〃文件長(zhǎng)度

)*curfile=NULL;/*定義一個(gè)結(jié)構(gòu)類型UFD,內(nèi)含三個(gè)成員變量

又定義一個(gè)結(jié)構(gòu)體變量curfile,并賦值為NULL。*/

structMFD〃用戶登陸信息管理模塊

charusername[32]:〃用戶名

boolfilepoint;〃用戶目錄下的文件指針,false表示目錄為空,true為該用戶目錄中有文件

)*curuser=NULL,*elseuser=NULL:

typedefUFDUFD;

typedefMFDMFD;〃自定義類型,用UFD代替UFD,用YFD代替MFD。為什么?????

函數(shù)聲明--

voidByeFile(boolBOOL);〃注銷函數(shù),調(diào)用此函數(shù)用戶可以退出系統(tǒng)

voidChangeMod();“修改某文件的執(zhí)行權(quán)限

voidClearUserMes();//刪除用戶全部信息

voidCommand0:〃讀取用戶輸入的命令,并將其轉(zhuǎn)換成系統(tǒng)能識(shí)別的命令

voidCreatFilcO;〃在當(dāng)前用戶目錄下創(chuàng)建文件

voidDeleteFileO;//刪除當(dāng)前目錄下一個(gè)文件的操作

voidDcletcUscrO;〃刪除用戶注冊(cè)目錄的操作

voidDisplayUFDO:〃打印用戶信息,包括用戶的各個(gè)文件名稱、長(zhǎng)度和操作權(quán)限的設(shè)置信息

voidExecutc(inti,intlen,intemdset):〃執(zhí)行命令函數(shù)

voidKeyWord();〃初始化命令關(guān)鍵字

voidListAllFileO://'顯示當(dāng)前用戶目錄下的文件信息

voidOpenFileO:〃在window模式下打開(kāi)該文件

voidReadFileO:〃讀文件函數(shù)

voidWriteFile();〃向文件寫入信息的操作

voidWriteLengthToFile(intLen,boolBOOL):〃將文件長(zhǎng)度寫入文件管理模塊中

boolClearUserFileO:〃用戶要將自己的注冊(cè)目錄從系統(tǒng)徹底刪除.首先應(yīng)將該用戶目錄下的全部文件刪除

boolLogin(intSELETE);〃用戶登陸,注冊(cè)函數(shù)。

word文檔可自由復(fù)制編輯

boolQueryMod(boolBOOL):〃查詢權(quán)限

boolQueryModEIse(boolBOOL,bool&flag):〃查詢其它用戶目錄下文件的文件

boolWritcRight(intlen,boolBOOL);〃查看是否已經(jīng)正確地寫入到該文件信息中,若是,則返回真值

intLoginDisplayO;〃登陸選項(xiàng)操作函數(shù)(登陸界面模塊)。

intmainO;/*主函數(shù)聲明.與其他函數(shù)聲明一樣,其功能是:使編譯器進(jìn)行預(yù)編譯時(shí)為主函數(shù)預(yù)留內(nèi)存空間。

只有主函數(shù)可以不要聲明,直接定義使用。

VC6.0里用voidmain。;。*/

//----------------------------------函數(shù)定義-----------------------------------------------------------

//-------------------------------------------------------------------------------------------------------

voidByeFilo(boolBOOL)〃注銷函數(shù),調(diào)用此函數(shù)用戶可以退出系統(tǒng)

(

FILE*infile,*outfi1c;

charout[50];

strcpy(out,*outfilelocatc.exc*);

if((infile=fopen(*LOGIN.exe*/rb*?=Nl'LL)

(

cout?”\n保存錯(cuò)誤c//fclose(infile);

return:

)

else

(

if((outfi1e=fopen(out,Wwb<))==NULL)〃申請(qǐng)一個(gè)緩沖區(qū)管理模塊存放用戶更新后的全部信息

(

保存錯(cuò)誤。";//fclose(outfile):

fclose(infile);return;

)

else

(

MFD*mfd=getspace(MFD);

while(l)

《〃將舊文件管理信息讀出,并保存到新的文件信息管理模塊中

fread(mfd,sizeof(MFD),1,infile);

if(feof(infile))

break;

if((strcmp(mfd->username,curuser->username))-0)//用戶名相同

(

if(BOOL)〃更新當(dāng)前用戶信息的操作

fwrite(curuser,sizeof(MFD).1,outfile);

elsecontinue:〃如果用戶想把自己的注冊(cè)目錄從系統(tǒng)中徹底刪除,則執(zhí)行該操作

)

word文檔可自由復(fù)制編輯

else

fMrrite(mfd,sizeof(MFD),1,outfile):〃寫入新的模塊

}

fclose(infile):fclose(outfile):

remove("LOGIN.oxc");〃將舊的該用戶的文件管理模塊刪除

rename(oul「LOGIN.exe"):〃將新的用戶的文件管理模塊重命名為用戶目錄下的管理模塊

//---------------------------------------------------------------------------------------------

voidChangeModO//修改某文件的執(zhí)行權(quán)限

(

intraod=40;

FILE*fp,*infile,*outfile;

charin[50],out[50];

UFD*ufd=gctspace(UFD);

strcpy(in,curuser->username);

strcat(in,exe*):

strcpy(out,*outfilelocate.exe");

if((fp=fopen(in,*rb*))==NULL)

(

//fclose(fp):

cout?”'n操作出現(xiàn)錯(cuò)誤,對(duì)此我們表示歉意廣;

return;

)

else{

while⑴

{〃查看該文件是否在當(dāng)前用戶的注冊(cè)目錄下

//任何用戶無(wú)權(quán)修改不是自己目錄下的文件的權(quán)限值

fread(ufd,sizcof(UFD),1,fp);

if(feof(fp))

(〃在當(dāng)前目錄下找不到該文件.說(shuō)明該用戶無(wú)權(quán)修改該文件權(quán)限

coul?"\n你沒(méi)有權(quán)限對(duì)文件”"buffer””執(zhí)行該操作廠;

fclose(fp):

return;

)

if(strcmp(ufd->filename,buffer)==0)

(〃找到該文件,繼續(xù)操作

fclose(fp);break;

)

}

word文檔可自由復(fù)制編輯

}

boolflagl=true;

while(flagl)

(

cout<<飛n文件的權(quán)限值具體如下:”:

cout?*\n30:其他用戶既沒(méi)讀權(quán)也沒(méi)寫權(quán);”;

cout?*\n31:其他用戶沒(méi)有讀權(quán)但有寫權(quán);”;

coUl?*\n32:其他用戶具有讀權(quán)但沒(méi)寫權(quán);”;

cout?w\n33:其他用戶既有讀權(quán)也有寫權(quán)。\n\

coul?"\n輸入文件*?buffer?*的新的權(quán)限值:”;

cin?mod;//輸入權(quán)限值

if(mod<30?mod>33)

{〃確保輸入的權(quán)限值正確

cout?"\n錯(cuò)誤:權(quán)限值必須在30、33之間”;

continue:

)

else{

charch;

switch(mod){〃告訴用戶對(duì)該文件權(quán)限修改的結(jié)果,以便用戶確認(rèn)

case30:

cout?"\n當(dāng)前權(quán)限設(shè)置:其他用戶對(duì)"<<buffer《"既沒(méi)讀權(quán)也沒(méi)寫權(quán)廠;

break;

case31:

cout?"\n當(dāng)前權(quán)限設(shè)置:其他用戶對(duì)"<<buffer<<"沒(méi)有讀權(quán)但有寫權(quán)!”;

break;

case32:

cout?"\n當(dāng)前權(quán)限設(shè)置:其他用戶對(duì)"<<buffer<<"具有讀權(quán)但沒(méi)寫權(quán)廠;

break;

case33:

coul?"\n當(dāng)前權(quán)限設(shè)置:其他用戶對(duì)"<<buffer?”既有讀權(quán)也有寫權(quán)!”;

break;

default:break;

}

coul?”\n確認(rèn)按'Y',取消按'N':;

cin?ch:

switch(ch)(

case'Y':

case'y,:flagl=falsejbreak;

default:flagl=true:

1

}

)

〃更新文件信息管理模塊,相關(guān)操作類似上面.不在贅述

if((infile-fopen(in,*rb*))--NULL)

word文檔可自由復(fù)制編輯

cout?”\n操作出現(xiàn)錯(cuò)誤,對(duì)此我們表示歉意!*;fclose(infile);

return;

)

clse(

if((outfile=fopen(oul,*wb+*))==NULL)

(

cout?”\n操作出現(xiàn)錯(cuò)誤,對(duì)此我們表示歉意!"

fclose(infile)://fclose(outfile):

return;

}

else

(

whi1e(1)

(

fread(ufd)sizcof(UFD),1,infile):

if(feof(infile))

break;

if((strcmp(ufd->filename,buffer))==0)

ufd->safecode=mod:

fwrite(ufd,sizeof(UFD),1,outfile);

)

fclose(infile);

fclose(outfile):

remove(in);

rename(out,in);

}

I

)

voidClcarUscrYes?!▌h除用戶全部信息

(

charname[50];

strepy(name,curuser->username);

strcat(name,exe");

remove(name);〃從磁盤中刪除用戶文件信息管理模塊

ByeFile(false);〃更新系統(tǒng)的用戶登陸信息管理模塊

)

//-

voidCommandO〃讀取用戶輸入的命令.并將其轉(zhuǎn)換成系統(tǒng)能識(shí)別的命令

word文檔可自由復(fù)制編輯

intlen=0,i,j;

intcmdset;

while⑴

(

cmdset=0;

cout?*\nrun\\*://??

cin?cmd;//charcmd[64]://存放用戶輸入的命令。

len=strlen(cmd):〃求字符串長(zhǎng)度函數(shù)c

i=O;j=O:

while(cmd[i]='>>Icmd[i]==,'){i++:)〃過(guò)渡空格鍵和'>'

for(;i<len;i++)

if(cmd[i]=>>*||cmd[i]==,*||i==len-l)

(

if(cmd[i]=>>>|cmd[i]=='')

bufferm='\0':

else

if(i==len-l)

(

buffer[j]=cmd[i]:

buffer[j+l]=\0f;

)

i++;

j=0;

intmid,hifih=keynum-l://tidefinekeynum10〃不帶參的宏定義,功能為:用宏名(keynum)替換宏體

(10),

boolBOOL=false;

while(low<=high)

(〃找到該命令關(guān)鍵字的內(nèi)部識(shí)別碼

mid=(low+high)/2;

if(strcmp(buffer,KW0RD[mid])<=0)high=mid-l;

if(strcmp(buffer,KWORD[mid])>=0)low=mid+l:

if(strcmp(buffer,KW0RD[mid])=0)

(

BOOL=true:

break:

)

)

if(!BOOL)

(

cout<<"\n"<〈buffer<<"不是系統(tǒng)定義的命令...”;

cmdset=0;

break;

word文檔可自由復(fù)制編輯

)

else(cmdset=mid:break;}

}

else

{

buffer[j]=cmd[i]:

j++;

)

)

if(cmdset-=0)continue;

while(cmd[i]=,>>Icrndti]—*'){i++;}〃過(guò)濾空格鍵和’

buffer[0]=>\0f;

Execute(i,len,cmdset);〃調(diào)用Execuie函數(shù).并傳參給它,使其執(zhí)行該命令。

voidCrealFileO〃在當(dāng)前用戶目錄下創(chuàng)建文件

(

FILE*fp;

curuser->filepoint=true:

if((fp=fopen(buffer,"r*))==NULL)〃如果沒(méi)有跟用戶輸入文件名相同的文件

(

if((fp=fopen(buffer,"w"))==NULL)

(

coul?”'n創(chuàng)建文件失敗!”;

//fclose(fp);

return;

}

fclose(fp);

)

else

]〃用戶要?jiǎng)?chuàng)建的文件已經(jīng)存在

cout?”\n該文件已經(jīng)存在、創(chuàng)建另一個(gè)文件?Y/N\n*:

charch;

cin?ch;

switch(ch)

(

case*Y':

case'y,:

輸入新文件名:”;

cin>>buffer;

word文檔可自由復(fù)制編輯

strcat(buffer,*.txt*):

fclose(fp):

if<(fp=fopcn(buffer,)==NULL)

(

cout?”\n創(chuàng)建文件失敗「:

//fclose(fp);

return:

I

fclose(fp);

break:

default:

fclose(fp);

return;

|

)

strcpy(user,curuser->usornamo);

strcat(user,*.exe*):

curfiIe=getspace(UFD);

strcpy(curfile->filename,buffer);〃文件名

curfi1c->length=0:〃該文件長(zhǎng)度為零

curfi1e->safecode=30;〃設(shè)置該文件的默認(rèn)權(quán)限

//U00.文件主有讀和寫權(quán),其他用戶沒(méi)有讀寫權(quán)

if((fp=fopen(user,*ab*))==NULL)

(

cout<《\n錯(cuò)誤:你可能不是合法用戶。<<endl;

getchO:

else

(

fwriie(curfile,sizeof(UFD),l.fp);〃將該文件信息寫入用戶文件信息管理模塊中

cout?"\n文件*?curfile->filename?*創(chuàng)建成功!”;

)

fclosc(fp):

//-

voidDeleteFileO//刪除當(dāng)前目錄下一個(gè)文件的操作

(

charch;

FILE*infile,*outfile:

cout?"\n確定要?jiǎng)h除文件:*?buffer?*Y/N*?endl;

cin?ch:〃提示用戶確認(rèn)刪除

switch(ch)

word文檔可自由復(fù)制編輯

case'Y':

casey:〃更新用戶文件信息管理模塊.這里同樣使用緩沖區(qū)模塊來(lái)更新.方法與上面講到的類似C

charout[50],in[50]:

strcpy(out,*outfilelocatc.ex。");

strepy(in,curuser->username);

strcat(in,二exe");

if((infile=fopen(in,"rb"?==NULL)〃打開(kāi)該用戶的文件信息管理模塊

|

cout<,\n保存錯(cuò)誤,

//fclose(infile):

return;

}

if((outfilc=fopen(out,*wb+*))==NULL)

cout?"\n保存錯(cuò)誤?//fclosc(outfilc);

fclose(infile):

return:

)

else

(

溫馨提示

  • 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)論