2022.2.27 图书管理系统3---借还书登记模块

这是图书管理系统第三个模块,里面有注意的一些细节

借书登记系统中,要注意什么时候书存在,什么时候书不存在,最主要的是在借完书之后对信息保存,因为在代码中所做的工作全在数组中进行,为了以防一些情况出现,将其保存在文件中,并且每借一次书,记得图书库存量减去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();
	}
}

上一篇:Educational Codeforces Round 65 (Rated for Div. 2)


下一篇:upload-labs闯关