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

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

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

前言

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

主要要求:

1、用戶登錄

2、管理端

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

3、用戶端

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

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

主函數(shù)

Main:(對(duì)所有流程進(jìn)行整合)

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("請(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);
        }
    }
    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);
        }
    }
}

書(shū)的創(chuàng)建

Book:

package book;
//創(chuàng)建圖書(shū)
public class Book {
    private String name;//書(shū)名
    private String author;//書(shū)的作者
    private String type;//書(shū)的類(lèi)型
    private int price;//書(shū)的價(jià)格
    boolean isBorrowed;//書(shū)是否被借出
//在這里我們就不對(duì)isBorrowed進(jìn)行構(gòu)造,在最后打印的時(shí)候?qū)λM(jìn)行判斷就好
    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)建書(shū)架
public class BookList {
   private Book[] books=new Book[10];//創(chuàng)建一個(gè)數(shù)組當(dāng)書(shū)架放書(shū),假設(shè)一共可以放10本
    public int usedSize;//書(shū)架上有效放書(shū)數(shù)
    public BookList(){//假設(shè)一開(kāi)始書(shū)架上就放了三本書(shū)
        books[0]=new Book("紅樓夢(mèng)","曹雪芹","文學(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;
    }
    //獲取一本書(shū)的位置
    public Book getpos(int pos){
        return this.books[pos];
    }
    //在下標(biāo)為pos的位置上放一本書(shū)(添加)
    public void setBook(int pos,Book book){
        this.books[pos]=book;
    }
}

對(duì)用戶的操作

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

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

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

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ù)字與對(duì)應(yīng)的操作放好
                new ExitOperation(),
                new FindOperation(),
                new AddOperation(),
                new DelOperation(),
                new DisplayOperation()
        };
    }
    public int menu(){
        System.out.println("========管理員的菜單========");
        System.out.println("歡迎"+this.name+"來(lái)到圖書(shū)館");
        System.out.println("1.查找圖書(shū)");
        System.out.println("2.新增圖書(shū)");
        System.out.println("3.刪減圖書(shū)");
        System.out.println("4.顯示圖書(shū)");
        System.out.println("0.查退出系統(tǒng)");
        System.out.println("===========================");
        System.out.print("請(qǐng)選擇你要的操作: ");
        Scanner scanner=new Scanner(System.in);
        int choice=scanner.nextInt();
        return choice;//返回選擇的數(shù)字
    }
}

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

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+"來(lái)到圖書(shū)館");
        System.out.println("1.查找圖書(shū)");
        System.out.println("2.借閱圖書(shū)");
        System.out.println("3.歸還圖書(shū)");
        System.out.println("0.退出系統(tǒng)");
        System.out.println("============================");
        System.out.print("請(qǐng)選擇你要的操作: ");
        Scanner scanner=new Scanner(System.in);
        int choice=scanner.nextInt();
        return choice;
    }
}

對(duì)書(shū)的操作

創(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)建增加圖書(shū)類(lèi)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("新增圖書(shū)!");
        System.out.println("請(qǐng)輸入圖書(shū)的名字:");
        String name = scanner.nextLine();
        System.out.println("請(qǐng)輸入圖書(shū)的作者:");
        String author = scanner.nextLine();
        System.out.println("請(qǐng)輸入圖書(shū)的類(lèi)型:");
        String type = scanner.nextLine();
        System.out.println("請(qǐng)輸入圖書(shū)的價(jià)格:");
        int price = scanner.nextInt();
        Book book=new Book(name,author,type,price);//新創(chuàng)建一本書(shū)
        int size= bookList.getUsedSize();
        bookList.setBook(size,book);
        bookList.setUsedSize(size+1);
        System.out.println("新增圖書(shū)成功");
    }
}

創(chuàng)建刪減圖書(shū)類(lèi)DelOperation,繼承接口 IOperation

package operation;
import book.Book;
import book.BookList;
public class DelOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("刪減圖書(shū)");
        System.out.println("請(qǐng)輸入要?jiǎng)h減圖書(shū)的名字:");
        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("沒(méi)有你要?jiǎng)h除的圖書(shū)");
        }
        //刪除就是要將j+1下標(biāo)的信息放進(jìn)j下標(biāo)里面信息去,這樣子j里面的信息就被刪除了
        for (int j = index; j < size-1; j++) {
         Book book=bookList.getpos(j+1);//獲取j+1下標(biāo)放的書(shū)的信息給j下標(biāo)
         bookList.setBook(j,book);
        }
        bookList.setBook(size,null);//刪除之后,把最后一個(gè)下標(biāo)信息置為null
        bookList.setUsedSize(size-1);//下標(biāo)減1
        System.out.println("刪除成功");
    }
}

創(chuàng)建查找圖書(shū)類(lèi)FindOperation,繼承接口 IOperation

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

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

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

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

