操作系統(tǒng)專業(yè)課程設(shè)計(jì)范文_第1頁(yè)
操作系統(tǒng)專業(yè)課程設(shè)計(jì)范文_第2頁(yè)
操作系統(tǒng)專業(yè)課程設(shè)計(jì)范文_第3頁(yè)
操作系統(tǒng)專業(yè)課程設(shè)計(jì)范文_第4頁(yè)
操作系統(tǒng)專業(yè)課程設(shè)計(jì)范文_第5頁(yè)
已閱讀5頁(yè),還剩54頁(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í)驗(yàn)

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

課程名稱________操作系統(tǒng)實(shí)驗(yàn)報(bào)告________________

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

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

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

學(xué)生姓名王強(qiáng)黃新潮張蒙

學(xué)號(hào)110300821103007011030077

任課教師______________陸麗娜

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

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

一種簡(jiǎn)樸文獻(xiàn)系統(tǒng)詳細(xì)設(shè)計(jì)

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

(1)閱讀并調(diào)試一種簡(jiǎn)樸文獻(xiàn)系統(tǒng),模仿文獻(xiàn)管理工作過(guò)程。從而對(duì)各種文獻(xiàn)操作命

令實(shí)質(zhì)內(nèi)容和執(zhí)行過(guò)程有比較進(jìn)一步埋解。

(2)理解設(shè)計(jì)一種n個(gè)顧客文獻(xiàn)系統(tǒng),每個(gè)顧客可以保存M個(gè)文獻(xiàn)。顧客在一次運(yùn)營(yíng)

中只能打開(kāi)一種文獻(xiàn),對(duì)文獻(xiàn)必要設(shè)立保護(hù)辦法,且至少有create、deleteopen、close、read、

write等命令。

二、實(shí)驗(yàn)規(guī)定

1、依照流程圖閱讀所給文獻(xiàn)系統(tǒng)源程序,并對(duì)源程序加以注釋(注釋量達(dá)70%以上)。

2、修改、完善該系統(tǒng),指出程序bug。

三、文獻(xiàn)系統(tǒng)功能設(shè)計(jì)

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

該文獻(xiàn)系統(tǒng)是一種多頤客、多仟?jiǎng)?wù)文獻(xiàn)系統(tǒng)。對(duì)顧客和顧客文獻(xiàn)數(shù)目并沒(méi)有上眼。也就

是說(shuō)該系統(tǒng)容許任何顧客申請(qǐng)空間,并且在其目錄下文獻(xiàn)數(shù)目并不做任何限制。

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

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

到登陸界面。

命令格式:bye

②close——?jiǎng)h除顧客注冊(cè)信息命令。執(zhí)行該命令后,顧客在系統(tǒng)中所有信息,涉及該

顧客目錄下所有文獻(xiàn)都被刑除。命令執(zhí)行完畢后返回登陸界面。

命令格式:close

③create——在當(dāng)前目錄下創(chuàng)立一種文獻(xiàn),且該文獻(xiàn)不能跟當(dāng)前已有文獻(xiàn)重名。該文獻(xiàn)

管理信息登記在顧客文獻(xiàn)信息管理模塊中。執(zhí)行完該命令后回到執(zhí)行命令行。

命令格式:creatofilel

其中:符為提示符,fiiel為要?jiǎng)?chuàng)立文獻(xiàn)名。

④delete——?jiǎng)h除當(dāng)前顧客目錄下一種文獻(xiàn),命令執(zhí)行完畢返回至命令行。

命令格式:dclctofilcl

其中:fiiel為要?jiǎng)h除文獻(xiàn)名。

⑤底1一顯示當(dāng)前注冊(cè)目錄下所有文獻(xiàn)信息,涉及文獻(xiàn)名、文獻(xiàn)長(zhǎng)度、文獻(xiàn)操作權(quán)限。

命令格式:list

⑥chmod——變化某個(gè)文獻(xiàn)執(zhí)行權(quán)限,但前提是該文獻(xiàn)是該顧客目錄下文獻(xiàn)。

命令格式:chmod>fi)clo

其中:fiiel為要授權(quán)文獻(xiàn)名。

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

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

命令格式:open>filel

其中:fiiel為要打開(kāi)文獻(xiàn)名。

⑧read——讀文獻(xiàn)信息。將文獻(xiàn)信息讀入并顯示在終端上。

命令格式:read>fiiel

其中:fiiel為要讀文獻(xiàn)名。

⑨write——向某個(gè)文獻(xiàn)寫入新信息。顧客可以選取用覆蓋本來(lái)內(nèi)容方式或和在文獻(xiàn)末

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

(2)系統(tǒng)采用二級(jí)文獻(xiàn)目錄。設(shè)立主目錄(MFD)和顧客文獻(xiàn)目錄(UFD),分別以文

