圖書管理系統(tǒng)
代碼主要分為四個大部分,主函數,圖書相關函數,操作,以及使用者。分為三個包:book、operation、user和一個單獨的主函數。
主函數
import book.BookList;
import user.AdiminUser;
import user.NormalUser;
import user.User;
import java.util.Scanner;
public class Main {
public static User login() {
System.out.println("請輸入姓名:");
Scanner scan=new Scanner(System.in);
String name=scan.nextLine();
System.out.println("請輸入你的身份(1->管理員 0->用戶):");
int id=scan.nextInt();
if(id==1){
return new AdiminUser(name);
}else{
return new NormalUser(name);
}
}
public static void main(String[] args) {
BookList bookList =new BookList();
while(true) {
User user=login();
int choice = user.menu();
user.doOperation(choice, bookList);//對圖書進行相關的操作
}
}
}
圖書相關操作(operation包)
操作接口
對于每一個操作都有相近的一部分,剛好可以用接口,在User(使用者)中利用接口類型的數組來進行相關的操作。在下面的User中會具體說。
package operation;
import book.Book;
import book.BookList;
public interface IOpreation {
public void work(BookList booklist);
}
增加圖書
增加圖書只需要在數組的最后添加即可,于是要利用booklist.getUsedsize();得到圖書數組的使用長度,決定要增加的圖書應該所在的位置。
package operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class AddOperation implements IOpreation{
@Override
public void work(BookList booklist) {
System.out.println("新增圖書");
int size=booklist.getUsedsize();
Scanner scan=new Scanner(System.in);
System.out.println("請輸入圖書名稱:");
String name=scan.nextLine();
System.out.println("請輸入圖書作者:");
String anuthor=scan.nextLine();
System.out.println("請輸入圖書價格:");
int price=scan.nextInt();
System.out.println("請輸入圖書種類:");
String type=scan.nextLine();
Book book=new Book(name,anuthor,price,type);
booklist.setBooklist(size,book);
System.out.println("新增書籍成功");
booklist.setUsedsize(size+1);
}
}
借閱圖書
對于借閱圖書只需要將圖書信息中的布爾型變量isBorrowed變量變?yōu)閠rue即可,首先還是要遍歷booklist找到該書。
package operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class BorrowOperation implements IOpreation {
public void work(BookList booklist){
System.out.println("借閱圖書");
Scanner scan=new Scanner(System.in);
System.out.println("請輸入要借閱的書籍名稱:");
String name=scan.nextLine();
int size=booklist.getUsedsize();
for (int i = 0; i <size ; i++) {
Book book=booklist.getBook(i);
if(book.getName().equals(name)){
book.setBorrowed(true);
System.out.println("借閱成功");
System.out.println("該書籍的信息為:");
System.out.println(book);
return;
}
}
System.out.println("該書籍不存在");
}
}
刪除書籍
類似于借閱書籍,首先要先找到你要刪除的書籍,因此設置一個中間變量,index來判斷是否存在該書籍,對于書籍同樣也是要遍歷booklist,對于刪除操作只需要用后一個覆蓋前一個的內容即利用for循環(huán)前移即可。
package operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class DeleteOperation implements IOpreation{
@Override
public void work(BookList booklist) {
System.out.println("刪除圖書");
Scanner scan=new Scanner(System.in);
System.out.println("請輸入要刪除的圖書名稱:");
String name= scan.nextLine();
int size=booklist.getUsedsize();
int index=-1;
for (int i = 0; i <size ; i++) {
Book book=booklist.getBook(i);
if(book.getName().equals(name)){
index=i;
break;
}
}
if(index==-1){
System.out.println("不存在你想要刪除的書籍");
}
//刪除操作
for (int i = index; i <size-1 ; i++) {
Book book=booklist.getBook(i+1);
booklist.setBooklist(i,book);
}
System.out.println("刪除成功");
booklist.setUsedsize(size-1);
}
}
顯示書籍
同樣利用booklist.getUsedsize();得到數組的使用長度,然后利用for循環(huán)將每本書依次打印出來即可。
package operation;
import book.Book;
import book.BookList;
import java.util.Arrays;
public class DisplayOperation implements IOpreation{
@Override
public void work(BookList booklist) {
System.out.println("顯示圖書");
int size=booklist.getUsedsize();
for (int i = 0; i < size; i++) {
Book book=booklist.getBook(i);
System.out.println(book);
}
}
}
退出系統(tǒng)
package operation;
import book.Book;
import book.BookList;
public class ExitOperation implements IOpreation{
@Override
public void work(BookList booklist) {
System.out.println("退出系統(tǒng)");
System.exit(0);
}
}
查找圖書
主要是比較booklist中圖書的名字與輸入的名字之間是否相同,要先將數組中的某一本圖書賦給一個Book類的變量book然后才能進行比較(Book book=booklist.getBook(i);)book.getName().equals(name)。
package operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class FindOperation implements IOpreation{
@Override
public void work(BookList booklist) {
System.out.println("查找圖書");
Scanner scan=new Scanner(System.in);
System.out.println("請輸入要查找的書籍名稱:");
String name=scan.nextLine();
int size=booklist.getUsedsize();
for (int i = 0; i <size ; i++) {
Book book=booklist.getBook(i);
if(book.getName().equals(name)){
System.out.println("查找成功,該書籍的信息為:");
System.out.println(book);
return;
}
}
System.out.println("不存在你要查找的書籍");
}
}
歸還書籍
和借閱圖書進行對比可只,借閱圖書是將isBorrowed變量由false變?yōu)閠rue,那么歸還圖書就是將isBorrowed變量由true變?yōu)閒alse.
package operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class ReturnOperation implements IOpreation{
@Override
public void work(BookList booklist) {
System.out.println("歸還圖書");
Scanner scan=new Scanner(System.in);
System.out.println("請輸入要歸還的書籍名稱:");
String name=scan.nextLine();
int size=booklist.getUsedsize();
for (int i = 0; i <size ; i++) {
Book book=booklist.getBook(i);
if(book.getName().equals(name)){
book.setBorrowed(false);
System.out.println("歸還成功");
System.out.println("該書籍的信息為:");
System.out.println(book);
break;
}
}
}
}
圖書及“書架”(book包)
圖書
需要說明的是在重寫的toString函數中(toString函數在Object類中,它被認為是所有類的父類)(isBorrowed == true ? " 已借出 “:” 未借出 ") 將true和false轉換為文字。
package 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 boolean isBorrowed() {
return isBorrowed;
}
public void setBorrowed(boolean borrowed) {
isBorrowed = borrowed;
}
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;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\t' +
", author='" + author + '\t' +
", price=" + price +
", type='" + type + '\t' +
(isBorrowed == true ? " 已借出 ":" 未借出 ") +
'}';
}
}
“書架”
書架就可以看成以Book為基本數據類型的一個數組,要設立數組使用長度,便于后續(xù)操作。
package book;
public class BookList {
private Book[] booklist=new Book[10];
private int usedsize;
public BookList(){
this.booklist[0]=new Book("三國演義","羅貫中",28,"小說");
this.booklist[1]=new Book("水滸傳","施耐庵",36,"小說");
this.booklist[2]=new Book("紅樓夢","曹雪芹",56,"小說");
this.booklist[3]=new Book("西游記","吳承恩",35,"小說");
this.usedsize=4;
}
public int getUsedsize() {
return usedsize;
}
public void setUsedsize(int usedsize) {
this.usedsize = usedsize;
}
public void setBooklist(int pos,Book book){
booklist[pos]=book;
}
public Book getBook(int pos){
return booklist[pos];
}
}
使用人群(user包)
user父類
這里有一個protected IOpreation[] iOpreations;即接口類型的數組,主要是在它的子類中,在構造函數中需要根據它們各自的功能實例化各個操作。
package user;
import book.BookList;
import operation.IOpreation;
public abstract class User {
protected String name;
protected IOpreation[] iOpreations;
public User(String name){
this.name=name;
}
public abstract int menu();
public void doOperation(int choice, BookList bookList){
this.iOpreations[choice].work(bookList);
}
}
普通使用人員
上面說的 IOpreation[] iOpreations,在這里就實例化了
this.iOpreations=new IOpreation[]{
new FindOperation(),
new BorrowOperation(),
new ReturnOperation(),
new ExitOperation()
對于選擇的操作序號我們也要返回,從而在主函數中調用User類中的doOperation操作,要注意在上面對操作進行實例化時要與下面菜單的順序一致。文章來源:http://www.zghlxwxcb.cn/news/detail-492918.html
package user;
import operation.*;
import java.util.Scanner;
public class NormalUser extends User {
public NormalUser(String name) {
super(name);
this.iOpreations=new IOpreation[]{
new FindOperation(),
new BorrowOperation(),
new ReturnOperation(),
new ExitOperation()
};
}
public int menu(){
System.out.println("********普通人員菜單*********");
System.out.println("歡迎"+name+"進入圖書借閱系統(tǒng)");
System.out.println("0 查找書籍");
System.out.println("1 借閱書籍");
System.out.println("2 歸還書籍");
System.out.println("3 退出系統(tǒng)");
Scanner scan=new Scanner(System.in);
int choice=scan.nextInt();
return choice;
}
}
管理員
與上面的普通人員除了操作不同之外,其他都是同樣的道理。文章來源地址http://www.zghlxwxcb.cn/news/detail-492918.html
package user;
import operation.*;
import java.util.Scanner;
public class AdiminUser extends User{
public AdiminUser(String name) {
super(name);
this.iOpreations=new IOpreation[]{
new DisplayOperation(),
new DeleteOperation(),
new AddOperation(),
new FindOperation(),
new ExitOperation()
};
}
public int menu() {
System.out.println("********管理員菜單**********");
System.out.println("歡迎"+name+"進入管理員菜單");
System.out.println("0 顯示書籍");
System.out.println("1 刪除書籍");
System.out.println("2 增加書籍");
System.out.println("3 查找書籍");
System.out.println("4 退出系統(tǒng)");
System.out.println("***************************");
Scanner scan = new Scanner(System.in);
int choice = scan.nextInt();
return choice;
}
}
到了這里,關于JAVA圖書管理系統(tǒng)詳細代碼的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!