Java實(shí)現(xiàn)圖書管理系統(tǒng)的示例代碼
User類
首先創(chuàng)建一個(gè)抽象類User,屬性為姓名,提供了構(gòu)造方法和get方法(因?yàn)楸鞠到y(tǒng)不需要修改名字,所以沒(méi)有設(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è)普通用戶的操作類,和上面的一樣,不在此過(guò)多贅述
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("沒(méi)有書");
}
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("沒(méi)有此書!!修改失敗");
return -1;
}
}刪除圖書(管理員)
與修改差不多,在此不過(guò)多贅述
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("沒(méi)有此書?。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("請(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("沒(méi)有此書!!");
}
}借出圖書(普通用戶)
借書原理很簡(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("沒(méi)有此書??!");
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("沒(méi)有此書??!");
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中的xxxable和xxxator使用及說(shuō)明
這篇文章主要介紹了java中的xxxable和xxxator使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
淺談Java后臺(tái)對(duì)JSON格式的處理操作
下面小編就為大家?guī)?lái)一篇淺談Java后臺(tái)對(duì)JSON格式的處理操作。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
mybatis 通過(guò)攔截器打印完整的sql語(yǔ)句以及執(zhí)行結(jié)果操作
這篇文章主要介紹了mybatis 通過(guò)攔截器打印完整的sql語(yǔ)句以及執(zhí)行結(jié)果操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
java 枚舉類定義靜態(tài)valueOf(java.lang.String)方法的問(wèn)題及解決
這篇文章主要介紹了java 枚舉類定義靜態(tài)valueOf(java.lang.String)方法的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Java實(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ù)指南,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
如何實(shí)現(xiàn)java Iterator迭代器功能
這篇文章主要介紹了如何實(shí)現(xiàn)java Iterator迭代器功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01

