最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java快速實現(xiàn)圖書管理基本功能

 更新時間:2022年05月07日 11:59:25   作者:菜菜不恰菜  
隨著網(wǎng)絡(luò)技術(shù)的高速發(fā)展,計算機應(yīng)用的普及,利用計算機對圖書館的日常工作進行管理勢在必行,本篇文章涵蓋一個圖書管理系統(tǒng)的基本功能實現(xiàn)代碼,大家可以查缺補漏,提升水平

前言

今天的內(nèi)容主要是利用前面所學(xué)的知識點:類,抽象類,封裝,繼承,多態(tài),接口等進行的一個簡單的代碼練習(xí)。

主要要求:

1、用戶登錄

2、管理端

  • 查找圖書
  • 新增圖書
  • 刪減圖書
  • 顯示圖書列表
  • 退出系統(tǒng)

3、用戶端

  • 查找圖書
  • 借閱圖書
  • 歸還圖書
  • 退出系統(tǒng)

我們可以將以上內(nèi)容分為對書的創(chuàng)建初始化,對用戶的操作,對書的操作。

主函數(shù)

Main:(對所有流程進行整合)

import book.BookList;
import User.NormalUser;
import User.AdminUser;
import User.user;
import java.util.Scanner;
public class Main {
    public static user login(){
        System.out.print("請輸入你的姓名:");
        Scanner scanner=new Scanner(System.in);
        String name=scanner.nextLine();
        System.out.println("請選擇你的身份:1->管理員  0->普通用戶");
        int choice=scanner.nextInt();
        if(choice==1){
            return new AdminUser(name);
        }else{
            return new NormalUser(name);
        }
    }
    public static void main(String[] args) {
        BookList bookList = new BookList();
        user us = login();//向上轉(zhuǎn)型
        while (true) {
            int choice = us.menu();//多態(tài)綁定
            us.doWork(choice, bookList);
        }
    }
}

書的創(chuàng)建

Book:

package book;
//創(chuàng)建圖書
public class Book {
    private String name;//書名
    private String author;//書的作者
    private String type;//書的類型
    private int price;//書的價格
    boolean isBorrowed;//書是否被借出
//在這里我們就不對isBorrowed進行構(gòu)造,在最后打印的時候?qū)λM行判斷就好
    public Book(String name, String author, String type, int price) {
        this.name = name;
        this.author = author;
        this.type = type;
        this.price = price;
    }
    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 String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public boolean isBorrowed() {
        return isBorrowed;
    }
    public void setBorrowed(boolean borrowed) {
        isBorrowed = borrowed;
    }
    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", type='" + type + '\'' +
                ", price=" + price +
                ((isBorrowed==true)?" 已被借出":" 未被借出") +
                '}';
    }
}

BookList:

package book;
//創(chuàng)建書架
public class BookList {
   private Book[] books=new Book[10];//創(chuàng)建一個數(shù)組當(dāng)書架放書,假設(shè)一共可以放10本
    public int usedSize;//書架上有效放書數(shù)
    public BookList(){//假設(shè)一開始書架上就放了三本書
        books[0]=new Book("紅樓夢","曹雪芹","文學(xué)",55);
        books[1]=new Book("西游記","吳承恩","文學(xué)",65);
        books[2]=new Book("水滸傳","施耐庵","文學(xué)",23);
        usedSize=3;
    }
    public int getUsedSize(){
        return usedSize;
    }
    public void setUsedSize(int usedSize){
        this.usedSize=usedSize;
    }
    //獲取一本書的位置
    public Book getpos(int pos){
        return this.books[pos];
    }
    //在下標為pos的位置上放一本書(添加)
    public void setBook(int pos,Book book){
        this.books[pos]=book;
    }
}

對用戶的操作

創(chuàng)建用戶user類:

package User;
import book.BookList;
import operation.IOperation;
 
public abstract class user {
    protected String name;
    protected  IOperation[] iOperations;//創(chuàng)建操作類數(shù)組,通過返回的數(shù)字用于對書的操作
    public user(String name){
        this.name=name;
    }
    public abstract int menu();//用于動態(tài)綁定
    public void doWork(int choice, BookList bookList){
        iOperations[choice].work(bookList);
    }
}

創(chuàng)建管理員用戶類AdminUser ,是 user 的子類.

package User;
import operation.*;
import java.util.Scanner;
public class AdminUser extends user {
    public AdminUser(String name) {
        super(name);
        this.iOperations=new IOperation[]{//初始化數(shù)組,將菜單上的數(shù)字與對應(yīng)的操作放好
                new ExitOperation(),
                new FindOperation(),
                new AddOperation(),
                new DelOperation(),
                new DisplayOperation()
        };
    }
    public int menu(){
        System.out.println("========管理員的菜單========");
        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("===========================");
        System.out.print("請選擇你要的操作: ");
        Scanner scanner=new Scanner(System.in);
        int choice=scanner.nextInt();
        return choice;//返回選擇的數(shù)字
    }
}

