面向对象图书管理系统,初稿

图书管理系统 需求文档

图书管理系统:  拥有普通用户和管理员两种角色,功能分别如下:

普通用户拥有的功能

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 {
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值