APP下载

基于JavaEE的图书管理系统设计与实现

2020-08-31赵越超胡杰

物联网技术 2020年8期
关键词:数据库设计系统设计互联网

赵越超 胡杰

摘 要:在计算机新技术的冲击下,传统的图书管理方式会被逐渐淘汰,新型的图书管理应该结合“互联网+”的思想使管理趋向简单、安全、高效。该文主要以图书管理系统为研究对象,通过需求分析、概要设计和数据库设计等,详细描述了基于JavaEE的图书管理系统的实现过程,并在此实现过程中对容易出现的问题提供了解决方案。

关键词:JavaEE;图书管理系统;互联网+;数据库设计;系统设计;图书馆

0 引 言

在近几年,随着教育事业的发展和网络技术的广泛普及,传统的图书管理方式已经不再适用[1]。新型的图书管理方式应该趋向简单、安全、高效。傳统的图书管理的工作重点是对读者借阅信息的登记,其一般会采用人工线下管理的方式,这种方式带来的工作负担会随着借阅信息的增多而逐渐加重。这种情形下,不仅会加大资源的开销,还会导致读者借阅的困难。为了提高传统的图书管理效率,减少不必要的开销,同时让图书管理更加科学化、智能化、效率化[2],开发设计了基于JavaEE的图书管理系统。本系统界面友好、简单易操作、功能强大,能够智能地对借阅时间到期限的用户提醒,避免资源浪费。

1 需求分析

根据需求的不同将此设计划分成了两部分,分别为图书馆工作人员和读者(学生和老师)。然后从不同的用户角度出发,进行需求分析,大致概括如下:

读者(学生和老师)可查阅借阅信息和自己的基本信息[3]。当借阅时间到期限时,可以有提示信息来进行警示,避免读者忘记还书。读者还可以进行在线提交延迟借阅时间的申请。

图书馆工作人员可以增加图书到系统中,从而减小统计图书的工作负担;同时,要保证图书馆工作人员对图书具备修改和删除的权限。增加图书时能够动态设置图书类型,这样符合实际的图书分类情景。图书馆工作人员还需进行借阅图书的管理工作,对借阅书籍,归还书籍要有很好的管理方式,避免手工劳作。图书馆工作人员能够对读者信息进行管理,添加读者时可以为老师和学生增添不同借阅书籍的权限[4]。

2 相关技术介绍

本系统设计主要是基于SSM架构[5],即Spring,SpringMVC和MyBatis,系统前端界面使用了HTML+CSS+ Bootstrap实现,数据库使用MySQL,开发工具使用Eclipse。

Spring是一个轻量级的开源Java框架,用来装配项目中Bean的大工厂,在配置文件中可通过指定使用特定的参数来调用实体类的构造方法,从而实例化对象。

SpringMVC框架是基于MVC设计模式请求驱动类型的轻量级框架,为JavaEE提供了各层的解决方案,包括视图层、业务层和服务层,增强项目的扩展性。

MyBatis是一个对象关系映射框架,对JDBC进行轻量级的封装,将POJO对象与数据表建立映射关系。MyBatis和Spring结合的要点是项目实体类中具有无参和有参的构造方法。MyBatis负责Java后端和数据库之间的数据交换。

Bootstrap是基于HTML,CSS,JavaScript开发的简洁、直观、强悍的前端开发框架,使得Web开发更加快捷。Bootstrap中包含了丰富的Web组件,根据这些组件,可以快速地搭建一个漂亮、功能完备的前端界面。

3 系统概要设计

按照需求将此系统的使用者分为用户端(教师和学生)和管理员端(图书馆工作人员)两类,根据用户的不同来对应不同的功能权限,从而将此系统划分为用户子系统和管理员子系统两部分[6]。

在用户子系统中,使用者通过图书管理员提供的账号密码(读者)登录系统主页,然后用户通过主页链接进入基本信息、借阅信息查询、系统功能三个功能模块[7],在模块内完成查看基本信息、修改基本信息、查询借阅信息、延长借阅时间、修改密码、注销登录等功能。

在图书管理员子系统中,使用者通过账号密码(管理员)登入系统主页,然后管理员通过主页链接进入图书管理、图书类型、读者管理、用户管理、借阅信息、系统功能六个功能模块。在图书管理模块中,可以对图书进行增加、修改、删除;在图书类型中,可以对图书的类型进行增加、修改、删除操作,动态地把图书类型增加到下拉列表中;读者管理模块中,可以增加读者的信息;在用户管理模块中,可以增加读者所属的类型,不同的用户类型将有不同的权限;在借阅模块中,可以对借阅的信息进行管理;在系统功能模块中可以进行修改密码和退出系统[8]等操作。

4 数据库设计

根据图书管理员和读者的需求,设计管理员信息表、读者信息表、借阅信息表等[9],管理员信息见表1所列,读者信息见表2所列,借阅信息见表3所列。

5 系统设计与实现

5.1 读者(教师和学生)

5.1.1 登录/注销模块

读者在浏览器中输入地址,可看到系统登录界面,选择用户登录、输入用户名和密码,当用户名或者密码没有填写时,会提示“这是必填字段”的信息,并且读者不能登录系统。这里提示信息是在JSP页面引入Bootstrap插件,在必填项的中加入required属性来进行实现。在读者正确输入用户名和密码,点击“登录系统”后,登录页面会向Java后端发送一个携带用户信息的请求。这个请求被Spring中的DispatcherServlet拦截并提交给UserController函数进行处理[10]。UserController使用MyBatis连接数据库进行核对,当用户名和密码完全匹配数据库保存的数据后,页面会跳转到读者首页,同时在Java后端增加对读者起到会话控制作用的Session键值对;否则会出现“用户名或密码不正确”的提示信息框[11],让读者再次输入账号和密码。信息框的实现是在Java后端重新生成一个提示页面,读者在点击信息框上的确定后,页面从定向跳转到读者登录界面中。当读者需要退出系统时,点击界面右上角的“注销登录”,然后Java后端会把增加的Session键值对移除,实现注销功能[12]。

