Java Web图书管理系统(MVC框架)-包含源码

Java Web图书管理系统

一、前言

这是大二写的系统,因此这个系统并没有用到很多框架,只是使用了MVC框架,前端使用的是Layui框架、bootstrap框架、JSP技术、JSTL表达式和EL表达式,操作数据库使用的是druid连接池,将前端信息转发到后端将信息封装用到了beanutils工具包,前端与后端进行异步交互时还使用到了json语句。这种框架的好处是方便管理,逻辑清晰,缺点是并没有做到真正的前后端分离,随着学习web的深入,会继续进行优化,改进。本系统功能主要分为两个模块,有读者登陆系统和管理员登陆系统。这两种不同的登陆身份信息会有不同的操作权限,读者登录,读者可以进行图书的借阅,图书归还,个人信息修改;图书管理员登录,管理员可以进行图书的添加,图书查找,删除,修改读者的信息,查看所有读者借阅信息以及借阅历史。

过滤器:程序中添加了过滤器,在没有登录之前,只能访问与登录有关的资源,比如登录页面,注册页面,有关账号、密码与数据库匹配的servlet资源和图片资源。当登录完成之后,后端通过session域存储用户信息,如果在访问其他页面时,能够访问到用户信息,说明是已经登录完成之后了,那么就可以放行,也就能够访问其他的资源,在没有登录时,强制访问其他页面也只能跳转到登录页面提示用户登录。

二、测试截图

登录页面

登录页面
登录页面分为用户登录和管理员登录,用户如果没有账号,可以选择注册,用户登录和管理员登录时会跳转到不同的页面进行相应的操作。

注册页面

注册页面
用户输入完用户名后,触发失去焦点动作,前端通过ajax异步请求方式检查数据库中是否有相同的用户名,并将查询结果通过servlet转发到前端页面,前端页面根据结果进行判断,如果有相同的用户名,会提示用户换一个用户名。并且在注册时,输入密码用户名等信息时,前端通过正则表达式进行匹配,必须符合设定的标准才能够注册成功。注册成功后,会将用户信息储存到数据库的user表中。

登录页面
登录页面

登录页面
当输入框失去焦点时,后端通过ajax异步请求方式检查用户输入的用户名和密码是否与数据库中的匹配,如果匹配则会通过转发的方式将servlet中从数据库查询的结果传给前端页面,前端页面根据用户名或密码的正确与否来修改css样式,显示绿色的笑脸表示用户输入正确,如果不匹配则会显示红色的哭脸表示用户输入的不正确。在用户名或者密码不正确时,强行点击登录按钮时,会提示用户用户名或密码错误,并且返回到当前的登录页面。

用户登录失败页面

用户登录失败页面

用户首页

用户首页
用户登录成功后,会跳转到图书管理首页,显示当前用户、登录时间以及轮播图。前端页面的导航栏以及轮播图是使用layui中的导航栏框架修改而成。当登陆成功时,后端通过session域存储用户的信息,以及当前的存储时间,并将数据转发到前端页面,前端通过EL表达式将数据显示页面。

图书查询

用户图书查询页面
通过分页方式显示数据库中的所有图书信息,每页显示8条记录,并且显示总页数,以及总记录数。用户在当前页面可以查看所有图书、查找图书以及借阅图书。
首先创建一个books对象,对象中的变量对应数据库中的字段,这样方便后续查询数据时将其封装成对象。再创建一个pagebean对象,里面保存页面信息,包括页面的记录数,当前页面,总页数和books集合,这样做的好处是在转发是直接将pagebean对象转发到jsp页面,jsp页面直接获取这个对象就可以获取与页面有关的所有信息。当点击图书查询按钮时,跳转至servlet层,servlet层调用dao层的方法从数据库中读取所有信息并将数据封装成一个list集合,list集合中存放数据库中的所有books对象,这样servlet层即获取到数据库中所有的相关信息,然后将list集合传给pagebean对象,同时经过dao层从数据库中获取总记录数,根据总记录数再结合一页显示的记录数即可计算出总页数,然后将这些信息都存储到pagebean对象中,并通过转发的方式将数据存储到jsp页面,jsp页面通过JSTL语句循环遍历集合,即可遍历出所有信息。

图书查询

用户查询图书
用户输入完成信息后,点击查询按钮跳转到servlet页面,servlet页面获取输入框中的数据,然后通过dao层从数据库中进行模糊条件查询,返回一个books集合,然后servlet页面将查询结果返回到jsp页面,显示出结果即可,同时为了增强用户体验,将用户的查询条件依然显示到输入框中,可以将查询条件通过转发到前端页面,前端页面添加输入框的value属性即可。但是此时如果点击分页按钮时会出现bug,点击分页查询条件就消失了,原因就是点击分页时并没有携带查询条件,因此在跳转页面时还需要添加上查询条件信息,这样就可以在点击分页时,也能够条件查询。

用户借阅图书

