javaEE—图书管理系统(基础代码版)

news2024/11/15 11:17:18

                                            

前言:

本篇博客是集合了javaEE所学的知识构建的一个基础框架,讲述着面向对象的过程是如何做到多对象交互协作完成框架的构建的。利用了数组,接口,类和对象,抽象类,Object类等知识来完成。

后续会加入数据库,网页,框架等内容,使得该图书管理系统可以存储数据,搭配网页形成一个真正的图书管理系统。

图书管理系统演示

图书管理系统演示

实现构思

首先,我们需要管理书籍,用户也存在着不同的菜单,管理方法也不一样,所以我们分为三个包来区分这些类的不同,然后利用对象来相互工作,完成工作。书类的属性为书的各种书名,作者,价格,类型,还有状态(是否被借出),书架则是用来存放书籍信息的,同时存放几本书,可以通过书架来对书进行增添或删除等操作。用户之间的菜单操作也有所不同,需要分类来存放不同的操作功能,这些类的不同使得存放功能方法很麻烦,我们可以利用向上转型和重写的知识定义一个专门执行操作的接口,这个接口就是用来实现功能的一个接口,其他的方法通过重写来实现不同的功能,统一实现这个接口,这样用户类里面存放方法就会变得简单起来,只用定义一个接口数组即可。

先进行登录选项,各种功能方法则需要通过书架来操作书的属性,包括增添书籍,删除书籍,书籍属性的打印等

书和书架类

先看书的属性:

因为在特定的条件下,为了安全,书的属性是不允许被修改的,所以我们采用private的方式来修饰属性,通过get和set的方法来访问到属性内容,还定义了一个tostring方法,用来完成书籍属性的打印(注:状态是boolean类型的,所以需要修改一下重写tostring方法的内容,使其打印出“未借出”和“已借出”的状态)

然后看看书架的属性和方法内容:

书架的属性同样是不能随意修改的,还是通过get和set方法来访问,同时预先存好三本书。

用户类

用户类的大多数类型是相同的,比如说都有名字和功能菜单,功能方法,功能方法的实现方法。所以我们只需要定义一个抽象类即可:

普通用户和管理员的功能大多数都不一样,所以我们建立一个接口数组,来存放不同的方法

父类和子类实现方法也不一样,所以我们也重写执行方法:

普通用户类:

管理员用户类:

在PerformOperations中,是通过选择的方法,来执行书架的内容,this代表引用的对象(如用户),this引用的dos(接口数组)中的第flag个方法,来执行接口的work方法,形参是书架,因为是通过书架去操作书。

接口:

该接口用于实现各种方法

主函数调用结合

先创建一个书架,再进行登录操作,打印登录对象的菜单,实现菜单中的方法。

登录操作为:

通过不同的选择,返回不同的用户,向上转型的方式用用户类来接收,再调用menu方法来重写子类用户的方法,然后就可以执行对应的操作(Performperations方法)。

以管理员为例:

实现方法类

先来看功能接口:

 

只有一个工作的抽象方法,形参是书架类,用于通过书架来操作书类。

管理员功能:

查找图书:

因为属性都被修饰成私有,所以我们要学会充分利用get和set方法来访问属性:

getbooks(int pos)方法

新增图书:

实现新增图书则需要先判满,再判断是否有重复图书,再书架上得需要重写下setbooks方法来改变书架的存放的书籍,直接使用尾插的方法添加

setbooks(int pos,book b)方法:

需要注意的是:

添加完要改变书的数目

添加类型的时候注意输出方法

判满和判不同

删除图书:

假如需要删掉在pos上的图书,后续的移动方式一定是重后往前移!(从前往后移会改变书的属性)

 setbooks(int pos,book b)方法:

显示图书:

直接循环打印第i本书的属性即可

 getbooks(int pos)方法

退出系统:

需要用到一个方法:exit(),形参为0的时候就自动退出系统

普通用户功能:

与管理员不同的方法就只有借阅和归还,所以我们直接看这俩个代码即可

借阅图书:

 getbooks(int pos)方法

归还图书:

 getbooks(int pos)方法

以上就是图书管理系统的底层逻辑,充分利用了javaEE的内容来实现。看到这麻烦点个赞支持一下!

                                                 

代码演示

Test

 

book

Booklist

User

ManageUser

OrdinaryUser

DoBookcase(接口)

SearchBooks

NewlyBooks

DeleteBooks

DisplayBooks

Quit

BorrowingBooks

RepayBooks

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

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

相关文章

记一次绕过宝塔防火墙的BC站渗透

0x00 信息收集 由于主站存在云waf 一测就封 且初步测试不存在能用得上的洞 所以转战分站 希望能通过分站获得有价值的信息 这是一个查询代理帐号的站 url输入admin 自动跳转至后台 看这个参数 猜测可能是thinkCMF 0x01 getshell thinkcmf正好有一个RCE 可以尝试一下 ?afetc…

[HDCTF 2023]爬过小山去看云(HILL密码,云影密码)

题目: 我们看到给出了矩阵[3 4 19 11] 1:利用在线工具进行解码Practical Cryptography 2:解码完成后所得结果翻译之后是数字,提取后842084210884024084010124,看到只含有01248便猜测时云影密码,利用脚本进行解密。 …

惠海 H6901B升压恒流3.7V 7.4V 12V 24V 30V 36V 48V 60V 80V 100V调光无频闪细腻顺滑

H6901B是一款升压型LED恒流驱动芯片,具有良好稳定性的特点。H6901B的主要特点包括宽输入电压范围(2.7V-100V)、高工作频率(1MHz)以及多种保护功能(如芯片供电欠压保护、过温保护、软启动等)。此…

如何判断自己的情商高低?

