图书馆管理系统源码(Java)


Book包->内含Book类与BookList类

Book类    用于初始化图书并对其进行操作

BookList类    用于存放多本图书

Book类

package Book;public class Book {private String name;private String author;private int price;private String type;private boolean isBorrow;//写一个构造方法 初始化图书内容public Book(String name,String author,int price,String type) {this.author = author;this.name = name;this.type = type;this.price = price;}@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +", type='" + type + '\'' +",isBorrow='"+isBorrow()+ '}';}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 String getType() {return type;}public void setType(String type) {this.type = type;}public boolean isBorrow() {return isBorrow;}public void setBorrow(boolean borrow) {isBorrow = borrow;}
}

BookList类

package Book;public class BookList {private Book[] books;private int usedSize;//假设书架的容量大小为十本书  usedSize是此时书架上有几本书//初始化几本书(可以自定义)public BookList() {this.books = new Book[10];books[0] = new Book("西游记","施耐庵",10,"小说");books[1] = new Book("红楼梦","曹雪芹",14,"小说");books[2] = new Book("三国演义","罗贯中",15,"小说");this.usedSize = 3;}public Book getBooks(int pos) {return books[pos];}public void setBooks(Book book, int pos) {books[pos] = book;}public int getUsedSize() {return usedSize;}public void setUsedSize(int usedSize) {this.usedSize = usedSize;}
}

operatio包

Operation接口

package operation;import Book.BookList;public interface Operation {public void work(BookList bookList);
}

AddOperation 类

package operation;import Book.Book;
import Book.BookList;import java.util.Scanner;public class AddOperation implements Operation {@Overridepublic void work(BookList bookList) {System.out.println("新增图书->");Scanner scan = new Scanner(System.in);System.out.println("请输入书名->");String name = scan.next();System.out.println("请输入作者->");String author = scan.next();System.out.println("请输入价格->");int price = scan.nextInt();System.out.println("请输入类型->");String type = scan.next();Book book = new Book(name,author,price,type);bookList.setBooks(book,bookList.getUsedSize());System.out.println("添加图书成功!");bookList.setUsedSize(bookList.getUsedSize()+1);}
}

BorrowOperation 类

package operation;import Book.Book;
import Book.BookList;import java.util.Scanner;public class BorrowOperation implements Operation {@Overridepublic void work(BookList bookList) {Scanner scan = new Scanner(System.in);System.out.println("借阅图书->");System.out.println("请输入要借阅的书名->");String name = scan.next();int tmp =bookList.getUsedSize();for (int i = 0; i < tmp; i++) {Book book = bookList.getBooks(i);if(name.equals(book.getName())) {bookList.getBooks(i).setBorrow(false);System.out.println("借阅成功!");System.out.println(bookList.getBooks(i).toString());return;}}System.out.println("找不到这本书");}
}

ExitOperation 类

package operation;import Book.BookList;public class ExitOperation implements Operation {@Overridepublic void work(BookList bookList) {System.out.println("退出系统->");System.exit(0);}
}

FindOperation 类

package operation;import Book.BookList;
import Book.Book;
import java.util.Scanner;public class FindOperation implements Operation {@Overridepublic void work(BookList bookList) {System.out.println("查找图书->");Scanner scan = new Scanner(System.in);System.out.println("请输入要查找的书名->");String name = scan.next();int tmp =bookList.getUsedSize();for (int i = 0; i < tmp; i++) {Book book = bookList.getBooks(i);if(name.equals(book.getName())) {System.out.println("找到这本书了,它的信息是->");System.out.println(book.toString());return;}}System.out.println("找不到这本书");}
}

RemoveOperation 类

package operation;import Book.Book;
import Book.BookList;import java.util.Scanner;public class RemoveOperation implements Operation {@Overridepublic void work(BookList bookList) {System.out.println("删除图书->");Scanner scan = new Scanner(System.in);System.out.println("请输入要删除的书名->");String name = scan.next();int tmp = bookList.getUsedSize();int flag = -1;for (int i = 0; i < tmp; i++) {Book book = bookList.getBooks(i);if(name.equals(book.getName())) {flag = i;}}if(flag == -1) {System.out.println("没有这本书,删除失败!");return;}for (int i = flag; i < tmp-1; i++) {bookList.setBooks(bookList.getBooks(i+1),i);}bookList.setBooks(null, tmp-1);bookList.setUsedSize(tmp-1);System.out.println("删除成功!");}
}

ReturnOperation 类

package operation;import Book.Book;
import Book.BookList;import java.util.Scanner;public class ReturnOperation implements Operation {@Overridepublic void work(BookList bookList) {Scanner scan = new Scanner(System.in);System.out.println("归还图书->");System.out.println("请输入要归还的书名->");String name = scan.next();int tmp =bookList.getUsedSize();for (int i = 0; i < tmp; i++) {Book book = bookList.getBooks(i);if(name.equals(book.getName())) {bookList.getBooks(i).setBorrow(true);System.out.println("归还成功!");System.out.println(bookList.getBooks(i).toString());return;}}System.out.println("找不到这本书");}
}

