前言:
本篇博客是集合了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的内容来实现。看到这麻烦点个赞支持一下!