什么是情商? 情商(简称为EQ),也叫情绪智力,和我们通常提到的智商智力有所不同(侧重于理性思维),情商更贴近实际生活,如:情绪识别和自我管理,自我…

内网穿透--Ngrok-入门-上线

免责声明:本文仅做技术交流与学习... 目录 Ngrok: 技术实现: 前提: 命令: 详细流程及图解: 平台Ngrok: Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器 支持的协议:tcp、http、https 支持的类型:正向代理、反向代理 --隧道开通免费的 --协议…

ROS2入门21讲__第07讲__节点:机器人的工作细胞

目录 前言 通信模型 案例一:Hello World节点(面向过程) 运行效果 代码解析 创建节点流程 案例二:Hello World节点(面向对象) 运行效果 代码解析 创建节点流程 案例三:物体识别节点 …

xml篇---提取VOC格式的坐标,并按照cameraID进行排序(二)

xml篇—提取VOC格式的坐标,并按照cameraID进行排序(二) import os import xml.etree.ElementTree as ETdef parse_xml(xml_file):tree ET.parse(xml_file)root tree.getroot()objects {}for obj in root.findall(object):name obj.find(…

电商API接口:供应商价格与主流电商平台价格做比价

品牌在进行采购工作时,将供应商提供的价格与主流电商平台上的公开价格进行比价是一种非常常见的做法,这样做的目的主要是为了保证自身供应商提供的价格具有竞争力和合理性,从而更好地优化采购工作。 以下是过程中的具体步骤及一些注意事项&a…

是他将计算机从“一屋子”变成“一柜子”——量子前哨缅怀小型机之父 戈登·贝尔

内容来源:量子前哨(ID:Qforepost) 文丨浪味仙 排版丨沛贤 深度好文:6000字丨15分钟阅读 5 月 21 日, 美国贝尔实验室资深人士 John Mashey 发布消息称,计算机先驱戈登贝尔(Gordon…

左极限与右极限

左极限与右极限 1. 前言 极限描述了函数在一个定点附近的行为,具体说就是当函数的自变量(例如 x x x)趋近于某一个值时,函数的因变量(例如 y y y)会产生什么样的特性(或结果)。 …

优于其他超导量子比特数千倍!猫态量子比特实现超过十秒的受控比特翻转时间

内容来源:量子前哨(ID:Qforepost) 文丨娴睿/慕一 排版丨沛贤 深度好文:2000字丨8分钟阅读 摘要:量子计算公司Alice & Bob和QUANTIC团队(国立巴黎高等矿业学院PSL分校、巴黎高等师范学院和…

如何解决IT运维不给力

运维不给力,是很多企业IT部门面临的头疼问题,其背后的原因错综复杂,可能涉及到资金投入不足、团队积极性不高、或是缺乏科学的运维管理体系。要解决这些问题,引入IT运维管理和利用先进的ITILDESK平台,可以作为破局的关…

三、Servlet基础

注:因为我并不完全是为了从0开始Java开发,因此,我这里先暂时跳过第二章服务器环境相关的内容,直接开始第三章的内容。 3.1、Servlet 的基本结构: ​ 下面的代码给出了一个基本的 Servlet ,它处理 GET 请求…

2028. 找出缺失的观测数据

问题描述 现有一份 n m 次投掷单个六面骰子的观测数据,骰子的每个面从 1 到 6 编号。观测数据中缺失了 n 份,你手上只拿到剩余 m 次投掷的数据。幸好你有之前计算过的这 n m 次投掷数据的平均值。 给你一个长度为 m 的整数数组 rolls,其中…

当 GIS 遇上 AI 大模型

今年整个 IT 界、甚至科技界最火爆的技术就是 AI 大模型了,没有之一。 以 OpenAI 的 GPT 为代表、国内外一众大模型跟进,形成了百模齐奔的态势。围绕着大模型,各项周边的应用也在快速发展。在 2023 年年底的云栖大会上,论坛标题带…

一款非常好用的python OCR文字识别框架

项目简介 一个文档 OCR 工具包,它具有以下功能: 支持 90 多种语言的 OCR,其基准测试优于云服务 任何语言的行级文本检测 布局分析(表格、图像、标题等检测) 读取顺序检测 它适用于一系列文档(有关更多详细信息,请参阅用法和基准)。 DetectionOCRLayoutReading Order 阅…

大规模敏捷SA(Leading SAFe)证书是什么意思?如何报名,含金量高吗?

大规模敏捷SA(Leading SAFe)证书是什么意思? 常规的敏捷框架适用于中小型项目团队,而且不具有扩展性。基于常规的敏捷框架,SAFe定义了一个可扩展的敏捷框架模型,它适用于大型团队的合作开发,可以提高团队之间的协作性…

vue-3d-loader 加载多个模型

需求 1、在使用three.js进行开发的过程中,需要列表加载多个模型,并根据需要多模型进行加载。 2、当鼠标移动到图片上去的时候,开始加载模型, 模型进行加载和展示。 3、在制作3d沉浸式商城时,需要根据需求&#xff0…

Easy IP + DNAT(服务器NAT转换)

第一章 Easy IP 1.1 一般家庭和企业使用的地址转换方式 直接使用出接口的地址做转换Easy IP适用于小规模居于网中的主机访问Internet的场景如:家庭、小型网吧、小型办公室中,这些地方内部主机不多,出接口可以通过拨号方式获取一个临时公网I…

用PhpStudy在本地电脑搭建WordPress网站教程(2024版)

对新手来说,明白了建站3要素后,如果直接购买域名、空间去建站,因为不熟练,反复测试主题、框架、插件等费时费力,等网站建成可能要两三个月,白白损失这段时间的建站费用。那么新手怎么建测试网站来练手呢&am…