當前位置:編程學習大全網 - 源碼下載 - 圖書館管理系統代碼

圖書館管理系統代碼

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

# include & ltiostream & gt

# include & ltiomanip & gt

# include & ltcstring & gt

# include & ltfstream & gt//輸入/輸出文件流類

使用命名空間std

const int Maxr = 100;//最多的讀者

const int Maxb = 100;//最多的書

const int max bor = 5;//每個讀者最多可以借五本書。

//reader類,實現對讀者信息的描述。

類閱讀器

{

私人:

int標簽;//刪除標記1:已刪除0:未刪除。

int號;//閱讀器編號

字符名稱[10];//讀者姓名

int bor book[max bor];//借書

公共:

Reader() {}

char * getname(){ return name;}//獲取名稱

int gettag(){ return tag;}//獲取刪除標記

int getno(){ return no;}//獲取閱讀器編號

Void setname(char na[]) //設置名稱。

{

strcpy(姓名,不適用);

}

void del book(){ tag = 1;}//設置刪除標誌1:已刪除0:未刪除。

Void addreader(int n,char *na)//增加讀取器。

{

tag = 0;

no = n;

strcpy(姓名,不適用);

for(int I = 0;我& ltMaxbori++)

bor book[I]= 0;

}

Void borrowbook(int bookid)//借入操作

{

for(int I = 0;我& ltMaxbori++)

{

if (borbook[i]==0)

{

bor book[I]= bookid;

返回;

}

}

}

Int retbook(int bookid)//圖書返回操作

{

for(int I = 0;我& ltMaxbori++)

{

if(borbook[i]==bookid)

{

bor book[I]= 0;

返回1;

}

}

返回0;

}

Void disp()//讀取閱讀器信息。

{

cout & lt& ltsetw(5)& lt;& lt否& lt& ltsetw(10)& lt;& lt名稱& lt& lt“借閱號:[”;

for(int I = 0;我& ltMaxbori++)

if(borbook[i]!=0)

cout & lt& ltbor book[I]& lt;& lt"|";

cout & lt& lt"]" & lt;& ltendl

}

};

//讀者類庫,實現讀者個人資料的建立。

類別數據庫

{

私人:

int top//讀取器記錄指針

閱讀器read[Maxr];//閱讀器記錄

公共:

RDatabase() //構造函數將reader.txt讀入read[]。

{

讀者s;

top =-1;

fstream文件(" reader.txt ",IOs::in);//打開壹個輸入文件

while (1)

{

file . read((char *)& amp;s,sizeof(s));

如果(!文件)中斷;

top++;

read[top]= s;

}

file . close();//關閉reader.txt

}

Void clear()//刪除所有閱讀器信息。

{

top =-1;

}

Int addreader(int n,char *na)//添加讀取器時,檢查它們是否存在。

{

reader * p = query(n);

if (p==NULL)

{

top++;

閱讀【頂部】。addreader(n,na);

返回1;

}

返回0;

}

Reader *query(int readerid)//按編號搜索。

{

for(int I = 0;我& lt= topi++)

如果(讀[我]。getno()= = readerid & amp;& amp

讀[我]。gettag()==0)

{

返回& amp改為[I];

}

返回NULL

}

Void disp() //輸出所有讀取器信息。

{

for(int I = 0;我& lt= topi++)

讀[我]。disp();

}

void reader data();//讀者庫維護

~RDatabase() //析構函數,將read[]寫入reader.txt文件。

{

fstream文件(" reader.txt ",IOs::out);

for(int I = 0;我& lt= topi++)

如果(讀[我]。gettag()==0)

file . write((char *)& amp;read[i],sizeof(read[I]);

file . close();

}

};

void RDatabase::readerdata()

{

char選擇;

char rname[20];

int readerid

reader * r;

而(選擇!='0')

{

cout & lt& lt" \ n \ n \ t \ tReader維護\n\n\n\t\t 1是新添加的\ n \ n \ t \ t 2被更改\ n \ n \ t \ t 3被刪除\ n \ n \ " & ltendl

CIN & gt;& gt選擇;

開關(選擇)

{

案例“1”:

cout & lt& lt"輸入讀卡器號:";

CIN & gt;& gtreaderid

cout & lt& lt"輸入讀取器名稱:";

CIN & gt;& gtrname

addreader (readerid,rname);

打破;

案例“2”:

cout & lt& lt"輸入讀卡器號:";

CIN & gt;& gtreaderid

r = query(readerid);

if (r==NULL)

{

cout & lt& lt"讀者不存在"

打破;

}

cout & lt& lt”輸入新名稱:“;

CIN & gt;& gtrname

r-& gt;set name(rname);

打破;

案例“3”:

cout & lt& lt"輸入讀卡器號:";

CIN & gt;& gtreaderid

r = query(readerid);

if (r==NULL)

{

cout & lt& lt"讀者不存在"

打破;

}

r-& gt;del book();

打破;

案例“4”:

cout & lt& lt"讀入閱讀器號:";

CIN & gt;& gtreaderid

r = query(readerid);

if (r==NULL)

{

cout & lt& lt"讀者不存在"

打破;

}

r-& gt;disp();

打破;

案例“5”:

disp();

打破;

案例“6”:

clear();

打破;

默認值:cout & lt& lt"輸入錯誤,請重新輸入:";打破;

}

}

}

//圖書類別,實現了圖書的描述、書號、書名、借出、歸還等。

課堂用書

{

私人:

int標簽;//刪除標記1:已刪除0:未刪除。

int號;//圖書編號

char name[20];//書名

int onshelf//要不要借1:借2:借?

公共:

Book(){}

char * getname(){ return name;}//獲取名稱

int getno(){ return no;}//獲取書號

int gettag(){ return tag;}//獲取刪除標記

Void setname(char na[])//設置書名。

{

strcpy(姓名,不適用);

}

void del book(){ tag = 1;}//刪除書籍

Void addbook(int n,char *na)//添加書籍。

{

tag = 0;

no = n;

strcpy(姓名,不適用);

on shelf = 1;

}

Int borrowbook()//借用操作

{

if(on self = = 1)

{

on shelf = 0;

返回1;

}

返回0;

}

Void retbook()//圖書返回操作

{

on shelf = 1;

}

Void disp()//輸出書籍

{

cout & lt& ltsetw(6)& lt;& lt否& lt& ltsetw(18)& lt;& lt名稱& lt& ltsetw(10)

& lt& lt(onshelf==1?《在架子上》:“借來的”)< & ltendl

}

};

//Library類,可以維護,搜索,刪除書籍。

b類數據庫

{

私人:

int top//圖書記錄指針

book book[Maxb];//圖書記錄

公共:

BDatabase()//構造函數,將book.txt讀入book[]。

{

書b;

top =-1;

fstream文件(" book.txt ",IOs::in);

while (1)

{

file . read((char *)& amp;b,sizeof(b));

如果(!文件)中斷;

top++;

book[top]= b;

}

file . close();

}

Void clear()//全部刪除

{

top =-1;

}

Int addbook(int n,char *na)//添加書籍。

{

book * p = query(n);

if (NULL==p)

{

top++;

書[頂]。addbook(n,na);

返回1;

}

返回0;

}

Book *query(int bookid)//查找書籍。

{

for(int I = 0;我& lt= topi++)

如果(書[我]。getno()= = bookid & amp;& amp書[我]。gettag()==0)

{

返回& amp書[I];

}

返回NULL

}

void book data();//庫維護

無效顯示()

{

for(int I = 0;我& lt= topi++)

如果(書[我]。gettag()==0)

書[我]。disp();

}

~BDatabase()//析構函數,將book[]寫入book.txt文件。

{

fstream文件(" book.txt ",IOs::out);

for(int I = 0;我& lt= topi++)

如果(書[我]。gettag()==0)

file . write((char *)& amp;book[i],sizeof(book[I]);

file . close();

}

};

void BDatabase::bookdata()

{

char選擇;

char bname[40];

int bookid

書* b;

而(選擇!='0')

{

cout & lt& lt" \ n \ n \ n \ t \ t \庫維護" < & ltendl & lt& ltendl

cout & lt& lt" \t\t1是新添加的\n \t\t2被更改\n\t\t3被刪除\n\t\t4被搜索\n\t\t5被顯示\n\t\t6被完全刪除\n\t\t0被停用" & ltendl

CIN & gt;& gt選擇;

開關(選擇)

{

案例“1”:

cout & lt& lt"輸入圖書編號:"

CIN & gt;& gtbookid

cout & lt& lt"輸入書名:"

CIN & gt;& gtbname

addbook(bookid,bname);

打破;

案例“2”:

cout & lt& lt"輸入圖書編號:"

CIN & gt;& gtbookid

b =查詢(bookid);

if (b==NULL)

{

cout & lt& lt“這本書不存在”

打破;

}

cout & lt& lt"輸入新標題:"

CIN & gt;& gtbname

b-& gt;set name(bname);

打破;

案例“3”:

cout & lt& lt"讀入書號:"

CIN & gt;& gtbookid

b =查詢(bookid);

if (b==NULL)

{

cout & lt& lt“這本書不存在”

打破;

}

b-& gt;del book();

打破;

案例“4”:

cout & lt& lt"讀入書號:"

CIN & gt;& gtbookid

b =查詢(bookid);

if (b==NULL)

{

cout & lt& lt“這本書不存在”

打破;

}

b-& gt;disp();

打破;

案例“5”:

disp();

打破;

案例“6”:

clear();

打破;

默認值:cout & lt& lt"輸入錯誤,請重新輸入:";

}

}

}

//main()函數的實現和程序主界面的引導。

int main(void)

{

char選擇;

int bookid,readerid

RDatabase ReaderDB

reader * r;

b數據庫BookDB

書* b;

而(選擇!='0')

{

cout & lt& ltendl & lt& ltendl & lt& lt”\ t \ t \圖書館管理系統\ n \ n \ n”;

cout & lt& lt" \t\t\t1借閱書籍\ n \ n \ t \ T2歸還書籍\ n \ n \ t \ T3圖書館維護\n\n\t\t\t4讀者維護\ n \ n \ n \ " & ltendl

CIN & gt;& gt選擇;

開關(選擇)

{

案例“1”:

cout & lt& lt”借用讀者號:“;

CIN & gt;& gtreaderid

cout & lt& lt"書號:";

CIN & gt;& gtbookid

r = readerdb . query(readerid);//按號碼搜索

if (NULL==r)

{

cout & lt& lt“讀者不存在,書不能借”< & ltendl

打破;

}

b = bookdb . query(bookid);

if (b==NULL)

{

cout & lt& lt“這本書不存在,所以妳不能借它”< & ltendl

打破;

}

if(b-& gt;borrowbook()==0)

{

cout & lt& lt“這本書已經借出去了,所以妳不能再借了”< & ltendl

打破;

}

r-& gt;借書(b-& gt;getno());

打破;

案例“2”:

cout & lt& lt”返回圖書\ n讀者編號:“;

CIN & gt;& gtreaderid

cout & lt& lt"書號:";

CIN & gt;& gtbookid

r = readerdb . query(readerid);

if (r==NULL)

{

cout & lt& lt“讀者不存在,所以書不能歸還”< & ltendl

打破;

}

b = bookdb . query(bookid);

if (b==NULL)

{

cout & lt& lt“該書不存在,無法歸還”< & ltendl

打破;

}

b-& gt;ret book();

r-& gt;retbook(b-& gt;getno());

打破;

案例“3”:

bookdb . book data();

打破;

案例“4”:

reader db . reader data();

打破;

默認值:cout & lt& lt"輸入錯誤,請重新輸入:";

}

}

返回0;

}

希望能解決妳的問題。

  • 上一篇:易語言出租源代碼
  • 下一篇:勞動合同的通知書
  • copyright 2024編程學習大全網