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

📄 libsystem.cpp

📁 图书管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		select = getch();
		switch(select)
		{
			case 'a':	{		//括号用来限制LIST类对象的生存期,本选项结束时系统将调用析构函数,
								//在析构函数中将重新向文件写入更新后的数据
							BOOKFILE = true;
							List<bookData> bookList;
							char bookISBN[14];
							FILEOPEN(bookList);

							cout<<"请输入图书ISBN号:"<<endl;
							cin>>bookISBN;
							while( !(strcmp(bookISBN,"n") ==0) && !bookList.search(bookISBN))
							{		//search(bookISBN)如果没有查到读者信息将返回FALSE,否则返回TRUE
								cout<<"没有查到数据。请重新输入:(按n退出)"<<endl;
								cin>>bookISBN;
							}
							if(strcmp(bookISBN,"n") ==0)//判断是否为主动退出
								break;
							cout<<"查找的数据:"<<endl<<bookList.returnCurData()<<endl;	//返回当前链表中检索到的数据
							bool ISNEWBOOK = (bookList.returnCurData()).getType();//得到图书类型:是新书还是旧书
						
							READERFILE = true;
							List<readerInfo> readerList;
							char readerID[10];
							FILEOPEN(readerList);
							cout<<"请输入读者的ID号"<<endl;
							cin>>readerID;
							while(!(strcmp(readerID,"n") ==0) && !readerList.search(readerID))
							{	//search(readerID)如果没有查到读者信息将返回FALSE,否则返回TRUE
								cout<<"没有查到数据。请重新输入:(按n退出)"<<endl;
								cin>>readerID;
							}
							if(strcmp(readerID,"n") ==0)//判断是否为主动退出
								break;
							cout<<"查找的数据:"<<endl<<readerList.returnCurData()<<endl;//返回当前链表中检索到的数据
							curBookNodePtr = bookList.returnCurPtr();//returnCurPtr()返回当前检索到的数据的地址
							if(!(curBookNodePtr->data).setForCheck(readerID))
							{		//bookData类的函数setForCheck(readerID)将读者ID插入图书信息中,
									//并检查该书是否还有库存,成功将返回TRUE,将setQtyLend()加1,
									//setQty_On_Hand()减1;否则返回FALSE,
								cout<<"该书已全部借出!"<<endl;
								cout<<"按任意键继续.........."<<endl<<endl;
								getch();		
								break;
							}
							curReaderNodePtr = readerList.returnCurPtr();//returnCurPtr()返回当前检索到的数据的地址
							(curReaderNodePtr->data).setForCheck(bookISBN,ISNEWBOOK);
								//readerInfo类的setForCheck(bookISBN,ISNEWBOOK)将图书ISBN号插入读者信息中,
								//并将根据图书类型判断在读者newBookCount或oldBookCount上加1;
						}
							cout<<"借书成功!"<<endl;
							cout<<"按任意键继续.........."<<endl<<endl;
							getch();		
							break;
			case 'b':	{		//括号用来限制LIST类对象的生存期,本选项结束时系统将调用析构函数,
								//在析构函数中将重新向文件写入更新后的数据						
							READERFILE = true;
							List<readerInfo> readerList;
							char readerID[10];
							FILEOPEN(readerList);
							cout<<"请输入读者的ID号"<<endl;
							cin>>readerID;
							while(!(strcmp(readerID,"n") ==0) && !readerList.search(readerID))
							{
								cout<<"没有查到数据。请重新输入:(按n退出)"<<endl;
								cin>>readerID;
							}
							if(strcmp(readerID,"n") ==0)
								break;
							cout<<"查找的数据:"<<endl<<readerList.returnCurData()<<endl;

							curReaderNodePtr = readerList.returnCurPtr();//returnCurPtr()返回当前检索到的数据的地址
							(curReaderNodePtr->data).setForRequital();
							//readerInfo类的setForRequital()将会把dept置0;
						}
							cout<<"还款成功!"<<endl;
							cout<<"按任意键继续.........."<<endl<<endl;
							getch();
							break;
			case 'c':		BOOKFILE = true;
							{		//括号用来限制LIST类对象的生存期,本选项结束时系统将调用析构函数,
								//在析构函数中将重新向文件写入更新后的数据
								List<bookData> bookList;
								char bookInfo[14];
								FILEOPEN(bookList);
								cout<<"请输入要查询的图书的ISBN号、作者、书名或出版社进行查询:"<<endl;
								cin>>bookInfo;
								if(!bookList.search(bookInfo))
									cout<<"没有查到数据。"<<endl;
								else
									cout<<"查找的数据:"<<endl<<bookList.returnCurData()<<endl;
							}
							cout<<"按任意键继续.........."<<endl<<endl;
							getch();
							break;
			case 'd':		READERFILE = true;
							{		//括号用来限制LIST类对象的生存期,本选项结束时系统将调用析构函数,
								//在析构函数中将重新向文件写入更新后的数据
								List<readerInfo> readerList;
								char readerID[10];
								FILEOPEN(readerList);
								cout<<"请输入要查询的读者的ID号"<<endl;
								cin>>readerID;
								if(!readerList.search(readerID))
									cout<<"没有查到数据。"<<endl;
								else
									cout<<"查找的数据:"<<endl<<readerList.returnCurData()<<endl;
							}

							cout<<"按任意键继续.........."<<endl<<endl;
							getch();
							break;	
			case 'e':	BOOKFILE = true;
						{		//括号用来限制LIST类对象的生存期,本选项结束时系统将调用析构函数,
								//在析构函数中将重新向文件写入更新后的数据
							List<bookData> bookList;
							FILEOPEN(bookList);
							cout<<"显示所有数据:"<<"共条"<<bookList.getTotal()<<"数据。"<<endl;
							bookList.displayAllData(); 
						}	
						cout<<"按任意键继续.........."<<endl<<endl;		
						getch();						
						break;
			case 'f':		cout<<endl<<endl<<endl;		return;
			default:cout<<"输入有误!请重新输入:"<<endl;					 break;
		}
	}	
	return;
}
//**********************************************************************************
void RETURNBOOKMENU()
{
	if(!POPEDOM(2))//权限验证,通过返回TRUE,否则返回FALSE,此处级别要求为2
		return;
	dataNode<bookData> * curBookNodePtr;//由来接受UserList.returnCurPtr()返回的当前数据的地址,
									//以对该数据进行操作
	dataNode<readerInfo> * curReaderNodePtr;//由来接受UserList.returnCurPtr()返回的当前数据的地址,
									//以对该数据进行操作

	char select;

	for(;;)
	{
		system("cls");
		cout<<"********************************************************************************";
		cout<<"**********************************"<<"图 书 馆 理 系 统"<<"*****************************";
		cout<<"********************************************************************************"<<endl<<endl;
		cout<<setw(47)<<"还 书 管 理"<<endl<<endl<<endl<<endl
			<<setw(45)<<"a.	还书管理"<<endl	
			<<setw(45)<<"b.	还款管理"<<endl					
			<<setw(49)<<"c. 图书信息查询"<<endl	
			<<setw(49)<<"d. 读者信息查询"<<endl
			<<setw(45)<<"e.	书库列表"<<endl
			<<setw(47)<<"f.	返回主菜单"<<endl<<endl<<endl<<endl<<endl<<endl;
		cout<<"请输入相应的序号进行(a~f)选择:"<<endl;

		select = getch();

		switch(select)
		{
			case 'a':	{		//括号用来限制LIST类对象的生存期,本选项结束时系统将调用析构函数,
								//在析构函数中将重新向文件写入更新后的数据
							BOOKFILE = true;
							List<bookData> bookList;
							char bookISBN[14];
							FILEOPEN(bookList);

							cout<<"请输入图书ISBN号:"<<endl;
							cin>>bookISBN;
							while( !(strcmp(bookISBN,"n") ==0) && !bookList.search(bookISBN))
							{
								cout<<"没有查到数据。请重新输入:(按n退出)"<<endl;
								cin>>bookISBN;
							}
							if(strcmp(bookISBN,"n") ==0)
								break;
							cout<<"查找的数据:"<<endl<<bookList.returnCurData()<<endl;	
							bool ISNEWBOOK = (bookList.returnCurData()).getType();//得到图书类型:是新书还是旧书
						
							READERFILE = true;
							List<readerInfo> readerList;
							char readerID[10];
							FILEOPEN(readerList);
							cout<<"请输入读者的ID号"<<endl;
							cin>>readerID;
							while(!(strcmp(readerID,"n") ==0) && !readerList.search(readerID))
							{
								cout<<"没有查到数据。请重新输入:(按n退出)"<<endl;
								cin>>readerID;
							}
							if(strcmp(readerID,"n") ==0)
								break;
							cout<<"查找的数据:"<<endl<<readerList.returnCurData()<<endl;

							curBookNodePtr = bookList.returnCurPtr();
							(curBookNodePtr->data).setForReturn(readerID);
									//bookData类的函数setForReturn(readerID)将读者ID从图书信息中删除,
									//并将setQtyLend()加1,setQty_On_Hand()减1。

							curReaderNodePtr = readerList.returnCurPtr();
							(curReaderNodePtr->data).setForReturn(bookISBN,ISNEWBOOK);
							//readerInfo类的setForReturn(bookISBN,ISNEWBOOK)将图书ISBN号从读者信息中删除,
								//并将根据图书类型判断在读者newBookCount或oldBookCount上减1;
					}
							cout<<"还书成功!"<<endl;
							cout<<"按任意键继续.........."<<endl<<endl;
							getch();		
							break;
			case 'b':	{		//括号用来限制LIST类对象的生存期,本选项结束时系统将调用析构函数,
								//在析构函数中将重新向文件写入更新后的数据						
							READERFILE = true;
							List<readerInfo> readerList;
							char readerID[10];
							FILEOPEN(readerList);
							cout<<"请输入读者的ID号"<<endl;
							cin>>readerID;
							while(!(strcmp(readerID,"n") ==0) && !readerList.search(readerID))
							{
								cout<<"没有查到数据。请重新输入:(按n退出)"<<endl;
								cin>>readerID;
							}
							if(strcmp(readerID,"n") ==0)
								break;
							cout<<"查找的数据:"<<endl<<readerList.returnCurData()<<endl;

							curReaderNodePtr = readerList.returnCurPtr();
							(curReaderNodePtr->data).setForRequital();
							//readerInfo类的setForRequital()将会把dept置0;
						}
							cout<<"还款成功!"<<endl;
							cout<<"按任意键继续.........."<<endl<<endl;
							getch();
			case 'c':		BOOKFILE = true;
							{		//括号用来限制LIST类对象的生存期,本选项结束时系统将调用析构函数,
								//在析构函数中将重新向文件写入更新后的数据
								List<bookData> bookList;
								char bookInfo[14];
								FILEOPEN(bookList);
								cout<<"请输入要查询的图书的ISBN号、作者、书名或出版社进行查询:"<<endl;
								cin>>bookInfo;
								if(!bookList.search(bookInfo))
									cout<<"没有查到数据。"<<endl;
								else
									cout<<"查找的数据:"<<endl<<bookList.returnCurData()<<endl;
							}
							cout<<"按任意键继续.........."<<endl<<endl;
							getch();
							break;
			case 'd':		READERFILE = true;
							{		//括号用来限制LIST类对象的生存期,本选项结束时系统将调用析构函数,
								//在析构函数中将重新向文件写入更新后的数据
								List<readerInfo> readerList;
								char readerID[10];
								FILEOPEN(readerList);
								cout<<"请输入要查询的读者的ID号"<<endl;
								cin>>readerID;
								if(!readerList.search(readerID))
									cout<<"没有查到数据。"<<endl;
								else
									cout<<"查找的数据:"<<endl<<readerList.returnCurData()<<endl;
							}
							cout<<"按任意键继续.........."<<endl<<endl;
							getch();
							break;	
			case 'e':		BOOKFILE = true;
							{		//括号用来限制LIST类对象的生存期,本选项结束时系统将调用析构函数,
								//在析构函数中将重新向文件写入更新后的数据
								List<bookData> bookList;
								FILEOPEN(bookList);
								cout<<"显示所有数据:"<<"共条"<<bookList.getTotal()<<"数据。"<<endl;
								bookList.displayAllData(); //显示链表中的所有数据,并根据权限进行不同的显示
							}	
							cout<<"按任意键继续.........."<<endl<<endl;		
							getch();						
							break;
			case 'f':		cout<<endl<<endl<<endl;		return;
			default:cout<<"输入有误!请重新输入:"<<endl;					 break;
		}
	}	
	return;
}
//**********************************************************************************
//书库管理页面菜单
void LIBABOUTMENU()
{
	if(!POPEDOM(2))//权限验证,通过返回TRUE,否则返回FALSE,此处级别要求为2
		return;

	List<bookData> bookList;		//此函数中只涉及到bookData类,故在此定义LIST对象,生存期为整个函数
	bookData BookData;
	dataNode<bookData> * curNodePtr;//由来接受UserList.returnCurPtr()返回的当前数据的地址,
									//以对该数据进行操作
	char Search[14];
	char select;

	BOOKFILE = true;
	FILEOPEN(bookList);
	for(;;)
	{
		system("cls");
		cout<<"********************************************************************************";
		cout<<"**********************************"<<"图 书 馆 理 系 统"<<"*****************************";
		cout<<"********************************************************************************"<<endl<<endl;
		cout<<setw(47)<<"书 库 管 理"<<endl<<endl<<endl<<endl
			<<setw(47)<<"a.	图书信息检索"<<endl

⌨️ 快捷键说明

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