📄 libsystem.cpp
字号:
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 + -