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("三國", 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ù)組里操作的索引來實(shí)現(xiàn)不同的功能
work方法讓子類去重寫,來實(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("錄入成功");
}
}展示所有圖書(管理員)
很簡單,遍歷書架上所有書就完事了
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("沒有此書!!");
}
}借出圖書(普通用戶)
借書原理很簡單,芝士把某一本書拿出來修改狀態(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)文章
mybatis實(shí)現(xiàn)查詢操作及獲得添加的ID
這篇文章主要介紹了mybatis實(shí)現(xiàn)查詢操作及獲得添加的ID,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11
Java進(jìn)行Appium自動(dòng)化測(cè)試的實(shí)現(xiàn)
這篇文章主要介紹了Java進(jìn)行Appium自動(dòng)化測(cè)試的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
@TransactionalEventListener的使用和實(shí)現(xiàn)原理分析
這篇文章主要介紹了@TransactionalEventListener的使用和實(shí)現(xiàn)原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
IDEA報(bào)錯(cuò):java:無效的源發(fā)行版21解決方式
這篇文章主要給大家介紹了關(guān)于IDEA報(bào)錯(cuò):java:無效的源發(fā)行版21的解決方式,這個(gè)錯(cuò)誤是因?yàn)槟愕捻?xiàng)目使用的Java版本與你的IDEA使用的Java版本不一致導(dǎo)致的,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06
java解析json復(fù)雜數(shù)據(jù)的方法詳解
這篇文章主要為大家詳細(xì)介紹了java解析json復(fù)雜數(shù)據(jù)的兩種常用方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以了解下2024-01-01
java批量采集豌豆莢網(wǎng)站Android應(yīng)用圖標(biāo)和包名
這篇文章主要介紹了java批量采集豌豆莢網(wǎng)站Android應(yīng)用圖標(biāo)和包名,主要用在做主題時(shí)替換這些常見應(yīng)用的圖片,需要的朋友可以參考下2014-06-06

