一、框架
1. 創建類
用戶:管理員AdminUser??普通用戶NormalUser 繼承抽象類User
書:書Book?書架BookList
操作對象:書Book
2. 知識點
主要涉及的知識點:數據類型 變量 if for 數組 方法 類和對象 封裝繼承多態 抽象類和接口
3.利用數組放置圖書
Test.Java
BookList.java
方法調用
BookList.java
Book.java
4.利用向上轉型實現用戶身份的選擇
User.java
添加圖書操作AddIOperation等類實現接口IOperations
IOperations.java
每個功能操作均需重寫接口IOperations的work方法--此處以添加操作為例
NormalUser.java
AdminUser.java
Test.java
二、功能的實現——重寫Work()方法
1.退出操作ExitOperation
public class ExitOperation implements IOperations{@Overridepublic void work(BookList bookList) {System.out.println("退出系統");System.exit(0);}
}
2.展示操作ShowOperation
public class ShowOperation implements IOperations{@Overridepublic void work(BookList bookList) {System.out.println("展示書籍");for (int i = 0; i < bookList.getUsedSize(); i++) {System.out.println(bookList.getBooks()[i].toString());}}
}
3.查找操作FindOperation
public class FindOperation implements IOperations{@Overridepublic void work(BookList bookList) {System.out.println("查找書籍");System.out.println("請輸入您要查找的圖書名字:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();for (int i = 0; i < bookList.getUsedSize(); i++) {if(bookList.getBooks()[i].getName().equals(name)) {System.out.println(bookList.getBooks()[i].toString());return;}}System.out.println("沒有這本書");}
}
4.借閱操作BorrowOperation
public class BorrowOperation implements IOperations{@Overridepublic void work(BookList bookList) {System.out.println("借閱書籍");System.out.println("請輸入你要借閱的圖書名字:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();for (int i = 0; i < bookList.getUsedSize(); i++) {if (bookList.getBooks()[i].getName().equals(name)) {bookList.getBooks()[i].setBorrowed(true);System.out.println("借閱成功");return;}}System.out.println("沒有找到這本書");}
}
5.歸還操作ReturnOPeration
public class ReturnIOperation implements IOperations{@Overridepublic void work(BookList bookList) {System.out.println("歸還書籍");System.out.println("請輸入你要歸還的圖書名字:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();for (int i = 0; i < bookList.getUsedSize(); i++) {if (bookList.getBooks()[i].getName().equals(name)) {if(bookList.getBooks()[i].isBorrowed()) {bookList.getBooks()[i].setBorrowed(false);System.out.println("歸還成功");return;}else {System.out.println("這本書已經歸還了,無需再次歸還");return;}}}System.out.println("沒有找到這本書");}
}
6.添加功能AddOperation
public class AddIOperation implements IOperations{@Overridepublic void work(BookList bookList) {System.out.println("增添書籍");//判滿int currentSize = bookList.getUsedSize();if (currentSize == bookList.getBooks().length) {System.out.println("書架已滿,添加失敗");return;}System.out.println("請輸入圖書名字:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();System.out.println("請輸入圖書的作者:");String author = scanner.nextLine();System.out.println("請輸入圖書的價格:");int price = scanner.nextInt();scanner.nextLine();System.out.println("請輸入圖書的類型:");String type = scanner.nextLine();Book newBook = new Book(name,author,price,type);//判斷書架有沒有這本書for (int i = 0; i < bookList.getBooks().length; i++) {if(newBook.equals(bookList.getBooks()[i])) {System.out.println("該書已存在,添加無效");return;}}bookList.setBooks(currentSize,newBook);bookList.setUsedSize(currentSize+1);System.out.println("添加成功");}
}
7.刪除操作DelOperation
public class DelOperation implements IOperations{@Overridepublic void work(BookList bookList) {System.out.println("刪除書籍");System.out.println("請輸入您要刪除的圖書名字");Scanner scanner = new Scanner(System.in);int pos = -1;String name = scanner.nextLine();int currentSize = bookList.getUsedSize();int i = 0;for (; i < currentSize; i++) {if(name.equals(bookList.getBooks()[i].getName())) {pos = i;break;}}if (i == currentSize) {System.out.println("沒有你想刪除的圖書");return;}int j = pos;for (;j < bookList.getUsedSize()-1; j++) {Book book = bookList.getBooks()[j+1];bookList.setBooks(j,book);}bookList.setBooks(j,null);bookList.setUsedSize(currentSize-1);System.out.println("刪除成功");}
}