👉文末查看项目功能视频演示+获取源码+sql脚本+视频导入教程视频
1 、功能描述
基于SSM的图书管理管理系统4拥有两种角色,用户可以浏览评论图书、登录注册,管理员可以进行图书馆管理、用户管理、分类管理等功能
1.1 背景描述
图书书店销售管理系统是一种用于管理图书书店日常运营的软件系统。该系统包括库存管理、销售记录、顾客信息、采购管理和报表生成等功能模块。通过库存管理,书店可以追踪图书库存量,预测销售趋势并自动补货。销售记录模块记录每笔交易的详细信息,包括销售日期、商品清单和支付方式等。顾客信息模块存储客户基本信息及购买历史,帮助书店更好地了解顾客需求并进行精准营销。采购管理模块可根据销售情况自动生成采购订单,并跟踪供应商信息。报表生成模块提供销售统计、库存盘点和财务报表等功能,帮助书店管理者进行数据分析和业务决策。这样的系统能够提高图书书店的运营效率,优化库存管理,并提供更好的顾客体验。
2、项目技术
后端框架:SSM(Spring、SpringMVC、Mybatis)
前端技术:jsp、css、JavaScript、JQuery
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、开发环境
- JAVA版本:JDK1.8
- IDE类型:IDEA、Eclipse都可运行
- tomcat版本:Tomcat 7-10版本均可
- 数据库类型:MySql5.x
- maven版本:不需要
- 硬件环境:Windows 或者 Mac OS
4、功能截图+视频演示+文档目录
4.1 登录注册
4.2 用户模块
4.3 管理员模块
5 、核心代码实现
5.1 配置代码
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/bookmanage?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
jdbc.username=root
jdbc.password=rootc3p0.pool.size.max=20
c3p0.pool.size.min=5
c3p0.pool.size.ini=3
c3p0.pool.size.increment=2
5.2 其它核心代码
package edu.fjnu.book.controller.admin;import java.util.List;import javax.servlet.http.HttpSession;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import com.github.pagehelper.PageInfo;import edu.fjnu.book.controller.BaseController;
import edu.fjnu.book.domain.MsgItem;
import edu.fjnu.book.domain.User;
import edu.fjnu.book.service.UserService;
import edu.fjnu.book.util.MD5Util;
/*** 用户管理* @author hspcadmin**/
@Controller
public class UserController extends BaseController{@AutowiredUserService userService;//跳转到登录页面@RequestMapping("/admin/login.action")public String toLoin(User user, Model model, HttpSession session){if(session.getAttribute("userName")!= null){return "/admin/index.jsp";}List<User> dataList = userService.find(user);model.addAttribute("dataList", dataList);return "/admin/login.jsp"; }@RequestMapping("/admin/userLogin.action")public String checkUser(User user, Model model, HttpSession session){User loginUser = userService.login(user);if(session.getAttribute("userName")!= null){return "/admin/index.jsp";}if(loginUser!=null && "2".equals(loginUser.getUserType())){session.setAttribute("userName", loginUser.getUserName());return "/admin/index.jsp";}else{model.addAttribute("message", "用户名或密码输入错误!!!");return "/admin/login.jsp";}}/*** 判断账户信息是否存在* @param name* @param model* @return*/@RequestMapping("/admin/checkAccount.action")public String checkAccount(String userId, Model model){User userInfo = userService.get(userId);if(userInfo!= null){model.addAttribute("message", "该账号已经存在");}else{model.addAttribute("message", "<font color='green'>验证通过</font>");}model.addAttribute("userId", userId);return "/admin/info-reg.jsp";}@RequestMapping("/admin/checkEamil.action")@ResponseBodypublic MsgItem checkEamil(String email, Model model){MsgItem msgItem = new MsgItem();User register = new User();register.setEmail(email);User userInfo = userService.getStuByEmail(register);if(userInfo!= null){msgItem.setErrorNo("1");msgItem.setErrorInfo("<font color='red' style='font-weight:bold'>账号已经存在</font>");}else{msgItem.setErrorNo("0");msgItem.setErrorInfo("<font color='blue' style='font-weight:bold'>验证通过</font>");}return msgItem;} /*** ajax验证用户账号是否存在* @param userId* @param model* @return*/@RequestMapping("/admin/userRegist.action")@ResponseBodypublic MsgItem userRegist(String userId, Model model, HttpSession session){MsgItem msgItem = new MsgItem();User user = userService.get(userId);if(user!=null){msgItem.setErrorNo("1");msgItem.setErrorInfo("<font color='red' style='font-weight:bold'>账号已经存在</font>");}else{msgItem.setErrorNo("0");msgItem.setErrorInfo("<font color='blue' style='font-weight:bold'>验证通过</font>");}return msgItem;} //跳转到登录页面@RequestMapping("/admin/exitSys.action")public String exitSys(User user, Model model, HttpSession session){if(session.getAttribute("userName")!= null){session.removeAttribute("userName");return "forward:/admin/login.action";}return "/admin/login.jsp"; }//跳转到用户管理页面@RequestMapping(value="/admin/toUserManage.action",method=RequestMethod.POST)public String toUserManage(Model model, HttpSession session){return "/admin/user-mgt.jsp"; }//获取所有的用户信息@RequestMapping("/admin/getAllUser.action")public String getAllUserInfo(@RequestParam(value="page", defaultValue="1") int page,User user, Model model, HttpSession session){
// List<User> dataList = userService.find(user);PageInfo<User> pageInfo = userService.findByPage(user, page, 10);List<User> dataList = pageInfo.getList();model.addAttribute("dataList", dataList);model.addAttribute("pageInfo", pageInfo);return "/admin/user-mgt.jsp"; }//获取所有的用户信息@RequestMapping("/admin/qryAllUser.action")@ResponseBodypublic List<User> qryAllUser(@RequestParam(value="page", defaultValue="1") int page,User user, Model model, HttpSession session){PageInfo<User> pageInfo = userService.findByPage(user, page, 10);List<User> dataList = pageInfo.getList();model.addAttribute("dataList", dataList);model.addAttribute("pageInfo", pageInfo);return dataList; }/*** 添加用户信息* @param user* @param model* @return*/@RequestMapping("/admin/addUser.action")public String addUser(User user, Model model){userService.insert(user);return "redirect:/admin/getAllUser.action"; }/*** 注销用户信息* @param userId 用户账号,删除多个是,id用逗号分隔开* @param model* @return*/@RequestMapping("/admin/deleteUser.action")@ResponseBodypublic MsgItem deleteUser(String userId, Model model){MsgItem item = new MsgItem();try {if(userId != null && !"".equals(userId.trim())){String ids[] = userId.split(",");for(int i=0;i<ids.length;i++){userService.delete(ids[i]);}}item.setErrorNo("0");item.setErrorInfo("注销成功!");} catch (Exception e) {e.printStackTrace();item.setErrorNo("1");item.setErrorInfo("注销失败!");}return item;} /*** 跳转到更新用户信息页面* @param user* @param model* @param session* @return*/@RequestMapping("/admin/toUpdateUser.action")public String toUpdateUser(User user, Model model, HttpSession session){String userId = user.getUserId().trim();User userInfo = userService.get(userId);model.addAttribute("user", userInfo);return "/admin/user-upd.jsp"; }/*** 跳转到用户详情页面* @param user* @param model* @param session* @return*/@RequestMapping("/admin/toQryUser.action")public String toQryUser(User user, Model model, HttpSession session){String userId = user.getUserId().trim();User userInfo = userService.get(userId);model.addAttribute("user", userInfo);return "/admin/user-qry.jsp"; }/*** 更新用户信息* @param user* @param model* @return*/@RequestMapping("/admin/updateUser.action")@ResponseBodypublic MsgItem updateUser(User user, Model model){MsgItem item = new MsgItem();try {if(user != null){userService.update(user);item.setErrorNo("0");item.setErrorInfo("更新成功!");}else{item.setErrorNo("1");item.setErrorInfo("更新失败!");}} catch (Exception e) {e.printStackTrace();item.setErrorNo("1");item.setErrorInfo("更新失败!");}return item;}/*** 用户解冻* @param userId * @param model* @return*/@RequestMapping("/admin/thawUserById.action")@ResponseBodypublic MsgItem thawUserById(User user, Model model){MsgItem item = new MsgItem();user.setUserState("2");try {userService.update(user);item.setErrorNo("0");item.setErrorInfo("解冻成功!");} catch (Exception e) {e.printStackTrace();item.setErrorNo("1");item.setErrorInfo("解冻失败!");}return item;} /*** 用户解冻* @param userId * @param model* @return*/@RequestMapping("/admin/reSetPwd.action")@ResponseBodypublic MsgItem reSetPwd(String userId, Model model){MsgItem item = new MsgItem();try {if(userId != null && !"".equals(userId.trim())){String pwd = MD5Util.getData("123456");String ids[] = userId.split(",");for(int i=0;i<ids.length;i++){User user = new User();user.setUserId(ids[i]);user.setUserPwd(pwd);userService.update(user);}}item.setErrorNo("0");item.setErrorInfo("密码重置成功!");} catch (Exception e) {e.printStackTrace();item.setErrorNo("1");item.setErrorInfo("密码重置成功!");}return item;} }
6 、功能视频演示
书店图书销售系统