JavaEE课程设计(基于Layui+SSM的图书管理系统)
注:
本文为JavaEE课程的课程设计,如需原文件及项目代码请后台联系作者或qq3416252112,也可在作者主页资源中下载,仅供学习交流使用!
文章目录
一、项目介绍
结合本学期所学知识,以及以往积累的经验,我们通过Layui+SSM的方式完成了简化版的“图书管理系统”。本系统操作界面简约美观,能够高效、快速、稳定的管理图书馆的数据信息。系统主要包含一下几个功能:借阅管理、图书管理、类型管理、公告管理、管理员管理以及统计分析(具体表现形式如图1-1与图1-2所示)。管理员只需要操作本系统,就可以轻松实现图书信息的查询、增删等操作,图书管理员使用本系统能方便快捷的完成图书管的基本信息管理工作。
- (图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,具体功能如下:
1、管理员表(admin)
该表的主要内容为系统的管理员信息,包含id、username、password、adminType四个字段,其中id为用户id不可重复,username为用户登录名,password为用户登录密码,adminType为管理员类型。adminType取值只能为1或2,1表示该用户为高级管理员,2表示该用户为普通管理员。admin数据表的预置数据如图3-1-1。
- (图3-1-1,管理员信息)
2、图书类型表(type_info)
该数据表内容为图书的类型,可以对图书进行分类,我们预置了六类图书,具体如图3-1-2所示。
- (图3-1-2,图书分类信息)
3、图书信息表(book_info)
该数据表主要存放管内所有书籍的基本信息,如:图书名称、作者、出版社、图书id、内容简介、语言类型、图书类型、价格、出版日期等等。内置数据如图3-1-3所示。
- (图3-1-3,图书信息)
4、读者信息表(reader_info)
该数据表主要存放所有读者的基本信息与登陆信息,共包含id、username、password、realName、sex、birthday、address、tel、email、registerDate、readerNumber等11个字段,分别表示数据id、登录名称、登录密码、读者名称、读者性别、出生日期、地址、联系电话、电子邮件地址,以及注册日期和读者编号。预置信息如图3-1-4所示。
- (图3-1-4,读者信息)
5、借阅信息(lend_list)
该数据表主要内容为图书的借阅信息,关键字段为bookId、readerId、lendDate、backDate、backType,分别表示图书id、读者id、借书时间、还书时间以及还书类型,其中backType值可取1、2、3、null,分别并表示当前书籍状态为:在借中、延迟还书、丢失图书、破损还书。预置信息如图3-1-5所示。
- (图3-1-5,书籍借阅信息)
6、公告管理(notice)
该数据表主要内容是管理员发布的图书公告,其中包含公告标题、内容、作者以及发布时间。预置信息如图3-1-6所示。
- (图3-1-6,公告信息)
(二)前端视图页面(LayUI)
前端视图页面主要基于LayUI框架,通过SpringMVC实现,页面结构如图3-2-1所示。
- (图3-2-1,视图页面结构)
系统的所有jsp视图页面均位于“webap/WEB-INF”目录下的“pages”文件夹中,由图3-2-1可以看到在pages目录中包含八个子目录和三个jsp视图页面,其中八个子目录的功能如下:
- admin目录:用户信息展示页(adminIndex.jsp)、添加用户页面(adminAdd.jsp)、删除与修改用户信息页面(updateAdmin.jsp)。
- book目录:书籍信息展示页(bookIndex.jsp)、添加书籍页面(bookAdd.jsp)、删除与修改书籍信息页面(updateBook.jsp)。
- count目录:统计分析展示页(staticIndex.jsp),由于时间有限我们只完成了一个书籍类别的统计分析图。
- lend目录:书籍借阅信息展示页(lendListIndex.jsp)、借书页(addListIndex.jsp)、还书页(excBackBook.jsp)、图书列别表页(lookBookList.jsp)。
- notice目录:管理员公告展示页(noticeIndexOfBack.jsp)、读者公告展示页(noticeIndexOfReader.jsp)、添加公告页(noticeAdd.jsp)、删除与修改公告页(updateNotice.jsp)。
- pwdUpdate目录:修改密码页面(updatePwd.jsp)。
- reader目录:添加读者页(readerAdd.jsp)、读者展示页(readerIndex.jsp)、修改或删除读者信息页(updateReader.jsp)。
- type目录:图书类型展示页(readerIndex.jsp)、添加图书类型页(typeAdd.jsp)、修改与删除图书类型页(updateType.jsp)。
- index.jsp文件:该文件为用户登陆成功后的页面。
- login.jsp文件:该页面为用户登录页面。
- welcome.jsp文件:该页面为加载其他页面时的过渡页面。
(三)后端实现(SSM)
1、项目目录结构,如图3-3-1所示。
- (图3-3-1,项目目录结构)
后台项目结构主要由验证码生成工具(codeuitl)、前端控制器(controller)、dao接口(dao)、拦截器(interceptor)、实体类(po)、业务功能(service)、封装后的开发工具(utils)以及静态资源文件(resources)等8部分组成。
2、开发目录功能介绍
(1)codeuill目录
该目录下的文件主要用于验证码生成,具体效果如图3-3-2-1所示。
- (图3-3-2-1,登录验证)
(2)controller目录
该目录中包含了项目中素有的前端控制器,用于各个页面之间的转发控制与增 强,具体如图3-3-2-2所示。
- (图3-3-2-2,controller控制器)
(3)dao目录
该目录中主要为mapper接口,对数据库表的增删改查都通过该目录下的接口实 现,具体如图3-3-2-3所示。
- (图3-3-2-3,dao接口文件)
(4)interceptor目录(登录拦截的实现)
该目录下存放的是系统的拦截器,在本项目中我只写了一个关于登录的拦截器。 具体代码如下:
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; } } }
(5)po目录
该目录下主要为各个数据表的实体类信息,如图3-3-2-5所示。
- (图3-3-2-5)
(6)service目录
该目录主要为针对各个数据表dao查询的实现类及各类业务功能,具体如图3-3- 2-6所示。
- (图3-3-2-6,service目录)
(7)utils目录
该目录下共有Contants.java和DataInfo.java两个文件,Contants.java文件中存放 的是开发过程中使用的常量,DataInfo工具类用于做数据封装。
(8)resources目录
用于存放静态资源文件以及存放SQL语句的mapper.XML文件,具体如图3-3-2- 8所示。
- (图3-3-2-8,静态资源目录)
(四)Maven依赖信息
具体依赖信息在项目的pom.xml文件中。
四、功能介绍
(一)用户登录
该系统可以通过管理员身份登录到图书管理系统,也可以通过读者登录进入到读者借阅管理系统。
1、管理员登录
如图4-1-1-1,管理员“何壮壮”登录到图书管理系统,登录密码为“123456”,用类型为“管理员”,输入验证码后,点击“登陆”进入系统(图4-1-1-2)。
- (图4-1-1-1,登录页)
- (图4-1-1-2,图书管理系统首页)
2、读者登录
如图4-1-2-1,读者“zhangsan”登录到图书管理系统,登录密码为“12345”,用类型为“读者”,输入验证码后,点击“登陆”进入系统(图4-1-2-2)。
- (图4-1-2-1,读者登录)
- (图4-1-2-2,借阅系统首页)
(二)功能管理
主要介绍管理员登录的图书管理系统中的功能管理模块,主要功能如下。
1、借阅管理
借阅管理主要有借书信息查询、借书、还书等功能,具体如下图4-2-1-1、图-2-1-2所示:
- (图4-2-1-1,借阅管理首页)
- (图4-2-1-2,点击‘借书’按钮进入“借书管理”页面)
2、图书管理
图书管理模块包含了图书查询、添加图书、删除图书以及修改图书信息等功能,具体如图4-2-2-1、图4-2-2-2、图4-2-2-3所示:
- (图4-2-2-2,图书列表)
- (图4-2-2-1,点击“添加”按钮进入“添加图书”页面)
- (图4-2-2-3,点击“修改”按钮进入“修改图书信息”页面)
3、读者管理
读者管理模块包含了读者查询、添加读者、删除读者以及修改读者信息等功能,具体如图4-2-3-1、图4-2-3-2、图-2-3-3所示:
- (图4-2-3-1,读者列表页面)
- (图4-2-3-2,点击“添加”按钮,进入“添加读者”页面)
- (图4-2-3-3,点击“修改”按钮,进入“修改读者信息”页面)
4、类型管理
类型管理模块包含了图书类型查询、添加图书类型、删除图书类型以及编辑图书类型等功能,具体如图4-2-4-1、图4-2-4-2、图-2-4-3所示:
- (图4-2-4-1,图书类型列表页面)
- (图4-2-4-2,点击“添加”按钮,弹出“添加类型”页面)
- (图4-2-4-3,点击“修改”按钮,弹出“修改图书类型”页面)
5、公告管理
公告管理模块包含了公告查询、添加公告、删除公告以及查看公告详情等功能,具体如图4-2-5-1、图4-2-5-2、图4-2-5-3所示:
- (图4-2-5-1,已发布公告列表)
- (图4-2-5-2,点击“发布公告”按钮,弹出“发布公告”窗口)
- (图4-2-5-3,点击“查询详情”按钮,查看公告详情信息)
6、管理员管理
管理员管理模块包含了管理员查询、添加管理员、删除管理员以及查看管理员详情等功能,具体如图4-2-6-1、图4-2-6-2、图4-2-6-3所示:
- (图4-2-6-1,管理员列表)
- (图4-2-6-2,点击“添加”按钮,弹出“添加管理员”窗口)
- (图4-2-6-3,点击“修改密码”按钮,弹出“修改管理员信息”窗口)
(三)统计分析
由于时间有限,统计分析模块,我们只完成了图书类别统计的图表,如图4-3所示:
- (图4-3,图书类型图表分析)
五、项目总结
本图书管理系统根据本学期所学的SSM知识和以往积累的经验,从需求,设计,实现,测试,一步步的描述了系统的整个建设过程。采用了SSM技术开发,实现了业务,视图和数据的分离。考虑到了数据库的设计不但要满足软件使用平台的需求,还需要能够便捷的维护和扩充,以便更好的提升系统的访问效率,和数据的一致性。相比于人工图书管理的方式,能更好的节约人力成本和时间成本,并且能在很大程度上提高工作效率,提高了读者的读书质量。
通过本次毕业设计的开发,我们在JavaEE方面的技术得到了一定的提升,对缓存中间件也有了进一步的认识,同时也积累了开发经验。通过实践操作,将学校中学习到的理论知识运用到了实际的开发中,加深了对理论知识的理解;对一个项目从需求分析,设计,到编程等整个过程有了更深的认识。我相信课程设计学习到的知识对我日后的工作会起到很大的作用,能够帮助我解决很多问题。
识和以往积累的经验,从需求,设计,实现,测试,一步步的描述了系统的整个建设过程。采用了SSM技术开发,实现了业务,视图和数据的分离。考虑到了数据库的设计不但要满足软件使用平台的需求,还需要能够便捷的维护和扩充,以便更好的提升系统的访问效率,和数据的一致性。相比于人工图书管理的方式,能更好的节约人力成本和时间成本,并且能在很大程度上提高工作效率,提高了读者的读书质量。
通过本次毕业设计的开发,我们在JavaEE方面的技术得到了一定的提升,对缓存中间件也有了进一步的认识,同时也积累了开发经验。通过实践操作,将学校中学习到的理论知识运用到了实际的开发中,加深了对理论知识的理解;对一个项目从需求分析,设计,到编程等整个过程有了更深的认识。我相信课程设计学习到的知识对我日后的工作会起到很大的作用,能够帮助我解决很多问题。