lab5

mail@pastecode.io avatar
unknown
java
15 days ago
12 kB
3
Indexable
Never
// BOOK 

public class Book {

    // Các thuộc tính private của lớp Book
    private String ID; // Mã định danh của sách
    private String name; // Tên sách
    private int year; // Năm xuất bản
    private String author; // Tác giả
    private int size; // Kích thước sách (đơn vị: KB)

    public Book() {
    }

    public Book(String ID, String name, int year, String author, int size) {
        this.ID = ID;
        this.name = name;
        this.year = year;
        this.author = author;
        this.size = size;
    }

    public String getID() {
        return ID;
    }

    public void setID(String ID) {
        this.ID = ID;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public void showInfo() {
        System.out.println("ID" + ID + ",Name: "
                + name + ",Year" + year + ",Author"
                + author + ",Size" + size);
    }
}



// BOOKMAGEMENT

import java.util.ArrayList;
import java.util.Comparator;
public class BookManagement {

    // Danh sách chứa các đối tượng Book
    private ArrayList<Book> listEBook = new ArrayList<>();

    // Thêm một cuốn sách mới vào danh sách
    public void entryData(Book book) {
        listEBook.add(book);
    }

    // In danh sách các cuốn sách ra màn hình dưới dạng bảng
    public void printData() {
        System.out.println("+-----+-------+----------------------+------+"
                + "-------------+---------+");
        System.out.println("| No. | ID    | Name                 | Year |"
                + " Author      | Size    |");
        // In thông tin của từng cuốn sách        
        int index = 1;
        for (Book book : listEBook) {
            System.out.println("+-----+-------+----------------------+------+"
                    + "-------------+---------+");
            System.out.printf("| %-3d | %-5s | %-20s | %-4d | %-11s | %-3dKB   |\n",
                    index++, book.getID(), book.getName(), book.getYear(), book.getAuthor(), book.getSize());
        }
        // In đường kẻ cuối cùng của bảng
        System.out.println("+-----+-------+----------------------+------+"
                + "-------------+---------+");
    }

    // Sắp xếp danh sách sách theo kích thước giảm dần
    public void sort() {
        listEBook.sort(Comparator.comparingInt(Book::getSize).reversed());
    }

    // Tìm kiếm sách theo ID
    public int searchBookByID(String ID) {
        for (int i = 0; i < listEBook.size(); i++) {
            if (listEBook.get(i).getID().equals(ID)) {
                return i;
            }
        }
        return -1; // Không tìm thấy
    }

//    // Search book by ID (return book object)
//    public Book searchBookObjectByID(String ID) {
//        for (Book book : listEBook) {
//            if (book.getID().equals(ID)) {
//                return book;
//            }
//        }
//        return null; // Not found
//    }
    // Tìm các cuốn sách có kích thước lớn nhất
    public ArrayList<Book> biggestSize() {
        ArrayList<Book> result = new ArrayList<>();
        if (listEBook.isEmpty()) {
            return result;
        }
        // Tìm kích thước lớn nhất
        int maxSize = listEBook.stream().mapToInt(Book::getSize).max().orElse(0);
        // Thêm tất cả sách có kích thước lớn nhất vào danh sách kết quả
        for (Book book : listEBook) {
            if (book.getSize() == maxSize) {
                result.add(book);
            }
        }
        return result;
    }

    // In ra danh sách các cuốn sách có kích thước lớn nhất
    public void printBiggestSizeBooks() {
        ArrayList<Book> biggestBooks = biggestSize();
        if (biggestBooks.isEmpty()) {
            System.out.println("No books found.");
            return;
        }
        // In tiêu đề của bảng
        System.out.println("+-----+-------+----------------------+------+"
                + "-------------+-------+");
        System.out.println("| No. | ID    | Name                 | Year |"
                + " Author      | Size  |");
        System.out.println("+-----+-------+----------------------+------+"
                + "-------------+-------+");
        // In thông tin của từng cuốn sách có kích thước lớn nhất
        int index = 1;
        for (Book book : biggestBooks) {
            System.out.printf("| %-3d | %-5s | %-20s | %-4d | %-10s | %-2dKB |\n",
                    index++, book.getID(), book.getName(), book.getYear(), book.getAuthor(), book.getSize());
        }
        // In đường kẻ cuối cùng của bảng
        System.out.println("+-----+-------+----------------------+------+"
                + "-------------+-------+");
    }

