图书管理系统代码(Java)

1、运行演示

QQ2024528-205028-HD

详细讲解在这篇博客:JavaSE:图书管理系统-CSDN博客 

2、所建的包

3、Java代码

3.1 book包

3.1.1 Book类代码

package book;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: dings
 * Date: 2024-05-13
 * Time: 13:16
 */
public class Book {
    private String name;
    private String author;
    private int price;
    private String type;
    private boolean isBorrowed;
    public Book(String name, String author, String type, int price) {
        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 boolean getBorrowed() {
        return isBorrowed;
    }

    public void setBorrowed(boolean borrowed) {
        isBorrowed = borrowed;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +", 状态:"+
                (isBorrowed ? " 该书已被借出" : "该书未被借出")+
                '}';
    }
}

3.1.2 BookList类代码

package book;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: dings
 * Date: 2024-05-13
 * Time: 13:19
 */
public class BookList {
    private Book[] books = new Book[10];
    private int bookNumber;

    public BookList() {
        books[0] = new Book("哈利波特", "J.K.罗琳", "小说",30);
        books[1] = new Book("三国演义", "罗贯中","小说", 35);
        books[2] = new Book("红楼梦", "曹雪芹", "小说",25);
        books[3] = new Book("鲁宾逊漂流记", "丹尼尔·笛福", "小说",40);
        this.bookNumber = 4;
    }

    public int getBookNumber() {
        return bookNumber;
    }

    public void setBookNumber(int bookNumber) {
        this.bookNumber = bookNumber;
    }

    public Book getBook(int index) {
        Book book = books[index];
        return book;
    }

    public void setBooks(Book book,int index) {
        books[index] = book;
    }
}

3.2 operation包

3.2.1 AddBook类代码

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: dings
 * Date: 2024-05-13
 * Time: 13:33
 */
public class AddBook implements IOperation {
    @Override
    public void work(BookList bookList) {
        int currentNum = bookList.getBookNumber();
        Scanner scanner = new Scanner(System.in);
        System.out.println("*************Add Book*************");

        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);
        bookList.setBooks(book,currentNum);
        bookList.setBookNumber(currentNum+1);
    }
}

3.2.2 BorrowBook类代码

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: dings
 * Date: 2024-05-13
 * Time: 13:35
 */
public class BorrowBook implements IOperation {
    @Override
    public void work(BookList bookList) {
        System.out.println("*************Borrow Book*************");
        System.out.println("请输入您所要借阅图书的书名:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int currentNum = bookList.getBookNumber();
        for (int i = 0; i < currentNum; i++) {
            Book book = bookList.getBook(i);
            if(name.equals(book.getName())) {
                if(book.getBorrowed() == true) {
                    System.out.println("很抱歉!!!该书籍已被其他人借阅!!!");
                    return;
                }else {
                    book.setBorrowed(true);
                    System.out.println("借阅成功!");
                    return;
                }
            }
        }
        System.out.println("没有查找到该书籍!!!");
    }
}

3.2.3 DeleteBook类代码

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: dings
 * Date: 2024-05-13
 * Time: 13:34
 */
public class DeleteBook implements IOperation {
    @Override
    public void work(BookList bookList) {
        System.out.println("*************Borrow Book*************");
        System.out.println("请输入您所要删除图书的书名:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int currentNum = bookList.getBookNumber();
        int index = -1;
        for (int i = 0; i < currentNum; i++) {
            Book book = bookList.getBook(i);
            if(name.equals(book.getName())) {
                index = i;
                break;
            }
        }
        if(index == -1) {
            System.out.println("没有查找到该图书!!!");
        }else {
            for (int i = index; i < currentNum-1; i++) {
                Book book = bookList.getBook(i+1);
                bookList.setBooks(book,i);
            }
            bookList.setBooks(null,currentNum);
            bookList.setBookNumber(currentNum-1);
            System.out.println("成功删除该图书!!!");
        }
    }
}

3.2.4 ExitSystem类代码

package operation;

import book.BookList;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: dings
 * Date: 2024-05-13
 * Time: 16:22
 */
public class ExitSystem implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("退出系统!图书管理系统随时欢迎您的下次到来!");
        System.exit(0);
    }
}

