目錄
一.book
1.在book包中的Book 類用來定義和引用書的名字,作者,價格,類型等。
2.在book包中的第二個類是BookList是用來構建書架,和書架上的初始書本,
二、ioperations
1.AddOperation?(增加圖書)
2.BorrowOperation?(借閱圖書)
3.DelOperation?(刪除圖書)
4.ExitOperation?(顯示圖書)
5.FindOperation?(查找圖書)
6.IOPeration(接口)
7.ReturnOperation(歸還圖書)
8.ShowOperation(顯示圖書)
?三、User
?1.AdminUser(管理員)
2.NormalUser(普通用戶)
3.User
?四、Main類?
?圖書管理系統的作用:顯而易見,圖書管理系統的出現就是為了緩和圖書管理員的管理任務。當然,這其中也蘊含了一定的抽象意義,就是實現了從計算機上的虛擬化在現實生活中的實際運用;實現了圖書館由傳統走向信息化道路的愿望。可以說,這樣的管理系統是極大地減輕了管理員的負擔。這樣的程序在將圖書信息進行簡明化處理后,就實現了圖書信息的集中化管理,使得管理的成本也大幅度降低。在進行查找操作時,系統可以快速地進行綜合查詢,得到最準確的結果。?
?圖書管理系統構建簡單的流程圖
選擇身份進入后選擇你要做的內容,通過這個架構來編寫代碼。
首先我們先創建三個包
?
一.book
?
1.在book包中的Book 類用來定義和引用書的名字,作者,價格,類型等。
public class Book {private String name;//定義書的各種特性:名字,作者,類型,還有是否借出private String author;private int price;private String type;private boolean isBorrowed;public Book(String name, String author, int price, String type) {this.name = name;this.author = author;this.price = price;this.type = type;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}public String getType() {return type;}public void setType(String type) {this.type = type;}public boolean isBorrowed() {return isBorrowed;}public void setBorrowed(boolean borrowed) {isBorrowed = borrowed;}@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +", type='" + type + '\'' +( (isBorrowed == true) ? " 已借出" : " 未借出") +'}';}
}
2.在book包中的第二個類是BookList是用來構建書架,和書架上的初始書本,
public class BookList {private Book[] books = new Book[10];private int usedSize;public BookList() {this.books[0] = new Book("狂人日記","魯迅",10,"小說");this.books[1] = new Book("淘氣包馬小跳","楊紅櫻",10,"小說");this.books[2] = new Book("笑貓日記","楊紅櫻",16,"小說");this.books[3] = new Book("阿Q正傳","魯迅",16,"小說");this.books[4] = new Book("紅樓夢","曹雪芹",30,"小說");this.usedSize = 5; //初始書本個數}public int getUsedSize() {return usedSize;}public void setUsedSize(int usedSize) {this.usedSize = usedSize;}public Book getBook(int pos) {return books[pos];}public void setBook(int pos,Book book) {this.books[pos] = book;}public Book[] getBooks() {return books;}
}
二、ioperations
1.AddOperation?(增加圖書)
package ioperations;
import book.Book;
import book.BookList;
public class AddOperation implements IOPeration {public void work(BookList bookList) {System.out.println("新添加的圖書");int currentSize = bookList.getUsedSize();if(currentSize == bookList.getBooks().length) {System.out.println("書架已經存滿");return;}Scanner scanner = new Scanner(System.in);System.out.println("請輸入書名:");String name = scanner.nextLine();System.out.println("請輸入作者:");String author = scanner.nextLine();System.out.println("請輸入書的類型:");String type = scanner.nextLine();System.out.println("請輸入價格:");int price = scanner.nextInt();Book newBook = new Book(name,author,price,type);for (int i = 0; i < currentSize; i++) {Book book = bookList.getBook(i);if(book.getName().equals(name)) {System.out.println("這本書已經存在");return;}}bookList.setBook(currentSize,newBook);bookList.setUsedSize(currentSize+1);System.out.println("添加成功");}
}
2.BorrowOperation?(借閱圖書)
package ioperations;
import book.Book;
import book.BookList;import java.util.Scanner;public class BorrowOperation implements IOPeration {@Overridepublic void work(BookList bookList) {System.out.println("借閱圖書");Scanner scanner = new Scanner(System.in);System.out.printf("請輸入你借閱的書名:");String name = scanner.nextLine();int currentSize = bookList.getUsedSize();for (int i = 0; i < currentSize; i++) {Book book = bookList.getBook(i);if(book.getName().equals(name)) {if(book.isBorrowed()) {System.out.println("已被借出");return;}book.setBorrowed(true);System.out.println("借閱成功");return;}}System.out.println("不存在");}
}
3.DelOperation?(刪除圖書)
package ioperations;
import book.Book;
import book.BookList;import java.util.Scanner;public class DelOperation implements IOPeration {public void work(BookList bookList) {System.out.println("刪除圖書");Scanner scanner = new Scanner(System.in);System.out.print("請輸入你刪除的書名:");String name = scanner.nextLine();int currentSize = bookList.getUsedSize();int pos = -1;int i = 0;for (; i < currentSize; i++) {Book book = bookList.getBook(i);if(book.getName().equals(name)) {pos = i;break;}}if(i == currentSize) {System.out.println("該書不存在");return ;}for (int j = pos; j < currentSize-1; j++) {Book book = bookList.getBook(j+1);bookList.setBook(j,book);}bookList.setBook(currentSize-1,null);bookList.setUsedSize(currentSize-1);System.out.println("已經刪除");}
}
4.ExitOperation?(顯示圖書)
package ioperations;
import book.BookList;public class ExitOperation implements IOPeration {@Overridepublic void work(BookList bookList) {System.out.println("退出系統");System.exit(0);}
}
5.FindOperation?(查找圖書)
package ioperations;
import book.Book;
import book.BookList;
import java.util.Scanner;public class FindOperation implements IOPeration {public void work(BookList bookList) {System.out.println("查找圖書");Scanner scanner = new Scanner(System.in);System.out.printf("請輸入你的書名:");String name = scanner.nextLine();int currentSize = bookList.getUsedSize();for (int i = 0; i < currentSize; i++) {Book book = bookList.getBook(i);if(book.getName().equals(name)) {System.out.println("已經找到");System.out.println(book);return;}}System.out.println("不存在");}
}
6.IOPeration(接口)
定義一個標準(接口)
package ioperations;
import book.BookList;public interface IOPeration {void work(BookList bookList);
}
7.ReturnOperation(歸還圖書)
package ioperations;
import book.Book;
import book.BookList;import java.util.Scanner;public class ReturnOperation implements IOPeration {@Overridepublic void work(BookList bookList) {System.out.println("歸還圖書");Scanner scanner = new Scanner(System.in);System.out.printf("請輸入你歸還的書名:");String name = scanner.nextLine();int currentSize = bookList.getUsedSize();for (int i = 0; i < currentSize; i++) {Book book = bookList.getBook(i);if(book.getName().equals(name)) {if(book.isBorrowed()) {book.setBorrowed(false);System.out.println("歸還成功");return;}}}System.out.println("不存在");}
}
8.ShowOperation(顯示圖書)
package ioperations;
import book.Book;
import book.BookList;public class ShowOperation implements IOPeration {@Overridepublic void work(BookList bookList) {System.out.println("顯示圖書");int currentSize = bookList.getUsedSize();//3for (int i = 0; i < currentSize; i++) {Book book = bookList.getBook(i);System.out.println(book);}}
}
?三、User
?1.AdminUser(管理員)
管理員可以管理書架,編輯圖書的增加與刪除。
管理員對圖書的數量,圖書號,圖書類型,圖書名稱等進行修改、刪除管理,如果普通用戶在線借書,圖書總數會相應減少。
package user;
import ioperations.*;
import java.util.Scanner;
import ioperations.IOPeration;public class AdminUser extends User{public AdminUser(String name) {super(name);this.operations = new IOPeration[]{new ExitOperation(),new FindOperation(),new AddOperation(),new DelOperation(),new ShowOperation()};}public int menu() {System.out.println("歡迎"+this.name+"來到圖書系統");System.out.println("//");System.out.println("/1. 查找圖書///");System.out.println("/2. 新增圖書///");System.out.println("/3. 刪除圖書///");System.out.println("/4. 顯示圖書///");System.out.println("/0. 退出系統///");System.out.println("//");Scanner scanner = new Scanner(System.in);System.out.println("請輸入你的操作:");int choice = scanner.nextInt();return choice;}}
2.NormalUser(普通用戶)
普通用戶可以借閱書籍,在使用后進行歸還書籍。
package user;
import ioperations.*;import java.util.Scanner;public class NormalUser extends User{public NormalUser(String name) {super(name);this.operations = new IOPeration[]{new ExitOperation(),new FindOperation(),new BorrowOperation(),new ReturnOperation()};}public int menu() {System.out.println("/");System.out.println("//1. 查找圖書/");System.out.println("//2. 借閱圖書/");System.out.println("//3. 歸還圖書/");System.out.println("//0. 退出系統/");System.out.println("/");Scanner scanner = new Scanner(System.in);System.out.println("請輸入你的操作:");int choice = scanner.nextInt();return choice;}
}
3.User
package user;
import book.BookList;
import ioperations.IOPeration;public abstract class User {protected String name;public IOPeration[] operations;public User(String name) {this.name = name;}public abstract int menu();public void doOperation(int choice, BookList bookList) {operations[choice].work(bookList);}public void doIoperation(int choice, BookList bookList) {}
}
?四、Main類
用于將整個項目串聯到一起,然后整合起來運行。
import book.BookList;
import user.AdminUser;
import user.NormalUser;
import user.User;import java.util.Scanner;public class Main {public static User login() {Scanner scanner = new Scanner(System.in);System.out.println("請輸入你的姓名:");String name = scanner.nextLine();System.out.println("請輸入你的身份,1:管理員 2:普通用戶");int choice = scanner.nextInt();if(choice == 1) {return new AdminUser(name);}else {return new NormalUser(name);}}public static void main(String[] args) {BookList bookList =new BookList();System.out.println("你好");User user = login();while (true){int choice =user.menu();user.doIoperation(choice,bookList);}}}