@[TOC](Java实现 图书管理系统) # 一、菜单 该图书管理系统的菜单界面主要有以下两种: **管理员菜单:** **用户菜单:**

Java实现 图书管理系统

  • 一、菜单
  • 二、基本框架
    • 1.book包
      • 1.1 book类
      • 1.2 bookList类
    • 2.use包
      • 2.1 User类
      • 2.2 AdminUser类
      • 2.3 NormalUser类
      • 2.4 用户菜单
    • 3.operation包
      • 3.1 IOperation接口
      • 3.2 AddIOperation类
      • 3.3 剩余类如下
    • 4.Main类
      • 4.1 login方法
      • 4.2 main函数
  • 三、具体运行
    • 3.1 ExitIOperation类
    • 3.2 ShowIOperation类
    • 3.3 AddIOperation类
    • 3.4 BorrowedIOperation类
    • 3.5 ReturnIoperation类
    • 3.6 DelIoperation类

一、菜单

该图书管理系统的菜单界面主要有以下两种:
管理员菜单:
查找图书
新增图书
删除图书
显示图书
退出系统
用户菜单:
查找图书
借阅图书
归还图书
退出系统

二、基本框架

1.book包

因为是图书管理系统,所以可以先从书(book)这个包开始。
book包中有book类和bookList类
在这里插入图片描述

1.1 book类

在book类中存放中图书的各种属性,书名、作者、价格、种类、借出状态。

    private String name;
    private String autor;
    private int price;
    private String type;
    private boolean isBorrowed;

再生成对应的构造方法:(Alt + insert) + Construct+(Crtl+鼠标)
鼠标右键 + Generate + Construct+(Crtl+鼠标)
在这里插入图片描述
生成以下代码:

public Book(String name, String author, int price, String type) {
        this.name = name;
        this.autor = author;
        this.price = price;
        this.type = type;
    }

再生成对应属性的get和set方法:(Alt + insert)+ Getter and Setter +(Crtl+鼠标)
在这里插入图片描述
生成以下代码:

public String getName() {
    return name;
}
 
public void setName(String name) {
    this.name = name;
}
 
public String getAuthor() {
    return autor;
}
 
public void setAuthor(String autor) {
    this.autor = autor;
}
 
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 isBorrowed() {
    return isBorrowed;
}
 
public void setBorrowed(boolean borrowed) {
    isBorrowed = borrowed;
}

最后再重写toString方法:(Alt + insert)+ toString() +(Crtl+鼠标)
在这里插入图片描述在这里插入图片描述
其中isBorrowed可以改写为下面三位运算符的形似:
在这里插入图片描述

1.2 bookList类

bookList类更像是一个书架,书是放在里面的。先创建Book数组,同时可以用useSized来记录图书数量。同时也可以放三本书在书架里面,方便后面运行功能。

    private Book[] books = new Book[10];
    private int useSized = 0;//计数器 来记录 当前实际放的书的书目!
 
    public BookList(){
    //构造方法 来初始化成员
        this.books[0] = new Book("三国演义","罗贯中",15,"小说");
        this.books[1] = new Book("西游记","吴承恩",14,"小说");
        this.books[2] = new Book("红楼梦","曹雪芹",15,"小说");
 
        this.useSized = 3;
    }

再生成useSized的get和set方法:(Alt + insert) + Getter and Setter +(Crtl+鼠标)

 public int getUseSized() {
        return useSized;
    }
 
    public void setUseSized(int useSized) {
        this.useSized = useSized;
    }

2.use包

写完部分book包的内容,我们可以开始写use包、用户方面的内容。从一开始的菜单可以得知,用户分为管理员和普通用户。而这两者之间有一些相同的属性:都有菜单,都有用户姓名。所以可以写一个User来被它们继承。
ues包中有User类、AdminUser类和NormalUser类

2.1 User类

2.2 AdminUser类

2.3 NormalUser类

2.4 用户菜单

3.operation包

