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

前言

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

自己的逻辑实现流程:

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

目录

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

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

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


1.图书管理系统实现的整体思维导图Java知识巩固代码训练之实现图书管理系统_第1张图片

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

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


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

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

Java知识巩固代码训练之实现图书管理系统_第2张图片


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

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

如图:

操作对象:

Java知识巩固代码训练之实现图书管理系统_第3张图片
Java知识巩固代码训练之实现图书管理系统_第4张图片

 用户:

Java知识巩固代码训练之实现图书管理系统_第5张图片

 Java知识巩固代码训练之实现图书管理系统_第6张图片

Java知识巩固代码训练之实现图书管理系统_第7张图片

各种操作: 

Java知识巩固代码训练之实现图书管理系统_第8张图片

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

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

Java知识巩固代码训练之实现图书管理系统_第9张图片

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

Java知识巩固代码训练之实现图书管理系统_第10张图片

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

Java知识巩固代码训练之实现图书管理系统_第11张图片

初始化成功! 

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

Java知识巩固代码训练之实现图书管理系统_第12张图片

全部完成重写! 继续~


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

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

Java知识巩固代码训练之实现图书管理系统_第13张图片

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

Java知识巩固代码训练之实现图书管理系统_第14张图片

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

Java知识巩固代码训练之实现图书管理系统_第15张图片

Java知识巩固代码训练之实现图书管理系统_第16张图片

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

Java知识巩固代码训练之实现图书管理系统_第17张图片

打印普通用户的菜单:

Java知识巩固代码训练之实现图书管理系统_第18张图片

 打印图书管理员的菜单:

Java知识巩固代码训练之实现图书管理系统_第19张图片

测试成功~ 

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

Java知识巩固代码训练之实现图书管理系统_第20张图片

Java知识巩固代码训练之实现图书管理系统_第21张图片

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

Java知识巩固代码训练之实现图书管理系统_第22张图片

没错又该测试啦~

普通用户:

Java知识巩固代码训练之实现图书管理系统_第23张图片

图书管理员:

Java知识巩固代码训练之实现图书管理系统_第24张图片

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


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

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

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

● 新增图书操作实现

Java知识巩固代码训练之实现图书管理系统_第25张图片

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

Java知识巩固代码训练之实现图书管理系统_第26张图片Java知识巩固代码训练之实现图书管理系统_第27张图片 添加成功~(这些数据都是在内存中哦!程序运行完成后会销毁,并不具有持久性)

● 删除图书操作实现

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

Java知识巩固代码训练之实现图书管理系统_第28张图片

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

Java知识巩固代码训练之实现图书管理系统_第29张图片

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

Java知识巩固代码训练之实现图书管理系统_第30张图片

测试一下~

Java知识巩固代码训练之实现图书管理系统_第31张图片

Java知识巩固代码训练之实现图书管理系统_第32张图片 测试删除成功! 

● 查找图书操作实现

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

Java知识巩固代码训练之实现图书管理系统_第33张图片

测试效果:

Java知识巩固代码训练之实现图书管理系统_第34张图片

测试查找操作成功!

● 显示图书操作实现

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

Java知识巩固代码训练之实现图书管理系统_第35张图片

测试运行:

Java知识巩固代码训练之实现图书管理系统_第36张图片 显示成功! 

● 借阅图书操作实现

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

Java知识巩固代码训练之实现图书管理系统_第37张图片 测试运行:

Java知识巩固代码训练之实现图书管理系统_第38张图片 测试借阅操作成功!

● 归还图书操作实现

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

Java知识巩固代码训练之实现图书管理系统_第39张图片

测试运行: 

Java知识巩固代码训练之实现图书管理系统_第40张图片

 测试归还操作成功!

● 退出图书系统操作实现

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

Java知识巩固代码训练之实现图书管理系统_第41张图片

测试运行:

Java知识巩固代码训练之实现图书管理系统_第42张图片

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


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

你可能感兴趣的:(Java,java,开发语言)