5.1.2 基本信息模块

读者在功能栏中点击“基本信息”,Java后端通过Session中的id定位到数据库中读者的信息,读取出来,封装到Reader实体类中,然后通过EL表达式在user-readers-list.jsp页面中显示出当前读者的基本信息[13]。读者在“基本信息”模块拥有修改的权限,以保证读者信息的正确性。读者虽然具有修改权限,但是不会对读者类型进行修改。这一点的实现是把user-readers-edit.jsp页面中的“读者类型”设置为隐藏表单域,这样读者就无法进行修改,同时也保证了“读者类型”属性中保存的数据不会遗失。读者在修改基本信息時,其中只有E-mail和QQ是选填项,其他为必填项。如果读者必填项没有填写,表单则无法提交,这一功能的实现是运用Bootstrap插件的data-toggle属性[14],在

中设置data-toggle="validator"可实现。密码的修改有两种方式:第一种是在更改读者的基本信息时,进行修改密码;另一种是通过点击右上角读者账号出现下拉列表选择“修改密码”进行修改。这两种方式都可以修改密码,区别在于第一种方式还可以修改其他信息,功能丰富;而第二种方式仅仅能修改密码,界面简单。这两种方式各有特点,读者按照所需进行选择。

5.1.3 借阅信息模块

这一模块是读者最关注的模块,也是系统最重要的基本模块。读者在点击此模块后,数据库会通过读者的借阅编号查找借阅信息。不使用读者姓名查找的原因是避免读者姓名重复的情况。借阅时间的实现是在读者实体类中加入String类型的borrowDate属性,并且在数据库URL后面加入&zeroDateTimeBehavior=convertToNull,来保证日期类型存储到数据库中不会出错[15]。

5.2 管理员(图书馆工作人员)

5.2.1 图书类型模块

在这个模块中主要实现图书类型的动态添加,因此用监听器来解决图书馆工作人员的这个需求[16]。监听器的实现需要使用web.xml 3.0以上版本,并且导入javax.servlet-api-3.0.1架包。如果使用的是3.0以下版本,则需在web.xml中加入 org.springframework.web.context.ContextLoaderListener 来配置监听器。监听器配置完成后,还需要在TypeListener类的前面加入@WebListener注解。当图书管理系统开始运行时会最先对监听器进行初始化,并且Java后端把数据库中图书类型的数据加载保存到servletContextEvent全局作用域中,这样就保证了图书类型可以在第一时间获取到最新的类型。

5.2.2 图书管理模块

在这个模块中能够实现对图书数量的统计,减少图书馆工作人员的负担。管理员点击“图书管理”模块后,Java后端查询数据库中的图书信息,并显示在books-list.jsp页面中。图书信息的获取过程是,先在Java后端设置Model键值对,然后books-list.jsp页面调用EL表达式来完成。其中,图书类别的显示是通过保存在全局作用域servletContextEvent的键值名来进行获取,books-list.jsp页面先用forEach来遍历所有的图书类型,然后通过判断图书类型id和图书中的图书类型id是否相等来寻找当前图书的图书类型。图书图片的显示是Java后端到数据库中获取图片的路径数据,然后到相应的位置进行加载实现的。在增加图书时,需要填写序号、图书条形码、图书名称、图书类别、图书价格、出版日期、出版社和图书图片相关信息。图书图片用Bootstrap-fileinput图片上传插件来辅助完成。图书价格和库存输入的信息要保证为数字,不能为其他类型,具体是通过在中加入Bootstrap的pattern属性[17],设置为pattern="^[0-9]+(\.[0-9]{0,2})?$"来完成这个要求的。最后在中设置data-toggle="validator"来完成图书表单信息的检验。

5.2.3 借阅信息模块

在这个模块中可以帮助图书馆工作人员进行图书的借阅和归还管理,把传统的手工操作转化为线上操作。因为线上操作可以极大地简化图书馆工作人员借书和还书的工作负担。图书馆工作人员通过点击“借阅信息”来获取读者所有的借阅信息。当图书馆工作人员需要了解近期的借阅情况,可以点击“借阅时间”属性列,使借阅信息按照时间来进行排序,其他属性列同样也可以通过点击来进行排序,这样的设计是用来满足图书馆工作人员多维度的搜索情况。属性列的排序是通过在

标签中引入Bootstrap-datatable插件的class="datatable responsive"进行实现的。读者在进行还书时,图书馆工作人员只需在搜索框中输入读者编号就可找到读者的全部借阅信息,如果读者借阅信息过多,还可以在搜索框中加入其他限制条件来完成搜索。图书馆工作人员找到读者对应的借阅信息后,点击“编辑”按钮后,在出现的借阅表单中把借阅状态选为“已归还”,点击保存就完成了读者的还书工作。读者在借书时,图书馆工作人员点击“添加记录”按钮,然后填写读者的相关信息就可完成借书工作。

相较于传统的借书和还书工作,基于JavaEE的图书管理系统的借阅管理更加方便、简洁。当图书馆工作人员进行删除借阅信息时,界面会出现删除警告框,只有在点击了“确定”按钮后才会真正删除,这样增加了系统的容错性。删除警告框的实现是运用了模态框的方法,在