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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis 自定义映射 ResultMap:字段与属性的映射详解

在 MyBatis 框架中&#xff0c;ResultMap是一个非常强大的功能&#xff0c;它允许我们自定义SQL查询结果与Java对象之间的映射关系。特别是在数据库字段名和Java对象属性名不一致时&#xff0c;ResultMap能够帮助我们精确地映射数据。 ResultMap 的基本使用 若字段名和实体类…

量化交易之日内回转策略:如何利用MACD指标实现盈利?

哈喽,大家好,我是木头左! 日内回转策略是一种短线交易策略,其核心思想是在一天内通过买入和卖出股票来实现利润。这种策略的主要优点是可以在短期内获取较高的收益,同时风险相对较小。日内回转策略主要适用于个股波动较大、流动性较好的股票。本文将详细介绍日内回转策略的…

押注“人类终极能源”!OpenAI与核聚变公司Helion Energy洽谈“购买大量”聚变能源

内容提要 在当下&#xff0c;由 AI 引发的新一轮能源危机已经不再是一个小概率的“黑天鹅”事件&#xff0c;而是一头正在向我们猛冲而来的“灰犀牛”。 文章正文 Helion Energy&#xff0c;是一家总部位于美国华盛顿州埃弗雷特的能源创业公司。 这家成立于 2013 年的公司在…

GPU性能相关的工具

GPU性能相关的工具 GPU的性能测试工具比较多&#xff0c;已知的各个开发厂家是有自己开发的性能测试工具&#xff0c;一般市场上开源或通用的性能测试工具&#xff0c;主要是跑定制的渲染场景&#xff0c;统计平均帧率&#xff0c;经过包装得到跑分值。 整体上可以分成两类&am…

华为Atlas NPU ffmpeg 编译安装

处理器&#xff1a;鲲鹏920 NPU&#xff1a;昇腾 310P3 操作系统&#xff1a;Kylin Linux Advanced Server V10 CANN&#xff1a;Ascend-cann-toolkit_8.0.RC1_linux-aarch64.run FFmpeg&#xff1a;AscendFFmpegPlugin(不要用AscendFFmpeg) AscendFFmpegPlugin下载地址&…

安卓实现圆形按钮轮廓以及解决无法更改按钮颜色的问题

1.实现按钮轮廓 在drawable文件新建xml文件 <shape xmlns:android"http://schemas.android.com/apk/res/android"<!--实现圆形-->android:shape"oval"><!--指定内部的填充色--><solid android:color"#FFFFFF"/><!-…

【挑战100天首通《谷粒商城》】-【第一天】06、环境-使用vagrant快速创建linux虚拟机

文章目录 课程介绍1、安装 linux 虚拟机2、安装 VirtualBoxStage 1&#xff1a;开启CPU虚拟化Stage 2&#xff1a;下载 VirtualBoxStage 2&#xff1a;安装 VirtualBoxStage 4&#xff1a;安装 VagrantStage 4-1&#xff1a;Vagrant 下载Stage 4-2&#xff1a;Vagrant 安装Stag…

CentOS 7.9上创建JBOD(一)

系列文章目录 CentOS 7.9上创建的JBOD阵列恢复&#xff08;二&#xff09; CentOS 7.9检测硬盘坏区、实物定位&#xff08;三&#xff09; 文章目录 系列文章目录前言一、安装 mdadm工具二、创建JBOD设备三、为JBOD扩容&#xff08;增加一个硬盘&#xff09;四、最后&#xff…

MySQL修改用户权限(宝塔)

在我们安装好的MySQL中&#xff0c;很可能对应某些操作时&#xff0c;不具备操作的权限&#xff0c;如下是解决这些问题的方法 我以宝塔创建数据库为例&#xff0c;创建完成后&#xff0c;以创建的用户名和密码登录 这里宝塔中容易发生问题的地方&#xff0c;登录不上去&#…

STM32单片机-通信协议(下)

