Java實(shí)現(xiàn)圖書管理系統(tǒng)的示例代碼
User類
首先創(chuàng)建一個(gè)抽象類User,屬性為姓名,提供了構(gòu)造方法和get方法(因?yàn)楸鞠到y(tǒng)不需要修改名字,所以沒有設(shè)置set方法),有一個(gè)able方法,讓子類管理員和普通用戶實(shí)現(xiàn)不同的界面和操作。
public abstract class User { private String name; public User(String name){ this.name=name; } abstract void able(); public String getName() { return name; } }
管理員和普通用戶類
這里定義了一個(gè)管理員和普通用戶類繼承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("請(qǐng)輸入您的選擇"); 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("請(qǐng)輸入您的選擇"); Scanner sc=new Scanner(System.in); int i=sc.nextInt(); Operate.operates[i].work(bookList); } } }
Book類
書類,屬性有:書名,價(jià)格,狀態(tài)(已借出/未被借出)
告訴大家一個(gè)快速生成JavaBean的小技巧,點(diǎn)擊右上角file->Settings-> Plugins->輸入ptj,下載好之后,右鍵點(diǎn)擊下面的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類
書架類,定義了一個(gè)能放10本書的數(shù)組,提供了一些操作方法,具體請(qǐng)看注釋
package BOOK; public class BookList { private Book[] books=new Book[10]; private int size;//書的數(shù)量 \\構(gòu)造方法,默認(rèn)放三本書進(jìn)去 public BookList() { books[0]=new Book("三國(guó)", 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類
只是一個(gè)管理員的操作類,作為其他操作的父類,里面初始化一個(gè)操作數(shù)組,按照管理員類里輸入的數(shù)字,再比照數(shù)組里操作的索引來(lái)實(shí)現(xiàn)不同的功能
work方法讓子類去重寫,來(lái)實(shí)現(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){ } }
只是一個(gè)普通用戶的操作類,和上面的一樣,不在此過多贅述
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("請(qǐng)輸入書名"); 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("請(qǐng)輸入價(jià)格"); int prize=sc.nextInt(); \\把書放入書架 Book book=new Book(name,prize); bookList.add(book); System.out.println("錄入成功"); } }
展示所有圖書(管理員)
很簡(jiǎn)單,遍歷書架上所有書就完事了
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("請(qǐng)輸入您要修改的書的名字"); Scanner sc=new Scanner(System.in); String name=sc.next(); \\查找錄入的書 int i=findBook(bookList,name); if (i!=-1){ \\錄入書名,如果書名存在則錄入失敗 System.out.println("請(qǐng)輸入修改后書名"); 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("請(qǐng)輸入修改后價(jià)格"); 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("請(qǐng)輸入要?jiǎng)h除的圖書"); 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("沒有此書??!刪除失敗"); 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("請(qǐng)輸入您要查找的書名"); 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("沒有此書!!"); } }
借出圖書(普通用戶)
借書原理很簡(jiǎn)單,芝士把某一本書拿出來(lái)修改狀態(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("請(qǐng)輸入您要借書的書名"); 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("請(qǐng)輸入您要?dú)w還的書名"); 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實(shí)現(xiàn)圖書管理系統(tǒng)的示例代碼的文章就介紹到這了,更多相關(guān)Java圖書管理系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談Java后臺(tái)對(duì)JSON格式的處理操作
下面小編就為大家?guī)?lái)一篇淺談Java后臺(tái)對(duì)JSON格式的處理操作。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2016-06-06mybatis 通過攔截器打印完整的sql語(yǔ)句以及執(zhí)行結(jié)果操作
這篇文章主要介紹了mybatis 通過攔截器打印完整的sql語(yǔ)句以及執(zhí)行結(jié)果操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-10-10java 枚舉類定義靜態(tài)valueOf(java.lang.String)方法的問題及解決
這篇文章主要介紹了java 枚舉類定義靜態(tài)valueOf(java.lang.String)方法的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Java實(shí)現(xiàn)數(shù)組去除重復(fù)數(shù)據(jù)的方法詳解
這篇文章主要介紹了Java實(shí)現(xiàn)數(shù)組去除重復(fù)數(shù)據(jù)的方法,結(jié)合實(shí)例形式詳細(xì)分析了java數(shù)組去除重復(fù)的幾種常用方法、實(shí)現(xiàn)原理與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-09-09詳解Spring-Cloud2.0之Feign調(diào)用遠(yuǎn)程服務(wù)指南
這篇文章主要介紹了詳解Spring-Cloud2.0之Feign調(diào)用遠(yuǎn)程服務(wù)指南,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2019-01-01如何實(shí)現(xiàn)java Iterator迭代器功能
這篇文章主要介紹了如何實(shí)現(xiàn)java Iterator迭代器功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01