【JavaSE】图书馆系统制作--JavaSE简易知识整合


通过JavaSE基础部分的学习,我们可以把基础的部分结合起来做个小项目,此篇就制作了一篇简易的图书馆管理系统,能更好的串联我们所学的知识,也能更好的学以致用

前言:为了更好服务于我们的学习,在图书馆里的一系列操作都会被记录在案,无论是管理员还是普通用户,都可以很好的知晓图书是否外借,以及图书馆里现存的书籍,作为管理员可以增删图书,作为普通用户可以借还书籍,以此达到我们的个人需求。

一. 业务设计整体框架

1.1 输入姓名

在这里插入图片描述

1.2 选择身份从而进入不同的系统

在这里插入图片描述

可以看到1对应的是管理员身份,0对应的是普通用户

1.3 选择身份进入

1.3.1 从管理员身份进入:

在这里插入图片描述

在图中能知晓管理员菜单:
1对应的操作是查找图书
2对应的操作是新增图书
3对应的操作是删除图书
4对应的操作是显示图书
0对应的操作是退出系统

接下来我们一一完成对应的操作

1查找图书:
在这里插入图片描述
此处输入我们要找的书的名字
在这里插入图片描述
输出书的相关信息,有书名,作者名,价格,类型,以及是否借出等状态

2新增图书
在这里插入图片描述
查阅新增图书之前图书馆有的书:
在这里插入图片描述
依次输入新增图书名字,作者,类型及价格
在这里插入图片描述
系统整理新增图书信息并进行打印输出
查阅新增图书之后图书馆有的书:
在这里插入图片描述
可以看到我们输入的图书信息被录进去了

3删除图书
在这里插入图片描述
输入要删除的图书名字
在这里插入图片描述
然后再进行显示图书查验是否删除了图书
在这里插入图片描述
此时看到《Java图书操作系统》这本书确实被删除了

退出系统
在这里插入图片描述

1.3.2 从普通用户身份进入:

在这里插入图片描述

在图中可以知晓普通用户菜单
1对应的操作是查找图书
2对应的操作是借阅图书
3对应的操作是归还图书
0对应的操作是退出系统

接下来我们一一完成对应的操作
1查找图书:
在这里插入图片描述

输出书的相关信息,有书名,作者名,价格,类型,以及是否借出等状态

2借阅图书
在这里插入图片描述

借阅图书之前我们已经查到了《三国演义》并且状态是未借出的
在这里插入图片描述

此时我们《三国演义》借阅成功
继续查在系统里查阅三国演义是否借出等状态
在这里插入图片描述

可以看出借阅出来了,所以借阅状态成功了,当我们再次借阅《三国演义》的时候就会显示借阅失败,没有此书或已被借出

3归还图书
在这里插入图片描述

当我们再次查阅《三国演义》状态就是未借出的
在这里插入图片描述

0退出系统
在这里插入图片描述

这就是整体的设计,可能有些地方设计的不是很合格,但是我们作为程序员,我们只关注设计的本身,不关注业务本身,业务的设计每个人都会有自己的想法,所以思维的学习和培养很重要

二. 具体代码块的实现以及思路讲解

在详解代码之前,我们需要知道的是在面向对象设计的时候,很多细节处的描写并不是一步到位的,是需要我们一步一步完善改进的,所以对于初学者这也是被劝退的一个点,但是没关系,我们一步步来,知识和经验都是慢慢积累过来的。

2.1 包的创建和分类

在这里插入图片描述

我们需要知道的是①在主函数里进行命令的传递,②书这个类在上面的描写中有许多属性,以及借还都需要利用这个包来操作,③各种数字对应的命令,④赋予普通用户和管理员的各种权限,使他们权限不混合。

2.2 定义属性

首先我们可以对书这个类进行属性的定义,由于为了方便后期书籍的借还所以此处在书这个包当中又分了两个类
第一个类写的是书籍的属性,每次放一本书到书架上,都要构造一个书的对象,所以要写一个构造方法,我们在定义属性的时候用private修饰,我们需要实现对外的接口来让类外和包外拿到属性,以及写一个ToString来对外输出打印,代码如下:
在这里插入图片描述

在我们的ToString方法里我们对借还书状态进行了改变,为的是符合我们的需求,对书的借还状态一目了然。

2.3 创建书架

我们还需要创建一个书架类,用来存放我们的书籍,在书籍按顺序存放的时候我们可以看作是数组的存放,所以在book这个包里我们又弄了一个书架类
在这里插入图片描述

在这里面有不解的是我们为何要对数组下标的元素进行操作呢?我们接着往下看

2.4 方法的分类

我们在上文可以看到我们需要查找,借阅,删除等一系列操作,为了方便简洁有效我们直接把各种操作都写成不同的类,放在一个operation包里面
在这里插入图片描述

其中我们可以看到还有一个接口类它的作用就是规范了标准,利于向上转型,因为在这些类里面,都需要引用BookList数组,所以我们直接抽象化出来
在这里插入图片描述

2.5 用户的分类

在我们的使用者里面又可以分为普通用户和管理员,并且实现一个公共的类,达到共性抽取,且在User里更方便调用两者
在这里插入图片描述

2.6 主函数的实现

在这里插入图片描述

在确定调用的对象及对象的方法的时候需要在普通用户,管理员以及User里面实现doOperation方法

2.7 用户的具体实现

User类里的具体实现:
在这里插入图片描述

NormalUser(普通用户)的具体实现:
在这里插入图片描述

AdminUser(管理员)的具体实现:
在这里插入图片描述

2.8 方法的实现

我们上面第三步仅仅创建了各种方法的类,并没有具体实现,那我们接下来一一实现:
对所有的方法实现规范,创建一个接口类,并让所有的方法类去继承它:
在这里插入图片描述

显示图书:
在这里插入图片描述

退出系统:
在这里插入图片描述
此处置为null其实也可以不这么做,但是没有null之后在程序运行结束的时候内存才会被回收,当程序一直在运行的时候,内存装满了,这就会发生内存泄漏

新增图书:
在这里插入图片描述

查找图书:
在这里插入图片描述

删除图书:
在这里插入图片描述

借阅图书:
在这里插入图片描述

归还图书:
在这里插入图片描述

到此一个简单的小项目就写成功了,它集合了数组,类和对象,封装,继承,多态,抽象类,接口等知识,学完此项目能有效帮我们巩固基础知识,并且开始真正的认识面向对象

  • 75
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 68
    评论
评论 68
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Redamancy丶早晚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值