图书管理系统代码(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,一经查实,立即删除!

相关文章

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

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

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

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…

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

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

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;每组电极和一个汇流…

【尚庭公寓SpringBoot + Vue 项目实战】后台岗位管理(十六)

【尚庭公寓SpringBoot Vue 项目实战】后台岗位管理&#xff08;十六&#xff09; 文章目录 【尚庭公寓SpringBoot Vue 项目实战】后台岗位管理&#xff08;十六&#xff09;1、业务说明2、逻辑模型介绍3、接口开发3.1、分页查询岗位信息3.2、保存或更新岗位信息3.3、根据ID删…

Unity2D游戏制作入门 | 14( 之人物实装攻击判定 )

上期链接&#xff1a;Unity2D游戏制作入门 | 13 ( 之人物三段攻击 )-CSDN博客 上期我们聊到给人物添加三段攻击的动画&#xff0c;通过建立新的图层动画当我们按下攻击按键就会自动切换进攻击的动画&#xff0c;如果我们连续按下攻击键&#xff0c;我们还可以进行好几段的攻击…

S32K3通过S32DS实现:S32K3如何将FLASH驱动放到RAM里面、RAM如何实现软件复位数据不丢失操作。

目录 1、概述 2、默认flash存放位置展示 3、通过默认的链接文件将flash放置到RAM 4、通过修改启动与链接文件将flash放在RAM 5、RAM热复位数据不丢失 1、概述 在通过RTD的SDK也好MCAL也好,始终存在一个问题,生成的代码除了看门狗模块,默认都是放在flash里面,按照正常逻…

自动统计一个学科领域中总共有多少研究者

问题&#xff1a;怎么知道一个学科领域中总共有多少研究者&#xff1f; 方法&#xff1a;学者的谷歌学术主页中会有对应的领域&#xff0c;以进化计算为例&#xff0c;进入一位进化计算学者的谷歌主页&#xff0c;然后进入标签“Evolutionary Computation”&#xff0c;只要知…

lombok不起作用排查

1.idea中lombok插件已安装并启用 2.idea中annotation processors已勾选 3.项目中gradle或maven已引入lombok依赖 但提示还是找不到get,set方法。 还需要启用annotationProcessor 重点是annotationProcessor的配置&#xff0c;没有配置这个才是问题出现的关键&#xff01;&…

CSS-0_1 CSS和层叠(样式优先级、内联样式、选择器 用户代理样式)

CSS 的本质就是声明规则 ——《深入解析CSS》 文章目录 CSS层叠和优先级用户代理样式请和用户代理样式和谐相处 选择器单选择器的优先级选择器组的优先级关于选择器的其他源码顺序尽可能的选择优先级低的选择器 内联样式内联样式和JavaScript !important多个 !important 碎碎念…

【计算机毕业设计】230疫苗预约weixin小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…