当前位置: 首页 > news >正文

图书管理系统代码(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;}@Overridepublic 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 {@Overridepublic 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 {@Overridepublic 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 {@Overridepublic 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{@Overridepublic 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{@Overridepublic 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{@Overridepublic 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{@Overridepublic 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()};}@Overridepublic 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()};}@Overridepublic 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);}}
}

相关文章:

图书管理系统代码(Java)

1、运行演示 QQ2024528-205028-HD 详细讲解在这篇博客&#xff1a;JavaSE&#xff1a;图书管理系统-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:…...

Nginx反向代理Kingbase数据库

本文适用于开发人员学习运维领域知识&#xff0c;主要内容为在个人理解的基础上对企业级开发中所使用的Nginx和数据库kingbase相关使用&#xff0c;并附上Nginx反向代理kingbase数据库的相关配置的操作方式&#xff0c;感谢阅读 为什么是nginx代理kingbase数据库服务端 生产环…...

没有字幕的高清爆款视频素材去哪里找?无字幕无水印素材网站分享

在寻找无水印高清视频素材的道路上感到困惑&#xff1f;欢迎来到今天的分享&#xff0c;我将为您介绍一些海外优质的素材网站&#xff0c;以及国内极具特色的“蛙学府”。不论您是短视频制作的新手还是老手&#xff0c;这些网站都将为您的创意注入新活力。 蛙学府网 蛙学府网不…...

Java23种设计模式(一)

前言 这2个月来&#xff0c;重新出发&#xff0c;从java开发需要的数据库、查询日志工具、开发工具等的安装、环境配置&#xff0c;再到后面的基础学习、数据库学习、扩展学习&#xff08;maven、mq、设计模式、spring 系列等等&#xff09;&#xff0c;边学边记录&#xff0c…...

Spring Boot集成websocket实现webrtc功能

1.什么是webrtc&#xff1f; WebRTC 是 Web 实时通信&#xff08;Real-Time Communication&#xff09;的缩写&#xff0c;它既是 API 也是协议。WebRTC 协议是两个 WebRTC Agent 协商双向安全实时通信的一组规则。开发人员可以通过 WebRTC API 使用 WebRTC 协议。目前 WebRTC…...

StableSwarmUI 安装教程(详细)

文章目录 背景特点安装 背景 StableSwarmUI是StabilityAI官方开源的一个文生图工作流UI&#xff0c;目前处于beta阶段&#xff0c;但主流程是可以跑通的。该UI支持接入ComfyUI、Stable Diffusion-WebUI。其工作原理就是使用ComfyUI、Stable Diffusion-WebUI或者StabilityAI官方…...

利用Unity XR交互工具包实现简易VR菜单控制——6.18山大软院项目实训

初始设置 在Unity项目中&#xff0c;首先需要确保安装了XR插件和XR交互工具包。这些工具包提供了对VR硬件的支持&#xff0c;以及一系列用于快速开发VR交互的组件和预设。 脚本概览 本示例中的menuController脚本附加在一个Unity GameObject上&#xff0c;这个脚本负责监听用…...

区间预测 | Matlab实现CNN-ABKDE卷积神经网络自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现CNN-ABKDE卷积神经网络自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现CNN-ABKDE卷积神经网络自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CNN-ABKDE卷积神经网络自适应…...

【机器学习】第6章 支持向量机(SVM)

一、概念 1.支持向量机&#xff08;support vector machine&#xff0c;SVM&#xff09;&#xff1a; &#xff08;1&#xff09;基于统计学理论的监督学习方法&#xff0c;但不属于生成式模型&#xff0c;而是判别式模型。 &#xff08;2&#xff09;支持向量机在各个领域内的…...

hive笔记

文章目录 1. 如何增加列2. 如何查看表的具体列的数据类型3. 如何drop一个表 1. 如何增加列 alter table your_table_name add columns (your_column_name varchar(255));2. 如何查看表的具体列的数据类型 DESCRIBE your_table_name3. 如何drop一个表 drop table your_table_…...

kali - 配置静态网络地址 + ssh 远程连接