    // Tìm kiếm và in thông tin sách theo ID
    public void searchBookByIDAndPrint(String id) {
        // Tìm kiếm sách theo ID và lấy chỉ số của sách trong danh sách
        int index = -1;
        for (int i = 0; i < listEBook.size(); i++) {
            if (listEBook.get(i).getID().equals(id)) {
                index = i;
                break;
            }
        }

        // Hiển thị kết quả tìm kiếm
        System.out.println(">>> Please enter book's ID to search: " + id);
        System.out.println("Search Results:");

        if (index == -1) {
            System.out.println("Not Found");
        } else {
            // In tiêu đề của bảng
            System.out.println("+-----+-------+----------------------+------+"
                    + "-------------+-------+");
            System.out.println("| No. | ID    | Name                 | Year |"
                    + " Author      | Size  |");
            System.out.println("+-----+-------+----------------------+------+"
                    + "-------------+-------+");
            // In thông tin của sách tìm thấy
            System.out.printf("| %-3d | %-5s | %-20s | %-4d | %-10s | %-3dKB |\n",
                    index + 1, listEBook.get(index).getID(), listEBook.get(index).getName(),
                    listEBook.get(index).getYear(), listEBook.get(index).getAuthor(),
                    listEBook.get(index).getSize());
            // In đường kẻ cuối cùng của bảng
            System.out.println("+-----+-------+----------------------+------+"
                    + "-------------+-------+");
        }
    }

    // Sắp xếp và in danh sách sách theo kích thước tăng dần
    public void printSortedBooksBySize() {
        // Sắp xếp danh sách sách theo kích thước
        listEBook.sort(Comparator.comparingInt(Book::getSize));// Gọi phương thức sort để sắp xếp danh sách theo kích thước tăng dần

        // In danh sách đã sắp xếp theo định dạng bảng
        System.out.println("+-----+-------+----------------------+------+"
                + "-------------+-------+");
        System.out.println("| No. | ID    | Name                 | Year |"
                + " Author      | Size  |");
        // In thông tin của từng cuốn sách đã sắp xếp
        int index = 1;
        for (Book book : listEBook) {
            System.out.println("+-----+-------+----------------------+------+"
                    + "-------------+-------+");
            System.out.printf("| %-3d | %-5s | %-20s | %-4d | %-11s | %-3dKB |\n",
                    index++, book.getID(), book.getName(), book.getYear(), book.getAuthor(), book.getSize());
        }
        // In đường kẻ cuối cùng của bảng
        System.out.println("+-----+-------+----------------------+------+"
                + "-------------+-------+");
    }
}




//java....
public class JavaApplication {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // Khởi tạo đối tượng BookManagement để quản lý sách
        BookManagement bm = new BookManagement();
        // Khởi tạo đối tượng Scanner để đọc input từ người dùng
        Scanner sc = new Scanner(System.in);
        int choice;

        do {
            // Hiển thị menu cho người dùng
            System.out.println("\n--- Book Management Menu ---");
            System.out.println("1. Adds new book");
            System.out.println("2. Shows all books");
            System.out.println("3. The biggest size book");
            System.out.println("4. Search a book by ID");
            System.out.println("5. Sort the list of books ascending by size");
            System.out.println("6. Quit");
            System.out.print("Please select a function: ");
            // Đọc lựa chọn của người dùng
            choice = sc.nextInt();
            sc.nextLine();  // Loại bỏ ký tự xuống dòng còn lại

            switch (choice) {
                case 1:
                    // Thêm sách mới
                    System.out.print("Input ID: ");
                    String id = sc.nextLine();
                    System.out.print("Input name: ");
                    String name = sc.nextLine();
                    System.out.print("Input year: ");
                    int year = sc.nextInt();
                    sc.nextLine();  // Loại bỏ ký tự xuống dòng
                    System.out.print("Input authors: ");
                    String author = sc.nextLine();
                    System.out.print("Input size (kilobyte): ");
                    int size = sc.nextInt();
                    sc.nextLine(); // Loại bỏ ký tự xuống dòng
                    // Tạo đối tượng Book mới và thêm vào danh sách
                    bm.entryData(new Book(id, name, year, author, size));
                    System.out.println("Ebook created and added to list of ebooks successful!");  // Thêm dòng này
                    break;
                case 2:
                    // Hiển thị tất cả sách
                    bm.printData();
                    break;
                case 3:
                    // Hiển thị sách có kích thước lớn nhất
                    if (bm.biggestSize().isEmpty()) {
                        System.out.println("No books available.");
                    } else {
                        bm.printBiggestSizeBooks();
                    }
                    break;
                case 4:
                    // Tìm kiếm sách theo ID
                    System.out.print("Enter book ID to search: ");
                    String searchID = sc.nextLine();
                    bm.searchBookByIDAndPrint(searchID);
                    break;
                case 5:
                    // Sắp xếp và hiển thị sách theo kích thước tăng dần
                    bm.printSortedBooksBySize();
                    break;
                case 6:
                    // Thoát chương trình
                    System.out.println("THANK FOR USING OUR APPLICATION!\n"
                            + "SEE YOU AGAIN!");
                    break;
                default:
                    // Xử lý lựa chọn không hợp lệ
                    System.out.println("Invalid choice, please try again.");
                    break;
            }
        } while (choice != 0); // Tiếp tục cho đến khi người dùng chọn thoát

        sc.close();
    }
}


Leave a Comment