# include & ltiomanip & gt
# include & lt字符串& gt
# include & ltfstream & gt
# include & ltstdio.h & gt
使用命名空間std
const int Maxb = 10000;//最多的書
課堂用書//書
{
int標簽;//刪除標記1:已刪除0:未刪除。
int數;//ISBN號
char name[20];//書名
char作者[10];//主編
char number 2[10];//版本
字符位置[20];//按下
充電時間[20];//出版年份
int價格;//定價
int onshelf//是在1號架上:在0號架上:借的?
公共:
Book() {}
char * getname(){ return name;}//獲取名稱
int get number(){ return number;}//獲取ISBN號
int gettag(){ return tag;}//獲取刪除標記
char * get author(){ return author;}//獲取主編
char * get number 2(){ return number 2;}//獲取版本號
char * get position(){ return position;}//獲取出版社
char * gettime(){ return time;}//獲取出版年份
char getprice(){ return price;}//獲取圖書定價void del book(){ tag = 1;}//刪除書籍
Void addbook (int n,char * na,char * au,char * N2,char * da,char * ti,int pr)//添加書籍。
{
tag = 0;
數字= n;
價格= pr
strcpy(姓名,不適用);
strcpy(作者,非盟);
strcpy(數字2,N2);
strcpy(位置,da);
strcpy(時間,ti);
on shelf = 1;
} void disp() //輸出書籍
{
cout & lt& ltsetw(10)& lt;& lt號碼& lt& ltsetw(10)& lt;& lt名稱& lt& ltsetw(10)
& lt& ltsetw(10)& lt;& lt作者& lt& ltsetw(10)& lt;& lt數字& lt& ltsetw(10)& lt;& lt位置& lt& ltsetw(10)& lt;& lt時間& lt& ltsetw(10)& lt;& lt價格& lt& ltendl
}
};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;
}
Intaddbook (int n,char * na,char * au,char * N2,char * da,char * ti,int pr)//添加書籍。
{
book * p = search 1(n);
if (p==NULL)
{
top++;
書[頂]。addbook(n,na,au,n2,da,ti,pr);
返回1;
}
返回0;
}
book * search 1(intbookid)//查找書籍。
{
for(int I = 0;我& lt= topi++)
如果(書[我]。getnumber()= = bookid & amp;& amp
書[我]。gettag()==0)
返回& amp書[I];
返回NULL
} book * search2 (int bookmark,char * name)//按書名搜索書籍。
{
for(int I = 0;我& lt= topi++)
if(strcmp(書[i])。getname(),name)==0)
{bookid=book[i]。get number();& ltbr & gt返回& amp書[I];& ltbr & gt}
返回NULL
} book * search3 (int bookid,char * author)//按編輯器搜索圖書。
{
for(int I = 0;我& lt= topi++)
if(strcmp(書[i])。getauthor(),author)==0)
{bookid=book[i]。get number();& ltbr & gt返回& amp書[I];& ltbr & gt}
返回NULL
} void book data();//庫維護
無效顯示()
{
cout & lt& ltsetw(10)& lt;& lt"書號"
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()
{
int choice = 1;
int choice 2 = 1;
int choice 3 = 1;
int choice4
char bname[40];
字符編輯器[40];
char banci[40];
充電位置[40];
char year[40];
int值;
int bookid
書* b;
而(選擇!=0)
{
cout & lt& ltendl & lt& ltendl
cout & lt& lt“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *”& lt;& ltendl
cout & lt& lt“* * * 1加本書* * * *”& lt;& ltendl
cout & lt& lt“****三刪本書***”
cout & lt& lt“**** 4本書查詢***”
cout & lt& lt“**** 5顯示本書***”
cout & lt& lt“**** 6刪除所有* * * * *”& lt;& ltendl
cout & lt& lt“**** 7借書***”
cout & lt& lt“**** 8還書***”
cout & lt& lt“**** 0退出* * * * *”& lt;& ltendl
cout & lt& lt“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *”& lt;& ltendl & lt& ltendl
cout & lt& ltendl & lt& lt"請按鍵選擇您需要的操作:";
CIN & gt;& gt選擇;
而(選擇!=1。& amp選擇!= 2 & amp& amp選擇!= 3 & amp& amp選擇!= 4 & amp& amp選擇!= 5 & amp& amp選擇!= 6 & amp& amp選擇!=0){
cout & lt& ltendl & lt& lt“* *菜單中不存在您輸入的號碼,請重新輸入* *”& lt;& lt\ a ' & lt& ltendl & lt& ltendl
cout & lt& lt”請選擇您需要的操作:“;
CIN & gt;& gt選擇;
}
開關(選擇)
{
案例1:
cout & lt& lt“輸入ISBN(必須是數字,否則會不正常):”;
CIN & gt;& gtbookid
cout & lt& lt"輸入標題:";
CIN & gt;& gtbname
cout & lt& lt”輸入主編:“;
CIN & gt;& gt編輯;
cout & lt& lt“輸入版本(必須是數字,否則會不正常):”;
CIN & gt;& gt班奇;
cout & lt& lt”輸入發布者:“;
CIN & gt;& gt位置;
cout & lt& lt“輸入出版年份(必須是數字,否則會不正常):”;
CIN & gt;& gt年份;
cout & lt& lt“輸入價格(必須是數字,否則會不正常):”;
CIN & gt;& gt價值;
addbook(bookid,bname,editor,banci,position,year,value);
cout & lt& lt" ISBN " < & ltbookid & lt& lt“添加成功,如果要返回主菜單,請按1,退出系統,請按0(壹定要輸入數字)”;
CIN & gt;& gt選擇4;
while(選擇4!= 0 & amp& amp選擇4!=1)
{
cout & lt& lt輸入錯誤,請重新輸入
CIN & gt;& gt選擇4;}
開關(選項4)
{
案例1:
choice = 1;
打破;
案例0:
choice = 0;
打破;}破;
案例三:
cout & lt& lt”輸入ISBN:“;
CIN & gt;& gtbookid
b = search 1(bookid);
if (b==NULL)
{
cout & lt& lt“這本書不存在”
打破;
}
b-& gt;del book();
打破;
案例4:
cout & lt& lt"搜索方法:"
CIN & gt;& gt選擇3;
開關(選項3)
{
案例1:
{ cout & lt& lt”輸入ISBN:“;//通過ISBN號查詢< br & gtCIN & gt;& gtbookid& ltbr & gtb = search 1(bookid);& ltbr & gtif(b = = NULL)& lt;br & gt{ & ltbr & gtcout & lt& lt“這本書不存在”
b-& gt;disp();
}
打破;
案例二:
{
cout & lt& lt請輸入標題:“;
CIN & gt;& gtbname
b=search2(bookid,bname);
if(b==NULL)
{
cout & lt& lt“這本書不存在!”& lt& ltendl
打破;
}
b-& gt;disp();
}
打破;
案例三:
{
cout & lt& lt"請輸入主編:";
CIN & gt;& gt編輯;
b=search3(bookid,editor);
if(b==NULL)
{
cout & lt& lt“主編不存在!”& lt& ltendl
打破;
}
b-& gt;disp();
}
打破;
}
打破;
案例5:
disp();
打破;
案例6:
clear();
打破;
} }
cout & lt& ltendl & lt& lt“* * * * *慢行* * * * *”< & lt;endl & lt& ltendl & lt& ltendl
};
int main()
{
b數據庫BookDB
cout & lt& ltendl & lt& ltendl & lt& ltendl
cout & lt& lt“歡迎來到SCU圖書館”& ltendl
cout & lt& lt“歡迎來到四川大學圖書館”< & ltendl
cout & lt& ltendl & lt& ltendl & lt& lt"請輸入0以進入庫"
int w;
CIN & gt;& gtw;
如果(w==0)
bookdb . book data();
系統(“暫停”);
返回0;
}