專案1第四課——圖書管理系統書籍容器及完善管理員
阿新 • • 發佈:2018-11-12
這節課來搞一個書籍容器和完善管理員
BookContainer:
package com.bookmanagement; import java.util.Collection; import java.util.HashMap; import java.util.Map; //書籍資訊容器 public class BookContainer { //說明一下,books的鍵是書的id private Map<String, Book> books= new HashMap<>(); private static BookContainer instance = new BookContainer(); private BookContainer(){} //顯然書籍資訊容器應該是一個單例,且應該在程式啟動時就初始化好 public static BookContainer getInstance() {return instance; } public void addBook(Book book) { books.put(book.getId(),book); } public void deleteBook(String bookId) {books.remove(bookId); } public void updateBook(Book book) throws Exception { if (!books.containsKey(book.getId())) throw new Exception("不存在這本書"); //這個是丟擲異常(exception),表明這不是我們想要的結果,如果這個異常不被捕獲(catch)的話程式會立刻停止執行 else addBook(book); //map在put相同的key時後來的值會覆蓋前面的值 } public Book findById(String bookId) { return books.get(bookId); } public Collection<Book> findAll() { return books.values(); } }
Admin:
package com.bookmanagement; import java.util.Collection; public class Admin { private String username = "admin"; private String password = "123456"; private static Admin admin; private BookContainer container = BookContainer.getInstance(); //讓其他人無法訪問構造器 private Admin() { } /** * 管理員擁有的許可權: * 1. 錄入書籍資訊 * 2. 刪除書籍資訊 * 3. 修改書籍資訊 * 4. 查詢書籍資訊 * @return */ public void insertBook(Book book) { container.addBook(book); } public void delete(String bookId) { container.deleteBook(bookId); } public void uodateBookInfo(Book book) { try{ container.updateBook(book); }catch (Exception e) { //這裡就是捕獲異常,異常的捕獲必須通過 try-catch來進行,具體細節以後講 System.out.println(e.getMessage()); } } public Collection<Book> findAllBooks() { return container.findAll(); } public Book findBookById(String bookId) { return container.findById(bookId); } //保證整個專案只能有一個管理員 //這種寫法叫單例模式,以後會講 public static Admin getInstance() { if (admin == null) admin = new Admin(); return admin; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }