Java實現(xiàn)圖書管理系統(tǒng)的示例代碼
User類
首先創(chuàng)建一個抽象類User,屬性為姓名,提供了構(gòu)造方法和get方法(因為本系統(tǒng)不需要修改名字,所以沒有設(shè)置set方法),有一個able方法,讓子類管理員和普通用戶實現(xiàn)不同的界面和操作。
public abstract class User { private String name; public User(String name){ this.name=name; } abstract void able(); public String getName() { return name; } }
管理員和普通用戶類
這里定義了一個管理員和普通用戶類繼承User類,able方法里是菜單,可選擇界面里的操作
public class AdminUser extends User{ public AdminUser(String name) { super(name); } @Override void able() { BookList bookList=new BookList(); while (true) { System.out.println("***********************"); System.out.println("歡迎 "+getName()+" 登錄圖書管理系統(tǒng)"); System.out.println("1.添加圖書"); System.out.println("2.查看全部圖書"); System.out.println("3.修改圖書"); System.out.println("4.刪除圖書"); System.out.println("0.退出系統(tǒng)"); System.out.println("請輸入您的選擇"); Scanner sc=new Scanner(System.in); int i=sc.nextInt(); Operate.operates[i].work(bookList); } } }
public class normalUser extends User{ public normalUser(String name) { super(name); } @Override void able() { BookList bookList=new BookList(); while (true) { System.out.println("***********************"); System.out.println("歡迎 "+getName()+" 登錄圖書管理系統(tǒng)"); System.out.println("1.查找圖書"); System.out.println("2.借出圖書"); System.out.println("3.歸還圖書"); System.out.println("0.退出系統(tǒng)"); System.out.println("請輸入您的選擇"); Scanner sc=new Scanner(System.in); int i=sc.nextInt(); Operate.operates[i].work(bookList); } } }
Book類
書類,屬性有:書名,價格,狀態(tài)(已借出/未被借出)
告訴大家一個快速生成JavaBean的小技巧,點擊右上角file->Settings-> Plugins->輸入ptj,下載好之后,右鍵點擊下面的PTJ to Javabean,就可以快速生成啦
package BOOK; public class Book { private String name; private int prize; private boolean isBorrowed; public Book() { } public Book(String name, int prize) { this.name = name; this.prize = prize; } /** * 獲取 * @return name */ public String getName() { return name; } /** * 設(shè)置 * @param name */ public void setName(String name) { this.name = name; } /** * 獲取 * @return prize */ public int getPrize() { return prize; } /** * 設(shè)置 * @param prize */ public void setPrize(int prize) { this.prize = prize; } /** * 獲取 * @return isBorrowed */ public boolean IsBorrowed() { return isBorrowed; } public void setNoBorrowed(){ isBorrowed=false; } public void setYesBorrowed(){ isBorrowed=true; } /** * 設(shè)置 * @param isBorrowed */ public void setIsBorrowed(boolean isBorrowed) { this.isBorrowed = isBorrowed; } public String toString() { return "Book{name = " + name + ", prize = " + prize + ", isBorrowed = " + (isBorrowed==false?"未被借出":"已借出")+"}"; } }
BookList類
書架類,定義了一個能放10本書的數(shù)組,提供了一些操作方法,具體請看注釋
package BOOK; public class BookList { private Book[] books=new Book[10]; private int size;//書的數(shù)量 \\構(gòu)造方法,默認放三本書進去 public BookList() { books[0]=new Book("三國", 100000); books[1]=new Book("駱駝祥子", 10); books[2]=new Book("西游記", 90); this.size = 3; } \\添加方法 public void add(Book book){ books[size]=book; size++; } \\獲取有多少本書 public int getSize(){ return size; } \\獲取書架 public Book[] getBooks(){ return books; } \\返回書架上索引為index的書 public Book getBook(int index){ return books[index]; } \\往索引index插入已初始化的book public void setBook(int index,Book book){ books[index]=book; } \\刪除書架上索引為index的書 public void removeBook(int index){ books[index]=null; } \\改變書的數(shù)量為i public void setSize(int i){ size=i; } }
Operate類
只是一個管理員的操作類,作為其他操作的父類,里面初始化一個操作數(shù)組,按照管理員類里輸入的數(shù)字,再比照數(shù)組里操作的索引來實現(xiàn)不同的功能
work方法讓子類去重寫,來實現(xiàn)不同的功能
package Ac; import BOOK.BookList; public class Operate { static public Operate[] operates={ new exitOperate(),\\退出系統(tǒng) new addOperate(),\\添加圖書 new showOperate(),\\展示所有圖書 new updateOperate(),\\修改某一本書 new removeOperate()\\刪除圖書 }; public void work(BookList bookList){ } }
只是一個普通用戶的操作類,和上面的一樣,不在此過多贅述
package Pc; import BOOK.BookList; public class Operate { static public Operate[] operates={ new exitOperate(),\\退出系統(tǒng) new findOperate(),\\查找圖書 new borrowBook(),\\借書 new returnBook()\\歸還圖書 }; public void work(BookList bookList){ } }
退出系統(tǒng)
我相信不用多講,各位dddd
package Ac; import BOOK.BookList; public class exitOperate extends Operate{ @Override public void work(BookList bookList) { System.out.println("退出成功"); System.exit(0); } }
addOperate 添加書籍(管理員)
package Ac; import BOOK.Book; import BOOK.BookList; import java.util.Scanner; public class addOperate extends Operate{ @Override public void work(BookList bookList) { System.out.println("請輸入書名"); Scanner sc=new Scanner(System.in); String name=sc.next(); \\查找書名,相同則錄入失敗 for (int i = 0; i < bookList.getSize(); i++) { Book[] books=bookList.getBooks(); if (bookList.getBook(i).getName().equals(name)){ System.out.println("已有此書,錄入失敗"); return; } } System.out.println("請輸入價格"); int prize=sc.nextInt(); \\把書放入書架 Book book=new Book(name,prize); bookList.add(book); System.out.println("錄入成功"); } }
展示所有圖書(管理員)
很簡單,遍歷書架上所有書就完事了
package Ac; import BOOK.BookList; public class showOperate extends Operate{ @Override public void work(BookList bookList) { if (bookList.getSize()==0){ System.out.println("沒有書"); } for (int i = 0; i < bookList.getSize(); i++) { System.out.println(bookList.getBook(i)); } } }
修改圖書 (管理員)
package Ac; import BOOK.Book; import BOOK.BookList; import java.util.Scanner; public class updateOperate extends Operate{ @Override public void work(BookList bookList) { System.out.println("請輸入您要修改的書的名字"); Scanner sc=new Scanner(System.in); String name=sc.next(); \\查找錄入的書 int i=findBook(bookList,name); if (i!=-1){ \\錄入書名,如果書名存在則錄入失敗 System.out.println("請輸入修改后書名"); String newName=sc.next(); for (int j = 0; j < bookList.getSize(); j++) { Book[] books=bookList.getBooks(); if (bookList.getBook(j).getName().equals(newName)){ System.out.println("已有此書,錄入失敗"); return; } } System.out.println("請輸入修改后價格"); int prize=sc.nextInt(); \\添加書到書架 Book book=new Book(newName,prize); bookList.setBook(i,book); System.out.println("修改成功"); return; } } public int findBook(BookList bookList,String name){ for (int i = 0; i < bookList.getSize(); i++) { Book[] books=bookList.getBooks(); if (bookList.getBook(i).getName().equals(name)){ return i; } } System.out.println("沒有此書??!修改失敗"); return -1; } }
刪除圖書(管理員)
與修改差不多,在此不過多贅述
package Ac; import BOOK.Book; import BOOK.BookList; import java.util.Scanner; public class removeOperate extends Operate{ @Override public void work(BookList bookList) { System.out.println("請輸入要刪除的圖書"); Scanner sc=new Scanner(System.in); String name=sc.next(); int i=findBook(bookList,name); if(i!=-1){ for (int j = i; j < bookList.getSize()-1; j++) { Book book=bookList.getBook(j+1); bookList.setBook(j,book); } bookList.setSize(bookList.getSize()-1); bookList.removeBook(bookList.getSize()); System.out.println("刪除成功"); } } public int findBook(BookList bookList,String name){ for (int i = 0; i < bookList.getSize(); i++) { Book[] books=bookList.getBooks(); if (bookList.getBook(i).getName().equals(name)){ return i; } } System.out.println("沒有此書?。h除失敗"); return -1; } }
查找某一本書(普通用戶)
package Pc; import BOOK.Book; import BOOK.BookList; import java.util.Scanner; public class findOperate extends Operate{ @Override public void work(BookList bookList) { System.out.println("請輸入您要查找的書名"); Scanner sc=new Scanner(System.in); String name=sc.next(); findBook(bookList,name); } public void findBook(BookList bookList,String name){ for (int i = 0; i < bookList.getSize(); i++) { Book[] books=bookList.getBooks(); if (bookList.getBook(i).getName().equals(name)){ System.out.println("找到了?。?); System.out.println(bookList.getBook(i)); return; } } System.out.println("沒有此書!!"); } }
借出圖書(普通用戶)
借書原理很簡單,芝士把某一本書拿出來修改狀態(tài)再塞回書架
package Pc; import BOOK.Book; import BOOK.BookList; import java.util.Scanner; public class borrowBook extends Operate{ @Override public void work(BookList bookList) { System.out.println("請輸入您要借書的書名"); Scanner sc=new Scanner(System.in); String name=sc.next(); int i=findBook(bookList,name); if (i!=-1){ bookList.getBook(i).setYesBorrowed();; System.out.println("成功借出"); return; } } public int findBook(BookList bookList,String name){ for (int i = 0; i < bookList.getSize(); i++) { Book[] books=bookList.getBooks(); if (bookList.getBook(i).getName().equals(name)){ return i; } } System.out.println("沒有此書??!"); return -1; } }
歸還圖書(普通用戶)
與上面的借書操作原理相同
package Pc; import BOOK.Book; import BOOK.BookList; import java.util.Scanner; public class returnBook extends Operate{ @Override public void work(BookList bookList) { System.out.println("請輸入您要歸還的書名"); Scanner sc=new Scanner(System.in); String name=sc.next(); int i=findBook(bookList,name); if (i!=-1){ bookList.getBook(i).setNoBorrowed();; System.out.println("成功歸還"); return; } } public int findBook(BookList bookList,String name){ for (int i = 0; i < bookList.getSize(); i++) { Book[] books = bookList.getBooks(); if (bookList.getBook(i).getName().equals(name)) { return i; } } System.out.println("沒有此書?。?); return -1; } }
到此這篇關(guān)于Java實現(xiàn)圖書管理系統(tǒng)的示例代碼的文章就介紹到這了,更多相關(guān)Java圖書管理系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis 通過攔截器打印完整的sql語句以及執(zhí)行結(jié)果操作
這篇文章主要介紹了mybatis 通過攔截器打印完整的sql語句以及執(zhí)行結(jié)果操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10java 枚舉類定義靜態(tài)valueOf(java.lang.String)方法的問題及解決
這篇文章主要介紹了java 枚舉類定義靜態(tài)valueOf(java.lang.String)方法的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09Java實現(xiàn)數(shù)組去除重復(fù)數(shù)據(jù)的方法詳解
這篇文章主要介紹了Java實現(xiàn)數(shù)組去除重復(fù)數(shù)據(jù)的方法,結(jié)合實例形式詳細分析了java數(shù)組去除重復(fù)的幾種常用方法、實現(xiàn)原理與相關(guān)注意事項,需要的朋友可以參考下2017-09-09詳解Spring-Cloud2.0之Feign調(diào)用遠程服務(wù)指南
這篇文章主要介紹了詳解Spring-Cloud2.0之Feign調(diào)用遠程服務(wù)指南,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01