栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java:图书管理系统编写教程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java:图书管理系统编写教程

图书管理系统编写教程

目录

图书管理系统编写教程

前提掌握

 需求说明

程序设计

实体类的设计

操作类的设计

工具类的设计

文件包的设计

视图界面

运行流程

登录界面

主界面

用户管理界

 基本信息维护界面

图书类别管理界面

读者类别管理界面

罚金设置界面

图书管理界面

查询界面

读者管理界面

图书借阅界面

查询功能

借阅功能

还书功能

总结


前提掌握

1、掌握java基本语法
2、熟悉使用流程控制
3、理解面向对象思想
4、熟练封装,继承,多态
5、熟悉使用接口,异常
6、熟悉使用集合
7、熟悉掌握I/o流相关操作

 需求说明

        长期以来,人们使用传统的人工方式管理图书馆的日常业务,其操作流程比较烦琐。在借书时,读者首先将要借的书和借阅证交给工作人员,然后工作人员将每本书的信息卡片和读者的借阅证放在一个小格栏里,最后在借阅证和每本书贴的借阅条上填写借阅信息。在还书时,读者首先将要还的书交给工作人员,工作人员根据图书信息找到相应的书卡和借阅证,并填好相应的还书信息。

        为了 在计算机上实现类似操作,我们需求设计一个图书管理系统来方便学生的借书和图书馆管理书籍。本系统功能分为读者信息管理模块、图书信息管理模块、图书借阅管理模块、基础信息维护模块和用户管理模块如图所示:

(1)读者信息管理:包括读者信息添加和读者信息查询与修改功能。用户登录成功之后,可以浏览所有读者的信息,也可以检索特定读者的信息;同时,可以对读者信息进行维护,包括增加、删除及修改。具体信息包括读者类型(读者的类型决定着他可以借到书的最大数量和最大归还天数)、读者姓名、出生日期、性别、电话、所在院系、注册日期等。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据)

(2)图书信息管理:包括图书信息添加和图书信息查询与修改功能。用户登录成功之后,可以浏览所有图书信息和检索特定图书的信息;也可以对图书信息进行维护。包括添加图书、删除图书以及修改图书信息。具体信息包括:图书ISBN、图书名称、作者、出版社、出版日期、印刷次数、单价、图书类别等。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据)

(3)图书借阅管理:包括图书借阅和图书归还功能。图书借阅功能,先输入读者的编号,然后输入要借阅的图书的信息,记录系统当前时间即借阅时间;图书归还功能,输入读者的编号,选择其名下已借阅的图书,判断当前日期即归还日期与借阅日期的差值是否超过了规定的期限,计算罚金,从而进行图书的归还操作。具体信息包括:借阅日期、归还日期、罚金。由于要计算罚金,故需要知道该读者的读者类型,根据类型判断其可借图书天数、可借图书数量等。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据)

(4)基础信息维护:包括图书类别设置、读者类别设置及罚金设置。图书类别设置,可以对图书的类别进行增加、删除、修改和查询;读者类别设置可以对读者的类别进行增加、删除、修改和查询;罚金设置,可以指定超期一天的罚金标准。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据)

(5)用户管理:包括修改密码、用户添加和删除。修改密码,是指当前用户修改自己的密码;用户添加和删除,是对新增和去除系统用户时对用户信息的维护。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据)

程序设计

实体类的设计

用户:用户编号、用户名、密码

图书实体:图书编号ISBN、图书类型、图书名称、作者、出版社、出版日期、印刷次数、单价

图书类型:图书类型编号、图书类型名称

读者实体:读者编号、读者姓名、读者类别、出生日期、性别、电话、所在院系、注册日期

读者类型:读者类型编号、读者类型名称、可借阅天数、可借阅数量

借阅记录类型: 借阅编号、读者类型编号、图书编号、借阅日期、归还日期、罚金

 如下图所示:

 
        其中我还添加了一个CurrentData类,其中封装了getTime()/getDate 两个方法,一个用于获取当前时间转换为字符串形式,一个用于将字符串转换为data类对象的,便于之后计算罚金。当然也可以将这类方法封装到其他类中。

操作类的设计

根据操作设计需求,创建如下操作类(存放在operate文件夹里)

图书信息操作:BookDao

图书类型操作:BookTypeDao

读者信息操作:ReaderDao

读者类型操作:ReaderTypeDao

用户管理操作:UserDao

借阅管理操作:BookBorrowDao

罚金管理:FineDao

工具类的设计

创建工具包tool

存放自己创建的异常 BookException 和工具类 LibraryUtility

文件包的设计

创建一个文件包,用来存放操作读写的.txt文件

视图界面

最后创建我们的视图包view,里面存放了有关界面的类

在界面中会涉及到通过调用视图方法嵌套更小的界面,如在图书、读者管理界面中,可以嵌套查询功能界面等....

即大的视图界面可以包含小的子功能界面,从而更好的实习系统功能

具体设计到的视图类方法就不过多展示了

登录界面:LoginView

主界面类:Menu

用户操作界面类:UserView

基本信息管理界面类:BasicManagementView (!包含三个子功能界面)

图书操作界面类:BookView、

读者操作界面类:ReaderView

图书借阅界面类:BookBorrowView

运行流程

登录界面

首先时登录界面,其中有注册登录退出三个功能,由于退出功能每个界面都有,后面就不详细说明了。登录界面如图:

1.注册 - - - 调用UserDao 的添加方法 向文件中创建用户信息