獻(xiàn)方式保存在磁盤中。在主目錄中有注冊(cè)顧客顧客名和另一標(biāo)志該顧客目錄下與否有文獻(xiàn)指

針標(biāo)記。顧客文獻(xiàn)目錄采用顧客名作為文獻(xiàn)名保存于磁盤,以便檢索時(shí)以便相應(yīng)。在顧客文

獻(xiàn)目錄中保存著該目錄卜.所有文獻(xiàn)文獻(xiàn)名稱、保護(hù)碼、文獻(xiàn)長(zhǎng)度。

(3)該系統(tǒng)大量使用高檔語(yǔ)言中文獻(xiàn)操作函數(shù),因此能實(shí)際看到文獻(xiàn)創(chuàng)立、寫入、讀

出、刪除等效果。

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

員,filename,safecodejength,分別用于存儲(chǔ)顧客文獻(xiàn)名字.文獻(xiàn)保護(hù)碼,文獻(xiàn)長(zhǎng)度,*cuifile=

NULL;,這是一種構(gòu)造體類型指針,開(kāi)始初始化為NULL.

structMFD

{//主文獻(xiàn)模塊

charusername[32];〃存儲(chǔ)顧客名

boolfilepoint;

〃顧客目錄下文獻(xiàn)指針,false表達(dá)目錄為空,true為該顧客目錄中有文獻(xiàn)

}*curuser=NULL,*elscuser=NULL;

這個(gè)是主文獻(xiàn)模塊數(shù)據(jù)構(gòu)造,有兩個(gè)成員,username,filepoint,分別用于存儲(chǔ)顧客名,

顧客目錄下面文獻(xiàn)指針.*curuser=NULL,*elseuser=NULL;這兩個(gè)是主文獻(xiàn)構(gòu)造體變晶,用

于訪問(wèn)構(gòu)造體里面數(shù)據(jù)成員

4.重要功能模塊

1.intLoginDisplay()〃登陸選項(xiàng)操作函數(shù)

2.boolLoginlintSELETE)〃顧客登陸,注冊(cè)函數(shù)

3.voidDisplayUFDO〃打印顧客信息,涉及顧客各個(gè)文獻(xiàn)

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

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

6.voidClearUserMes()〃刪除顧客所有信息

7.voidDcleteUser()〃刪除顧客注冊(cè)目錄操作

8.voidCreatFile()〃在當(dāng)前顧客目錄下創(chuàng)立文獻(xiàn)

9.voidDeleteFileO//刪除當(dāng)前目錄下一種文獻(xiàn)操作

10.boolQueryModElse(boolBOOL,bool&flag)

〃查詢其他顧客a錄下文獻(xiàn)文獻(xiàn)

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

12.boolWriteRight(intlen,boolBOOL)

〃查看與否已經(jīng)對(duì)的地寫入到該文獻(xiàn)信息中,是則返回真值

13.voidWriteLengthToFile(intLen,boolBOOL)

//將文獻(xiàn)長(zhǎng)度寫入文獻(xiàn)管理模塊中

14.voidWritcFile()〃向文獻(xiàn)寫入信息操作

15.voidReadFile()〃讀文獻(xiàn)函數(shù)

16.voidChangeMod()〃修改某文獻(xiàn)執(zhí)行雙限

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

18.voidCommand()

〃讀取顧客輸入命令,并將其轉(zhuǎn)換成系統(tǒng)能辨認(rèn)命令

5.小構(gòu)成員及分工

負(fù)責(zé)人;

姓名模塊

黃新潮組長(zhǎng)分派任務(wù),總結(jié)實(shí)驗(yàn)心得,分析流程圖,給成員解說(shuō)

王強(qiáng)對(duì)源程序加以注釋、修改

張蒙對(duì)源程序讀取,運(yùn)營(yíng),截圖,完善

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

1.intLoginDisplay()〃登陸選項(xiàng)操作函數(shù)

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

3.voidDisplayUFDC〃打印顧客信息,涉及顧客各個(gè)文獻(xiàn)

圉2DicnlavIlFD

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

5.boolClearUserFLeO〃顧客要將自己注冊(cè)目錄從系統(tǒng)徹底刪除

6.voidClearUserMes()〃刪除顧客所有信息

圖6PlparlkerMpc

7.intDeleteUserO//刪除顧客注冊(cè)目錄操作

8.voidCreatFile。//在當(dāng)前顧客目錄下創(chuàng)立文獻(xiàn)

9.voidDeleteFileC//刪除當(dāng)前目錄下一種文獻(xiàn)操作

DpIprpFilp

10.boolQueryModElse(boolBOOL,bool&flag)〃查詢其他顧客目錄下文獻(xiàn)文

獻(xiàn)

圖1()f^nprvMndFkp

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

12.boolWriteRight(intlen,boolBOOL)〃查看與否已經(jīng)對(duì)的地寫入到該文

獻(xiàn)信息中,是則返回真值

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