ShowOperation 类

package operation;import Book.BookList;public class ShowOperation implements Operation {@Overridepublic void work(BookList bookList) {System.out.println("显示图书->");int tmp = bookList.getUsedSize();for (int i = 0; i < tmp; i++) {System.out.println(bookList.getBooks(i).toString());}}
}

User包 实现用户操作

User父类

package User;
import Book.BookList;
import operation.*;public abstract class User {protected Operation[] operations;protected String name;public User(String name) {this.name = name;}public abstract void doOperation(int choice, BookList bookList);public abstract int menu();
}

AdminUser子类 实现管理员操作

package User;
import Book.BookList;
import operation.*;import java.util.Scanner;public class AdminUser extends User {public AdminUser(String name) {super(name);this.operations = new Operation[] {new ExitOperation(),new FindOperation(),new AddOperation(),new RemoveOperation(),new ShowOperation(),};}@Overridepublic void doOperation(int choice, BookList bookList) {this.operations[choice].work(bookList);}@Overridepublic int menu() {System.out.println("********管理人员菜单********");System.out.println("1、查找图书");System.out.println("2、新增图书");System.out.println("3、删除图书");System.out.println("4、显示图书");System.out.println("0、退出系统");System.out.println("**************************");System.out.println("请输入您要进行的操作->");Scanner scan = new Scanner(System.in);int choice = scan.nextInt();return choice;}}

NormalUser子类 实现普通用户操作

package User;import Book.BookList;
import operation.*;import java.util.Scanner;public class NormalUser extends User {public NormalUser(String name) {super(name);this.operations = new Operation[] {new ExitOperation(),new FindOperation(),new BorrowOperation(),new ReturnOperation()};}@Overridepublic void doOperation(int choice, BookList bookList) {this.operations[choice].work(bookList);}public int menu() {System.out.println("********读者菜单********");System.out.println("1、查找图书");System.out.println("2、借阅图书");System.out.println("3、归还图书");System.out.println("0、退出系统");System.out.println("***********************");System.out.println("请输入您要进行的操作->");Scanner scan = new Scanner(System.in);int choice = scan.nextInt();return choice;}
}

Main示例

