圖書館管理系統(tǒng)c語言程序_第1頁
圖書館管理系統(tǒng)c語言程序_第2頁
圖書館管理系統(tǒng)c語言程序_第3頁
圖書館管理系統(tǒng)c語言程序_第4頁
圖書館管理系統(tǒng)c語言程序_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

#include<iostream>

#include<iomanip>

#include<fstream>

#include<string.h>

#defineMaxbor

100

#defineMaxr

100

#defineMaxb

100

usingnamespacestd;

classReader

{

private:

inttag;//刪除標(biāo)識(shí)1:已刪0:未刪

intno;//讀者編號(hào)

charname[10];//讀者姓名

intborbook[Maxbor];//所借圖書

public:

Reader(){}

char*getname(){returnname;}//獲取姓名

intgettag(){returntag;}//獲取刪除標(biāo)識(shí)

intgetno(){returnno;}//獲取讀者編號(hào)

voidsetname(charna[])//設(shè)置姓名

{

strcpy(name,na);}

voiddelbook(){tag=1;}//設(shè)置刪除標(biāo)識(shí)1:已刪0:未刪

voidaddreader(intn,char*na)//增長讀者

{

tag=0;

no=n;

strcpy(name,na);

for(inti=0;i<Maxbor;i++)

borbook[i]=0;

}

voidborrowbook(intbookid)//借書操作

{

for(inti=0;i<Maxbor;i++)

{

if(borbook[i]==0)

{

borbook[i]=bookid;

return;}

}}

intretbook(intbookid)//還書操作

{

for(inti=0;i<Maxbor;i++)

{

if(borbook[i]==bookid)

{

borbook[i]=0;

return1;}

}

return0;

}

voiddisp()//讀出讀者信息

{

cout<<setw(5)<<no<<setw(10)<<name<<"借書編號(hào):[";

for(inti=0;i<Maxbor;i++)

if(borbook[i]!=0)

cout<<borbook[i]<<"|";

cout<<"]"<<endl;

}

};

//讀者類庫,實(shí)現(xiàn)建立讀者旳個(gè)人資料

classRDatabase

{

private:

inttop;//讀者記錄指針

Readerread[Maxr];//讀者記錄

public:

RDatabase()//構(gòu)造函數(shù),將reader.txt讀到read[]中

{

Readers;

top=-1;

fstreamfile("E:\reader.txt",ios::in);//打開一種輸入文獻(xiàn)

while(1)

{

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

if(!file){cout<<"打開失敗"<<endl;break;}

top++;

read[top]=s;

}

file.close();//關(guān)閉reader.txt

}

voidclear()//刪除所有讀者信息

{

top=-1;

}

intaddreader(intn,char*na)//添加讀者時(shí)先查找與否存在

{

Reader*p=query(n);

if(p==NULL)

{

top++;

read[top].addreader(n,na);

return1;

}

return0;}

Reader*query(intreaderid)//按編號(hào)查找

{

for(inti=0;i<=top;i++)

if(read[i].getno()==readerid&&

read[i].gettag()==0)

{

return&read[i];

}

returnNULL;

}

voiddisp()//輸出所有讀者信息

{

for(inti=0;i<=top;i++)

read[i].disp();

}

voidreaderdata();//讀者庫維護(hù)

~RDatabase()//析構(gòu)函數(shù),將read[]寫到reader.txt文獻(xiàn)中

{

fstreamfile("E:\reader.txt",ios::out);

for(inti=0;i<=top;i++)

if(read[i].gettag()==0)

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

file.close();}

};

voidRDatabase::readerdata()

{charchoice;

charrname[20];

intreaderid;

Reader*r;

while(choice!='0')

{

cout<<"\n\n\t\t\t讀者維護(hù)\n\n\n\t\t1新增\n\n\t\t2更改\n\n\t\t3刪除\n\n\t\t4查找\n\n\t\t5顯示\n\n\t\t6全刪\n\n\t\t0退出"<<endl;

cin>>choice;

switch(choice)

{

case'1':

cout<<"輸入讀者編號(hào):";

cin>>readerid;

cout<<"輸入讀者姓名:";

cin>>rname;

addreader(readerid,rname);

break;

case'2':

cout<<"輸入讀者編號(hào):";

cin>>readerid;

r=query(readerid);

if(r==NULL)

{

cout<<"該讀者不存在"<<endl;

break;

}

cout<<"輸入新旳姓名:";

cin>>rname;

r->setname(rname);

break;

case'3':

cout<<"輸入讀者編號(hào):";

cin>>readerid;

r=query(readerid);

if(r==NULL)

{

cout<<"該讀者不存在"<<endl;

break;

}

r->delbook();

break;

case'4':

cout<<"讀入讀者編號(hào):";

cin>>readerid;

r=query(readerid);

if(r==NULL)

{

cout<<"該讀者不存在"<<endl;

break;

}

r->disp();

break;

case'5':

disp();

break;

case'6':

clear();

break;

default:cout<<"輸入錯(cuò)誤,請(qǐng)從新輸入:";break;

}

}

}