用户借阅图书
用户点击借阅后,跳转到该页面选择图书时长,借阅成功后,会跳转到借阅信息页面。首先先要获取用户选择某个图书借阅的id号,这个可以利用分页时同时将id号转发到前端页面,在转发到service层时,同时将图书id传递到后端。用户选择时长,点击立即借阅按钮,跳转到service层,后端获取前端的数据,然后通过dao层操作数据库,修改数据库信息即可。

用户借阅信息

用户借阅信息页面
此页面显示当前用户借阅书籍的信息,并且用户可以选择续借,以及还书。当用户选择还书时,在借阅历史中会显示借阅的信息。首先创建一个userbook对象,对象中包含用户信息,用户借阅图书信息,以及借阅时长,还书时间等信息。再创建一个UBPageBean对象用来储存当前页数,总页数,总记录数,以及userbook集合,然后再通过dao层从数据库中获取信息并保存到UBPageBean对象中,将对象转发到前端页面,用JSTL表达式循环遍历信息即可。

用户还书

用户还书操作
当用户点击还书链接时,跳转到service层,根据点击的相应id号,通过dao层修改userbook表中的还书时间,以及还书标记(1代表已还书,0代表还未还书),这样前端就可以根据还书标记通过jstl表达式进行判断,如果是1,则显示还书图标,用户可以点击还书,如果是0,则直接显示已还书,用户不能继续还书,这样做的好处就是防止用户误操作,多次还书。

借阅历史

借阅历史界面
显示用户的历史借阅信息,如果用户还没有还书,那么还书时间栏没有还书的时间,表示用户还没有还书。此页面操作与借阅信息页面相同,只是根据需求前端需要的字段不同,其他事操作均与借阅信息页面相同。

用户修改信息或退出

修改信息或者退出
右上角用户可以选择修改信息或者退出,点击退出时,会提示用户是否确定退出,如果确定,则会跳转到登录页面。

修改信息

修改信息页面
用户点击修改页面时,会先从数据库中回显用户的相关信息,用户无法修改用户名。
回显数据:当点击修改按钮时,页面首先获取用户名,并将用户名通过url传递到servlet层,servlet层获取到用户名,然后将用户名传给操作数据库的dao层,查询这个用户名对应书籍的信息,并将这些信息封装成books对象传递到servlet层,servlet层再将这个对象通过request域封装起来,这样在修改图书信息的jsp页面便可以获取用户信息,然后jsp页面通过EL表达式将这些信息回显,通过input标签中的value属性赋值便可以回显。
修改信息:首先在修改图书信息的jsp表单中添加一个input标签,并将其type属性设置为hidden,将待修改的用户名设置为其value属性,这样做的目的是为了当提交表单时,便能够确定要更新的是哪条记录的数据。当信息修改完成后,点击立即修改按钮,会跳转到servlet层,servlet层获取这些数据并将数据封装成user对象,调用dao层的方法操作数据库,根据传递的用户名来确定要更新的是哪条记录的信息,然后再用sql语句更新记录,servlet层判断数据是否更新成功,再转发至显示信息的servlet层,这样便可显示最新的数据。

管理员首页

管理员首页

管理员图书清单

管理员图书清单页面
该页面显示所有图书信息,管理员可以在此页面修改图书信息,以及删除图书。此页面的分页操作与前面用户图书查询的分页操作相同,只是前段显示的字段不同。

修改图书

修改图书信息页面
当管理员点击修改按钮时,会跳转到此页面,先回显选择的图书信息,管理员在此页面可以修改图书信息,修改成功后,跳转至图书清单页面。
回显数据:当点击修改按钮时,页面首先获取要修改的这个图书的id号,并将id通过url传递到servlet层,servlet获取到id,然后将id传给操作数据库的dao层,查询这个id对应书籍的信息,并将这些信息封装成books对象传递到servlet层,servlet层再将这个对象通过request域封装起来,这样在修改图书信息的jsp页面便可以获取修改图书的id对应的信息,然后jsp页面通过EL表达式将这些信息回显,通过input标签中的value属性赋值便可以回显。
修改信息:首先在修改图书信息的jsp表单中添加一个input标签,并将其type属性设置为hidden,将待修改的图书id的值设置为其value属性,这样做的目的是为了当提交表单时,便能够确定要更新的是哪条记录的数据。当信息修改完成后,点击立即修改按钮,会跳转到servlet层,servlet层获取这些数据并将数据封装成books对象,调用dao层的方法操作数据库,根据传递的id号来确定要更新的是哪条记录的信息,然后再用sql语句更新记录,servlet层判断数据是否更新成功,再转发至显示信息的servlet层,这样便可显示最新的数据。

删除图书

删除图书界面
当管理员点击删除按钮时,首先会提示是否确定删除,如果确定则删除,并且跳转到图书清单页面。当点击删除链接时,首先获取id号,并通过url将id传递给service层,service层调用dao层的方法删除这条记录,然后再跳转到这个页面即可完成删除操作。

图书查询

