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

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

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

前言

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

主要要求:

1、用戶登錄

2、管理端

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

3、用戶端

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

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

主函數(shù)

Main:(對所有流程進(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("請輸入你的姓名:");
        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進(jìn)行構(gòu)造,在最后打印的時候?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)建書架
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];
    }
    //在下標(biāo)為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下標(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)放的書的信息給j下標(biāo)
         bookList.setBook(j,book);
        }
        bookList.setBook(size,null);//刪除之后,把最后一個下標(biāo)信息置為null
        bookList.setUsedSize(size-1);//下標(biāo)減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("請輸入你要?dú)w還的圖書的名字");
        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("沒有你要?dú)w還的書");
    }
}

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    8種常見的接口請求重試方法總結(jié)

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

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

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

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

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

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

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

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

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

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

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

最新評論