//圖書類,實(shí)現(xiàn)對(duì)圖書旳描述,圖書旳編號(hào),書名,借出,還入等

classBook

{

private:

inttag;//刪除標(biāo)識(shí)1:已刪0:未刪

intno;//圖書編號(hào)

charname[20];//書名

intonshelf;//與否再架1:再架2:已借

public:

Book(){}

char*getname(){returnname;}//獲取姓名

intgetno(){returnno;}//獲取圖書編號(hào)

intgettag(){returntag;}//獲取刪除標(biāo)識(shí)

voidsetname(charna[])//設(shè)置書名

{

strcpy(name,na);

}

voiddelbook(){tag=1;}//刪除圖書

voidaddbook(intn,char*na)//增長圖書

{

tag=0;

no=n;

strcpy(name,na);

onshelf=1;

}

intborrowbook()//借書操作

{

if(onshelf==1)

{

onshelf=0;

return1;

}

return0;

}

voidretbook()//還書操作

{

onshelf=1;

}

voiddisp()//輸出圖書

{

cout<<setw(6)<<no<<setw(18)<<name<<setw(10)

<<(onshelf==1?"在架":"已借")<<endl;

}

};

//圖書庫類,實(shí)現(xiàn)對(duì)圖書旳維護(hù),查找,刪除等

classBDatabase

{

private:

inttop;//圖書記錄指針

Bookbook[Maxb];//圖書記錄

public:

BDatabase()//構(gòu)造函數(shù),將book.txt讀到book[]中

{

Bookb;

top=-1;

fstreamfile("E:\book.txt",ios::in);

while(1)

{

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

if(!file)break;

top++;

book[top]=b;

}

file.close();

}

voidclear()//全刪

{

top=-1;

}

intaddbook(intn,char*na)//增長圖書

{

Book*p=query(n);

if(NULL==p)

{

top++;

book[top].addbook(n,na);

return1;

}

return0;

}

Book*query(intbookid)//查找圖書

{

for(inti=0;i<=top;i++)

if(book[i].getno()==bookid&&book[i].gettag()==0)

{

return&book[i];

}

returnNULL;

}

voidbookdata();//圖書庫維護(hù)

voiddisp()

{

for(inti=0;i<=top;i++)

if(book[i].gettag()==0)

book[i].disp();

}

~BDatabase()//析構(gòu)函數(shù),將book[]寫到book.txt文獻(xiàn)中

{

fstreamfile("E:\book.txt",ios::out);

for(inti=0;i<=top;i++)

if(book[i].gettag()==0)

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

file.close();

}

};

voidBDatabase::bookdata()

{

charchoice;

charbname[40];

intbookid;

Book*b;

while(choice!='0')

{

cout<<"\n\n\n\t\t\t圖書維護(hù)"<<endl<<endl;

cout<<"\t\t1新增\n\t\t2更改\n\t\t3刪除\n\t\t4查找\n\t\t5顯示\n\t\t6全刪\n\t\t0退出"<<endl;

cin>>choice;

switch(choice)

{

case'1':

cout<<"輸入圖書編號(hào):"<<endl;

cin>>bookid;

cout<<"輸入圖書書名:"<<endl;

cin>>bname;

addbook(bookid,bname);

break;

case'2':

cout<<"輸入圖書編號(hào):"<<endl;

cin>>bookid;

b=query(bookid);

if(b==NULL)

{

cout<<"該圖書不存在"<<endl;

break;

}

cout<<"輸入新旳書名:"<<endl;

cin>>bname;

b->setname(bname);

break;

case'3':

cout<<"讀入圖書編號(hào):"<<endl;

cin>>bookid;

b=query(bookid);

if(b==NULL)

{

cout<<"該圖書不存在"<<endl;

break;

}

b->delbook();

break;

case'4':

cout<<"讀入圖書編號(hào):"<<endl;

cin>>bookid;

b=query(bookid);

if(b==NULL)

{

cout<<"該圖書不存在"<<endl;

break;

}

b->disp();

break;

case'5':

disp();

break;

case'6':

clear();

break;

default:cout<<"輸入錯(cuò)誤,請(qǐng)從新輸入:";

}

}

}

//main()函數(shù)旳實(shí)現(xiàn),程序旳主界面旳引導(dǎo)voidmain()

{

charchoice='1';

intbookid,readerid;

RDatabaseReaderDB;

Reader*r;

BDatabaseBookDB;

Book*b;

while(choice!='0')

{

cout<<endl<<endl<<"\t\t\t圖書管理系統(tǒng)\n\n\n";

cout<<"\t\t\t1借書\n\n\t\t\t2還書\n\n\t\t\t3圖書維護(hù)\n\n\t\t\t4讀者維護(hù)\n\n\t\t\t0離開"<<endl;

cin>>choice;

switch(choice)

{

case'1':

cout<<"借書讀者編號(hào):";

cin>>readerid;

cout<<"圖書編號(hào):";

cin>>bookid;

r=ReaderDB.query(reader

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論