模塊中

WriteLenethToFile

14.voidW'riteFileC〃向文獻(xiàn)寫入信息操作

15.voidReadFileO//讀文獻(xiàn)函數(shù)

圖15ReadFile

16.voidChangeModC〃修改某文獻(xiàn)執(zhí)行權(quán)限

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

圖17Execute

18.voidCommand。//讀取顧客輸入命令,并將其轉(zhuǎn)換成系統(tǒng)能辨認(rèn)命令

圖18Command

五、實(shí)驗(yàn)運(yùn)營(yíng)成果

/*****************************************************************

文獻(xiàn)名:Simple_file_systcm.c

功能:簡(jiǎn)樸文獻(xiàn)管理系統(tǒng)模仿程序

*******************************************************************/

#inc1udc<iostrcani.h>

#include<s(dio.h>

#include<stdlib.h>

#include<string.h>

#include"conio.h"

#include<dos.h>

#defineNULLO

#definekeynum10

#definegetspace(type)(type*)malloc(sizeof(type))〃宏定義申請(qǐng)內(nèi)存

charcnidl64]:〃存儲(chǔ)顧客輸入命令

charbuffer[36];//

charuser[32];〃存儲(chǔ)當(dāng)前登陸顧客名

typedefcharALFA[12];

ALFAKWORD[keynum];

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

