这是图书管理系统第三个模块,里面有注意的一些细节
借书登记系统中,要注意什么时候书存在,什么时候书不存在,最主要的是在借完书之后对信息保存,因为在代码中所做的工作全在数组中进行,为了以防一些情况出现,将其保存在文件中,并且每借一次书,记得图书库存量减去1,当前读者可借阅的数量减去1,这样借书程序才会完整。还书代码类似。
//借还书子菜单
void ShowBorrowReturnMenu()
{
system("cls");
printf("\n\n\n\n");
printf("\t**********************欢迎进入***********************\n");
printf("\t*********************借还书登记***********************\n");
printf("\t**********************子菜单*************************\n");
printf("\t*********************1.借书登记***********************\n");
printf("\t*********************2.还书登记***********************\n");
printf("\t*********************0.返回主菜单*********************\n");
printf("\t******************************************************\n");
printf("\n");
printf("\t\t请选择(0-2)");
}
//借书
void BorrowBook()
{
//读者是否可以借书
system("cls");
int iBookld, iReaderld, iBorrow, i;//iBorrow读者借了几本书
//输入要借书的读者的编号,判断编号是否存在,如果存在,显示读者已经借阅的图书信息
iReaderld = SearchReader();
if (iReaderld == -1)//不存在
{
return;
}
iBorrow = astReader[iReaderld].iMax - astReader[iReaderld].iAmount;
if (iBorrow == 0)
{
printf("该读者目前没有借阅任何书");
}
else
{
printf("\t该读者当前所借图书为:");
for (i = 0; i < iBorrow; i++)
{
printf("%d", astReader[iReaderld].Bookld[i]);//数组里面对应的下标是存储的书籍的编号
}
printf("\n\n");
}
if (astReader[iReaderld].iAmount == 0)
{
printf("该读者可借阅书的数量为0,不能继续借书\n");
}
//图书是否可借阅
printf("\n按任意键输入要借阅的图书信息\n");
_getch;
iBookld = SearchBook();
if (iBookld == -1)
{
return;
}
if (astBook[iBookld].iAmount == 0)
{
printf("该图书库存量为0!图书不可借阅!\n");
return;
}
//借书
astReader[iReaderld].Bookld[iBorrow] = astBook[iBookld].iNum;
//图书的库存-1
astBook[iBookld].iAmount--;
//当前读者的可借书的数量-1
astReader[iReaderld].iAmount--;
//操作在数组中,必须保存在文件中
SaveBookFile(iBookld);
SaveReaderFile(iReaderld);
printf("借书成功!\n");
}
//还书
void ReturnBook()
{
system("cls");
int iBookld, iReaderld, iBorrow, i, j;//读者是否借这本书
//1. 读者在不在系统里
iReaderld = SearchReader();
if (iReaderld == -1)
{
return;
}
//
iBorrow = astReader[iReaderld].iMax - astReader[iReaderld].iAmount;
if (iBorrow == 0)
{
printf("\t该读者没有借阅任何书,无需归还!\n");
return;
}
else
{
printf("\t该读者当前所借阅的图书为:");
for (i = 0; i < iBorrow; i++)//iBorrow是自己借了几本书
{
printf("%d", astReader[iReaderld].Bookld[i]);
}
}
printf("按任意键输入要归还的图书信息\n");
_getch;
//2. 图书在不在系统里
iBookld = SearchBook();
if (iBookld == -1)
{
return;
}
//3. 借书列表里面有没有这本书
for (i = 0; i < iBorrow; i++)
{
if (astReader[iReaderld].Bookld[i] == astBook[iBookld].iNum)
{
//如果借阅列表里面有这本书,才可以还书
for (j = i; j < iBorrow - 1; j++)
{
astReader[iReaderld].Bookld[j] = astReader[iReaderld].Bookld[j + 1];
}
astReader[iReaderld].Bookld[iBorrow - 1] = 0;
//图书库存加1
astBook[iBookld].iAmount++;
//读者可借书的数量
astReader[iReaderld].iAmount++;
break;
}
}
if (i == iBorrow)
{
printf("该读者没有借阅这本书,无需归还!\n");
return;
}
//还书
SaveBookFile(iBookld);
SaveReaderFile(iReaderld);
printf("还书成功\n");
}
//借还书模块
void BorrowReturnManger()
{
ShowBorrowReturnMenu();//借还书的子菜单
int iltem;
scanf("%d", &iltem);
getchar();
while (iltem)
{
switch (iltem)
{
case 1:
BorrowBook();//借书
break;
case 2:
ReturnBook();//还书
break;
default:
printf("\t\t请输入正确的数字!\n");
}
printf("按任意键返回子菜单");
_getch;
ShowBorrowReturnMenu();//借还书的子菜单
scanf("%d", &iltem);
getchar();
}
}