創(chuàng)建普通用戶類NormalUser, 是 user 的子類.

package User;
import operation.*;
import java.util.Scanner;
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("========普通用戶的菜單========");
        System.out.println("歡迎"+this.name+"來到圖書館");
        System.out.println("1.查找圖書");
        System.out.println("2.借閱圖書");
        System.out.println("3.歸還圖書");
        System.out.println("0.退出系統(tǒng)");
        System.out.println("============================");
        System.out.print("請選擇你要的操作: ");
        Scanner scanner=new Scanner(System.in);
        int choice=scanner.nextInt();
        return choice;
    }
}

對書的操作

創(chuàng)建接口 IOperation:

package operation;
import book.BookList;
import java.util.Scanner;
public interface IOperation {
    Scanner scanner=new Scanner(System.in);
    void work(BookList bookList);
}

創(chuàng)建增加圖書類AddOperation,繼承接口 IOperation

package operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class AddOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("新增圖書!");
        System.out.println("請輸入圖書的名字:");
        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);//新創(chuàng)建一本書
        int size= bookList.getUsedSize();
        bookList.setBook(size,book);
        bookList.setUsedSize(size+1);
        System.out.println("新增圖書成功");
    }
}

創(chuàng)建刪減圖書類DelOperation,繼承接口 IOperation

package operation;
import book.Book;
import book.BookList;
public class DelOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("刪減圖書");
        System.out.println("請輸入要刪減圖書的名字:");
        String name=scanner.nextLine();
        int size= bookList.getUsedSize();
        int index=0;
        int i=0;
        for (i = 0; i <size ; i++) {
            Book book = bookList.getpos(i);
            if(name.equals(book.getName())) {
               index=i;
               break;
            }
        }
        if(i>=size){
            System.out.println("沒有你要刪除的圖書");
        }
        //刪除就是要將j+1下標的信息放進j下標里面信息去,這樣子j里面的信息就被刪除了
        for (int j = index; j < size-1; j++) {
         Book book=bookList.getpos(j+1);//獲取j+1下標放的書的信息給j下標
         bookList.setBook(j,book);
        }
        bookList.setBook(size,null);//刪除之后,把最后一個下標信息置為null
        bookList.setUsedSize(size-1);//下標減1
        System.out.println("刪除成功");
    }
}

創(chuàng)建查找圖書類FindOperation,繼承接口 IOperation

package operation;
import book.BookList;
import book.Book;
public class FindOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("查找圖書!");
        System.out.println("請輸入要查找書的名字");
        String name = scanner.nextLine();
        int size = bookList.getUsedSize();
        for (int i = 0; i < size; i++) {
            Book book = bookList.getpos(i);//找到這本書的信息
            if(name.equals(book.getName())) {//比較名字是否相同
                System.out.println("找到了這本書,信息如下:");
                System.out.println(book);
                return;
            }
        }
        System.out.println("沒有找到這本書!");
    }
}

創(chuàng)建顯示圖書列表類DisplayOperation,繼承接口 IOperation

package operation;
import book.Book;
import book.BookList;
public class DisplayOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("顯示圖書");
        for(int i=0;i<bookList.usedSize;i++){
            Book book=bookList.getpos(i);
            System.out.println(book);
        }
    }
}

創(chuàng)建借閱圖書列表類BorrowOperation,繼承接口 IOperation

package operation;
import book.Book;
import book.BookList;
public class BorrowOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("借閱圖書");
        System.out.println("請輸入你要借閱的圖書的名字");
        String name=scanner.nextLine();
        int size= bookList.getUsedSize();
        for(int i=0;i<size;i++){
            Book book = bookList.getpos(i);
            if(name.equals(book.getName())) {
                book.setBorrowed(true);
                System.out.println("借閱成功");
                System.out.println(book);
                return;
            }
        }
        System.out.println("沒有你要借閱的書");
    }
}

創(chuàng)建歸還圖書列表類ReturnOperation,繼承接口 IOperation

package operation;
import book.Book;
import book.BookList;
public class ReturnOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("歸還圖書");
        System.out.println("請輸入你要歸還的圖書的名字");
        String name=scanner.nextLine();
        int size= bookList.getUsedSize();
        for(int i=0;i<size;i++){
            Book book = bookList.getpos(i);
            if(name.equals(book.getName())) {
                book.setBorrowed(true);
                System.out.println("歸還成功");
                System.out.println(book);
                return;
            }
        }
        System.out.println("沒有你要歸還的書");
    }
}

