【java】——課程設(shè)計(jì)經(jīng)典之圖書管理系統(tǒng)

1. Package

(書-包)book

(書-類)Book

package book;
 
/**
 * Created with IntelliJ IDEA.
 * Description:書
 * User: 86155
 * Date: 2022-05-18
 * Time: 10:12
 */
public class Book {
    private String name;//書名
    private String author;//作者
    private int price;//價(jià)格
    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 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;
    }
 
    public boolean isBorrowed() {
        return isBorrowed;
    }
 
    public void setBorrowed(boolean borrowed) {
        isBorrowed = borrowed;
    }
 
    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                ((isBorrowed == true)?", 已借出":", 未借出") +
                '}';
    }
}

(書架-類)

package book;
 
/**
 * Created with IntelliJ IDEA.
 * Description:書架
 * User: 86155
 * Date: 2022-05-18
 * Time: 10:12
 */
public class BookList {
    private Book[] books = new Book[10];//書架最多可以放10本書
    private int usedSize;//記錄書架上放了幾本書
 
    //構(gòu)造函數(shù)
    public BookList(){
        //書架上先放幾本書
        books[0] = new Book("三國(guó)演義","羅貫中",19,"小說(shuō)");
        books[1] = new Book("水滸傳","施耐庵",29,"小說(shuō)");
        books[2] = new Book("西游記","吳承恩",23,"小說(shuō)");
        usedSize = 3;
    }
    //get set 公開(kāi)接口
    //給到下標(biāo)可以從書架上得到書的信息
    public Book getBook(int pos){//pos位置一定是合法的
        return books[pos];
    }
    //往書架上放書
    public void setBooks(int pos,Book book){
        books[pos] = book;
    }
 
    public int getUsedSize() {
        return usedSize;
    }
 
    public void setUsedSize(int usedSize) {
        this.usedSize = usedSize;
    }
}

操作-包)operation

(操作接口)IOperation

package operation;
 
import book.Book;
import book.BookList;
 
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86155
 * Date: 2022-05-18
 * Time: 10:55
 */
public interface IOperation {
    //通過(guò)一個(gè)規(guī)范的接口來(lái)訪問(wèn)操作我的書架
    void work(BookList bookList);
}

(添加圖書)AddOperation

package operation;
 
import book.Book;
import book.BookList;
 
import java.util.Scanner;
 
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86155
 * Date: 2022-05-18
 * Time: 10:57
 */
public class AddOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        //創(chuàng)建出這本書
        System.out.println("新增圖書!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("請(qǐng)輸入圖書的名字:");
        String name = scanner.nextLine();
        System.out.println("請(qǐng)輸入圖書的作者:");
        String author = scanner.nextLine();
        System.out.println("請(qǐng)輸入圖書的價(jià)錢:");
        int price = scanner.nextInt();
        scanner.nextLine();
        System.out.println("請(qǐng)輸入圖書的類型:");
        String type = scanner.nextLine();
 
        Book book = new Book(name,author,price,type);
        //把它放到書架上
        int currentSize = bookList.getUsedSize();
        bookList.setBooks(currentSize,book);
        bookList.setUsedSize(currentSize+1);
 
        System.out.println("新增書籍成功!");
    }
}

(借閱圖書)BorrowOperation

package operation;
 
import book.Book;
import book.BookList;
 
import java.util.Scanner;
 
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86155
 * Date: 2022-05-18
 * Time: 11:03
 */
public class BorrowOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("借閱圖書!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("請(qǐng)輸入你要借閱圖書的名字:");
        String name = scanner.nextLine();
        //遍歷書架
        int currentSize = bookList.getUsedSize();
        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBook(i);
            if(book.getName().equals(name)){
                book.setBorrowed(true);
                System.out.println("借閱成功!");
                return;
            }
        }
        System.out.println("沒(méi)有你要找的書");
    }
}

(刪除圖書)DelOperation

package operation;
 
import book.Book;
import book.BookList;
 
import java.util.Scanner;
 
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86155
 * Date: 2022-05-18
 * Time: 10:59
 */
public class DelOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("刪除圖書!");
        System.out.println("請(qǐng)輸入你要輸出圖書的名字:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        //遍歷書架
        int currentSize = bookList.getUsedSize();
        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBook(i);
            if(book.getName().equals(name)){
                for (int j = i; j < currentSize; j++) {
                    bookList.setBooks(j,bookList.getBook(j+1));
                }
                bookList.setUsedSize(currentSize-1);
                System.out.println("刪除成功!");
                return;
            }
        }
        System.out.println("沒(méi)有你要找的書");
    }
}

(顯示圖書)DisplayOperation

package operation;
 
import book.Book;
import book.BookList;
 
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86155
 * Date: 2022-05-18
 * Time: 11:00
 */
public class DisplayOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("顯示圖書!");
        //遍歷書架
        int currentSize = bookList.getUsedSize();
        for (int i = 0; i < currentSize; i++) {
            System.out.println(bookList.getBook(i));
        }
    }
}

(退出系統(tǒng))ExitOperation

package operation;
 
import book.BookList;
 
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86155
 * Date: 2022-05-18
 * Time: 11:02
 */
public class ExitOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("退出系統(tǒng)!");
        System.exit(0);
    }
}

(查找圖書)FindOperation

package operation;
 
import book.Book;
import book.BookList;
 
import java.util.Scanner;
 
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86155
 * Date: 2022-05-18
 * Time: 10:58
 */
