java实现借书,一个人同一本书不能同时借两次

本文介绍了一个基于Java的图书借阅系统中,如何通过前后端交互防止用户对同一本书籍进行重复借阅的实现方法。通过数据库查询和列表比较,确保借阅记录的唯一性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一次用csdn,并不太会写文章,请多指教。
欢迎评论!
下面用java写了一个 图书借阅系统 判断一个人不能同一本书借两次。
可能不能复制粘贴在你们的电脑上运行,希望能看到注释给你们一点思路,也希望大家指点问题。
!!!!!!!!!
时隔多天,过来更新!
先从数据库中,根据userId和bookId两个字段,查询数量count,如果数量是0,则表明数据库中这个人还没有借过这本书,可以借。
如果count!=0,说明这个人借过了,提示不能重复借书。

1.action部分,//doSave()

	public void doSave() {
	//判断一个人不能同一本书借两次
	int flag=1;	//flag标签用于判断能否进行保存操作
	List<BorrowerBook> bblist=this.borrowerBookManager.findAll();	//得到数据库信息
	List<String> sList=new ArrayList<>();	//用于存bookId和borrowerId
	for(BorrowerBook bb:bblist){
		sList.add(bb.getBorrowerId().toString() + "," + bb.getBookId().toString());
	}
	/*观察sList的结果
		---------------
		1,1
		1,3
		2,1
		3,1
		---------------
	System.out.println("---------------");
	for(String s:sList){
		System.out.println(s);
	}
	System.out.println("---------------");*/
	
	//用于存放图书的id值,用于之后的保存操作
	List<Long> list=new ArrayList<>();
	
	//得到前台页面提交过来的checkAll信息,
	String checkAll=this.getParameter("checkAll");
	//转化为String数组
	String[] strarr = checkAll.split(",");
	List<String> saveList=new ArrayList<>();//用于存bookId和borrowerId
	for(String s:strarr){
		saveList.add(borrowerBook.getBorrowerId() + "," + s);
		list.add(Long.parseLong(s));	//得到了图书的id值,用于之后的保存操作
	}
	
	/*观察sList的结果
		---------------
		1,1
		1,3
		---------------
	System.out.println("---------------");
	for(String s:saveList){
		System.out.println(s);
	}
	System.out.println("---------------");*/
	
	//双层for循环比较值,一旦有重复值,就立即跳出循环,flag=0
	for(String s:sList){
		for(String save:saveList){
			if(s.equals(save)){
				flag=0;
				break;
			}
		}
	}
	
	if(flag==1){
		try {
			for(Long l:list){
				getBorrowerBook().setBookId(l);
				this.borrowerBookManager.save(borrowerBook);
				
				//此处实现数量的同步减少
				this.book = this.bookManager.get(l);
				int i=book.getNum();
				i--;
				this.book.setNum(i);
				bookManager.update(book);
			}
			super.outputSuccessResult();
		} catch (Exception e) {
			super.outputErrorResult(e);
		}
		//否则,返回你想抛出的异常,用于js判断信息异常,0就是异常信息的标志
	}else{
		super.outputErrorResult("0");
	}
	
}

可以删去注释部分。
我觉得我的思路很繁琐,不知道还有没有简单的办法实现这个功能。

2.前端页面的js部分

		$.post(form.action, $(form).serialize(), function(data) {
				if (data.result) {
					//是因为这句话导致list无法刷新,这是一个没有被定义的函数
					//backToContent();
					alert("保存成功!");
					$table.bootstrapTable("refresh");
				} else {
					if(data.message=="0"){
						alert("你已经借过这本书了,请先归还再重新借阅");
					}
					else{
						alert( data.message ||  "保存失败!");
					}
				}
			}); 

3.数据库的表
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值