創(chuàng)建退出系統(tǒng)類ExitOperation,繼承接口 IOperation

package operation;
import book.BookList;
public class ExitOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("退出系統(tǒng)");
        System.exit(0);
    }
}

到此這篇關(guān)于Java快速實現(xiàn)圖書管理基本功能的文章就介紹到這了,更多相關(guān)Java圖書管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot項目如何打包部署到服務(wù)器

    SpringBoot項目如何打包部署到服務(wù)器

    這篇文章主要介紹了SpringBoot項目如何打包部署到服務(wù)器問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • JVM如何處理異常深入詳解

    JVM如何處理異常深入詳解

    異常處理的兩大元素:拋出異常、捕獲異常,非正常處理的兩個方法。下面這篇文章主要給大家介紹了關(guān)于JVM如何處理異常的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2019-01-01
  • Java使用正則表達式判斷獨立字符的存在(代碼示例)

    Java使用正則表達式判斷獨立字符的存在(代碼示例)

    通過使用正則表達式,我們可以更加靈活地判斷字符串中是否包含特定的字符,并且可以控制匹配的條件,如獨立的字符,這為我們處理字符串提供了更多的選擇和功能,這篇文章主要介紹了Java使用正則表達式判斷獨立字符的存在,需要的朋友可以參考下
    2023-10-10
  • 在Java中Collection的一些常用方法總結(jié)

    在Java中Collection的一些常用方法總結(jié)

    今天給大家?guī)淼闹R是關(guān)于Java的,文章圍繞著Java中Collection的一些常用方法展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • spring的TransactionSynchronizationAdapter事務(wù)源碼解析

    spring的TransactionSynchronizationAdapter事務(wù)源碼解析

    這篇文章主要介紹了spring的TransactionSynchronizationAdapter事務(wù)源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 簡單講解Java設(shè)計模式編程中的單一職責(zé)原則

    簡單講解Java設(shè)計模式編程中的單一職責(zé)原則

    這篇文章主要介紹了Java設(shè)計模式編程中的單一職責(zé)原則,這在團隊開發(fā)編寫接口時經(jīng)常使用這樣的約定,需要的朋友可以參考下
    2016-02-02
  • Java創(chuàng)建多線程的兩種方式對比

    Java創(chuàng)建多線程的兩種方式對比

    在Java中創(chuàng)建線程的方式有兩種,第一種是直接繼承Thead類,另一種是實現(xiàn)Runable接口。那么這兩種方式孰優(yōu)孰劣呢?這就是本文需要探討的內(nèi)容范疇了,看官們請仔細向下看
    2014-10-10
  • IDEA在SpringBoot項目使用Maven打包后jar包太小問題及解決

    IDEA在SpringBoot項目使用Maven打包后jar包太小問題及解決

    這篇文章主要介紹了IDEA在SpringBoot項目使用Maven打包后jar包太小問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Java中有什么工具可以進行代碼反編譯詳解

    Java中有什么工具可以進行代碼反編譯詳解

    這篇文章主要介紹了Java中有什么工具可以進行代碼反編譯的相關(guān)資,料,包括JD-GUI、CFR、Procyon、Fernflower、Javap、BytecodeViewer、Krakatau和JAD,每種工具都有其特點和適用場景,需要的朋友可以參考下
    2025-03-03
  • Springboot事務(wù)失效的幾種情況解讀

    Springboot事務(wù)失效的幾種情況解讀

    這篇文章主要介紹了Springboot事務(wù)失效的幾種情況解讀,因為Spring AOP默認使用動態(tài)代理,會給被代理的類生成一個代理類,事務(wù)相關(guān)的操作都通過代理來完成,使用內(nèi)部方法調(diào)用時,使用的是實例調(diào)用,沒有通過代理類調(diào)用方法,因此事務(wù)不會檢測到失敗,需要的朋友可以參考下
    2023-10-10

最新評論

原阳县| 新巴尔虎右旗| 连南| 定远县| 当雄县| 进贤县| 勃利县| 凯里市| 慈溪市| 嵩明县| 叶城县| 宁海县| 新余市| 保靖县| 桃江县| 香格里拉县| 海丰县| 治多县| 广西| 金塔县| 大埔县| 乐昌市| 铁力市| 门源| 山阳县| 个旧市| 东莞市| 嫩江县| 屏东县| 九龙城区| 尚义县| 开平市| 丰台区| 台山市| 尚义县| 荣成市| 城步| 常州市| 祁门县| 富顺县| 司法|