java图书管理系统小练习

前言

这个图书管理系统小练习有两种用户一个是管理员用户,另一个是普通用户,针对不同类型的用户会有不同的操作,
使用简单的代码,实现一个简单的图书管理系统,下面是最终成品部分演示:
在这里插入图片描述
管理员有管理员的操作,普通用户有普通用户的操作

我对于这个图书管理系统划分三个部分,用户,书,操作,
在这里插入图片描述

最终代码的目录是这个样子:
在这里插入图片描述
用户相关的放在user文件夹中,操作相关的放在opear文件夹中,书相关的放在book文件夹中,最后我的Test类放在了src文件夹中

下面我将逐步讲解这三个部分的实现:

1.用户

在user文件夹中会有三个类,User 和 AdminUser 和 OrdinaryUser

1.1 User

下面是User部分的代码:
在这里插入图片描述
doWork方法的作用是:当我想要使用某一个操作的时候,可以调用work方法来对书架进行操作
this.ioPerations[chiose].work(bookList)这行代码表示首先根据chiose作为下标获取当前对象的IoPeartions数组的操作,然后调用这个操作的work方法

1.2 AdminUser 管理员用户

AdminUser 管理员用户部分的代码:
在这里插入图片描述
把管理员用户所需的操作用IOperation数组组织起来(这些操作都实现了IOperation接口)
重写父类的menu方法,根据管理员用户类的需求来制定自己所需的操作
chiose的值决定了你要执行的操作,

1.3 OrdinaryUser 普通用户

OrdinaryUser 普通用户部分的代码:
在这里插入图片描述
把普通用户所需的操作用IOperation数组组织起来(这些操作都实现了IOperation接口)
重写父类的menu方法,根据普通用户类的需求来制定自己所需的操作
chiose的值决定了你要执行的操作,

当引用的对象不同,将会调用不同的菜单和操作

2.书

在book中会有两个类: Book 和 BookList

2.1 Book 书

Book 书部分的代码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在Book的构造方法中并没有给borrowd进行赋值,这是因为boolean类型默认都是false ,当管理员新增一本书时,默认都是未被借出的,所以这里没有给borrowd 赋值

在toString中,用了一个三目运算符,表示,如果这本书brrowed为true就表示已经借出去了,如果为false表示没有被借出

2.2 BookList 书架

BookList 书架部分代码;
在这里插入图片描述
BookList类的构造方法中放了三本书,并且userSize = 3 , 表示,当我启动图书管理系统小练习时,我的书架中默认已经有三本书,

getBooks方法用来获取pos下标的书
setBooks方法用来在userSize下标下新增一本书 (在操作:新增图书中使用)
setBooks方法用来在j下标下放置图书book (在操作:删除图书中使用)

3.操作

定义一个IOperation接口,让这些操作都实现这个接口,作用是当返回不同的用户对象,就会有不同的操作

IOperation 接口

在这里插入图片描述
定义一个work方法,这个方法的作用是:为了其他操作能够重写这个方法,并在这个方法中实现自己的功能.

AddOperation 新增图书

在这里插入图片描述
红框:用一个book变量暂时存放新增的这本书,然后遍历书架,
绿框:如果book的name与书架中某本书的name不相同,说明书架没有这本书(以书名进行判断),就会把book真实存放在书架中,接着书架中的书的数量+1;(相反的,.如果书架中有了这本书了,就会弹出"图书已存在")
实现效果:
在这里插入图片描述

BrrowOperation 借阅图书

在这里插入图片描述
遍历书架
红框:如果你需要借阅的书名与书架中某本书的书名一样 并且 这本书没有被借出(也就是brrowed为false),则提示借阅成功.并把brrowed改为true,说明这本书已经被借阅了
绿框:如果你需要查找的书名与书架中某本书的书名一样 并且 这本书已经被借出,则提示"已被借阅"
实现效果:
在这里插入图片描述

DelOperation 删除图书

在这里插入图片描述
遍历书架:
红框:如果你需要删除的书名与书架中某本书的书名一样,则进行删除
绿框:用book记录当前下标的后一本书,接着把后一本书book放到当前位置j下标(后一本书替换前一本书),如下图所示:
蓝框:把最后一本书置为null,如下图所示: 以此来完成删除,然后书架的书的数量-1
在这里插入图片描述
实现效果:
在这里插入图片描述

ExitOperation 退出系统

在这里插入图片描述
实现效果:
在这里插入图片描述

FindOperation 查找图书

在这里插入图片描述
遍历书架
红框:如果你需要查找的书名与书架中某本书的书名一样,则把这本书的信息输出出来
绿框:获取到书架中的这本书信息并输出出来
实现效果:
在这里插入图片描述

ShowOperation 显示图书

在这里插入图片描述
遍历书架,然后把每本书的信息输出出来
实现效果:
在这里插入图片描述

ReturnOperation 归还图书

在这里插入图片描述
遍历书架
红框:如果你需要归还的书名与书架中某本书的书名一样
绿框:把书架上这本书的brrowed(借阅信息)改为false
实现效果:
在这里插入图片描述

执行类Test

最后执行Test类中的main方法:
在这里插入图片描述
红框:当你的选择不同,根据你的选择返回不同的对象,如果选择1则是管理员用户,非1则是普通用户,接着在main 方法中用user接收返回的对象(管理员用户和普通用户都继承了User类),
绿框:调用user菜单,至于调用哪个用户的菜单根据返回的对象来决定,管理员调用管理员的菜单,普通用户调用普通用户的菜单,
菜单会返回一个值并用chiose接收,
chiose的作用是选择IOPeration数组中的操作
接着调用doWork方法,这个方法决定了你要对书架中的书做什么操作.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值