📄 mymain.cpp
字号:
#include "BTree.h"
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <list>
using namespace std;
const int Maxb=10000;//书库最大存书
/******************************************************/
/************************BT管理************************/
/******************************************************/
int BTreeDatabase(BTree *btree,int choice)
{
int doEvent=-1;
doEvent=choice;
int inValue=0; //////case 1:插入图书,建立b_树/////
int deValue=0; //////case 2:删除图书///////////////
while(doEvent!=-1) //////case 3:查找图书///////////////
{ //////case 4:显示所有图书,b_树/////
switch(doEvent)
{
case 1:
do{
cout<<"请输入需插入图书编号:(-1结束)"<<endl;
cin>>inValue;
if(btree->Find(inValue)!=NULL)
{
cout<<"已经存在!";
return 1;
}
else
{
if(inValue!=-1)
{
btree->Insert(inValue);
return 0;
}
}
return -1;
}while(inValue!=-1);
case 2:
do{
cout<<"请输入删除数据:(-1结束)"<<endl;
cin>>deValue;
if(deValue!=-1)
{
btree->Erase(deValue);
return 2;
}
}while(deValue!=-1);
case 3:
do{
cout<<"输入查找图书编号:(-1结束)\n";
cin>>inValue;
if(btree->Find(inValue)!=NULL)
{
cout<<"已找到!"<<endl;
return inValue;
}
else
{
cout<<"没有所找书目!"<<endl;
return 0;
}
}while(inValue!=-1);
case 4:
btree->Display();
return 2;
default:
return 2;
}
}
return 3;
}
/***********************************************/
/*********************图书类********************/
/***********************************************/
class Book
{
int tag;//图书删除
int no;//图书号
char name[20];//书名
char writer[20];
int onshelf;//查找图书是否在架
int all;//总库存量
public:
Book() {onshelf=0;all=0;}
char *getname() {return name ;}
char *getwriter() {return writer;}
int getno() {return no;}
int gettag() {return tag;}
int getonshelf() {return onshelf;}
int getall() {return all;}
void setname(char na[])
{
strcpy(name,na);
}
void setwriter(char wna[])
{
strcpy(writer,wna);
}
void delbook() //删除图书
{
if(all==1)
{ tag=1;}
onshelf--;
all--;
}
void addbook(int n,char *na,char *wna)// 加书操作
{
tag=0;
no=n;
strcpy(name,na);
strcpy(writer,wna);
onshelf++;
all++;
}
int borrowbook()//借书操作
{
if (onshelf>=1)
{
onshelf--;
return 1;
}
return 0;
}
void retbook()//还书操作
{
onshelf++;
}
void disp()//显示图书信息
{
cout<<"图书信息"<<setw(10)<<no<<setw(10)<<name<<setw(10)<<writer<<setw(10)<<onshelf<<setw(10)<<all<<setw(15)<<(onshelf!=0?"在书架":"已借出")<<endl;
}
};
/****************************************************/
/********************图书库管理********************/
/****************************************************/
Book * query(BTree *btree,Book book[])
{
int r;
r=BTreeDatabase(btree,3);
if(r!=0)
return &book[r];
else return NULL;
}
int addbook(int n,char *na,char *wna,BTree *btree,Book book[])// 添加图书,加前先查找
{
Book *p;
p=query(btree,book);
if(p==NULL)
{
book[n].addbook(n,na,wna);
int r;
r=BTreeDatabase(btree,1);
return 1;
}
else
{
p->addbook(n,na,wna);
return 1;
}
}
void bookdata(BTree *btree,Book book[])//函数说明
{
int choice=1;
char bname[40];
char writer[40];
int bookid;
Book *b;
while (choice!=0)
{
cout<<"图书管理:"<<endl;
cout<<"1:新增图书"<<endl;
cout<<"2:删除图书"<<endl;
cout<<"3:查找图书"<<endl;
cout<<"4:显示所有图书"<<endl;
cout<<"0:退出"<<endl;
cin>>choice;
switch(choice)
{
case 1:
cout<<"输入你要新加图书编号:"<<endl;
cin>>bookid;
cout<<"输入新的图书名:"<<endl;
cin>>bname;
cout<<"输入作者姓名:"<<endl;
cin>>writer;
addbook(bookid,bname,writer,btree,book);
break;
case 2:
int w;
cout<<"输入图书编号:"<<endl;
cin>>bookid;
b=query(btree,book);
if(b==NULL)
{
cout<<"该图书不存在"<<endl;
break;
}
w=BTreeDatabase(btree,2);
b->delbook();
break;
case 3:
b=query(btree,book);
if(b==NULL)
{
cout<<"该图书不存在"<<endl;
break;
}
b->disp();
break;
case 4:
int bb;
bb=BTreeDatabase(btree,4);
break;
}
}
}
void main()
{
BTree btree;
Book book[Maxb];
int choice=1;
int bookid;
Book *b;
while (choice!=0)
{
cout<<"1:借阅:"<<endl;
cout<<"2:归还:"<<endl;
cout<<"3:图书管理:"<<"(对图书进行:采编入库,清除库存,查找,显示的操作)"<<endl;
cout<<"0:退出系统!"<<endl;
cin>>choice;
switch(choice)
{
case 1:
b=query(&btree,book);
if (b==NULL)
{
cout<<"不存在图书.不能借书"<<endl;
break;
}
if(b->borrowbook()==0)
{
cout<<"**************图书已借出***************"<<endl;
break;
}
break;
case 2:
cout<<"图书编号"<<endl;
cin>>bookid;
b=query(&btree,book);
if(b==NULL)
{
cout<<"不存在图书,无法还书"<<endl;
break;
}
b->retbook();
break;
case 3:
bookdata(&btree,book);
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -