Java知识巩固代码训练之实现图书管理系统

前言

又进行了一段时间的学习,经过反复推敲+代码调试,想上手做个图书管理系统巩固一下所学知识~欢迎大家跟我一起学习巩固呀~

自己的逻辑实现流程:

理出所涉及的对象和接口-->需要哪些对象属性-->对应对象和接口的功能实现  (画出思维导图)

目录

1.图书管理系统实现的整体思维导图​编辑

2.根据思维导图进行图书管理系统的大概项目框架搭建

3.对书籍的具体操作的代码实现(在框架搭建好的基础上)


1.图书管理系统实现的整体思维导图

普通用户对应的能执行的操作:查找图书,借阅图书,归还图书,退出图书系统。

图书管理员对应能执行的操作:新增图书,删除图书,查找图书,显示图书,退出图书系统。


2.根据思维导图进行图书管理系统的大概项目框架搭建

1)  首先,为方便管理,我们建立三个包分别存储图书管理系统的操作对象,用户及各种操作。如图:


2) 抽取对象之间的共性创建父类或者基本接口,并将对应所需要的属性及构造方法定义出来。普通用户和图书管理员都有姓名,各种操作都是基于书架,但是实现方式不同。

注:如果成员变量用private修饰,如果要访问它们,需要给外部提供set和get方法去访问它们哟!因为会导致图显冗余,所以这里我就不在图中显示它们了~

如图:

操作对象:


 用户:

 

各种操作: 

 各种具体操作都可实现IOperation接口去重写其operate方法完成各自对书架上书的操作(动态绑定)

这里以新增图书这个操作为例,其它操作一样要实现IOperation接口并重写operate方法:

最后完成准备工作(这里我们新增Test去测试实现效果):

开始测试1内容:书架中的书是否完成初始化:

初始化成功! 

开始测试2内容:测试各种操作能否完成重写:

全部完成重写! 继续~


 3) 测试类中的具体逻辑:用户登录--->打印菜单--->用户选择对应的操作--->执行操作

● 首先,让用户选择以什么身份(0:普通用户 1:图书管理员)  登录(登录功能):

● 其次,打印菜单前,先准备菜单(两种用户都具备菜单的功能,但是打印内容不同,我们可以通过继承抽象类重写其抽象方法的逻辑去实现):

则让User的两个子类都重写printMenu()方法就能打印不同的菜单啦!

 我们来测试一下是否能正常登陆并打印出不同菜单~

打印普通用户的菜单:

 打印图书管理员的菜单:

测试成功~ 

● 为了让用户选择对应的操作,所以我们需要在两种用户中定义存放各自操作的数组并且将数组下标和用户输入的值对应起来方便执行操作。

 在main函数中得到操作数组并通过用户输入的操作数执行对应的操作:

没错又该测试啦~

普通用户:

图书管理员:

 这样我们的整个大概框架就完成啦~撒花✿✿✿


3.对书籍的具体操作的代码实现(在框架搭建好的基础上)

在前面我们已经完成了类和接口和大概的逻辑准备,只差对应操作的具体实现啦~

为了方便测试,我们可以在Book类中重写toString方法,方便打印。

● 新增图书操作实现

测试一下(在新增图书后,打印书架中的每一本书)~

 添加成功~(这些数据都是在内存中哦!程序运行完成后会销毁,并不具有持久性)

● 删除图书操作实现

    首先得确认用户要删除的书在书架中,所以我们得在书架中根据用户输入的书名查找到用户要删除的书:

     如果存在则返回目标书的下标,否则返回-1(不存在)。如果存在,则从当前返回的下标位置开始,将后面的书从后往前挪动一位,则返回的下标位置的书籍会被覆盖(类比于数据结构中删除顺序表某一位置的元素)。 

    最后将最后一个重复的书赋空并将当前书架中的书数量-1:

测试一下~

 测试删除成功! 

● 查找图书操作实现

   查找其实在删除操作中实现完毕了,根据书名查找对应书籍(遍历-->比较-->成功返回下标,否则返回-1)

测试效果:

测试查找操作成功!

● 显示图书操作实现

   这个逻辑也不复杂,直接遍历打印书架上的书就好了

测试运行:

 显示成功! 

● 借阅图书操作实现

   借阅是在Book的isBorrowed为false(未被借阅)的情况下改为true(找到图书--->判断该图书是否被借阅--->更改isBorrowed属性值)

 测试运行:

 测试借阅操作成功!

● 归还图书操作实现

   而归还是在Book的isBorrowed为true(被借阅)的情况下改为false(找到图书--->判断该图书是否被借阅--->更改isBorrowed属性值)

测试运行: 

 测试归还操作成功!

● 退出图书系统操作实现

    我们直接使用System.exit()方法退出程序,参数为status值(非零为非正常退出程序,0为正常退出程序)。

测试运行:

测试退出图书系统操作成功!


 这样整个图书管理系统就基本完成了!当然还有很多可以优化的地方,大家可以去试着优化一下哦~我们一起交流学习~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值