图书管理系统代码(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 详细讲解在这篇博客: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:…...
Nginx反向代理Kingbase数据库
本文适用于开发人员学习运维领域知识,主要内容为在个人理解的基础上对企业级开发中所使用的Nginx和数据库kingbase相关使用,并附上Nginx反向代理kingbase数据库的相关配置的操作方式,感谢阅读 为什么是nginx代理kingbase数据库服务端 生产环…...

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

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

Spring Boot集成websocket实现webrtc功能
1.什么是webrtc? WebRTC 是 Web 实时通信(Real-Time Communication)的缩写,它既是 API 也是协议。WebRTC 协议是两个 WebRTC Agent 协商双向安全实时通信的一组规则。开发人员可以通过 WebRTC API 使用 WebRTC 协议。目前 WebRTC…...

StableSwarmUI 安装教程(详细)
文章目录 背景特点安装 背景 StableSwarmUI是StabilityAI官方开源的一个文生图工作流UI,目前处于beta阶段,但主流程是可以跑通的。该UI支持接入ComfyUI、Stable Diffusion-WebUI。其工作原理就是使用ComfyUI、Stable Diffusion-WebUI或者StabilityAI官方…...
利用Unity XR交互工具包实现简易VR菜单控制——6.18山大软院项目实训
初始设置 在Unity项目中,首先需要确保安装了XR插件和XR交互工具包。这些工具包提供了对VR硬件的支持,以及一系列用于快速开发VR交互的组件和预设。 脚本概览 本示例中的menuController脚本附加在一个Unity GameObject上,这个脚本负责监听用…...

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

【机器学习】第6章 支持向量机(SVM)
一、概念 1.支持向量机(support vector machine,SVM): (1)基于统计学理论的监督学习方法,但不属于生成式模型,而是判别式模型。 (2)支持向量机在各个领域内的…...
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 远程连接
文章目录 观前提示:本环境在 root 用户下kali 配置静态网络地址打开网络配置文件 kali 配置 ssh 远程连接 观前提示:本环境在 root 用户下 kali 配置静态网络地址 打开网络配置文件 vim /etc/network/interfaces出现一下内容 # This file describes …...

Redis常见数据类型及其常用命令详解
文章目录 一、Redis概述二、Redis常用命令1.通用命令1.1 KEYS:查看符合模板的所有 key1.2 DEL:删除一个指定的 key1.3 EXISTS:判断 key 是否存在1.4 EXPIRE:给一个 key 设置有效期,有效期到期时该 key 会被自动删除1.5…...

JMU 数科 数据库与数据仓库期末总结(4)实验设计题
E-R图 实体-关系图 E-R图的组成要素主要包括: 实体(Entity):实体代表现实世界中可相互区别的对象或事物,如顾客、订单、产品等。在图中,实体通常用矩形表示,并在矩形内标注实体的名称。 属性…...
Go版RuoYi
RuoYi-Go(DDD) 1. 关于我(在找远程工作,给机会的老板可以联系) 个人介绍 2. 后端 后端是用Go写的RuoYi权限管理系统 (功能正在持续实现) 用DDD领域驱动设计(六边形架构)做实践 后端 GitHub地址 后端 Gitee地址 3. 前端 本项目没有自研前端,前端代…...

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

HTTP/2 协议学习
HTTP/2 协议介绍 HTTP/2 (原名HTTP/2.0)即超文本传输协议 2.0,是下一代HTTP协议。是由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis (httpbis)工作小组进行开发。是自1999年http1.1发布后的首个更新。…...
“先票后款”条款的效力认定
当事人明确约定一方未开具发票,另一方有权拒绝支付工程款的,该约定对当事人具有约束力。收款方请求付款方支付工程款时,付款方可以行使先履行抗辩权,但为减少当事人诉累,收款方在诉讼中明确表示愿意开具发票࿰…...

CSDN 自动上传图片并优化Markdown的图片显示
文章目录 完整代码一、上传资源二、替换 MD 中的引用文件为在线链接参考 完整代码 完整代码由两个文件组成,upload.py 和 main.py,放在同一目录下运行 main.py 就好! # upload.py import requests class UploadPic: def __init__(self, c…...

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

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

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
基于Java项目的Karate API测试
Karate 实现了可以只编写Feature 文件进行测试,但是对于熟悉Java语言的开发或是测试人员,可以通过编程方式集成 Karate 丰富的自动化和数据断言功能。 本篇快速介绍在Java Maven项目中编写和运行测试的示例。 创建Maven项目 最简单的创建项目的方式就是创建一个目录,里面…...

篇章一 论坛系统——前置知识
目录 1.软件开发 1.1 软件的生命周期 1.2 面向对象 1.3 CS、BS架构 1.CS架构编辑 2.BS架构 1.4 软件需求 1.需求分类 2.需求获取 1.5 需求分析 1. 工作内容 1.6 面向对象分析 1.OOA的任务 2.统一建模语言UML 3. 用例模型 3.1 用例图的元素 3.2 建立用例模型 …...
Python打卡训练营学习记录Day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...