答案是设计Book和User实体类,通过BorrowService管理借阅逻辑,利用Map存储图书、用户及借阅记录,并实现查询某本书状态、用户借书列表及书籍借阅者功能,结构清晰可扩展。

在Java中开发图书借阅查询功能,核心是设计合理的数据结构和实现清晰的业务逻辑。重点在于管理图书信息、用户信息以及借阅记录,并提供便捷的查询方式。下面从几个关键模块来说明如何实现。
1. 设计图书与用户实体类
定义图书和用户的基本属性,便于后续操作。
Book类 包含书名、作者、ISBN、是否可借等字段:
public class Book {private String isbn;
private String title;
private String author;
private boolean isAvailable;
// 构造方法、getter/setter省略
}
User类 包含用户ID、姓名、已借图书列表:
立即学习“Java免费学习笔记(深入)”;
public class User {private String userId;
private String name;
private List
// 构造方法、getter/setter省略
}
2. 管理借阅记录
使用一个集合存储所有借阅状态,推荐用Map关联用户和所借图书。
可以创建一个 BorrowService 类来处理借还逻辑:
private Map
private Map
private Map
public boolean borrowBook(String userId, String isbn) {
if (!userMap.containsKey(userId)) return false;
Book book = bookMap.get(isbn);
if (book == null || !book.isAvailable()) return false;
book.setAvailable(false);
borrowRecord.put(isbn, userId);
userMap.get(userId).borrowedBooks.add(isbn);
return true;
}
}
3. 实现查询功能
常见的查询需求包括:某本书的借阅状态、某个用户借了哪些书、某本书被谁借走了。
示例方法:
-
查某本书当前是否可借:
直接通过book.isAvailable()判断 -
查某用户借了哪些书:
遍历该用户的borrowedBooks列表,再从bookMap获取详情 -
查某本书被谁借走:
通过borrowRecord.get(isbn)得到用户ID,再查用户信息
添加一个查询方法示例:
public String queryBorrowerOfBook(String isbn) {String userId = borrowRecord.get(isbn);
if (userId == null) return "该书未被借出";
return "被用户 " + userMap.get(userId).getName() + " 借走";
}
4. 数据初始化与测试
可以在主程序中初始化一些测试数据,验证查询功能是否正常。
例如:
public static void main(String[] args) {BorrowService service = new BorrowService();
// 添加图书
Book java101 = new Book("123", "Java入门", "张三", true);
service.bookMap.put("123", java101);
// 添加用户
User user = new User("U001", "李四");
service.userMap.put("U001", user);
// 借书
service.borrowBook("U001", "123");
// 查询
System.out.println(service.queryBorrowerOfBook("123"));
} 基本上就这些。结构清晰、逻辑明确,就能实现基本的图书借阅查询功能。后续可扩展数据库支持或加入时间限制、逾期判断等功能。