structUFD{//顧客文獻(xiàn)管理模塊

charfilename[32J;〃文獻(xiàn)名

intsafecode;〃文獻(xiàn)保護(hù)碼

longlength:〃文獻(xiàn)長(zhǎng)度

}*curfile=NULL;

//.......................................................................................................................................

structMFD{〃顧客登陸信息管理模塊

charusemame[32];〃顧客名

boolfilepoint://顧客目錄下文獻(xiàn)指針,false表達(dá)H錄為空,true為該顧客目錄中有文

}*curuser=NULL,*elseuser=NULL;

typedefUFDUFD;〃重命名

typedefMFDMFD;

voidmain();

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

voidKeyWord。//初始化命令核心字

strcpy(KWORD[IL"bye");〃顧客注銷命令

strcpy(KWORD[2],"chmod");〃變化文獻(xiàn)執(zhí)行權(quán)限

strcpy(KWORD[3],"close");//刪除顧客注冊(cè)信息

strcpy(KWORD[4|,"create");//在當(dāng)前目錄下創(chuàng)立一種文獻(xiàn)

strcpy(KWORD[5],"delete");〃刪除當(dāng)前顧客目錄下?種文獻(xiàn)

strcpy(KWORD[6],"list");〃顯示當(dāng)前注冊(cè)目錄下所有文獻(xiàn)信息

sticpy(KWORD[7],"opcn");〃打開(kāi)文獻(xiàn)

strcpy(KWORD[8J,"read");〃讀文獻(xiàn)信息

strcpy(KWORD[9L"write");〃向文獻(xiàn)寫入新信息

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

intLoginDisplay?!ǖ顷戇x項(xiàng)操作函數(shù)

(

intSELETE_1=0;〃定義整型數(shù)存儲(chǔ)選項(xiàng)

do〃循環(huán)控制

(

cout?H*****請(qǐng)選取操作*****\nl、顧客登陸2、顧客注冊(cè)0、退出"vvendl;

〃顯示登陸選項(xiàng)界面

cin?SELETE_l:〃輸入要選取命令

}while(SELETE_l<0||SELETE_I>2);〃選項(xiàng)判斷

system("cls");〃清屏

returnSELETE_1;//返回選項(xiàng)數(shù)

//■

boolLogin(intSELETE)〃顧客登陸,注冊(cè)函數(shù)

FILE〃定義文獻(xiàn)

charnamefl2];〃定義數(shù)組存儲(chǔ)登錄名

switch(SELETE)//switch選取

(

case1://顧客登陸

if((fp=fopen(,,LOGIN.exe'\"rb"))==NULL)〃打開(kāi)顧客注冊(cè)目錄管理文獻(xiàn)

cout?"\n錯(cuò)誤:不能打開(kāi)登陸文獻(xiàn)。"<<endl;〃顯示錯(cuò)誤

geich();〃讀取結(jié)束符

systeni("cls");〃清屏

returnfalse;〃返回

)

curuser=getspace(MFD);〃顧客名申請(qǐng)空間

couivv”\n*****登陸*****\n顧客名:”;//顯示

cin?name;〃輸入顧客登陸名

while(!feof(fp))〃檢查該顧客與否合法

fread(curuser,sizeof(MFD),l,fp):〃文獻(xiàn)讀取

if(strcmp(curuser->usemame,name)==O)//比較輸入顧客名與否與存在

顧客名相似

break;

}

if(feof(fp))〃如果沒(méi)有找到跟當(dāng)前登陸顧

客名相似管理信息,執(zhí)行下列代碼

cout?”\n錯(cuò)誤:該顧客不存在。"<<endl;〃顯示“錯(cuò)誤:該顧客不存在”

fclose(fp);〃關(guān)閉文獻(xiàn)

returnfalse:〃返回

)

else

(

fclose(fp);〃關(guān)閉文獻(xiàn)

returntrue;〃返回

)

break;〃跳出

case2://新顧客注冊(cè)

if((fp=fbpen("LOGIN.exe","ab"))==NULL)〃如果登陸信息管理文獻(xiàn)不存在

fp=fopen("LOGIN.exe","wb+");〃創(chuàng)立該信息管理文獻(xiàn)

charname[12];

curuser=getspace(MFD);〃顧客申請(qǐng)空間

while(l)

coul?"\n*****新顧客注冊(cè)*

coutvv”顧客名:

cin?name;〃輸入顧客注冊(cè)名

fpl:fopenCLOGIN.exe"Jrb");〃打開(kāi)登陸文獻(xiàn),只容許讀數(shù)據(jù)

while(!feof(fpl))〃查看該顧客名與否被別顧客占用

fread(curuser,sizeof(MFD),l,fpl):〃文鉞讀取

if(sticnip(cuiuser->useiname,name)==0)

cout?"\n該顧客已經(jīng)存在,請(qǐng)重新輸入!"?endl;〃該名稱已經(jīng)被

使用

getch();〃讀取結(jié)束符

break;〃跳出

)

)

if(feof(fpl))〃該名稱沒(méi)有被別顧客占用

strcpy(curuscr->uscinamc,nanic);〃拷貝輸入顧客名到顧

客名構(gòu)造體

curuser->filepoinl=NULL;//文獻(xiàn)指針置空

fwrite(curuser,sizeof(MFD),1,fp);〃顧客信息寫入文獻(xiàn)

strcpy(user,curuser->username);〃生成顧客文獻(xiàn)管理模塊

strcat(user.".exe");〃用于管理顧客目錄下各個(gè)文獻(xiàn)

fp2=fopcn(user,"wb+");〃打開(kāi)文獻(xiàn),容許讀和寫

fclose(fp2);〃關(guān)閉fp2

cout?'\n注冊(cè)成功!"?endl:〃提示注冊(cè)成功

LoginDisplayO;

fclose(fpi);〃關(guān)閉fpl

fclose(fp):〃關(guān)閉fp

break;

)

)

fp=fopen("LOGIN.exe";,rb");〃顯示當(dāng)前注冊(cè)顧客名稱

while(l)

fread(curuser,sizeof(MFD).I,fp)://文獻(xiàn)讀取

if(feof(fp))〃檢查與否最后顧客

break;

coul?curuser->username?endl;//顯示顧客名

getch();〃讀取結(jié)束符

)

fclose(fp):〃關(guān)閉文獻(xiàn)

returntrue;〃返回

break;

default:

returnfalse://返回

break;〃返回到上一層

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

voidDisplayUFDO〃打印顧客信息,涉及顧客各個(gè)文獻(xiàn)

//名稱、長(zhǎng)度和操作權(quán)限設(shè)立信息

if(curuser->filepoint==false)〃當(dāng)前顧客目錄下沒(méi)有任何文獻(xiàn)存在

cou(?"\n顧客"?cu^user->usemame?'^文獻(xiàn)夾是空"<<endl;

else

{〃存在文獻(xiàn),將所有文獻(xiàn)信息打印在終端

FILE*fp;〃定義文獻(xiàn)

charfilename[12];〃定義文獻(xiàn)名

strcpy(filename,curuser->usemame);〃拷貝顧客名到定義

strcat(filename,'■.exe'");〃擴(kuò)展名.exe

if((fp=fopen(filename,"rb"))==NULL)〃打開(kāi)顧客文獻(xiàn)信息管理模塊

coutvv"\n無(wú)法打開(kāi)顧客:"?curuser->username?"文獻(xiàn)!"Wendi;〃顯示

gctch();〃讀取結(jié)束符

return;

)

else

{〃讀入并將顧客所有文獻(xiàn)信息打印在終端

coutvv"顧客:"v<curuser?>username<<”目錄下文獻(xiàn):"vvendl;

UFD*ufd;//申請(qǐng)文獻(xiàn)模塊

inti=0;

ufd=getspacc(UFD);〃申請(qǐng)存儲(chǔ)顧客文獻(xiàn)模塊空間

while(l)

(

fread(ufd,sizeof(UFD),I,fp);〃文獻(xiàn)讀取,把文獻(xiàn)信息讀到顧客

if(feof(fp))〃所有輸出

break;

else〃打印信息

cout?ufd->niename?"\t"?ufd->length?"\t"?ufd->safecode?endl;〃輸出文獻(xiàn)巖息

)

)

fclose(fp);〃關(guān)閉文獻(xiàn)

}

}

//.......................................................................................................................................

voidByeFile(b°olBOOL)”注銷函數(shù),調(diào)用次函數(shù)顧客可以退出系統(tǒng)

(

FILE*infilc,*outfilc;〃定義文獻(xiàn)

charout[50];〃定義數(shù)組out[50]

strcpy(out,"outfilelocate.exe");〃拷貝信息到數(shù)組

if((infile=fopen(”LOGIN.exe","rb"))==NULL)〃檢查與否保存

(

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

return;

)

else

(

if((outfile=fopen9ut,"wb+"))==NULL)//申請(qǐng)一種緩沖區(qū)管理模塊

〃存儲(chǔ)顧客更新后所有信息

{

cout?"\n保存錯(cuò)誤。";//fclose(outfHe);

fclose(infile);〃關(guān)閉文獻(xiàn)infile

return;

)

else

(

MFD*mfd=getspace(MFD):〃申請(qǐng)顧客登陸管理并申請(qǐng)空間

while(l)

{〃將舊文獻(xiàn)管理信息讀出,并保存到新文獻(xiàn)信息管理模塊中

fread(mfd,sizeof(MFD),1,infUe);〃文獻(xiàn)讀取,把文獻(xiàn)信息讀到顧客管理中

if(feof(infile))

break;

if((strcmp(mfd->usemame,curuseQ>usemame))==O)〃判斷與否與顧客名相

(

if(BOOL)〃更新當(dāng)前顧客信息操作

fwrite(curuser,sizeof(MFD)」,outfile);〃寫文獻(xiàn)

elsecontinue;〃如果顧客想把注冊(cè)目錄從系統(tǒng)中徹底刪除

〃則執(zhí)行該操作

)

else

fwritc(mfd,sizcof(MrD),1,outfilc);〃叮入新模塊

)

fclose(inflle);

fclose(outfile);〃關(guān)閉文獻(xiàn)

removeCLOGIN.exe");〃將舊該顧客文獻(xiàn)管理模塊刪除

rename(out,"LOGIN.exe");//將新顧客文獻(xiàn)管理模塊重命名為顧客目錄

〃管理模塊

}

1

}

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

boolClearUserFileO〃顧客要將自己注冊(cè)目錄從系統(tǒng)徹底刪除

〃一方面將該顧客目錄下所有文獻(xiàn)刪除

FILE*fp;

charfile[50];〃定義數(shù)組file[50]

strcpy(file,curuser->us2rnarne);〃指貝信息到數(shù)組

strcaKfile/^exe");〃擴(kuò)展名.exe

if((fp=fopcn(filc,"rb"))==NULL)〃打開(kāi)顧客文獻(xiàn)信息管理模塊

{

//fclose(fp);

cout<<"\n該顧客不存在!";〃顯示該顧客不存在!

returntrue;

1

else

{〃將該顧客目錄下文獻(xiàn)逐個(gè)從磁盤刪除

UFD*ufd=gctspacc(UFD):〃申請(qǐng)顧客文獻(xiàn)管理并申請(qǐng)內(nèi)存

while(l)

(

fread(ufd,sizeof(UFD),1,fp);//文獻(xiàn)讀取,把文獻(xiàn)信息讀到顧客

if(fcof(fp))〃判斷與否有文獻(xiàn)

break;

else

remove(ufd->filenanie);〃刪除文獻(xiàn)

}

fclose(fp);

returntrue;

I

voidClearUserMes()//>J除顧客所有信息

charname[50J;〃定義數(shù)組name[50]

strcpy(name,curuser->username);//拷貝顧客名到數(shù)組

strcat(namc,',.exe,');〃擴(kuò)展名.exe

remove(name);〃從磁盤中刪除顧客文獻(xiàn)信息管理模塊

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

)

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

voidDeleteUser。〃刪除顧客注冊(cè)目錄操作

(

intSELETE;〃定義SELETE

charch;〃定義ch

cout?"\n該操作將會(huì)是你在系統(tǒng)所有信息刪除,下次登陸時(shí)你必要重新申請(qǐng)顧客名!

"?endl;

cout?"\n你擬定要?jiǎng)h除你在系統(tǒng)中注冊(cè)信息嗎?Y/N"?endl;

cin?ch;〃輸入選取

switch(ch)〃提示顧客確認(rèn)刪除

(

case'Y':

case'y':

if(ClearUserFile())〃如果顧客所有文獻(xiàn)已經(jīng)刪除了

〃則可以將該顧客文獻(xiàn)信息管理模塊也從磁盤中刪除

〃以免在沒(méi)完全刪除文獻(xiàn)卻刪了該文獻(xiàn)信息管理模塊

〃使得這此文獻(xiàn)無(wú)法再進(jìn)行管理導(dǎo)致磁盤空間揮霍

ClearUserMesO;〃刪除文獻(xiàn)信息管理模塊

break;

default:

cout?"\n你取消了此操作!,,;〃顯示

break;

I

)

//.....................................................................................

voidCreatFile?!ㄔ诋?dāng)前顧客目錄下創(chuàng)立文獻(xiàn)

(

FILE*fp;〃定義文獻(xiàn)

curuser->filepoint=true;//顧客目錄下文獻(xiàn)指針置真

if((fp=fopcn(buffcr,"r"))==NULL)〃如果沒(méi)有跟顧客輸入文獻(xiàn)名相似文獻(xiàn)

{

if((fp=fopcn(biiffer,"w0))==NULL)〃判斷文獻(xiàn)與否為空

(

coutvv"\n創(chuàng)立文獻(xiàn)失敗!”:!/顯示

//fclose(fp);

return;

)

fclose(fp);〃關(guān)閉文獻(xiàn)

)

else

{〃顧客要?jiǎng)?chuàng)立文獻(xiàn)已經(jīng)存在

COU1VV、該文獻(xiàn)已經(jīng)存在,創(chuàng)立另一種文獻(xiàn)?Y/N";

charch;

cin?ch;〃輸入選取

switch(ch)

case丫:

casey:

cout?”\n輸入新文獻(xiàn)名:”;

cin?bufter;〃輸入新文獻(xiàn)名

strcat(buffer,".txt");//擴(kuò)展名.txt

fclose(fp):〃關(guān)閉文獻(xiàn)

if((fp=fopen(buffer,"w"))==NULL)//判斷文獻(xiàn)與否為空

(

cout?'\n創(chuàng)立文獻(xiàn)失??!”;〃顯示創(chuàng)立文獻(xiàn)失敗

//fclosc(fp);

return;

)

fclose(fp);〃關(guān)閉文獻(xiàn)

break;

default:

fclose(fp);〃關(guān)閉文獻(xiàn)

return;

)

)

strcpy(user,curuser->usemame);〃復(fù)制顧客名到字符串user(顧客)

strcaUuser/'.exe"):〃擴(kuò)展名.exe

curfile=getspace(UFD);〃申請(qǐng)空間

strcpy(curfile->filenanie.buffer);〃文獻(xiàn)名

curfile->length=O;〃該文獻(xiàn)長(zhǎng)度為零

curfile->safecode=30:〃設(shè)立該文獻(xiàn)默認(rèn)杈限

//H00,文獻(xiàn)上有讀和寫權(quán),其她顧客沒(méi)有讀寫權(quán)

if((fp=fopen(user,"ab',))==NULL)//判斷與否為合法顧客

coutvv"\n錯(cuò)誤:你也許不是合法顧客。"vvendl:

gctch();〃讀取結(jié)束符

I

else

|

fwrite(curfile,sizeof(UFD),1,fp);〃將該文獻(xiàn)信息寫入顧客文獻(xiàn)信息管理模塊中

cout?"\n文獻(xiàn)"?curfile->filename?"創(chuàng)立成功!

)

fclosc(fp);〃關(guān)閉文獻(xiàn)

}

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

voidDeleteFileO〃刪除當(dāng)前目錄下一種文獻(xiàn)操作

(

charch;〃定義字符型變量ch

FILE*infile,*outfile;〃定義文獻(xiàn)

cout?"\n擬定要?jiǎng)h除文獻(xiàn):”<vbufTer?”Y/N"?endl;

cin?ch;〃提示顧客確認(rèn)刪除

switch(ch)

(

case'Y':

caseV:〃更新顧客文獻(xiàn)信息管理模塊,這里同樣使用緩沖區(qū)模塊來(lái)更新

〃辦法與上面將到類似

charout(50],in[50];〃定義數(shù)組

strcpy(out,"outfilelocale.exe");〃拷貝文獻(xiàn)到數(shù)組

strcpy(in,cuniser->username);〃拷貝顧客名到數(shù)組

strcaUin/'.exe");〃擴(kuò)展名.exe

if((infile=fopen(in,"rb"))==NULL)〃打開(kāi)該顧客文獻(xiàn)信息管理模塊

(

cout?、n保存錯(cuò)誤。

//fclose(infile);

return;

)

else

(

if((outfile=fopen(ou(:'wb+"))==NULL)〃打開(kāi)讀寫文獻(xiàn),判斷與否為空

(

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

fclose(infile);〃關(guān)閉文獻(xiàn)

return;

)

else

(

UFD*ufd=getspace(UFD);〃申請(qǐng)空間

while(l)

{

fread(ufd,sizeof(UFD),Ijnfile);〃從舊模塊讀出信息

if(feof(infile))

break;

if((strcmp(ufd->filename,buffer))==O)//要進(jìn)行更新信息

continue;

else

fwrite(ufd,sizeof(UFD),1QUtfile);〃寫入新模塊

)

fclose(infile);

fclose(outfile);〃關(guān)閉文獻(xiàn)

rcmove(in);〃在磁盤移除就模塊

rename(ou(,in);//新模塊命名為當(dāng)前顧客文獻(xiàn)信息管理模塊

)

)

remove(buffer);〃從磁盤中刪除該文獻(xiàn)

break;

default:

break;

)

)

//.......................................................................................................................................

voidListAllFile。//顯示當(dāng)前顧客目錄下文獻(xiàn)信息

(

DisplayUFDO;〃調(diào)用打印函數(shù)

)

voidWriteLengthToFile(intLen.boolBOOL);//函數(shù)聲明

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

voidOpenFile?!ㄔ趙indov/模式下打開(kāi)該文獻(xiàn)

(

FILE*fp;〃定義文獻(xiàn)

charch;

inti=0;

system(buffer);//buffer為文獻(xiàn)名,如:filel.ixi

fp=fopen(buffer;,r");〃打開(kāi)文鉞進(jìn)行讀操作

while(l){〃獲取新文獻(xiàn)長(zhǎng)度

if(feof(fp))〃判斷與否最后一種

break;

ch=fgctc(fp);〃按字符讀取

i++;//每讀取一次,長(zhǎng)度+1

)

WriieLengthToFile(ifalse);〃將修改后文獻(xiàn)長(zhǎng)度寫入管理表

}

//.......................................................................................................................................

boolQueryModElse(boolBOOL,bool&flag)〃查詢其他顧客目錄下文獻(xiàn)文獻(xiàn)

〃當(dāng)該文獻(xiàn)權(quán)限容許當(dāng)前顧客對(duì)其執(zhí)行關(guān)于操作時(shí),返回turc

FILE*fp;〃定義文獻(xiàn)

charuser[50];

UFD*ufd=gelspace(UFD);//elseuser表達(dá)除當(dāng)前顧客外所有顧客注冊(cè)目錄

strcpy(user,elseuser->username);〃拷貝顧客名到數(shù)組

strcat(user,".exe");〃擴(kuò)展名.exe

if((fjp=fopen(user」rb"))==NULL){〃打開(kāi)一種其他顧客文獻(xiàn)信息管理模塊

//fclose(fp);

cou(vv”\n操作浮現(xiàn)錯(cuò)誤,對(duì)此咱們表達(dá)歉意!";〃顯示

returnfalse;

)

else{

whilc(l){

fread(ufd,sizeof(UFD),1,fp);〃讀文獻(xiàn)

if(feof(fp))〃判斷與否可讀權(quán)限

fclose(fp);

returnfalse;

)

if(slrcmp(ufd->filename,buffer)==O)〃判斷與否可以進(jìn)去其她顧客文獻(xiàn)管理模塊

(

if(BOOL)〃該顧客祈求寫該文獻(xiàn)

(

if(ufd->safecode==31||ufd->safecode==33)//110Rllll最后,位為1,

有寫權(quán)

rctumtrue;

else

{

cout?"\n你無(wú)權(quán)對(duì)文獻(xiàn)”《buffer<<"執(zhí)行此操作!”;

flag=true;returnfalse;

I

//flag設(shè)立為true,告訴上一層,不必再查找

〃該文獻(xiàn)」經(jīng)找到,但顧客無(wú)權(quán)執(zhí)行有關(guān)操作

)

else〃該顧客祈求讀權(quán)

{

if(ufd->safecode==32||ufd->safecode==33)〃1110、1111倒數(shù)第二位

為1,有讀權(quán)

returntrue;

else

coutc<“\n你無(wú)權(quán)對(duì)文獻(xiàn)y<buffer<<”執(zhí)行此操作!

flag=true;

returnfalse;

I

)

I

)

)

}

//........................................................................................................................................

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

{〃一方面在顧客目錄下查找,如果找不到顧客當(dāng)前要進(jìn)行操作文獻(xiàn)名

〃則在其他注冊(cè)顧客目錄下查找

FILE*fp,*fpl;〃定義文獻(xiàn)

boolflag=false;〃置旗為false

charuser[50];

UFD*ufd=getspace(UFD);〃申請(qǐng)空間

strcpy(user,curuser->username);〃拷貝顧客名到數(shù)組

strcal(usen".exe");〃擴(kuò)展名.exe

if((fp=fopen(user,”rb"))==NULL){〃打開(kāi)顧客文獻(xiàn)信息管理模塊

//fclose(fp);

cout?"\n操作浮現(xiàn),錯(cuò)誤,對(duì)此咱們表達(dá)歉意!";rcturnfalse;

)

else{〃查找匹配文獻(xiàn)名,顧客目錄下文獻(xiàn)容許顧客送行讀寫操作

whilc(l){

fread(ufd,sizeof(UFD),1,fp);〃讀文獻(xiàn)

if(feof(fp)){〃在當(dāng)前顧客文獻(xiàn)管理模塊中找不到匹配文獻(xiàn)

〃則繼續(xù)在其他顧客注冊(cè)目錄下查找

fclose(fp);〃關(guān)閉文獻(xiàn)

fp1=fopen("LOGIN.exe,,,"rb");〃打開(kāi)文獻(xiàn),只容許讀數(shù)據(jù)

clscuser=gctspace(MFD):〃申請(qǐng)空間

boolBOOL_l=false;〃置旗為false

while(l){

fread(elseuser,sizeof(MFD),1,fpl);〃讀其他顧客信息

if(feof(fpl)&&!BOOL_1)〃所有顧客都查找完

〃但依然沒(méi)找到匹配文獻(xiàn)

returnfalse;

if(clscuscr!=curuscr)

if((BOOL」==QueryModElse(BOOL,flag)))〃查找

returntrue;

if(flag)

returnfalse;

1

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

{〃在當(dāng)前顧客注冊(cè)目錄下

〃找到該文獻(xiàn),返回真值

fclose(fp);returntrue;

}

}

//?

boolWriteRight(intlen,boolBOOL)〃查看與否己經(jīng)對(duì)?的他寫入到該文獻(xiàn)信息中

〃是則返回真值

(

charuser[50],outfile[50];

FILE*fp,*fpl;〃定義文獻(xiàn)

strcpy(user,elseuser->username);〃拷貝顧客名到數(shù)組

strcaKuser/'.exe");〃擴(kuò)展名.exe

if((m=fopen(user;Tb"))==NULL)〃判斷文獻(xiàn)與否為空

{

//fclose(fp);

returnfalse;〃返回

}

else{

UFD*ufd=getspace(UFD);〃申請(qǐng)空間

while(l)(〃在此顧客目錄下查找匹配文獻(xiàn)

fread(ufd,sizeof(UFD),1,fp);//讀取文獻(xiàn)

if(feof(fp))〃判斷與否有文獻(xiàn)

{

fclose(fp);//關(guān)閉文獻(xiàn)

returnfalse;

}

if((strcmp(ufd->filename,buffer))==O)〃比較文獻(xiàn)

{〃找到要寫入新長(zhǎng)度文獻(xiàn)

strcpy(outfile,"outfilelocate.exe");〃擴(kuò)展名.exe

if((fp1=fopen(outfile,"wb+"))==NULL)〃打開(kāi)文獻(xiàn)與否為空

cout?"\n錯(cuò)誤:寫入文獻(xiàn)長(zhǎng)度出錯(cuò)_3。

//fclose(fpl);

fclose(fp);〃關(guān)閉文獻(xiàn)

returnfalse;

else{

fclose(fp);

fp=fopen(user,"rb");//文獻(xiàn)指針從新指向此顧客文獻(xiàn)信息管理模

〃塊開(kāi)頭

wliile(l){

fread(ufd,sizeof(UFD),l,fp);〃讀文獻(xiàn)

if(feof(fp))〃判斷與否有文獻(xiàn)

break;

if(strcmp(ufd->filename,buffer)==O)〃對(duì)文獻(xiàn)進(jìn)行比較

{〃找到匹配文獻(xiàn)

if(BOOL)ufd->length+=len;〃在文獻(xiàn)末追加內(nèi)容操作

elseufd->length=len;〃覆蓋原文獻(xiàn)內(nèi)容

1

fwrite(ufd,sizeof(UFD),1,fjpI);〃寫文獻(xiàn)

)

fclose(fp);fclose(fpI);〃關(guān)閉文獻(xiàn)

remove(user);〃移除

rename(outfile,user);〃重命名

returntrue;

}

)

}

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

voidVVriteLengthToFile(intLen,boolBOOL)〃將文獻(xiàn)氏度寫入文獻(xiàn)管理模塊中

{〃由于當(dāng)前顧客可以對(duì)其他顧客文獻(xiàn)進(jìn)行操作(只要權(quán)限容許)

〃因此應(yīng)當(dāng)在整個(gè)文獻(xiàn)系統(tǒng)目錄下查找該文獻(xiàn)位置

FILE*fp;

if((fp=fopen("LOGIN.exe";(rb"))==NULL){〃不能打開(kāi)文獻(xiàn)

cout?"\n寫入文獻(xiàn)長(zhǎng)度錯(cuò)誤」!

//fclose(fp);

return;

I

else{

elseuser=getspace(MFD);〃申請(qǐng)空間

while(l){

fread(elseuser,sizeof(MFD),1,fp);〃讀文獻(xiàn)

if(feof(fp))〃判斷與否可讀

break;

else{

if(WriteRight(Len,BOOL)){〃查看與否已經(jīng)對(duì)的地寫入到該文獻(xiàn)信

息中

fclose(fp);return;

)

}

coutvv”\n寫入文獻(xiàn)長(zhǎng)度錯(cuò)誤_2!

溫馨提示

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