3.2.5 FindBook类代码

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: dings
 * Date: 2024-05-13
 * Time: 13:34
 */
public class FindBook implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("*************Find Book*************");
        System.out.println("请输入您所要查找图书的书名:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int currentNum = bookList.getBookNumber();
        for (int i = 0; i < currentNum; i++) {
            Book book = bookList.getBook(i);
            if(name.equals(book.getName())) {
                System.out.println("查找到该书!该书相关信息如下:");
                System.out.println(book);
                return;
            }
        }
        System.out.println("没有查找到该书籍!!!");
    }
}

3.2.6 IOperation接口代码

package operation;

import book.BookList;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: dings
 * Date: 2024-05-13
 * Time: 13:38
 */
public interface IOperation {
    void work(BookList bookList);
}

3.2.7 ReturnBook类代码

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: dings
 * Date: 2024-05-13
 * Time: 13:35
 */
public class ReturnBook implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("*************Return Book*************");
        System.out.println("请输入您所要归还图书的书名:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int currentNum = bookList.getBookNumber();
        for (int i = 0; i < currentNum; i++) {
            Book book = bookList.getBook(i);
            if(name.equals(book.getName())) {
                if(book.getBorrowed()) {
                    book.setBorrowed(false);
                    System.out.println("图书归还成功!!!欢迎您的下次光临!!!");
                    return;
                }else {
                    System.out.println("查找到该书,但该书未被借出!!!");
                    return;
                }
            }
        }
        System.out.println("没有查找到该书籍!!!");
    }
}

3.2.8 ShowBook类代码

package operation;

import book.Book;
import book.BookList;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: dings
 * Date: 2024-05-13
 * Time: 17:21
 */
public class ShowBook implements IOperation{
    @Override
    public void work(BookList bookList) {
        int currentNum = bookList.getBookNumber();
        System.out.println("***************展示书籍***************");
        for (int i = 0; i < currentNum; i++) {
            Book book = bookList.getBook(i);
            System.out.println(book);
        }
        System.out.println("***************展示书籍***************");
    }
}

3.3 user包

3.3.1 User类代码

package user;

import book.BookList;
import operation.*;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: dings
 * Date: 2024-05-13
 * Time: 13:30
 */
public abstract class User {
    protected String name;

    IOperation[] iOperations;

    public User(String name) {
        this.name = name;
    }
    public abstract int menu();

    public void youOperate(int choice,BookList bookList) {
        this.iOperations[choice].work(bookList);
    }
}

3.3.2 Administrator类代码

package user;

import operation.*;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: dings
 * Date: 2024-05-13
 * Time: 13:31
 */
public class Administrator extends User {
    public Administrator(String name) {
        super(name);
        iOperations = new IOperation[]{
                new ExitSystem(),
                new AddBook(),
                new FindBook(),
                new ShowBook(),
                new DeleteBook()
        };
    }

    @Override
    public int menu() {
        System.out.println("请输入您的操作:");
        System.out.println("    1.添加书籍 2.查找书籍");
        System.out.println("3.展示书籍 4.删除书籍 0.退出系统");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
}

3.3.3 NormalUser类代码

package user;

import operation.*;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: dings
 * Date: 2024-05-13
 * Time: 13:30
 */
public class NormalUser extends User {
    public NormalUser(String name) {
        super(name);
        iOperations = new IOperation[]{
                new ExitSystem(),
                new FindBook(),
                new BorrowBook(),
                new ReturnBook(),
                new ShowBook()
        };
    }