在这里插入图片描述
在写完book包和use包的部分内容后,我们可以开始来写不同用户所对应的功能
operation包中有AddIOperation类、BorrowedIOperation类、DelIOperation类、ExitIOperation类、FindIOperation类、IOperation接口、ReturnIOperation类、ShowIOperation类。

3.1 IOperation接口

在创建class文件时,选择Interface,创建接口
在这里插入图片描述
并在其中创建work方法

public interface IOperation {
    void work(BookList bookList);
}

3.2 AddIOperation类

AddIOperation类去使用IOperation接口(implements)。
其中需要重写work方法:(Alt + insert)+ Overr Methodes + 鼠标
在这里插入图片描述
然后对其中的内容进行重写:

public class AddIOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("新增图书");
    }
}

3.3 剩余类如下

步骤同上:接口 + 重写方法。
BorrowedIOperation类

public class BorrowedeIOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("借阅图书...");
    }
}

DelIOperation类

public class DelIOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("删除图书");
}

ExitIOperation类

public class ExitIOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("退出系统");
}

FindIOperation类

public class FindIOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("查阅图书");
}

ReturnIOperation类

public class ReturnIOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("归还图书");
}

ShowIOperation类

public class ReturnIOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("归还图书");
}

4.Main类

4.1 login方法

4.2 main函数

三、具体运行

3.1 ExitIOperation类

3.2 ShowIOperation类

3.3 AddIOperation类

3.4 BorrowedIOperation类

3.5 ReturnIoperation类

3.6 DelIoperation类

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【动手实验】TCP半连接队列、全连接队列实战分析

