👉文末查看项目功能视频演示+获取源码+sql脚本+视频导入教程视频
1 、功能描述
基于SSM 的图书馆管理系统拥有两个角色,分别为管理员和学生。具体功能如下:
管理员:查看、添加图书,查看添加学生,借还管理,修改密码等
学生:查加检索图书、查看个人信息、查看个人借阅情况、修改密码
1.1 背景描述
图书馆管理系统是一种针对图书馆设计的软件系统,旨在简化和改进图书馆资源的管理、借阅和归还流程。该系统通常包括图书信息管理、借阅记录跟踪、预约服务、罚款管理以及读者信息管理等功能。通过该系统,图书管理员能够更有效地管理图书馆藏书,包括采购、编目和库存管理,同时帮助读者更便捷地查找并借阅所需图书。此外,系统还提供了自助借还书服务,缩短了借书排队时间,提高了用户体验。一些系统还整合了电子书馆功能,允许用户在线阅读或下载电子书籍。另外,通过数据分析功能,系统可以为图书馆提供借阅趋势、流行书籍等信息,帮助图书馆优化资源配置。图书馆管理系统的使用不仅提高了图书馆工作效率,也为读者提供了更便捷的服务,促进了图书馆的数字化发展。
2、项目技术
后端框架:SSM(Spring、SpringMVC、Mybatis)
前端框架:bootstrap、jsp
2.1 SSM
SSM(Spring+SpringMVC+MyBatis)是目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统。其中,Spring就像是整个项目中的粘合剂,负责装配bean并管理其生命周期,实现控制反转(IoC)的功能。SpringMVC负责拦截用户请求,通过DispatcherServlet将请求匹配到相应的Controller并执行。而MyBatis则是对JDBC的封装,让数据库底层操作变得透明,通过配置文件关联到各实体类的Mapper文件,实现了SQL语句映射。
2.2 mysql
MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实租赁环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。
3、开发环境
mysql5-8、tomcat8-10、JDK1.8+
4、功能截图+视频演示+文档目录
4.1 登录
管理员和学生读者均可以通过此页面的登录系统,登录模块会自动检测签前端是否完整填写账号和密码,再经过后台数据库查询校验并通过后,会分别登录至不同的操作端。
4.2管理员-学生管理
管理员学生管理模块可以对学生进行查看、编辑、删除等功能。
4.3管理员-图书管理
管理员-图书管理模块中,管理员可以对图书进行增加、编辑、删除和详情查看等功能,还可以通过图书名字搜索图书,详情可以观看下方视频。管理员读者日志模块同上。
4.4用户学生-图书借阅
学生图书查看模块中,可以根据图书名搜索图书,并能查看图书详情和借阅图书。
4.5学生个人借还日志
学生可以通过我的借还日志功能模块查看自己借阅记录。
4.6 ER图
5 、核心代码实现
5.1 配置代码
#mysql jdbc jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/library?useUnicode=true&characterEncoding=UTF-8 jdbc.username=root jdbc.password=root
5.2 其它核心代码
package com.library.controller; import com.library.bean.Admin; import com.library.bean.ReaderCard; import com.library.service.LoginService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; @Controller public class LoginController { private LoginService loginService; @Autowired public void setLoginService(LoginService loginService) { this.loginService = loginService; } @RequestMapping(value = {"/", "/login.html"}) public String toLogin(HttpServletRequest request) { request.getSession().invalidate(); return "index"; } @RequestMapping("/logout.html") public String logout(HttpServletRequest request) { request.getSession().invalidate(); return "redirect:/login.html"; } //负责处理loginCheck.html请求 //请求参数会根据参数名称默认契约自动绑定到相应方法的入参中 @RequestMapping(value = "/api/loginCheck", method = RequestMethod.POST) public @ResponseBody Object loginCheck(HttpServletRequest request) { long id = Long.parseLong(request.getParameter("id")); String passwd = request.getParameter("passwd"); boolean isReader = loginService.hasMatchReader(id, passwd); boolean isAdmin = loginService.hasMatchAdmin(id, passwd); HashMapres = new HashMap<>(); if (isAdmin) { Admin admin = new Admin(); admin.setAdminId(id); admin.setPassword(passwd); String username = loginService.getAdminUsername(id); admin.setUsername(username); request.getSession().setAttribute("admin", admin); res.put("stateCode", "1"); res.put("msg", "管理员登陆成功!"); } else if (isReader) { ReaderCard readerCard = loginService.findReaderCardByReaderId(id); request.getSession().setAttribute("readercard", readerCard); res.put("stateCode", "2"); res.put("msg", "读者登陆成功!"); } else { res.put("stateCode", "0"); res.put("msg", "账号或密码错误!"); } return res; } @RequestMapping("/admin_main.html") public ModelAndView toAdminMain(HttpServletResponse response) { return new ModelAndView("admin_main"); } @RequestMapping("/reader_main.html") public ModelAndView toReaderMain(HttpServletResponse response) { return new ModelAndView("reader_main"); } @RequestMapping("/admin_repasswd.html") public ModelAndView reAdminPasswd() { return new ModelAndView("admin_repasswd"); } @RequestMapping("/admin_repasswd_do") public String reAdminPasswdDo(HttpServletRequest request, String oldPasswd, String newPasswd, String reNewPasswd, RedirectAttributes redirectAttributes) { Admin admin = (Admin) request.getSession().getAttribute("admin"); long id = admin.getAdminId(); String password = loginService.getAdminPassword(id); if (password.equals(oldPasswd)) { if (loginService.adminRePassword(id, newPasswd)) { redirectAttributes.addFlashAttribute("succ", "密码修改成功!"); return "redirect:/admin_repasswd.html"; } else { redirectAttributes.addFlashAttribute("error", "密码修改失败!"); return "redirect:/admin_repasswd.html"; } } else { redirectAttributes.addFlashAttribute("error", "旧密码错误!"); return "redirect:/admin_repasswd.html"; } } @RequestMapping("/reader_repasswd.html") public ModelAndView reReaderPasswd() { return new ModelAndView("reader_repasswd"); } @RequestMapping("/reader_repasswd_do") public String reReaderPasswdDo(HttpServletRequest request, String oldPasswd, String newPasswd, String reNewPasswd, RedirectAttributes redirectAttributes) { ReaderCard reader = (ReaderCard) request.getSession().getAttribute("readercard"); long id = reader.getReaderId(); String password = loginService.getReaderPassword(id); if (password.equals(oldPasswd)) { if (loginService.readerRePassword(id, newPasswd)) { redirectAttributes.addFlashAttribute("succ", "密码修改成功!"); return "redirect:/reader_repasswd.html"; } else { redirectAttributes.addFlashAttribute("error", "密码修改失败!"); return "redirect:/reader_repasswd.html"; } } else { redirectAttributes.addFlashAttribute("error", "旧密码错误!"); return "redirect:/reader_repasswd.html"; } } //配置404页面 @RequestMapping("*") public String notFind() { return "404"; } }
6 、功能视频演示
图书馆管理2
还没有评论,来说两句吧...