版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 經(jīng)支氣管鏡封堵兒童支氣管胸膜瘺
- 2024-2025學(xué)年遼寧省沈陽(yáng)市五校協(xié)作體高二下學(xué)期期末考試歷史試題(解析版)
- 2024-2025學(xué)年山東省濱州市高一下學(xué)期第一次月考?xì)v史試題(解析版)
- 2024-2025學(xué)年江蘇省宿遷市泗陽(yáng)縣高一上學(xué)期期末考試歷史試題(解析版)
- 2026年國(guó)家電網(wǎng)招聘考試備考題庫(kù)
- 2026年社會(huì)學(xué)基礎(chǔ)理論與社會(huì)問(wèn)題研究模擬題
- 2026年社會(huì)學(xué)理論社會(huì)分層與社會(huì)變遷試題
- 微軟ai測(cè)試題目及答案
- 2026廣東新高考:語(yǔ)文重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)
- 心理健康知識(shí)介紹
- 空調(diào)安裝應(yīng)急預(yù)案
- 木屋架維修施工方案
- 人工智能+技術(shù)體系變革智能物流研究報(bào)告
- 借用別人公司賬戶協(xié)議書(shū)
- 春節(jié)期間駕駛員安全教育
- 西湖龍井采購(gòu)合同范本
- 集團(tuán)公司職業(yè)技能等級(jí)認(rèn)定管理辦法
- 2025年紫金礦業(yè)ai面試題目及答案
- 復(fù)發(fā)性叢集性頭痛
- HY/T 0437-2024海洋生物資源碳增匯計(jì)量和監(jiān)測(cè)技術(shù)規(guī)范大型藻類(筏式養(yǎng)殖)
- 下肢動(dòng)脈硬化閉塞癥介入治療講課件
評(píng)論
0/150
提交評(píng)論