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

📄 图书借阅系统..cpp

📁 图书借阅系统文档与程序实现
💻 CPP
字号:
#include<iostream.h>
#include<iomanip.h>
#include<string.h>
#include<fstream.h>
const int Maxr=100;
const int Maxb=100;
const int Maxbor=5;
class Reader{
	int tag;
	int no;
	char name[10];
	int borbook[Maxbor];
public:
	Reader(){}
	char *getname(){return name;}
	int gettag(){return tag;}
	int getno(){return no;}
	void setname(char na[]){
		strcpy(name,na);
	}
	void delbook(){tag=1;}
	void addreader(int n,char *na){
		tag=0;
		no=n;
		strcpy(name,na);
		for(int i=0;i<Maxbor;i++)
		borbook[i]=0;
	}
	void borrowbook(int bookid){
		for(int i=0;i<Maxbor;i++){
			if(borbook[i]==0){
				borbook[i]=bookid;
				return;
			}
		}
	}
	int retbook(int bookid){
		for(int i=0;i<Maxbor;i++){
			
				if(borbook[i]==bookid){
					borbook[i]=0;
					return 1;
				}
			}
			return 0;
		}
		void disp(){
			cout<<setw(5)<<no<<setw(10)<<name<<"借书编号:[";
			for(int i=0;i<Maxbor;i++)
				if(borbook[i]!=0)
					cout<<borbook[i]<<"|";
				cout<<"]"<<endl;
		}
	};