{public static User login() {Scanner scan = new Scanner(System.in);System.out.println("您的姓名是->");String name = scan.next();System.out.println("请选择你要登录的系统->");System.out.println("1、管理员系统");System.out.println("2、读者系统");System.out.println("————————————————————");int choice = scan.nextInt();if(choice == 1) {return new AdminUser(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.doOperation(choice,bookList);}}
}

以上就是 图书馆管理系统源码(Java) 的全部内容了,希望能对你有所帮助!

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

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

相关文章

音频——S/PDIF

文章目录 BMC 编码字帧(sub-frame)格式帧(frame)格式参考S/PDIF 是 SONY 和 Philips 公司共同规定的数字信号传输规范,其实就是在 AES/EBU 上进行改动的家用版本。IEC60958 的标准规范囊括了以上两个规范。spdif 采用了双相符号编码(BMC),是将时钟信号和数据信号混合在一起…

强化学习,快速入门与基于python实现一个简单例子(可直接运行)

文章目录 一、什么是“强化学习”二、强化学习包括的组成部分二、Q-Learning算法三、迷宫-强化学习-Q-Learning算法的实现全部代码&#xff08;复制可用&#xff09;可用状态空间检查是否超出边界epsilon 的含义更新方程 总结 一、什么是“强化学习” 本文要记录的大概内容&am…

C3 多媒体查询

文章目录 前言CSS3 多媒体查询CSS2 多媒体类型CSS3 多媒体查询浏览器支持多媒体查询语法CSS3 多媒体类型多媒体查询简单实例 媒体类型媒体功能更多实例后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;CSS &#x1f431;‍&#x1f453;博…

SpringBoot 2 系列停止维护,Java8 党何去何从?

SpringBoot 2.x 版本正式停止更新维护&#xff0c;官方将不再提供对 JDK8 版本的支持 SpringBoot Logo 版本的新特性 3.2 版本正式发布&#xff0c;亮点包括&#xff1a; 支持 JDK17、JDK21 版本 对虚拟线程的完整支持 JVM Checkpoint Restore&#xff08;Project CRaC&…

quickapp_快应用_某些css样式不兼容问题

样式问题 引入css样式文件[1] 单位px [2]选择器[3]盒模型[4]样式布局-默认弹性布局且不可取消[5-1]样式切换-类名的动态切换-语法[5-2]样式切换 - 类名的动态切换-目标元素[5-3] 样式切换 - 行内样式动态切换[6]background[7]overflow[8]border-radius[9]盒子阴影[10] 定位erro…

1、Mysql架构与历史

Mysql逻辑架构 最上层是服务并不是Mysql所独有的&#xff0c;大多数基于网络的客户端/服务器的工具或者服务都有类似的架构&#xff0c;比如连接处理&#xff0c;授权认证&#xff0c;安全等。 第二层是Mysql比较有意思的部分。大多数Mysql的核心服务都在这一层&#xff0c;…

用户与组管理:如何在服务器系统中管理用户和权限

你是否想过&#xff0c;当你登录到一个服务器系统时&#xff0c;你是如何被识别和授权的&#xff1f;你是否知道&#xff0c;你可以通过创建和管理用户和组来简化和优化你的系统管理工作&#xff1f;你是否想了解一些常用的用户和组管理命令和技巧&#xff1f;如果你的答案是肯…

Walrus 入门教程:如何创建模板以沉淀可复用的团队最佳实践

模板是 Walrus 的核心功能之一&#xff0c;模板创建完成后用户可以重复使用&#xff0c;并在使用过程中逐渐沉淀研发和运维团队的最佳实践&#xff0c;进一步简化服务及资源的部署。用户可以使用 HCL 语言自定义创建模板&#xff0c;也可以一键复用 Terraform 社区中上万个成熟…

批量按顺序1、2、3...重命名所有文件夹里的文件

最新&#xff1a; 最快方法&#xff1a;先用这个教程http://文件重命名1,2......nhttps://jingyan.baidu.com/article/495ba841281b7079b20ede2c.html再用这个教程去空格&#xff1a;利用批处理去掉文件名中的空格-百度经验 (baidu.com) 以下为原回答 注意文件名有空格会失败…

LeetCode Hot100 105.从前序与中序遍历序列构造二叉树

题目&#xff1a;给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 代码&#xff1a; class Solution {private Map<Integer, Integer> indexM…

ESP32网络开发实例-远程Web串口监视器

远程Web串口监视器 文章目录 远程Web串口监视器1、应用介绍2、软件准备3、硬件准备4、代码实现在本文中,我们将构建一个 ESP32 网络服务器,用作远程串行监视器。 基于 Web 的串行监视器的工作方式与通常用于调试目的的 Arduino IDE 串行监视器的工作方式相同。 1、应用介绍 …

数字逻辑电路基础-时序逻辑电路之移位寄存器

文章目录 一、移位寄存器定义二、verilog源码三、仿真结果一、移位寄存器定义 移位寄存器定义 A shift register is a type of digital circuit using a cascade of flip flops where the output of one flip-flop is connected to the input of the next. 移位寄存器是一种将…

基于51单片机超市快递寄存自动柜设计源程序

一、系统方案 1、本设计采用这51单片机作为主控器。 2、存包&#xff0c;GSM短信取件码。 3、液晶1620显示。 4、矩阵键盘输入取件码&#xff0c;完成取包。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 /******************************…

量子计算的发展

目录 一、量子力学的发展历程二、量子计算的发展历程三、量子计算机的发展历程四、量子信息科学的发展 一、量子力学的发展历程 量子力学是现代物理学的一个基本分支&#xff0c;它的发展始于20世纪初。以下是量子力学发展的几个重要阶段&#xff1a; 普朗克&#xff08;1900&…

steam搬砖还能做吗?CSGO饰品未来走势如何?

steam/csgo搬砖项目真能月入过万吗&#xff1f;到底真的假的&#xff1f; 如何看待CSGO饰品市场的整体走向&#xff1f; 从整体来说&#xff0c;CSGO的饰品市场与规模肯定会持续不断的上升&#xff0c;大盘不会发生特别大的波动&#xff0c;目前处于稳定期&#xff01;&#x…

WGCLOUD 中文繁体版本 下载

wgcloud 繁体版下载 下載繁體版安裝包 - WGCLOUD

Compose入门

​ 本篇文章主要是为了对Compose有一个初步了解。知道Compose是做什么的&#xff0c;用Compose能干什么&#xff0c;在目前的各种UI框架下面有些优势&#xff0c;参考Google官网的解释加上一些自己的理解生成的一篇文章。本人也是Compose初学者&#xff0c;通过每一步学习遇到哪…

【Qt之QFileInfo】使用

描述 QFileInfo类提供了与系统无关的文件信息。 QFileInfo提供有关文件的名称和位置&#xff08;路径&#xff09;在文件系统中的信息&#xff0c;以及它的访问权限、是否为目录或符号链接等。还可以获取文件的大小和最后修改/读取时间。QFileInfo还可以用于获取关于Qt资源的信…

基于java技术的社区交易二手平台

基于java技术的社区交易二手平台的设计与实现 &#xff08;一&#xff09;开发背景 随着因特网的日益普及与发展&#xff0c;更多的人们开始通过因特网来寻求便利。但是&#xff0c;许多人都觉得网上商店里的东西不贵。所以&#xff0c;有些顾客宁愿去那些用二次定价建立起来的…

kafka精准一次、事务、幂等性

Kafka事务 消息中间件的消息保障的3个级别 At most once 至多一次。数据丢失。At last once 至少一次。数据冗余Exactly one 精准一次。好&#xff01;&#xff01;&#xff01; 如何区分只要盯准提交位移、消费消息这两个动作的时机就可以了。 当&#xff1a;先消费消息、…