public class FindOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("查找圖書!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("請(qǐng)輸入你要查找圖書的名字:");
        String name = scanner.nextLine();
        //遍歷書架
        int currentSize = bookList.getUsedSize();
        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBook(i);
            if(book.getName().equals(name)){
                System.out.println("找到了這本書!");
                System.out.println(book);
                return;
            }
        }
        System.out.println("沒(méi)有你要找的書");
    }
}

(歸還圖書)ReturnOperation

package operation;
 
import book.Book;
import book.BookList;
 
import java.util.Scanner;
 
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86155
 * Date: 2022-05-18
 * Time: 11:04
 */
public class ReturnOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("歸還圖書!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("請(qǐng)輸入你要?dú)w還圖書的名字:");
        String name = scanner.nextLine();
        //遍歷書架
        int currentSize = bookList.getUsedSize();
        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBook(i);
            if(book.getName().equals(name)){
                book.setBorrowed(false);
                System.out.println("歸還成功!");
                return;
            }
        }
        System.out.println("沒(méi)有你要找的書");
    }
}

(用戶-包)user

(用戶父類)User

package user;
 
import book.BookList;
import operation.IOperation;
 
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86155
 * Date: 2022-05-18
 * Time: 11:08
 */
//不管是普通人員還是管理人員,其父類都是User
public abstract class User {
    protected String name;//用戶名
    protected IOperation[] iOperations;//接口數(shù)組 - 菜單選擇的操作
 
    public User(String name){
        this.name = name;
    }
    public abstract int menu();
    //用來(lái)訪問(wèn)接口數(shù)組的哪個(gè)函數(shù)來(lái)操作書架
    public void doOperation(int choice , BookList bookList){
        this.iOperations[choice].work(bookList);//操作數(shù)選擇了幾,就調(diào)用這個(gè)函數(shù)的work方法
    }
}

(管理員)AdminUser

package user;
 
import operation.*;
 
import java.util.Scanner;
 
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86155
 * Date: 2022-05-18
 * Time: 11:12
 */
public class AdminUser extends User{
    //顯示的幫助父類構(gòu)造
    public AdminUser(String name){
        super(name);
        this.iOperations = new IOperation[]{
                new ExitOperation(),
                new FindOperation(),
                new AddOperation(),
                new DelOperation(),
                new DisplayOperation()
        };
    }
    //菜單
    public int menu(){
        System.out.println("歡迎"+this.name+"管理圖書館!");
        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 scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
}

(普通用戶)NormalUser

package user;
 
import operation.*;
 
import java.util.Scanner;
 
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86155
 * Date: 2022-05-18
 * Time: 11:11
 */
public class NormalUser extends User{
    public NormalUser(String name){
        super(name);
        this.iOperations = new IOperation[]{
                new ExitOperation(),
                new FindOperation(),
                new BorrowOperation(),
                new ReturnOperation()
        };
    }
    //菜單
    public int menu(){
        System.out.println("歡迎"+this.name+"來(lái)到圖書館!");
        System.out.println("1.查找圖書");
        System.out.println("2.借閱圖書");
        System.out.println("3.歸還圖書");
        System.out.println("0.退出系統(tǒng)");
        System.out.println("請(qǐng)輸入你的操作:");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
}

(開(kāi)始函數(shù))Main

import book.BookList;
import user.AdminUser;
import user.NormalUser;
import user.User;
 
import javax.jws.soap.SOAPBinding;
import java.util.Scanner;
 
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86155
 * Date: 2022-05-18
 * Time: 11:32
 */
public class Main {
    public static User login(){
        System.out.println("請(qǐng)輸入你的用戶名:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
 
        System.out.println("請(qǐng)輸入你的身份:1:管理員  0:普通用戶");
        int choice = scanner.nextInt();
        if(choice == 1){
            return new AdminUser(name);
        }else{
            return new NormalUser(name);
        }
    }
    //開(kāi)始整合
    public static void main(String[] args) {
        //1.準(zhǔn)備圖書
        BookList bookList = new BookList();
        //2.登錄
        User user = login();
        while(true){
            //3.根據(jù)登錄的身份打印菜單 多態(tài)
            int choice = user.menu();
            user.doOperation(choice,bookList);
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 因文而來(lái) 為藝而興汝州市第三高級(jí)中學(xué) 一、2022年汝州三高招生計(jì)劃情況如何? 我校2022年普通高中招生計(jì)劃為1...
    淅霖科技閱讀 379評(píng)論 0 0
  • 緩存擊穿,緩存穿透,緩存雪崩 緩存擊穿 緩存擊穿跟緩存雪崩有點(diǎn)類似,緩存雪崩是大規(guī)模的key失效,而緩存擊穿是某個(gè)...
    吳旭東_家族三期閱讀 304評(píng)論 0 0
  • #日誦詩(shī)情,畫意日趣# #日誦之20220604 奉和中書舍人賈至早朝大明宮 唐岑參 雞鳴紫陌曙光寒,鶯囀皇州春色...
    人生下伴場(chǎng)閱讀 189評(píng)論 0 1
  • 三年(公元652年) 1、 春,正月一日,吐谷渾、新羅、高麗、百濟(jì)都遣使入貢。 2、 正月五日,梁建方、契苾何力等...
    華杉2009閱讀 1,250評(píng)論 0 15
  • 0604自由聯(lián)想+拉回來(lái)看自己練習(xí)@所有人 1、從這張圖上你可以看到哪些元素或者場(chǎng)景? 2、請(qǐng)從其中至少挑選2個(gè)元...
    心靈療愈閱讀 209評(píng)論 0 0

友情鏈接更多精彩內(nèi)容