注:
本文为JavaEE课程的课程设计,如需原文件及项目代码请后台联系作者或qq3416252112,也可在作者主页资源中下载,仅供学习交流使用!
结合本学期所学知识,以及以往积累的经验,我们通过Layui+SSM的方式完成了简化版的“图书管理系统”。本系统操作界面简约美观,能够高效、快速、稳定的管理图书馆的数据信息。系统主要包含一下几个功能:借阅管理、图书管理、类型管理、公告管理、管理员管理以及统计分析(具体表现形式如图1-1与图1-2所示)。管理员只需要操作本系统,就可以轻松实现图书信息的查询、增删等操作,图书管理员使用本系统能方便快捷的完成图书管的基本信息管理工作。
数据库:MySQL
开发工具:IDEA
数据库连接池:Druid
Web容器:Apache Tomcat
项目管理工具:Maven
前端框架:LayUI
后端技术:Spring、SpringMVC、MyBatis
后台数据库共包含六个数据表,分别为admin、book_info、lend_list、notice、reader_info、type_info,具体功能如下:
该表的主要内容为系统的管理员信息,包含id、username、password、adminType四个字段,其中id为用户id不可重复,username为用户登录名,password为用户登录密码,adminType为管理员类型。adminType取值只能为1或2,1表示该用户为高级管理员,2表示该用户为普通管理员。admin数据表的预置数据如图3-1-1。
该数据表内容为图书的类型,可以对图书进行分类,我们预置了六类图书,具体如图3-1-2所示。
该数据表主要存放管内所有书籍的基本信息,如:图书名称、作者、出版社、图书id、内容简介、语言类型、图书类型、价格、出版日期等等。内置数据如图3-1-3所示。
该数据表主要存放所有读者的基本信息与登陆信息,共包含id、username、password、realName、sex、birthday、address、tel、email、registerDate、readerNumber等11个字段,分别表示数据id、登录名称、登录密码、读者名称、读者性别、出生日期、地址、联系电话、电子邮件地址,以及注册日期和读者编号。预置信息如图3-1-4所示。
该数据表主要内容为图书的借阅信息,关键字段为bookId、readerId、lendDate、backDate、backType,分别表示图书id、读者id、借书时间、还书时间以及还书类型,其中backType值可取1、2、3、null,分别并表示当前书籍状态为:在借中、延迟还书、丢失图书、破损还书。预置信息如图3-1-5所示。
该数据表主要内容是管理员发布的图书公告,其中包含公告标题、内容、作者以及发布时间。预置信息如图3-1-6所示。
前端视图页面主要基于LayUI框架,通过SpringMVC实现,页面结构如图3-2-1所示。
系统的所有jsp视图页面均位于“webap/WEB-INF”目录下的“pages”文件夹中,由图3-2-1可以看到在pages目录中包含八个子目录和三个jsp视图页面,其中八个子目录的功能如下:
后台项目结构主要由验证码生成工具(codeuitl)、前端控制器(controller)、dao接口(dao)、拦截器(interceptor)、实体类(po)、业务功能(service)、封装后的开发工具(utils)以及静态资源文件(resources)等8部分组成。
该目录下的文件主要用于验证码生成,具体效果如图3-3-2-1所示。
该目录中包含了项目中素有的前端控制器,用于各个页面之间的转发控制与增 强,具体如图3-3-2-2所示。
该目录中主要为mapper接口,对数据库表的增删改查都通过该目录下的接口实 现,具体如图3-3-2-3所示。
该目录下存放的是系统的拦截器,在本项目中我只写了一个关于登录的拦截器。 具体代码如下:
package com.yx.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginInterceptor implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("执行后,返回前执行....");
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//在处理过程中进行拦截
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//已经登录了就放行 否则进行拦截
HttpSession session=request.getSession();
if(session.getAttribute("user")!=null){
return true;//放行
}else{
//没有登录 跳转到登录页面进行登录操作
response.sendRedirect(request.getContextPath()+"/login");
return false;
}
}
}
该目录下主要为各个数据表的实体类信息,如图3-3-2-5所示。
该目录主要为针对各个数据表dao查询的实现类及各类业务功能,具体如图3-3- 2-6所示。
该目录下共有Contants.java和DataInfo.java两个文件,Contants.java文件中存放 的是开发过程中使用的常量,DataInfo工具类用于做数据封装。
用于存放静态资源文件以及存放SQL语句的mapper.XML文件,具体如图3-3-2- 8所示。
具体依赖信息在项目的pom.xml文件中。
该系统可以通过管理员身份登录到图书管理系统,也可以通过读者登录进入到读者借阅管理系统。
如图4-1-1-1,管理员“何壮壮”登录到图书管理系统,登录密码为“123456”,用类型为“管理员”,输入验证码后,点击“登陆”进入系统(图4-1-1-2)。
如图4-1-2-1,读者“zhangsan”登录到图书管理系统,登录密码为“12345”,用类型为“读者”,输入验证码后,点击“登陆”进入系统(图4-1-2-2)。
主要介绍管理员登录的图书管理系统中的功能管理模块,主要功能如下。
借阅管理主要有借书信息查询、借书、还书等功能,具体如下图4-2-1-1、图-2-1-2所示:
图书管理模块包含了图书查询、添加图书、删除图书以及修改图书信息等功能,具体如图4-2-2-1、图4-2-2-2、图4-2-2-3所示:
读者管理模块包含了读者查询、添加读者、删除读者以及修改读者信息等功能,具体如图4-2-3-1、图4-2-3-2、图-2-3-3所示:
类型管理模块包含了图书类型查询、添加图书类型、删除图书类型以及编辑图书类型等功能,具体如图4-2-4-1、图4-2-4-2、图-2-4-3所示:
公告管理模块包含了公告查询、添加公告、删除公告以及查看公告详情等功能,具体如图4-2-5-1、图4-2-5-2、图4-2-5-3所示:
管理员管理模块包含了管理员查询、添加管理员、删除管理员以及查看管理员详情等功能,具体如图4-2-6-1、图4-2-6-2、图4-2-6-3所示:
由于时间有限,统计分析模块,我们只完成了图书类别统计的图表,如图4-3所示:
本图书管理系统根据本学期所学的SSM知识和以往积累的经验,从需求,设计,实现,测试,一步步的描述了系统的整个建设过程。采用了SSM技术开发,实现了业务,视图和数据的分离。考虑到了数据库的设计不但要满足软件使用平台的需求,还需要能够便捷的维护和扩充,以便更好的提升系统的访问效率,和数据的一致性。相比于人工图书管理的方式,能更好的节约人力成本和时间成本,并且能在很大程度上提高工作效率,提高了读者的读书质量。
通过本次毕业设计的开发,我们在JavaEE方面的技术得到了一定的提升,对缓存中间件也有了进一步的认识,同时也积累了开发经验。通过实践操作,将学校中学习到的理论知识运用到了实际的开发中,加深了对理论知识的理解;对一个项目从需求分析,设计,到编程等整个过程有了更深的认识。我相信课程设计学习到的知识对我日后的工作会起到很大的作用,能够帮助我解决很多问题。
识和以往积累的经验,从需求,设计,实现,测试,一步步的描述了系统的整个建设过程。采用了SSM技术开发,实现了业务,视图和数据的分离。考虑到了数据库的设计不但要满足软件使用平台的需求,还需要能够便捷的维护和扩充,以便更好的提升系统的访问效率,和数据的一致性。相比于人工图书管理的方式,能更好的节约人力成本和时间成本,并且能在很大程度上提高工作效率,提高了读者的读书质量。
通过本次毕业设计的开发,我们在JavaEE方面的技术得到了一定的提升,对缓存中间件也有了进一步的认识,同时也积累了开发经验。通过实践操作,将学校中学习到的理论知识运用到了实际的开发中,加深了对理论知识的理解;对一个项目从需求分析,设计,到编程等整个过程有了更深的认识。我相信课程设计学习到的知识对我日后的工作会起到很大的作用,能够帮助我解决很多问题。