当前位置: 首页 > news >正文

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于Vue的应届毕业生财务管理系统-计算机毕业设计源码82886
  • Android 通过adb命令查看设备尺寸和设置
  • 代码随想录算法训练营第四十一天 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
  • 记一次绕过宝塔防火墙的BC站渗透
  • 美颜技术揭秘:美颜SDK与美颜接口的开发实践
  • MySQL——数据库和表的基本操作(一)数据库基础知识
  • SCSS入门指南:基本语法与高效用法
  • xshell7和XFTP个人免费版官方下载免激活
  • 【Python数据分析】基于自回归积分滑动平均模型的疫情分析报告 附完整python代码
  • Python操作MySQL数据库的工具--sqlalchemy
  • 日用百货元宇宙 以科技创新培育产业新质生产力
  • tensorflow如何指定gpu运行还是cpu运行
  • Kotlin中 take、drop方法使用
  • 生命在于学习——Python人工智能原理(1.2)
  • go map
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【css3】浏览器内核及其兼容性
  • Docker: 容器互访的三种方式
  • golang中接口赋值与方法集
  • Javascript 原型链
  • JavaScript函数式编程(一)
  • js操作时间(持续更新)
  • Less 日常用法
  • PHP变量
  • vue-cli3搭建项目
  • windows下mongoDB的环境配置
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 安卓应用性能调试和优化经验分享
  • 分享几个不错的工具
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 七牛云假注销小指南
  • 前端
  • 三栏布局总结
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 阿里云ACE认证学习知识点梳理
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #Linux(make工具和makefile文件以及makefile语法)
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $nextTick的使用场景介绍
  • (7)摄像机和云台
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (六)vue-router+UI组件库
  • (三)SvelteKit教程:layout 文件
  • (原創) 未来三学期想要修的课 (日記)
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .Net 垃圾回收机制原理(二)
  • .net/c# memcached 获取所有缓存键(keys)
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题