图书管理系统 需求文档
图书管理系统: 拥有普通用户和管理员两种角色,功能分别如下:
普通用户拥有的功能
1 登录、注册
2 查看所有图书
3 按书名、图书编号模糊查找到需要的书籍
4 借阅图书
5 归还图书
6 查看自己的借阅历史
管理员拥有的功能:
1 登录
2 查看所有图书
3 按书名、图书编号模糊查找到需要的书籍
4 添加图书
5 删除图书
6 编辑图书
7 查看所有用户信息
8 查看某个用户的借阅历史
9 指定图书编号,找出所有借阅过这本书的用户。
请按照角色功能,抽象并封装出合理的类,并在控制台完成功能测试。
package test4;
import java.util.ArrayList;
import java.util.List;
class User {
private final int id;
private final String username;
private final String password;
private final List<Book> borrowedBooks;
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
this.borrowedBooks = new ArrayList<>();
}
public int getId() {
return id;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public List<Book> getBorrowedBooks() {
return borrowedBooks;
}
public void borrowBook(Book book) {
borrowedBooks.add(book);
book.setBorrowedBy(this);
}
public void returnBook(Book book) {
borrowedBooks.remove(book);
book.setBorrowedBy(null);
}
public void viewBorrowHistory() {
System.out.println("Borrow History:");
for (Book book : borrowedBooks) {
System.out.println("Book ID: " + book.getId() + ", Title: " + book.getTitle());
}
}
}
class Book {
private final int id;
private final String title;
private final String author;
private User borrowedBy;
public Book(int id, String title, String author) {
this.id = id;
this.title = title;
this.author = author;
this.borrowedBy = null;
}
public int getId() {
return id;
}
public String getTitle() {
return title;
}
public String getAuthor() {
return author;
}
public User getBorrowedBy() {
return borrowedBy;
}
public void setBorrowedBy(User user) {
borrowedBy = user;
}
}
class Library {
private List<Book> books;
private List<User> users;
public Library() {
this.books = new ArrayList<>();
this.users = new ArrayList<>();
}
public void addBook(Book book) {
books.add(book);
}
public void removeBook(Book book) {
books.remove(book);
}
public List<Book> getAllBooks() {
return books;
}
public List<Book> searchBooksByTitle(String keyword) {
List<Book> matchingBooks = new ArrayList<>();
for (Book book : books) {
if (book.getTitle().contains(keyword)) {
matchingBooks.add(book);
}
}
return matchingBooks;
}
public List<Book> searchBooksByNumber(String keyword) {
List<Book> matchingBooks = new ArrayList<>();
for (Book book : books) {
if (String.valueOf(book.getId()).contains(keyword)) {
matchingBooks.add(book);
}
}
return matchingBooks;
}
public void addUser(User user) {
users.add(user);
}
public List<User> getAllUsers() {
return users;
}
public User getUserById(int id) {
for (User user : users) {
if (user.getId() == id) {
return user;
}
}
return null;
}
public List<User> findUsersByBookId(int bookId) {
List<User> usersWithBook = new ArrayList<>();
for (User user : users) {
for (Book book : user.getBorrowedBooks()) {
if (book.getId() == bookId) {
usersWithBook.add(user);
break;
}
}
}
return usersWithBook;
}
}
class UserManager {
private final Library library;
public UserManager(Library library) {
this.library = library;
}
public User registerUser(String username, String password) {
int id = library.getAllUsers().size() + 1; // Generate ID for the user
User user = new User(id, username, password);
library.addUser(user);
return user;
}
public User loginUser(String username, String password) {
for (User user : library.getAllUsers()) {
if (user.getUsername().equals(username) && user.getPassword().equals(password)) {
System.out.println("Login successful. Welcome, " + user.getUsername() + "!");
return user;
}
}
System.out.println("Login failed. Invalid credentials.");
return null;
}
}
class Admin extends User {
public Admin(int id, String username, String password) {
super(id, username, password);
}
public void addBook(Book book) {
Library library = new Library();
library.addBook(book);
}
public void removeBook(Book book) {
Library library = new Library();
library.removeBook(book);
}
public void editBook(Book book) {
// Edit book details
}
public void getAllUsers() {
Library library = new Library();
List<User> users = library.getAllUsers();
System.out.println("All Users:");
for (User user : users) {
System.out.println("ID: " + user.getId() + ", Username: " + user.getUsername());
}
}
public void getUserBorrowHistory(User user) {
user.viewBorrowHistory();
}
public void findUsersByBookId(int bookId) {
Library library = new Library();
List<User> users = library.findUsersByBookId(bookId);
System.out.println("Users who borrowed Book ID " + bookId + ":");
for (User user : users) {
System.out.println("ID: " + user.getId() + ", Username: " + user.getUsername());
}
}
}
public class Test {
}