本文是对 从一次线上问题说起,详解 TCP 半连接队列、全连接队列 这篇文章的实验复现和总结,借此加深对 TCP 半连接队列、全连接队列的理解。 实验环境 两台腾讯云服务器 node2(172.19.0.12) 和 node3(172.19.0.15&am…

【弹性计算】弹性裸金属服务器和神龙虚拟化(二):适用场景

弹性裸金属服务器和神龙虚拟化(二):适用场景 1.混合云和第三方虚拟化软件部署2.高隔离容器部署3.高质量计算服务4.高速低时延 RDMA 网络支持场景5.RISC CPU 支持6.GPU 性能无损输出 公共云服务提供商推出 弹性裸金属服务器,很显然…

正大杯攻略|量表类问卷数据分析基本步骤

在量表类问卷研究领域,分析变量之间的影响关系是基础且常用的手段。一般先提出关于自变量 X 对因变量 Y 影响关系的假设,随后运用合适的统计方法进行验证,挖掘二者间规律,进而得出结论,为研究发展提供建议。具体分析步…

stm32(hal库)学习笔记-时钟系统

在stm32中,时钟系统是非常重要的一环,他控制着整个系统的频率。因此,我们有理由好好学一下时钟系统。 什么是时钟? 时钟是具有周期性的脉冲信号,一般我们常用占空比为50%的方波。可以形象的说,时钟就是单…

浅入浅出Selenium DevTools

前言 在自动化测试领域,Selenium一直是主流工具之一。随着前端技术的不断发展,浏览器的功能也在不断丰富。 Selenium 3版本前,一套通用的采集流程如上图所示: 打开Charles,设置Session自动导出频次及导出路径Seleniu…

网络安全-使用DeepSeek来获取sqlmap的攻击payload

文章目录 概述DeepSeek使用创建示例数据库创建API测试sqlmap部分日志参考 概述 今天来使用DeepSeek做安全测试,看看在有思路的情况下实现的快不快。 DeepSeek使用 我有一个思路,想要测试sqlmap工具如何dump数据库的: 连接mysql数据库&#…

猿大师播放器:HTML内嵌VLC播放RTSP视频流,无需转码,300ms级延迟,碾压服务器转码方案

在智慧城市、工业安全、应急指挥等关键领域,实时视频监控已成为守护生命与财产的核心防线‌。然而,行业普遍面临三大矛盾: ‌实时性要求与高延迟矛盾‌:火灾蔓延速度达1米/秒,化工泄漏扩散仅需数秒,传统方…

[Jsprit]Jsprit学习笔记-vrp问题新解的接收策略

阈值接收器 作者实现了一个阈值接收器,SchrimpfAcceptance 下面是对这个接收器的解释 阈值接受函数: 这个概念可以描述如下:大多数问题不仅仅有一个唯一的最小值(或最大值),而是有多个局部最小值&#xff…

传奇3光通版手游行会战攻略:团队协作与战术布局详解

戳一戳;了解更多 在《传奇3光通版》手游中,行会战是玩家们展现团队协作与战术布局的重要舞台。下面,我们就来详细解析一下行会战中的团队协作与战术布局攻略。 一、团队协作 ​职业搭配 在行会战中,合理的职业搭配至关重要。一般…

初出茅庐的小李博客之按键驱动库使用

驱动库介绍 源码地址:https://github.com/jiejieTop/ButtonDrive 使用只需3步,创建按键,按键事件与回调处理函数链接映射,周期检查按键,支持单双击、连按、长按;采用回调处理按键事件(自定义消…

基于springboot+vue实现的食物营养分析与推荐网站 (源码+L文+ppt)43-18

摘 要 食物营养分析与推荐网站是一个综合性的在线平台,它汇集了各类食材的详细营养数据,为用户提供深入的食物营养分析。通过输入个人需求和健康状况,网站能够智能生成个性化的饮食建议,帮助用户更好地规划日常饮食,…

#渗透测试#批量漏洞挖掘#某图创图书馆集群管理系统updOpuserPw SQL注入(CVE-2021-44321)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

java基础+面向对象

Java基础语法 CMD命令 cls 清屏 cd 目录进入文件 cd… 退回 dir 查看当前目录所有文件 E:进入E盘 exit 退出 环境变量就是不用去专门的盘符去找,直接去环境变量里找到文件 语言优势 编译型语言c: 整体翻译 解释型语言python&#x…

水滴tabbar canvas实现思路

废话不多说之间看效果图,只要解决了这个效果水滴tabbar就能做出来了 源码地址 一、核心实现步骤分解 布局结构搭建 使用 作为绘制容器 设置 width=600, height=200 基础尺寸 通过 JS 动态计算实际尺寸(适配高清屏) function initCanvas() {// 获取设备像素比(解决 Re…

SpringBoot+Redis+Mybatis-plus黑马点评

短信登录 基于Session实现登录 流程: 发送短信验证码-->短信验证码注册登录-->校验登录状态(保存用户到ThreadLocal,方便后续使用) 不能每次请求服务都要进行登录状态校验,解决办法:拦截器 在Sp…

Windows之远程终端问题集锦(十二)

1.描述 远程终端的默认端口是3389 云vps一般会开启 没有启用的情况下,在较高的权限下可以使用注册表命令进行开启 2.注册表开启远程终端命令 2.1 2008 2012 2016 开启3389 这个就是新建.bat文件 在本来不开启的情况下 我们双击运行 他就自动开启了 当然我们必须获…

跟着源码实现LevelDB(二)util/status.cc

概述 本小节实现了leveld的Status类,Status看起来是个简单的类,但是其中也包含了leveldb对极致的性能实现的巧妙设计 Status的内存管理 Status 只有一个成员变量 const char* state_; state[0…3] 表示长度,state[4] 1个字节 表示状态的枚…

【Azure 架构师学习笔记】- Azure Databricks (13) -- 搭建Medallion Architecture part 1

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (12) – Medallion Architecture简介 前言 上文已经介绍了关于Medallion的知识,本文开始用ADB 来实现, 但是基于内容较…

模型优化之强化学习(RL)与监督微调(SFT)的区别和联系

强化学习(RL)与监督微调(SFT)是机器学习中两种重要的模型优化方法,它们在目标、数据依赖、应用场景及实现方式上既有联系又有区别。 想了解有关deepseek本地训练的内容可以看我的文章: 本地基于GGUF部署的…

欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、马氏距离理解学习

目录 一、欧氏距离(Euclidean Distance)公式:原理: 二、曼哈顿距离(Manhattan Distance)公式:原理: 三、切比雪夫距离(Chebyshev Distance)公式:原…