STM32单片机-通信协议(下&#xff09; 一、通信协议介绍二、USART(通用同步/异步收发器)2.1 USART框图和基本结构2.2 串口发送2.2.1 Printf函数移植2.2.2 串口发送汉字 2.3 串口接收2.3.1 串口接收查询2.3.2 串口接收中断 2.4 USART串口数据包2.4.1 数据包格式2.4.2 数据包接收…

企业数字化转型好帮手蚓链,超多创新亮点等你来!

家人们&#xff0c;今天必须给大家分享一下蚓链这个超棒的数字化转型好帮手呀&#xff01; 在理念创新上&#xff0c;它做到了以用户为中心&#xff0c;给大家带来精准化、个性化的营销体验呢。 组织创新也超厉害&#xff0c;搭建了开放式创新平台&#xff0c;吸引外部合作伙伴…

gitlab2024最新版安装

系统&#xff1a;redhat9.0 gitlab版本&#xff1a;gitlab-ce-16.10.7-ce.0.el9.x86_64.rpm 安装组件&包依赖&#xff1a;https://packages.gitlab.com/gitlab/gitlab-ce/packages/ol/9/gitlab-ce-16.10.7-ce.0.el9.x86_64.rpm 参考&#xff1a; 前提&#xff1a; 下载gitl…

CLike 游戏在玩法和题材上如何创新,以满足玩家不断变化的需求?

CLike 游戏在玩法和题材上的创新主要通过以下方式来满足玩家不断变化的需求&#xff1a; 独特的游戏模式&#xff1a;CLike 游戏可能会引入新颖的游戏模式&#xff0c;与传统游戏不同。例如&#xff0c;引入实时对战或多人合作模式&#xff0c;让玩家可以与其他人进行实时互动&…

编程入门配置:从基础到进阶的全面指南

编程入门配置&#xff1a;从基础到进阶的全面指南 在编程的世界里&#xff0c;一个好的入门配置就如同一位得力的助手&#xff0c;能帮助我们更顺畅地开启编程之旅。本文将围绕编程入门配置的四个方面、五个方面、六个方面和七个方面展开深入解析&#xff0c;带您走进编程的奇…

石英砂酸洗提纯方法和工艺

石英砂酸洗提纯方法和工艺是石英砂加工中至关重要的一个环节&#xff0c;其目的是通过化学手段去除石英砂中的杂质&#xff0c;提升其纯度。以下将详细介绍石英砂酸洗提纯的方法和工艺&#xff0c;以便更好地理解和应用这一技术。 一、概述 石英砂酸洗提纯主要是利用酸液对石英…

【多线程实例】

使用场景 拿到了一个商品的list,然后要循环list去获取每个商品的明细&#xff0c;由于调用api很依赖于网络&#xff0c;一个个执行速度慢&#xff0c;所以考虑使用线程去解决。 //根据机器id 获取 所有商品信息 public List<ProductResponse> productList(MachineConf…

MySQL----表级锁行级锁排它锁和共享锁意向锁

MySQL的锁机制 锁&#xff08;Locking&#xff09;是数据库在并发访问时保证数据一致性和完整性的主要机制。在 MySQL 中&#xff0c;不同存储引擎使用不同的加锁方式&#xff1b;我们以 InnoDB 存储引擎为例介绍 MySQL 中的锁机制&#xff0c;其他存储引擎中的锁相对简单一些…

重大利好!亚马逊推出新功能,跨境商家销量或将迎来大爆发

亚马逊美亚站近日推出的一个新功能——帖子曝光。 顾名思义&#xff0c;帖子曝光这个功能可以提高卖家发布帖子的曝光度&#xff0c;吸引潜在用户&#xff0c;从而提升品牌影响力和产品销量。 亚马逊介绍&#xff0c;帖子曝光功能主要通过将品牌卖家的图文或视频帖子【一键】…

Nginx + KeepAlived高可用负载均衡集群

目录 一、Keepealived脑裂现象 1.现象 2.原因 3.解决 4.预防 二、实验部署 1.两台nginx做初始化操作并安装nginx 2.四层反向代理配置 3.配置高可用 4.准备检查nginx运行状态脚本 5.开启keepalived服务并测试 一、Keepealived脑裂现象 1.现象 主服务器和备服务器都同…

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

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