class RDatabase{
		int top;
		Reader read[Maxr];
	public:
		RDatabase(){
			Reader s;
			top=-1;
			fstream file("reader.txt",ios::in);
			while(1){
				file.read((char*)&s,sizeof(s));
				if(!file) break;
				top++;
				read[top]=s;
			}
			file.close();
		}
		void clear(){
			top=-1;
		}
		int addreader(int n,char *na){
			Reader *p=query(n);
			if(p==NULL){
				top++;
				read[top].addreader(n,na);
				return 1;
			}
			return 0;
		}
		Reader *query(int readerid){
			for(int i=0;i<=top;i++)
				if(read[i].getno()==readerid&&read[i].gettag()==0)
					return &read[i];
				return NULL;
		}
		void disp(){
			for(int i=0;i<=top;i++)
				read[i].disp();
		}
		void readerdata();
		~RDatabase(){
			fstream file("reader.txt",ios::out);
			for(int i=0;i<=top;i++)
				if(read[i].gettag()==0)
					file.write((char*)&read[i],sizeof(read[i]));
				file.close();
		}
	};
	void RDatabase::readerdata(){
		int choice=1;
		char rname[20];
		int readerid;
		Reader *r;
		while(choice!=0){
			cout<<"读者维护 1:新增 2:更改 3:删除 4:查找 5:显示 6:全删 0:退出";
			cout<<"请按键选择:"<<'\n';
			cin>>choice;
			switch(choice){
			case 1:
				cout<<"输入读者编号:";
				cin>>readerid;
				cout<<"输入读者姓名:";
					cin>>rname;
				addreader(readerid,rname);
				break;
			case 2:
				cout<<"输入读者编号:";
				cin>>readerid;
				r=query(readerid);
				if(r==NULL)
				{cout<<"该读者不存在"<<endl;
				break;
				}
				cout<<"输入新的姓名:";
				cin>>rname;
				r->setname(rname);
				break;
			case 3:
				cout<<"输入读者编号:";
				cin>>readerid;
				r=query(readerid);
				if(r==NULL){
					cout<<"该读者不存在"<<endl;
					break;}
				r->delbook();
				break;
			case 4:
				cout<<"输入读者编号:";
				cin>>readerid;
				r=query(readerid);
				if(r==NULL){
					cout<<"该读者不存在"<<endl;
					break;}
				r->disp();
				break;
			case 5:
				disp();
				break;
			case 6:
				clear();
				break;
				}
			}
		}
		class Book{
			int tag;
			int no;
			int onshelf;
			char name[20];
			
		public:
			Book(){}
			char *getname(){return name;}
			int getno(){return no;}
			int gettag(){return tag;}
			void setname(char na[]){
				strcpy(name,na);
			}
			void delbook(){tag=1;}
			void addbook(int n,char *na){
				tag=0;
				no=n;
				strcpy(name,na);
				onshelf=1;
			}
			int borrowbook(){
				if(onshelf==1){
					onshelf=0;
					return 1;
				}
				return 0;
			}
			void retbook(){
				onshelf=1;
			}
			void disp(){
				cout<<setw(6)<<no<<setw(18)<<name<<setw(10)
					<<(onshelf==1?"在架":"已借")<<endl;

			}
		};
			class BDatabase{
				int top;
				Book book[Maxb];
			public:
				BDatabase(){
					Book b;
					top=-1;
					fstream file("book.txt",ios::in);
					while(1){
						file.read((char*)&b,sizeof(b));
						if(!file)break;
						top++;
						book[top]=b;}
					file.close();
				}
				void clear(){
					top=-1;
				}
				int addbook(int n,char *na){
					Book *p=query(n);
					if(p==NULL){
						top++;
						book[top].addbook(n,na);
						return 1;
					}
					return 0;
				}
				Book *query(int bookid){
					for(int i=0;i<=top;i++)
						if(book[i].getno()==bookid&&book[i].gettag()==0)
							return &book[i];
						return NULL;
				}
				void bookdata();
				void disp(){
					for(int i=0;i<=top;i++)
						if(book[i].gettag()==0)
							book[i].disp();
				}
				~BDatabase(){
					fstream file("book.txt",ios::out);
					for(int i=0;i<=top;i++)
						if(book[i].gettag()==0)
							file.write((char*)&book[i],sizeof(book[i]));
						file.close();
				}
			};
			void BDatabase::bookdata(){
				int choice=1;
				char bname[40];
					int  bookid;
					Book *b;
					while(choice!=0){
						cout<<"图书维护 1:新增 2:更改 3:删除 4 查找 5:显示 6:全删0:退出"<<'\n';
                        cout<<"请按键选择:"<<'\n';
							cin>>choice;
						switch(choice){
						case 1:
							cout<<"输入图书编号:";
							cin>>bookid;
							cout<<"输入图书书名:";
							cin>>bname;
							addbook(bookid,bname);
							break;
						case 2:
							cout<<"输入图书编号:";
							cin>>bookid;
							b=query(bookid);
							if(b==NULL){
								cout<<"该图书不存在"<<endl;
								break;
							}
							cout<<"输入新的书名:";
							cin>>bname;
							b->setname(bname);
                            break;
						case 3:
							cout<<" 输入图书编号:";
							cin>>bookid;
							b=query(bookid);
							if(b==NULL){
								cout<<"该图书不存在"<<endl;
								break;
							}
							b->delbook();
							break;
						case 4:	
							cout<<" 输入图书编号:";
							cin>>bookid;
							b=query(bookid);
							if(b==NULL){
								cout<<"该图书不存在"<<endl;
								break;
							}
							b->disp();
							break;
						case 5:
							disp();
							break;
						case 6:
							clear();
							break;
						}
					}
			}
			void main(){
				cout<<"***********————欢迎使用图书查询系统————**********"<<'\n';
				int choice=1,bookid,readerid;
				RDatabase ReaderDB;
				Reader *r;
				BDatabase BookDB;
				while(choice!=0){
					cout<<"1:借书 2:还书 3:图书维护 4:读者维护 0:离开"<<'\n';
				      cout<<"请按键选择:"<<'\n';
					cin>>choice;
					switch(choice){
					case 1:
						cout<<"借书 读者编号:";
						cin>>readerid;
						cout<<"图书编号:";
						cin>>bookid;
						r=ReaderDB.query(readerid);
						if(r==NULL){
							cout<<"该读者不存在,不能借书"<<endl;
								break;
						}
				
					case 2:
						cout<<"还书 读者编号:";
						cin>>readerid;
						cout<<"图书编号:";
						cin>>bookid;
						r=ReaderDB.query(readerid);
						if(r==NULL){
							cout<<"该读者不存在 不能还书"<<endl;
							break;
						}
				
						break;
					case 3:
						BookDB.bookdata();
					case 4:
						ReaderDB.readerdata();
						break;
					}
				}
			}
			
			
			


                              







































































































































⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -