欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java手寫圖書管理基本功能附代碼

 更新時間:2022年04月26日 14:49:53   作者:星鴉wyk  
隨著網絡技術的高速發(fā)展,計算機應用的普及,利用計算機對圖書館的日常工作進行管理勢在必行,本篇文章手把手帶你用Java實現(xiàn)一個圖書管理系統(tǒng),大家可以在過程中查缺補漏,提升水平

Java中的最主要的語法之前基本都介紹完畢,本篇將使用之前的內容來寫一個簡單的圖書管理系統(tǒng),中間會展示部分代碼來講解,源碼地址在這??項目: 個人練習的項目 - Gitee.com

首先還是來看看運行的效果

我們來分析一下:

Java中是通過對象之間的交互來解決事情的,所以我們來看看有哪些對象

首先顯而易見的兩個對象:用戶和書,所以創(chuàng)建兩個包book和user

通過上圖可以看到:不同用戶之間有相同的操作,也有不同的操作,所以不妨將所有的操作都放在一個包中,需要什么操作直接調用即可,我將這個包命名為operate

1.book包

首先包中肯定需要有一個Book類,此類中記錄數(shù)的各種信息,包括書名、作者、書的類型、價格和借閱狀態(tài),所有包中的所有類中的成員變量我都使用private修飾,只提供對外的方法,后面就不再重復,代碼如下(只展示部分代碼):

package book;
public class Book {
    private String name;
    private String author;
    private String type;
    private int price;
    private boolean borrow;
    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;
    }
}

既然有書,那么就需要書架來存放書,所以在book包中再定義一個類為BookShelf用來存放書以及記錄書的數(shù)量,存放書可以用Book類數(shù)組實現(xiàn)

public class BookShelf {
    private Book[] books=new Book[1000];
    private int count; //記錄書的數(shù)量
}

由于數(shù)組不能直接訪問,所以在類中增加一個獲取數(shù)組下標的方法,而訪問數(shù)組的方法一般都是對書進行操作,所以setBook方法也進行修改

package book;
public class BookShelf {
    private Book[] books=new Book[1000];
    private int count; //記錄書的數(shù)量
    public void setBooks(int pos,Book book) {
        books[pos] = book;
    }
    public int getCount() {
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
    public BookShelf() {
        books[0]=new Book("吶喊","魯迅","小說集",30); //默認初始有一本書,寫不寫隨你
        this.count=1;
    }
    //獲取下標對應的書
    public Book pos(int i) {
        return books[i];
    }
}

book包初步的代碼就到這,繼續(xù)下一個包

2.user包

包中肯定會有普通用戶(NormalUser)和管理員(AdminUser)兩個類,但重點是如何實現(xiàn)圖中的不同用戶有不同的操作

那我們先將登陸方法寫出來,然后分析:

 public static void login() {
        System.out.println("輸入姓名:");
        Scanner scanner=new Scanner(System.in);
        String name=scanner.nextLine();
        System.out.println("輸入你身份:1.管理員  2.普通用戶");
        int i=scanner.nextInt();
        if(i==1) {
            //管理員
        } else {
            //普通用戶
        }
    }

方法根據(jù)不同的數(shù)字來判斷是哪種用戶,所以返回值應該是返回一個類,但這里有兩個類,為解決這個問題,我們可以讓NormalUser和AdminUser都繼承同一個父類,方法只要返回父類即可

父類代碼如下:

public abstract class User { 
    private String name;
     public User(String name) {
        this.name = name;
    }
    public abstract void menu(); //菜單抽象方法,子類實現(xiàn)
}

子類代碼:

public class AdminUser extends User{
    public AdminUser(String name) {
        super(name);
    }
     @Override
    public void menu() {
        System.out.println("歡迎使用");
        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("選擇操作");
    }
}
public class NormalUser extends User{
    public NormalUser(String name) {
        super(name);
    }
    @Override
    public void menu() {
        System.out.println("歡迎使用");
        System.out.println("1.查找圖書");
        System.out.println("2.借閱圖書");
        System.out.println("3.歸還圖書");
        System.out.println("0.退出系統(tǒng)");
        System.out.println("選擇操作");
    }
}

不同用戶對應著不同的操作,但有相同的操作數(shù),所以兩個類需要有一個數(shù)組來存放各自的方法來防止出錯,而且這個數(shù)組是要在用戶選擇之前就準備好,所以數(shù)組應該是在構造方法內,修改后的類如下:

public abstract class User {
    private String name;
    public IOperate[] ioperate;
    public void chooseOperate(int choice,BookShelf bookShelf) {
        ioperate[choice].work(bookShelf);
    }
    public User(String name) {
        this.name = name;
    }
    public abstract int menu();
}
public class AdminUser extends User{
    public AdminUser(String name) {
        super(name);
        this.ioperate=new IOperate[] {
                new Exit(),
                new FindBook(),
                new AddBook(),
                new DelBook(),
                new DisplayBook(),
        };
    }
    @Override
    public int menu() {
        System.out.println("歡迎使用");
        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 scanner=new Scanner(System.in);
        int choice=scanner.nextInt();
        return choice;
    }
}
public class NormalUser extends User{
    public NormalUser(String name) {
        super(name);
        this.ioperate=new IOperate[] {
                new Exit(),
                new FindBook(),
                new BorrowBook(),
                new ReturnBook(),
        };
    }
    @Override
    public int menu() {
        System.out.println("歡迎使用");
        System.out.println("1.查找圖書");
        System.out.println("2.借閱圖書");
        System.out.println("3.歸還圖書");
        System.out.println("0.退出系統(tǒng)");
        System.out.println("選擇操作");
        Scanner scanner=new Scanner(System.in);
        int choice=scanner.nextInt();
        return choice;
    }
}

3.operate包

圖書的增刪改查等操作其實都是在對Book數(shù)組來進行操作的,所以這些方法的參數(shù)都是BookShelf類,那么我們可以定義一個接口,接口內定義此方法,然后其它類實現(xiàn)此接口即可

接口代碼:

package operate;
import book.BookShelf;
public interface IOperate {
    public void work (BookShelf bookShelf);
}

至于對書的操作,這里以增加書籍為例

我們需要知道書的信息,然后要有一個Book類來接收,最后放到數(shù)組中

按照這個邏輯,之前的Book類就需要修改:在Book類中添加一個構造方法以便接收書的信息,注意方法在數(shù)組中的位置要和你自己寫的菜單中的位置對應

public Book(String name, String author, String type, int price) {
        this.name = name;
        this.author = author;
        this.type = type;
        this.price = price;
    }

增加書的方法代碼:

public class AddBook implements IOperate {
    @Override
    public void work(BookShelf bookShelf) {
        System.out.println("請輸入圖書的名字:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        System.out.println("請輸入圖書的作者:");
        String author = scanner.nextLine();
        System.out.println("請輸入圖書的類型:");
        String type = scanner.nextLine();
        System.out.println("請輸入圖書的價格:");
        int price = scanner.nextInt();
        Book book = new Book(name,author,type,price);
        int count=bookShelf.getCount();
        bookShelf.setBooks(count,book);
        bookShelf.setCount(count+1);
        System.out.println("新增成功");
    }
}

注:

1.由于引用變量默認是輸出修改的地址,所以要打印書的內容的話需要在類Book中重寫toString方法

2.退出方法在退出前需遍歷數(shù)組將其指向的對象都改為null方便回收,雖然程序結束后系統(tǒng)也會回收,但你要知道大型工程里面有些程序一旦跑起來后想要停下來不是那么容易的

到這里這個圖書管理系統(tǒng)基本完成,完

到此這篇關于Java手寫圖書管理基本功能附代碼的文章就介紹到這了,更多相關Java圖書管理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring中的@ControllerAdvice三種用法詳解

    Spring中的@ControllerAdvice三種用法詳解

    這篇文章主要介紹了Spring中的@ControllerAdvice三種用法詳解,加了@ControllerAdvice的類為那些聲明了(@ExceptionHandler、@InitBinder或@ModelAttribute注解修飾的)方法的類而提供的<BR>專業(yè)化的@Component,以供多個Controller類所共享,需要的朋友可以參考下
    2024-01-01
  • 淺談SpringBoot是如何實現(xiàn)日志的

    淺談SpringBoot是如何實現(xiàn)日志的

    這篇文章主要介紹了淺談SpringBoot是如何實現(xiàn)日志的,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • Spring接口ApplicationRunner用法詳解

    Spring接口ApplicationRunner用法詳解

    這篇文章主要介紹了Spring接口ApplicationRunner的作用和使用介紹,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Java數(shù)據(jù)類型超詳細示例講解

    Java數(shù)據(jù)類型超詳細示例講解

    Java程序中要求參與的計算的數(shù)據(jù),必須要保證數(shù)據(jù)類型的一致性,如果數(shù)據(jù)類型不一致將發(fā)生類型的轉換。本文將通過示例詳細說說Java中數(shù)據(jù)類型的轉換,感興趣的可以了解一下
    2022-11-11
  • 全面理解Java類和對象

    全面理解Java類和對象

    下面小編就為大家?guī)硪黄胬斫釰ava類和對象。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • IDEA創(chuàng)建SpringBoot的maven項目的方法步驟

    IDEA創(chuàng)建SpringBoot的maven項目的方法步驟

    這篇文章主要介紹了IDEA創(chuàng)建SpringBoot的maven項目的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • 面向對象編程依賴注入詳解

    面向對象編程依賴注入詳解

    本文主要介紹面向對象編程依賴注入的知識資料,這里對依賴注入的資料做了詳細介紹,有興趣的小伙伴可以參考下
    2016-08-08
  • mybatis-plus?查詢傳入參數(shù)Map,返回List<Map>方式

    mybatis-plus?查詢傳入參數(shù)Map,返回List<Map>方式

    這篇文章主要介紹了mybatis-plus?查詢傳入參數(shù)Map,返回List<Map>方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java的Jackson將json字符串轉換成泛型List

    java的Jackson將json字符串轉換成泛型List

    這篇文章主要介紹了java的Jackson將json字符串轉換成泛型List ,這里整理了詳細的代碼,有需要的小伙伴可以參考下。
    2017-02-02
  • mybatis where 標簽使用

    mybatis where 標簽使用

    where標記的作用類似于動態(tài)sql中的set標記,本文主要介紹了mybatis where 標簽使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論