package operation;
import book.Book;
import book.BookList;
public class BorrowOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("借閱圖書(shū)");
        System.out.println("請(qǐng)輸入你要借閱的圖書(shū)的名字");
        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("沒(méi)有你要借閱的書(shū)");
    }
}

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

package operation;
import book.Book;
import book.BookList;
public class ReturnOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("歸還圖書(shū)");
        System.out.println("請(qǐng)輸入你要?dú)w還的圖書(shū)的名字");
        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("沒(méi)有你要?dú)w還的書(shū)");
    }
}

創(chuàng)建退出系統(tǒng)類(lèi)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快速實(shí)現(xiàn)圖書(shū)管理基本功能的文章就介紹到這了,更多相關(guān)Java圖書(shū)管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 實(shí)現(xiàn)倒計(jì)時(shí)功能(由秒計(jì)算天、小時(shí)、分鐘、秒)

    Java 實(shí)現(xiàn)倒計(jì)時(shí)功能(由秒計(jì)算天、小時(shí)、分鐘、秒)

    最近做項(xiàng)目遇到這樣的需求,天、小時(shí)、分鐘、秒的數(shù)值都是隔開(kāi)的,服務(wù)器端只返回一個(gè)時(shí)間戳長(zhǎng)度,怎么實(shí)現(xiàn)這樣的功能呢?下面小編給大家?guī)?lái)了Java 實(shí)現(xiàn)倒計(jì)時(shí)功能的方案,需要的朋友參考下吧
    2018-01-01
  • SpringMVC五種類(lèi)型參數(shù)傳遞及json傳遞參數(shù)

    SpringMVC五種類(lèi)型參數(shù)傳遞及json傳遞參數(shù)

    本文主要介紹了SpringMVC五種類(lèi)型參數(shù)傳遞及json傳遞參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java8新特性之類(lèi)型注解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java8新特性之類(lèi)型注解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了Java8新特性之類(lèi)型注解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Java實(shí)現(xiàn)分庫(kù)分表實(shí)踐指南

    Java實(shí)現(xiàn)分庫(kù)分表實(shí)踐指南

    在開(kāi)發(fā)中我們經(jīng)常使用到分庫(kù)分表,但是一般是我們前期就已經(jīng)做了規(guī)劃,對(duì)數(shù)據(jù)庫(kù)怎么劃分,對(duì)哪些表進(jìn)行分表,這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)分庫(kù)分表的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • 8種常見(jiàn)的接口請(qǐng)求重試方法總結(jié)

    8種常見(jiàn)的接口請(qǐng)求重試方法總結(jié)

    在跨境業(yè)務(wù)中,可能第三方的服務(wù)器分布在世界的各個(gè)角落,所以請(qǐng)求三方接口的時(shí)候,難免會(huì)遇到一些網(wǎng)絡(luò)問(wèn)題,這時(shí)候需要加入重試機(jī)制了,下面小編就給大家分享幾個(gè)接口重試的寫(xiě)法吧
    2023-11-11
  • JAVA實(shí)現(xiàn)異步調(diào)用實(shí)例代碼

    JAVA實(shí)現(xiàn)異步調(diào)用實(shí)例代碼

    在java平臺(tái),實(shí)現(xiàn)異步調(diào)用的角色主要三種角色:調(diào)用者、取貨憑證、真實(shí)數(shù)據(jù)。本篇文章給大家介紹java實(shí)現(xiàn)異步調(diào)用實(shí)例代碼,需要的朋友可以參考下
    2015-09-09
  • 詳解Java中二叉樹(shù)的基礎(chǔ)概念(遞歸&迭代)

    詳解Java中二叉樹(shù)的基礎(chǔ)概念(遞歸&迭代)

    二叉樹(shù)(Binary?tree)是樹(shù)形結(jié)構(gòu)的一個(gè)重要類(lèi)型。本文將通過(guò)圖片和示例代碼詳細(xì)為大家講解一下Java中的二叉樹(shù)的基礎(chǔ)概念,需要的可以參考一下
    2022-03-03
  • Mybatis實(shí)現(xiàn)自定義的typehandler三步曲

    Mybatis實(shí)現(xiàn)自定義的typehandler三步曲

    這篇文章主要介紹了Mybatis實(shí)現(xiàn)自定義的typehandler三步曲的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • maven環(huán)境變量配置講解

    maven環(huán)境變量配置講解

    這篇文章主要介紹了maven環(huán)境變量配置講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 深入理解Java的Spring框架中的IOC容器

    深入理解Java的Spring框架中的IOC容器

    IOC(Inversion of Control,控制反轉(zhuǎn))是Spring框架的核心,負(fù)責(zé)控制對(duì)象的生命周期與關(guān)系,接下來(lái)就讓我們跟隨文章來(lái)深入理解Java的Spring框架中的IOC容器:
    2016-07-07

最新評(píng)論