    @Override
    public int menu() {
        System.out.println("请输入您的操作:");
        System.out.println("    1.查找书籍 2.借阅书籍");
        System.out.println("3.归还书籍 4.展示书籍 0.退出系统");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
}

3.4 默认包

3.4.1 Main类代码

import book.BookList;
import user.Administrator;
import user.NormalUser;
import user.User;

import java.util.Random;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:图书管理系统
 * User: dings
 * Date: 2024-05-13
 * Time: 13:18
 */
public class Main {
    public static User login() {
        System.out.println("请输入您的姓名:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        System.out.println("Hello! "+name+"! "+"欢迎来到图书系统!");
        System.out.println("请选择您的身份:1->图书管理员  2->普通用户");
        int choice = scanner.nextInt();
        if(choice == 1) {
            return new Administrator(name);
        }else {
            return new NormalUser(name);
        }
    }
    public static void main(String[] args) {
        BookList bookList = new BookList();
        User user = login();
        while (true) {
            int choice = user.menu();
            user.youOperate(choice,bookList);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/719661.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux驱动学习(八)之内核定制与裁剪

一、内核的配置 1) 把相关硬件平台的配置文件拷贝给.config 2) 执行make menuconfig命令 关于内核配置说明:Arrow keys navigate the menu. 方向键对菜单有效<Enter> selects submenus --->. 如果有该符号"--->",则按Enter表示进入子菜单Highlighted …

【Ambari】Python调用Rest API 获取集群状态信息并发送钉钉告警

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1f338;文…

路由控制和策略路由

文章目录 一、路由控制&#xff08;1&#xff09;、前言1.1.1-路由策略 &#xff08;2&#xff09;、正反掩码和通配符1.2.1-通配符 &#xff08;3&#xff09;、ACL1.3.1-ACL步长1.3.2-步长的作用1.3.3-TCP/UDP端口号 实验1:实验2: 二、前缀列表实验1:2.1.1-前缀列表的表达式2…

全功能知识付费小程序源码系统 界面支持万能DIY装修 带完整的安装代码包以及搭建部署教程

系统概述 在当今数字化时代&#xff0c;知识付费已经成为一种重要的商业模式。为了满足市场对于便捷、高效、个性化的知识付费解决方案的需求&#xff0c;小编给大家分享一款全功能知识付费小程序源码系统。这一系统不仅具备界面支持万能 DIY 装修的独特优势&#xff0c;还配备…

NetSarang Xshell Xftp v7 解锁版 (SSH远程终端工具)

前言 Xshell 7是一款SSH远程终端工具&#xff0c;轻松管理远程服务器&#xff0c;会话管理器&#xff0c;支持多选项卡管理主机&#xff0c;支持远程协议Telnet、Rlogin、SSH/SSH PKCS&#xff03;11、SFTP、Serial&#xff0c;具有Unicode编码支持、动态端口转发、自定义键盘…

【机器学习】——【线性回归模型】——详细【学习路线】

目录 1. 引言 2. 线性回归理论基础 2.1 线性模型概述 2.2 最小二乘法 3. 数学基础 3.1 矩阵运算 3.2 微积分 3.3 统计学 4. 实现与应用 4.1 使用Scikit-learn实现线性回归 4.2 模型评估 5. 深入理解 5.1 多元线性回归 5.2 特征选择 5.3 理解模型内部 6. 实战与项…

MacOS - 3 招快速去除桌面上的图标文件

在平时用 Mac 电脑的时候&#xff0c;会产生许多我们不用的或废弃的图标、文件&#xff0c;在 Mac 桌面上显得很乱&#xff0c;不仅影响美观也直接影响了我们工作的心情。下面我们分享 3 招快速去除桌面上的图标或文件的方法&#xff0c;有需要的朋友可以试一试。 1. 右键删除&…

Linux常用操作大全(上)

Linux常用操作 文章目录 Linux常用操作一、各类小技巧**1.ctrl c 强制停止****2.ctrl d 退出或登出**3.历史命令搜索4.光标移动快捷键5.清屏6.复制Ctrlshiftc7.粘贴Ctrlshiftv 二、软件安装1.概念2.yum与apt 三、systemctl控制服务四、软链接ln五、日期时区1.date查看日期2.修…

LN6291 2.5A 高效率升压 DC/DC 电压调整器芯片IC

产品概述 LN6291H是一款微小型、高效率、升压型DC/DC调整器。电路由电流模COT控制环路&#xff0c;误差放大器&#xff0c;斜坡补偿电路&#xff0c;比较器和功率开关等模块组成。该芯片可在较宽负载范围内高效稳定的工作&#xff0c;内置一个2.5A的功率开关和软启动保…

如何利用Python处理站点数据、格点观测数据、再分析ERA5;GLDAS、遥感数据、水文数据、气象数据、陆面模式数据、气候变化数据等

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;Python能够运行在Linux、Windows、Macintosh、AIX操作系统上及不同平台&#xff08;x86和arm&#xff09;&#xff0c;Python简洁的语法和对动态输入的支持&#xff0c;再加上解释性语言的本质&…

关于IOMMU问题的扩展

关联CSDN&#xff1a; Steam Deck OLED WLAN下载速率过低问题的排查和解决-CSDN博客 前言 如前所述&#xff0c;Steam Deck OLED WLAN速率低问题和IOMMU有一定的关系&#xff0c;这里我们对IOMMU为什么会对速率有影响进行一个较深入的理解。 对于IOMMU我相信大家通过网上的…

游戏开发丨基于PyGame的消消乐小游戏

文章目录 写在前面PyGame消消乐注意事项系列文章写在后面 写在前面 本期内容&#xff1a;基于pygame实现喜羊羊与灰太狼版消消乐小游戏 下载地址&#xff1a;https://download.csdn.net/download/m0_68111267/88700193 实验环境 python3.11及以上pycharmpygame 安装pygame…

linux下编译安装和使用cURL库(含有openssl)

cURL是一个利用URL语法指定各种协议(如HTTP、HTTPS、FTP等)进行数据传输的工具,它以客户端的身份,允许用户通过命令行与服务器交互。cURL库(libcurl)是cURL的编程接口(API),提供了一套丰富的函数,供开发者在自己的应用程序中实现网络传输功能 cURL库是网络编程中不可…

群辉USB Copy套件的使用

目录 一、套件安装 二、插入USB设备 三、使用 四、故障排除 有了群辉NAS后,很多U盘、移动硬盘的数据需要备份到NAS中,这时就可以考虑使用USB Copy这个套件了。 USB Copy 乃是群晖上可用于和外接存储设备进行文件复制的一个工具,我常常借助它把外置存储设备的文件拷贝至…

react+ts实现 父子组件通信

创建tsreact的命令 npx create-react-app react-ts --template typescript 使用React和TypeScript进行开发与使用JavaScript进行开发在逻辑上是相同的&#xff0c;但TypeScript增加了类型安全性&#xff0c;这在大型应用中可以减少错误&#xff0c;提高代码的可维护性。下面我…

云计算 |(五)云基础设施机制

文章目录 📚云基础设施机制🐇逻辑网络边界🐇虚拟防火墙🐇虚拟专用网络VPN🐇虚拟服务器🐇云存储设备⭐️云存储等级⭐️网络存储接口⭐️对象存储接口⭐️数据库存储接口🐇云使用监控⭐️监控代理⭐️资源代理⭐️轮询代理📚云基础设施机制 🐇逻辑网络边界 将…

“Docker之道:优雅管理容器数据的艺术“

目录 1. 容器数据卷 1.1 容器卷的概念 1.2 容器卷的使用 1.3 个人案例实现容器卷挂载 1.4 MySQL同步数据案例&#xff08;容器数据卷操作&#xff09; 1.4.1 获取 MySQL 镜像 1.4.2 运行 MySQL 容器并配置数据持久化 参数说明&#xff1a; 1.4.3 测试 MySQL 连接 1.4…

表面声波滤波器——叉指换能器(3)

叉指换能器(interdigital transducers&#xff0c;IDT) 是在压电基片表面激励和检测声表面波&#xff0c;从而实现电信号和声信号间的相互转换。 叉指换能器由在压电基片表面上沉积两组互相交错&#xff0c;周期分布的状金属条带(叉指电极)组成&#xff0c;每组电极和一个汇流…

Python Pyperclip:获取剪贴板中的值

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 在日常生活和工作中&#xff0c;经常需要将一些信息从一个地方复制到另一个地方。这时&#xff0c;剪贴板就显得尤为重要了。Python作为一门强大的编程语言&#xff0c;也提供了许多方便的工具来帮助处理剪贴板中的数…

【数据结构与算法(C语言)】离散事件模拟- 单链表和队列的混合实际应用

目录 1. 前言2. 流程图3. 数据结构3.1 单链表3.2 链式队列 4. 核心函数4.1 银行业务模拟 void BankSimulation()4.2 初始化 void OpenForDay()4.3 客户到达 void CustomerArrived(Event en)4.4 客户离开 void CustomerArrived(Event en) 5. 非核心函数5.1 新建客户 NewCustomer…