java實現圖書館管理系統
阿新 • • 發佈:2020-01-07
本文例項為大家分享了java實現圖書館管理系統的具體程式碼,供大家參考,具體內容如下
思路:所有包都在book_manage包裡
利用面向物件的多型特性去除了很多if-else的判斷,不同的子類在父類所對應的方法不同。
1.首先建立一個book包
包裡面有2個類,一個是Book,這個類裡面包含一本書的全部資訊
另外一個類是BookList,這個類是用來管理每一個書,通過這個類來尋找每一本書。
private Book[] books = new Book[100];
Book數組裡面存放所有的書。
2.再建立一個包Operation 這個類裡面有一個OI介面,通過對接口裡面的Work方法重寫,來實現管理員身份和普通使用者身份的不同操作。
3.最後建立一個User包,裡面有三個類,User,Admin,NormalUser
Admin和NormalUser都繼承自User.
User裡秒你有一個數組
protected IO[] operation;
這個數組裡麵包含了使用者或者管理員所具備的操作。
通過對陣列的索引來確定具體需要呼叫的操作方法。
下面來看看程式碼吧:
book包
Book類
package book_manager.book; public class Book { private String name; private String id; private String author; private int price; private String type; private boolean isBorrow; public Book(String name,String id,String author,int price,String type,boolean isBorrow) { this.name = name; this.id = id; this.author = author; this.price = price; this.type = type; this.isBorrow = isBorrow; } @Override //Object中內建的類,用來格式化列印book的資訊 public String toString() { return "Book{" + "name='" + name + '\'' + ",id='" + id + '\'' + ",author='" + author + '\'' + ",price=" + price + ",type='" + type + '\'' + ",isBorrow=" + isBorrow + '}'; } public String getName(){ return name; } public boolean isBorrow(){ return isBorrow; } public void setBorrow(boolean bool){ this.isBorrow=bool; } public String getId(){ return id; } }
BookList類
package book_manager.book; import java.util.Arrays; public class BookList { private Book[] books = new Book[100]; private int size; public BookList(){ books[0] = new Book("金瓶梅","001","蘭陵笑笑生",100,"古典名著",false); books[1] = new Book("水滸傳","002","施耐庵",false); books[2] = new Book("西遊記","003","吳承恩",false); size = 3; } public int getSize(){ return size; } public void setBooks(int index,Book book){ books[index]=book; } public void setSize(int size){ this.size=size; } public Book getBook(int index){ return books[index]; } }
Operation包:
ADD類
package book_manager.Operation; import book_manager.book.*; import java.util.Scanner; public class ADD implements IO{ @Override public void work(BookList bookList) { Scanner scanner = new Scanner(System.in); System.out.println("請輸入書名"); String name =scanner.next(); System.out.println("請輸入序號"); String id = scanner.next(); System.out.println("請輸入作者"); String author =scanner.next(); System.out.println("請輸入價格"); int price = scanner.nextInt(); System.out.println("請輸入型別"); String type = scanner.next(); Book book = new Book(name,id,author,price,type,false); bookList.setBooks(bookList.getSize(),book); bookList.setSize(bookList.getSize()+1); System.out.println("新增成功"); } }
Borrow類
package book_manager.Operation; import book_manager.book.Book; import book_manager.book.BookList; import java.util.Scanner; public class Borrow implements IO{ @Override public void work(BookList bookList) { int i=0; int flag=0; Scanner scan = new Scanner(System.in); System.out.println("請輸入需要借閱的書名"); String name = scan.next(); for(;i<bookList.getSize();i++){ if(name.equals(bookList.getBook(i).getName())){ if(bookList.getBook(i).isBorrow()==false){ System.out.println("借閱成功"); flag=1; bookList.getBook(i).setBorrow(true); } } } if(flag==0){ System.out.println("不好意思,借閱失敗"); } } }
Delete類
package book_manager.Operation; import book_manager.book.BookList; import java.util.Scanner; public class Delete implements IO{ public void work(BookList bookList){ Scanner scanner = new Scanner(System.in); System.out.println("請輸入想要刪除的編號"); String id = scanner.next(); for(int i=0;i<bookList.getSize();i++){ if(bookList.getBook(i).getId().equals(id)){ bookList.setBooks(i,bookList.getBook(bookList.getSize())); bookList.setSize(bookList.getSize()-1); System.out.println("刪除成功"); } else{ System.out.println("刪除失敗"); } } } }
Exit類
package book_manager.Operation; import book_manager.book.BookList; public class Exit implements IO{ @Override public void work(BookList bookList) { System.out.println("退出成功"); System.exit(0); } }
Find類
package book_manager.Operation; import book_manager.book.BookList; import java.util.Scanner; public class Find implements IO{ @Override public void work(BookList bookList) { int i=0; int count=0; Scanner scan = new Scanner(System.in); System.out.println("請輸入需要查詢的書名"); String name = scan.next(); for(;i<bookList.getSize();i++){ if(name.equals(bookList.getBook(i).getName())){ count++; } } if(count==0){ System.out.println("不好意思,沒有找到"); } else{ System.out.println("找到了,共計"+count+"本"); } } }
IO介面
package book_manager.Operation; import book_manager.book.BookList; public interface IO { abstract public void work(BookList bookList); }
PrintAll類
package book_manager.Operation; import book_manager.book.BookList; public class PrintAll implements IO{ @Override public void work(BookList bookList) { for(int i=0;i<bookList.getSize();i++){ System.out.println(bookList.getBook(i)); } } }
Return類
package book_manager.Operation; import book_manager.book.BookList; import java.util.Scanner; public class Return implements IO{ @Override public void work(BookList bookList) { int i=0; int flag=0; Scanner scan = new Scanner(System.in); System.out.println("請輸入需要歸還的ID"); String id = scan.next(); for(;i<bookList.getSize();i++){ if(id.equals(bookList.getBook(i).getId())){ if(bookList.getBook(i).isBorrow()==true){ System.out.println("歸還成功"); bookList.getBook(i).setBorrow(false); flag=1; } else{ System.out.println("歸還失敗"); } } } if(flag==0){ System.out.println("不好意思,沒有此書"); } } }
user包:
User類
package book_manager.user; import book_manager.Operation.*; import book_manager.Operation.IO; import book_manager.book.BookList; abstract public class User { String name; protected IO[] operation; public User(String name){ this.name=name; } abstract public int menu();//該方法被重寫 public void doOperation(int choice,BookList bookList) { operation[choice].work(bookList); } }
Admin類
package book_manager.user; import book_manager.Operation.*; import java.util.Scanner; public class Admin extends User{ public Admin(String name){ super(name); operation=new IO[]{ new Exit(),new Find(),new ADD(),new Delete(),new PrintAll(),}; } public int menu() { System.out.println("============"); System.out.println("hello " + name); System.out.println("1. 查詢書籍"); System.out.println("2. 增加書籍"); System.out.println("3. 刪除書籍"); System.out.println("4. 列印所有資訊"); System.out.println("0. 退出"); System.out.println("============"); System.out.println("請輸入您的選擇: "); Scanner scanner = new Scanner(System.in); int choice = scanner.nextInt(); return choice; } }
NormalUser
package book_manager.user; import book_manager.Operation.*; import java.util.Scanner; public class NormalUser extends User{ public NormalUser(String name){ super(name); operation=new IO[]{ new Exit(),new Borrow(),new Return(),new PrintAll() }; } public int menu() { System.out.println("============"); System.out.println("hello " + name); System.out.println("1. 查詢圖書"); System.out.println("2. 借閱圖書"); System.out.println("3. 歸還圖書"); System.out.println("4. 檢視全部書籍"); System.out.println("0. 退出"); System.out.println("============"); System.out.println("請輸入您的選擇: "); Scanner scanner = new Scanner(System.in); int choice = scanner.nextInt(); // close 本質上是在關閉 System.in // 由於後面還需要用到 System.in,此處不能盲目關閉. // scanner.close(); return choice; } }
最後還有一個Test類,裡面放了main函式
package book_manager; import book_manager.book.BookList; import book_manager.user.Admin; import book_manager.user.NormalUser; import book_manager.user.User; import java.util.Scanner; public class Test { public static void main(String[] args) { BookList list = new BookList(); User user = login(); //通過不同的choice和身份呼叫不同的Operation方法 while(true){ int choice = user.menu(); user.doOperation(choice,list); } } public static User login(){ Scanner scanner = new Scanner(System.in); System.out.println("請輸入你的姓名"); String name = scanner.next(); System.out.println("請輸入你的身份"); System.out.println("1.普通使用者 2.管理員"); int role= scanner.nextInt(); if(role==1){ return new NormalUser(name); } else{ return new Admin(name); } } }
更多學習資料請關注專題《管理系統開發》。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。