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

                                            

前言:

本篇博客是集合了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.mzph.cn/web/16510.shtml

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

相关文章

力扣刷题--268. 丢失的数字【简单】

题目描述🍗 给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1: 输入:nums [3,0,1] 输出:2 解释:n 3,因为有 3 个数字,所以…

PyTorch深度学习快速入门——P1-P13

环境配置 Anaconda,创建conda create -n pytorch python3.12,使用conda activate pytorch切换到环境。安装pytorch,conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia,使用import torch&…

水滴式粉碎机:让破碎多样化

水滴式粉碎机以其新的粉碎技术和卓越的性能,引领着粉碎技术的新革命。它采用了高速旋转技术,通过转子对物料进行撞击和摩擦,实现了对物料的精细粉碎,制备出了高品质、高附加值的产品。 水滴式粉碎机在多个行业中都有着广泛的应用…

C++的红黑树

目录 基本概念 插入结点的颜色 判断性质是否破坏 调整方式 u为g的右孩子 u存在且为红 u存在且为黑 u不存在 结论 红黑树结点定义 代码实现 基本概念 1、红黑树是一种特殊的二叉搜索树,每个结点会增加一个存储位表示结点的颜色(红或黑&#x…

数据泄露防护:企业如何通过软件限制U盘使用

在数字化办公时代,数据安全已成为企业运营中的一个关键议题。U盘作为一种便携式的数据存储和传输工具,其使用在企业内部非常普遍。然而,U盘的不当使用也可能导致严重的数据泄露问题。本文将探讨企业如何通过软件解决方案,有效限制…

1小时从0开始搭建自己的直播平台(详细步骤)

本文讲述了如何从0开始,利用腾讯云的平台,快速搭建一个直播平台的过程。 文章目录 效果图详细步骤准备工作第一步:添加域名并检验cname配置1.先填加一个推流域名2. 点击完下一步,得到一个cname地址3. 将cname地址,配置…

QT 掩码 InputMask

字符规则 如IP输入框可以简单设置为 IP->setInputMask("000.000.000.000");就会有80%的相似度 另外设置掩码用 ui.edtIP->setInputMask(“这里面是字符格式”); ★消除已有的掩码用 ui.edtIP->setInputMask(" "); 而不是ui.…

关于VFX Graph的学习

关于VFX Graph的学习 转载自我的有道云笔记,目前内容不多,后续如果继续使用会更新。 前言 出于实习工作需要和毕设需要,我开始使用VFXGraph。 以前准备第一批作品集的时候,就简单地使用过,但是只是跟着教程一顿乱连…

【方法】ZIP压缩文件的密码如何设置和取消?

ZIP是一种常见的压缩文件格式,今天来分享一下,ZIP压缩文件如何设置密码保护,以及如何取消密码,不清楚的小伙伴一起来看看吧! 设置ZIP文件密码: 想要给ZIP压缩包设置密码,需要用到支持ZIP格式的…

记一次 .NET某企业数字化平台 崩溃分析

一:背景 1. 讲故事 前些天群里有一个朋友说他们软件会偶发崩溃,想分析看看是怎么回事,所幸的是自己会抓dump文件,有了dump就比较好分析了,接下来我们开始吧。 二:WinDbg 分析 1. 程序为什么会崩溃 win…

2024-BurpSuite快速配置Jython插件环境

文章目录 前言一、下载Jython二、配置Python environment 前言 很多插件需要python环境,Burpsuite本身是支持java的,Jython就是java和python的结合。 提示:以下是本篇文章正文内容,下面案例可供参考 一、下载Jython https://ww…

.NET调用阿里云人脸核身服务端 (ExecuteServerSideVerification)简易流程保姆级教学

需要注意的是,以下内容仅限基础调用 功能说明 该功能是输入核验人的姓名和身份证以及人脸照片,去阿里库里面匹配,3个信息是否一致,一致则验证通过,需要注意的是,人脸有遮挡,或者刘海&#xff0…

吴恩达2022机器学习专项课程C2W2:2.17 TensorFlow实现 2.18 训练细节

这里写目录标题 本周任务TensorFlow训练神经网络模型的简要过程训练模型的三个步骤1.自行训练逻辑回归模型2.TensorFlow训练神经网络模型 TensorFlow训练神经网络模型的代码含义1.定义模型2.指定损失函数和成本函数3.最小化成本函数 总结QuizQuiz1Quiz2 本周任务 神经网络如何…

汇聚荣科技有限公司怎么样?

在众多企业中,汇聚荣科技有限公司以其独特的发展模式和市场定位引起了人们的关注。对于这个问题,答案并非简单的好与坏,而需要从多个维度进行深入分析。 一、公司背景与发展历程汇聚荣科技有限公司成立于何年何地,由谁创立&#x…

40岁的戴尔在AI时代翻红了

戴尔公司股价创历史新高,市值达1138亿美元,涨幅110%。戴尔向AI押注多年,收购企业转型,成为数据基础设施厂商。AI服务器销售增长,分析师看好戴尔未来发展。 5月24日美股收盘,很多人可能不太关注的戴尔公司股…

Matlab进阶绘图第57期—带填充纹理的横向柱状图

带填充纹理的横向柱状图是通过在原始横向柱状图的基础上添加不同的纹理得到的,可以很好地解决由于颜色区分不足而导致的对象识别困难问题。 由于Matlab中未提供纹理填充选项,因此需要大家自行设法解决。 本文使用Kesh Ikuma制作的hatchfill2工具&#…

别人不愿意教,那我来教你Simulink建模(二)【语法知识】【原创分享】

文章目录 前言节点和状态的区别?local 和非 local 的区别?事件的作用?Bus 总线?Memory 模块?caller用法?自己瞎练习的(我也不知道为啥会多出来.h文件)自己瞎练习的(这个没有多出来.h文件)autosar实例学习前言 继续更新去年的博文系列,请君切记,师父领进门修行在个…

echarts- 热力图, k线图,雷达图

热力图 热力图可以看成是一种矩形的散点图。 热力图的矩形受itemStyle的影响。 通常配合visualmap组件来根据值的大小做颜色的变化。 热力图主要通过颜色去表现数值的大小,必须要配合 visualMap 组件使用。 visualMap:视觉映射组件 let options {tooltip: {},xAx…

取代pip,Python依赖管理的终极武器:Poetry

大家好,使用python过程中,包管理是一个永恒的话题。从早期的setuptools到后来的pip,再到现在的Poetry,开发者们一直在寻找更高效、更稳定、更可依赖的包管理方案。今天,我们就来聊聊这个现代Python项目的管理神器——P…

【全开源】CMS内容管理系统源码(ThinkPHP+FastAdmin)

基于ThinkPHPFastAdmin的CMS内容管理系统,自定义内容模型、自定义单页、自定义表单、专题、统计报表、会员发布等 提供全部前后台无加密源代码和数据库私有化部署,UniAPP版本提供全部无加密UniAPP源码。 ​构建高效内容管理的基石 一、引言&#xff1a…