2.登录 - - - 输入用户名再文件中检索,用户名存在,再输入密码,判断密码是否匹配

3.退出 - - - 选择后,输入y/Y 退出 ,输入n/N 取消退出

主界面

登录成功后进入主界面,其中包含了图书管理系统中应有的所有功能。如图所示:

用户管理界

包面括修改密码、用户添加和删除。修改密码,是指当前用户修改自己的密码;用户添加和删除,是对新增和去除系统用户时对用户信息的维护。

 基本信息维护界面

图书类别管理界面

读者类别管理界面

与图数类别管理类类似,略

罚金设置界面

罚金设置的,界面中没有添加,罚金的增加和删除功能,因为这里我将罚金的增删,与读者类别的增删绑定了,在新建读者类别时,系统会提示用户,添加罚金类别信息;在删除读者类别时,系统会同步删除罚金类别。

这里引入一个思考:在读者类被使用(有该类的读者信息),是不是需要先处理相关读者信息了,避免删除读者类后,造成不必要的冲突。

图书管理界面

图书管理界面的功能大致如图所示,由于需求中提到的查询,分为查询所有,根据编号、姓名、类别、等等的方式查询,所以这里引入了查询功能界面,功能界面中,有各种查询方式,这里还可以根据需求,编写一个模糊查询模块,达到查询某一类,或,同书名的图书。

另外一点需要注意的,就是,可以再修改功能实现时,设置选择性修改,例如:

1.在修改开始或借书后添加判断,是否修改,这样可以避免用户中途不想修改后无法退出

2.在修改过程中不想修改图书的作者,输入回车即可跳过。

查询界面

查询界面如图所示:

在编写模糊查询界面时我仍然遇到了一些问题,比如如何实现在模糊查询的基础上,再进行模糊查询,如何展示,例如:根据图书类别查询得到结果后,去查询指定作者的图书。这里可能就需要一个中间量去存储每一次模糊查询到的结果。具体编写流程等我学习完善相关知识之后再将其分享给大家。 

读者管理界面

读者管理界面,与图书管理界面,内容大致相同,这里也省略讲解

图书借阅界面

图书管理界面分为三个主要功能,查询,借阅,归还

查询功能

查询界面,主要有查看所有借阅信息,查看单一用户(根据读者编号)借阅信息

查询所有借阅信息方法中,我没有设置有序展示,在之后会尝试优化!

关于查看单一用户(根据读者编号)借阅信息:

        我这里的思路是,因为读者的id是唯一的,所以可以通过读者id 在文件中查询该读者的所有借阅信息,将其添加到一个TreeSet中。

添加思路:

1.根据TreeSet集合 的 size 在每添加一条 借阅信息 加入前 就为其 设置 一个借阅 id

2.将信息一条一条加入TreeSet(先比较图书id,再比较借阅id),这里就避免了借阅信息,完全相同时无法加入的问题,(但,这一次加入后,由于先是比较的图书id,所以预先添加的借阅id 与插入后的实际顺序是不匹配的,需要重新设置)

3.遍历TreeSet集合,根据遍历顺序,重新设置每条记录的借阅id

4.修改完毕再进行展示,就得到了,排列整洁的读者的借阅记录

借阅功能

借阅功能实现步骤:

1.根据读者的ID+图书ISBN 去搜索 图书与读者信息

2.如果搜索到对应的读者和图书,则判断其状态,是否能借阅/被借阅(读者是否达到最大借阅本数,图书是否被借空)

3.判断都符合条件,就开始新建一个 借阅记录 对象 BorrowBook ,存入相关信息,以及借阅日期

    1)初始化:根据读者已借阅的本数,为借阅记录赋予编号

    2)重新排序:调用查询操作时,会对该读者的借阅记录,根据图书ISBN,去判断并重新排序,当ISBN相同时,就根据两者的借阅编号进行排序

          重新排序的目的,因为这里插入时的顺序,不一定是整齐的,重新排序正是为了让用户使用时更加清晰明了的获取查看信息。

4.将记录写入到记录文档中

还书功能

还书功能的实现步骤:

1.根据读者ID获取该读者的所有借阅信息

2.根据借阅编号,进行归还操作

3.判断是否超过限定期限,若超过则进入罚金处理,未超过则继续进行还书

4.从借阅记录中,移除选中的记录,并维护对应的读者与图书状态

注意!值得注意的是,这里的状态维护,需要修改状态后,再保存至文件


总结

        总的来说,运用IO流来实现图书管理系统,中需要用到很多IO流、集合的相关知识,比如用什么流去读写,什么集合去存储数据,这都是值得思考的问题,虽然我对于图书管理系统的理解还有很多不足,但再这短暂的项目编写过程中还是受益良多,在这儿给大家总结一些我的经验。

1.在开始写项目前,先捋清楚各模块的逻辑关系,分清编写步骤

(有一些模块,依赖于其他模块的,需要先写好被以来的模块,例如读者、图书、借阅界面,都是依赖于基础信息维护界面的,所以可以先写基本信息维护,再去写其他几个)

2.再不同的情况下考虑需求,去选择要使用的IO流或集合,来处理数据

合理利用IO流与集合,有助于让你的代码编写事半功倍。

3.编写代码过程中,注意规范写好注释,便于修改

4.先写功能模块,最后拼接界面,在完成单一模块时,注意异常处理和功能测试

(避免代码完成后出现较为繁琐的问题)

5.点赞+关注+学习知识不迷路~~~~~~~~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/357658.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号