文章目录 观前提示&#xff1a;本环境在 root 用户下kali 配置静态网络地址打开网络配置文件 kali 配置 ssh 远程连接 观前提示&#xff1a;本环境在 root 用户下 kali 配置静态网络地址 打开网络配置文件 vim /etc/network/interfaces出现一下内容 # This file describes …...

Redis常见数据类型及其常用命令详解

文章目录 一、Redis概述二、Redis常用命令1.通用命令1.1 KEYS&#xff1a;查看符合模板的所有 key1.2 DEL&#xff1a;删除一个指定的 key1.3 EXISTS&#xff1a;判断 key 是否存在1.4 EXPIRE&#xff1a;给一个 key 设置有效期&#xff0c;有效期到期时该 key 会被自动删除1.5…...

JMU 数科 数据库与数据仓库期末总结(4)实验设计题

E-R图 实体-关系图 E-R图的组成要素主要包括&#xff1a; 实体&#xff08;Entity&#xff09;&#xff1a;实体代表现实世界中可相互区别的对象或事物&#xff0c;如顾客、订单、产品等。在图中&#xff0c;实体通常用矩形表示&#xff0c;并在矩形内标注实体的名称。 属性…...

Go版RuoYi

RuoYi-Go(DDD) 1. 关于我(在找远程工作&#xff0c;给机会的老板可以联系) 个人介绍 2. 后端 后端是用Go写的RuoYi权限管理系统 (功能正在持续实现) 用DDD领域驱动设计(六边形架构)做实践 后端 GitHub地址 后端 Gitee地址 3. 前端 本项目没有自研前端&#xff0c;前端代…...

八股系列 Flink

Flink 和 SparkStreaming的区别 设计理念方面 SparkStreaming&#xff1a;使用微批次来模拟流计算&#xff0c;数据已时间为单位分为一个个批次&#xff0c;通过RDD进行分布式计算 Flink&#xff1a;基于事件驱动&#xff0c;是面向流的处理框架&#xff0c;是真正的流式计算…...

HTTP/2 协议学习

HTTP/2 协议介绍 ​ HTTP/2 &#xff08;原名HTTP/2.0&#xff09;即超文本传输协议 2.0&#xff0c;是下一代HTTP协议。是由互联网工程任务组&#xff08;IETF&#xff09;的Hypertext Transfer Protocol Bis (httpbis)工作小组进行开发。是自1999年http1.1发布后的首个更新。…...

“先票后款”条款的效力认定

当事人明确约定一方未开具发票&#xff0c;另一方有权拒绝支付工程款的&#xff0c;该约定对当事人具有约束力。收款方请求付款方支付工程款时&#xff0c;付款方可以行使先履行抗辩权&#xff0c;但为减少当事人诉累&#xff0c;收款方在诉讼中明确表示愿意开具发票&#xff0…...

CSDN 自动上传图片并优化Markdown的图片显示

文章目录 完整代码一、上传资源二、替换 MD 中的引用文件为在线链接参考 完整代码 完整代码由两个文件组成&#xff0c;upload.py 和 main.py&#xff0c;放在同一目录下运行 main.py 就好&#xff01; # upload.py import requests class UploadPic: def __init__(self, c…...

常见日志库NLog、log4net、Serilog和Microsoft.Extensions.Logging介绍和区别

在C#中&#xff0c;日志库的选择主要取决于项目的具体需求&#xff0c;包括性能、易用性、可扩展性等因素。以下是关于NLog、log4net、Serilog和Microsoft.Extensions.Logging的基本介绍和使用示例。 包含如何配置输出日志到当前目录下的log.txt文件及控制台的示例&#xff0c;…...

【PX4-AutoPilot教程-TIPS】离线安装Flight Review PX4日志分析工具

离线安装Flight Review PX4日志分析工具 安装方法 安装方法 使用Flight Review在线分析日志&#xff0c;有时会因为网络原因无法使用。 使用离线安装的方式使用Flight Review&#xff0c;可以在无需网络的情况下使用Flight Review网页。 安装环境依赖。 sudo apt-get insta…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...