图书查询页面
管理员可以根据要查找的图书信息进行多条件模糊查找,查询完成显示查询结果。
管理员点击查询按钮时,将查询条件通过url转发给service层,service层将查询条件封装成map集合,调用dao层的方法根据map集合中的数据进行条件模糊查询。不过这里遇到一个问题:map中可能存在多条数据,那么就需要将sql语句通过遍历拼接起来。此时用到了多条件查询的一个小技巧:
String sql = "select * from books where 1=1 ";
这样就不需要考虑第一个条件做特殊处理,遍历map中的所有数据并且拼接成为字符串就可以获取到完整的sql语句,同时要注意空格的问题,否则可能导致查询失败,然后再进行查询获取到list集合返回到前端页面输出即可。

添加图书

图书添加界面
用户将信息添加完成后,点击添加按钮,跳转到后台,将前端信息封装成list集合,调用dao层的方法,根据list集合中的数据添加一条记录,并且为了让新添加的数据在第一页中显示,可以将id按照从大到小的方式排列,然后转发到前端显示数据即可。

读者信息

读者信息显示
显示用户的所有信息,并且可以修改和删除用户记录。此页面的分页操作与前面的分页操作类似,首先创建一个user对象与数据库中的user字段相同,再创建一个userbean对象,用来获取分页信息。点击信息显示按钮时,从后端获取user的所有信息并且返回list集合,再从数据库查询总记录数,设置userbean的当前页码、总记录数、总页数以及userlist集合返回给前端,前端显示即可。

查询用户

查询用户页面
模糊查询用户信息,此页面操作与用户端查找图书信息的操作类似。

修改用户信息

修改用户信息
点击选中的修改链接时,首先获取选中的id,然后跳转到修改信息页面,用input标签隐藏存储id号,根据id号获取用户信息回显到前端页面,管理员根据需求修改字段信息,然后点击修改跳转到service层,再调用dao层的方法,修改指定id的字段信息,再转发到前端页面显示信息即可。

图书借阅

图书借阅信息
显示所有用户的图书借阅信息,管理员可以查询指定用户的借阅信息,并且可以续借图书,归还图书,以及删除图书记录。这些操作与前面用户端的操作基本相同。

图书归还

图书归还信息
显示所有用户的图书归还信息,管理员可以查找指定用户的信息,以及删除记录操作。这些操作与前面用户端的操作基本相同。

退出界面

退出界面
当点击退出按钮时,首先提示用户是否确定退出,如果确定则返回到登录界面,等待管理员继续登录。

三、数据库设计

  • 数据库中共存放了四张表,分别为user、manager、books和userbook。
    user表

User表
存放用户的相关信息,用户名、密码、姓名、email和手机号。

manager表

manager表
存放管理员的信息,用户名和密码。

book表

Books表
存放书籍相关信息,包括书号、书名、作者、出版社、书籍数量、出版日期、类别、图书信息。

userbook表

userbook表
存放用户借阅书籍信息,包括用户id、图书id、用户名、书名、作者、图书类别、借阅时间、还书时间、借阅时长、还书标记。

源码链接

系统介绍 图书管理系统主要的目的是实现图书馆的信息化管理图书馆的主要业务就是新书的借阅和归还,因此系统最核心的功能便是实现图书的借阅和归还。此外,还需要提供图书的信息查询、读者图书借阅情况的查询等功能。项目实施后,能够提高图书馆的图书借阅、归还流程,提高工作效率。整个项目需要在两个月的时间内交付用户使用。 操作注意事项 (1)本系统的用户名为:tsoft,密码为:111 (2)读者类型不同,可借图书的本数也有所区别。 操作流程 (1)用户登录图书管理系统后,可看到图书借阅排行榜,通过排行榜可以看出借阅图书的名称、图书类型、借阅次数等相关信息。 (2)单击“系统设置”/“图书馆信息”命令,对图书馆信息进行设置操作。 (3)单击“系统设置”/“管理员设置”命令,对管理员信息进行添加、权限设置、查询及删除操作。 (4)单击“系统设置”/“参数设置”命令,对办证费用及有效期限信息进行添加操作。 (5)单击“系统设置”/“书架设置”命令,对书架信息进行添加、修改及删除操作。 (6)单击“读者管理”/“读者类型管理”命令,对读者类型信息进行添加、修改及删除操作。 (7)单击“读者管理”/“读者档案管理”命令,对读者信息进行添加、修改及删除操作。 (8)单击“图书管理”/“图书类型设置”命令,对图书类型信息进行添加、修改及删除操作。 (9)单击“图书管理”/“图书档案管理”命令,对图书信息进行添加、修改及删除操作。 (10)单击“图书借还”/“图书借阅”命令,对图书借阅信息添加操作。 (11)单击“图书借还”/“图书续借”命令,对图书续借信息进行添加操作。 (12)单击“图书借还”/“图书归还”命令,对图书归还信息进行添加操作。 (13)单击“系统查询”/“图书档案查询”命令,对图书档案信息进行查询操作。 (14)单击“系统查询”/“图书借阅查询”命令,对借阅的图书信息进行查询操作。 (15)单击“系统查询”/“借阅到期提醒”命令,对借阅到期提醒信息进行查询操作。 (16)单击“更改口令”按钮,对当前的用户密码进行修改操作。 (17)单击“退出系统”按钮,退出当前操作系统
©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值