⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mymain.cpp

📁 图书管理系统
💻 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 + -