源码获取:俺的博客首页 "资源" 里下载!

项目介绍

本系统是基于SSM和bootstrap进行开发的项目。主要也是为了完成学校的学习任务,整体可能没有那么完美,练练手倒还行。
该项目主要分为管理员与普通用户两种角色。
普通用户主要功能包括:图书查看、下订单、订单查看;
管理员主要功能包括:图书管理、订单管理、处理订单等;

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 
5.数据库:MySql 8.0版本;
6.是否Maven项目:是;

技术栈

1. 后端:Spring+SpringMVC+Mybatis
2. 前端:JSP+bootstrap

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;需要首先执行bookManager.sql,再执行insertBookData.sql;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中config.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入http://localhost:8080/manager/index.jsp 登录 注:Tomcat中配置项目路径必须为manager
管理员:Chris 密码:123456
普通用户:chris 密码:123

登录管理控制层:

@Controller
public class LoginController {private LoginService loginService;@Autowiredpublic 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 @ResponseBodyObject 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);HashMap<String, String> res = 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";}}

读者管理控制层:

@Controller
public class ReaderController {@Autowiredprivate ReaderInfoService readerInfoService;@Autowiredprivate LoginService loginService;@Autowiredprivate ReaderCardService readerCardService;private ReaderInfo getReaderInfo(long readerId, String name, String sex, String birth, String address, String phone) {ReaderInfo readerInfo = new ReaderInfo();Date date = new Date();try {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");date = df.parse(birth);} catch (ParseException e) {e.printStackTrace();}readerInfo.setAddress(address);readerInfo.setName(name);readerInfo.setReaderId(readerId);readerInfo.setPhone(phone);readerInfo.setSex(sex);readerInfo.setBirth(date);return readerInfo;}@RequestMapping("allreaders.html")public ModelAndView allBooks() {ArrayList<ReaderInfo> readers = readerInfoService.readerInfos();ModelAndView modelAndView = new ModelAndView("admin_readers");modelAndView.addObject("readers", readers);return modelAndView;}@RequestMapping("reader_delete.html")public String readerDelete(HttpServletRequest request, RedirectAttributes redirectAttributes) {long readerId = Long.parseLong(request.getParameter("readerId"));if (readerInfoService.deleteReaderInfo(readerId) && readerCardService.deleteReaderCard(readerId)) {redirectAttributes.addFlashAttribute("succ", "删除成功!");} else {redirectAttributes.addFlashAttribute("error", "删除失败!");}return "redirect:/allreaders.html";}@RequestMapping("/reader_info.html")public ModelAndView toReaderInfo(HttpServletRequest request) {ReaderCard readerCard = (ReaderCard) request.getSession().getAttribute("readercard");ReaderInfo readerInfo = readerInfoService.getReaderInfo(readerCard.getReaderId());ModelAndView modelAndView = new ModelAndView("reader_info");modelAndView.addObject("readerinfo", readerInfo);return modelAndView;}@RequestMapping("reader_edit.html")public ModelAndView readerInfoEdit(HttpServletRequest request) {long readerId = Long.parseLong(request.getParameter("readerId"));ReaderInfo readerInfo = readerInfoService.getReaderInfo(readerId);ModelAndView modelAndView = new ModelAndView("admin_reader_edit");modelAndView.addObject("readerInfo", readerInfo);return modelAndView;}@RequestMapping("reader_edit_do.html")public String readerInfoEditDo(HttpServletRequest request, String name, String sex, String birth, String address, String phone, RedirectAttributes redirectAttributes) {long readerId = Long.parseLong(request.getParameter("readerId"));ReaderInfo readerInfo = getReaderInfo(readerId, name, sex, birth, address, phone);if (readerInfoService.editReaderInfo(readerInfo) && readerInfoService.editReaderCard(readerInfo)) {redirectAttributes.addFlashAttribute("succ", "读者信息修改成功!");} else {redirectAttributes.addFlashAttribute("error", "读者信息修改失败!");}return "redirect:/allreaders.html";}@RequestMapping("reader_add.html")public ModelAndView readerInfoAdd() {return new ModelAndView("admin_reader_add");}@RequestMapping("reader_add_do.html")public String readerInfoAddDo(String name, String sex, String birth, String address, String phone, String password, RedirectAttributes redirectAttributes) {ReaderInfo readerInfo = getReaderInfo(0, name, sex, birth, address, phone);long readerId = readerInfoService.addReaderInfo(readerInfo);readerInfo.setReaderId(readerId);if (readerId > 0 && readerCardService.addReaderCard(readerInfo, password)) {redirectAttributes.addFlashAttribute("succ", "添加读者信息成功!");} else {redirectAttributes.addFlashAttribute("succ", "添加读者信息失败!");}return "redirect:/allreaders.html";}@RequestMapping("reader_info_edit.html")public ModelAndView readerInfoEditReader(HttpServletRequest request) {ReaderCard readerCard = (ReaderCard) request.getSession().getAttribute("readercard");ReaderInfo readerInfo = readerInfoService.getReaderInfo(readerCard.getReaderId());ModelAndView modelAndView = new ModelAndView("reader_info_edit");modelAndView.addObject("readerinfo", readerInfo);return modelAndView;}@RequestMapping("reader_edit_do_r.html")public String readerInfoEditDoReader(HttpServletRequest request, String name, String sex, String birth, String address, String phone, RedirectAttributes redirectAttributes) {ReaderCard readerCard = (ReaderCard) request.getSession().getAttribute("readercard");ReaderInfo readerInfo = getReaderInfo(readerCard.getReaderId(), name, sex, birth, address, phone);if (readerInfoService.editReaderInfo(readerInfo) && readerInfoService.editReaderCard(readerInfo)) {ReaderCard readerCardNew = loginService.findReaderCardByReaderId(readerCard.getReaderId());request.getSession().setAttribute("readercard", readerCardNew);redirectAttributes.addFlashAttribute("succ", "信息修改成功!");} else {redirectAttributes.addFlashAttribute("error", "信息修改失败!");}return "redirect:/reader_info.html";}
}

图书管理控制层:

@Controller
public class BookController {@Autowiredprivate BookService bookService;@Autowiredprivate LendService lendService;private Date getDate(String pubstr) {try {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");return df.parse(pubstr);} catch (ParseException e) {e.printStackTrace();return new Date();}}@RequestMapping("/queryBook.html")public ModelAndView queryBookDo(String searchWord) {if (bookService.matchBook(searchWord)) {ArrayList<Book> books = bookService.queryBook(searchWord);ModelAndView modelAndView = new ModelAndView("admin_books");modelAndView.addObject("books", books);return modelAndView;} else {return new ModelAndView("admin_books", "error", "没有匹配的图书");}}@RequestMapping("/reader_querybook_do.html")public ModelAndView readerQueryBookDo(String searchWord) {if (bookService.matchBook(searchWord)) {ArrayList<Book> books = bookService.queryBook(searchWord);ModelAndView modelAndView = new ModelAndView("reader_books");modelAndView.addObject("books", books);return modelAndView;} else {return new ModelAndView("reader_books", "error", "没有匹配的图书");}}@RequestMapping("/admin_books.html")public ModelAndView adminBooks() {ArrayList<Book> books = bookService.getAllBooks();ModelAndView modelAndView = new ModelAndView("admin_books");modelAndView.addObject("books", books);return modelAndView;}@RequestMapping("/book_add.html")public ModelAndView addBook() {return new ModelAndView("admin_book_add");}@RequestMapping("/book_add_do.html")public String addBookDo(@RequestParam(value = "pubstr") String pubstr, Book book, RedirectAttributes redirectAttributes) {book.setPubdate(getDate(pubstr));if (bookService.addBook(book)) {redirectAttributes.addFlashAttribute("succ", "图书添加成功!");} else {redirectAttributes.addFlashAttribute("succ", "图书添加失败!");}return "redirect:/admin_books.html";}@RequestMapping("/updatebook.html")public ModelAndView bookEdit(HttpServletRequest request) {long bookId = Long.parseLong(request.getParameter("bookId"));Book book = bookService.getBook(bookId);ModelAndView modelAndView = new ModelAndView("admin_book_edit");modelAndView.addObject("detail", book);return modelAndView;}@RequestMapping("/book_edit_do.html")public String bookEditDo(@RequestParam(value = "pubstr") String pubstr, Book book, RedirectAttributes redirectAttributes) {book.setPubdate(getDate(pubstr));if (bookService.editBook(book)) {redirectAttributes.addFlashAttribute("succ", "图书修改成功!");} else {redirectAttributes.addFlashAttribute("error", "图书修改失败!");}return "redirect:/admin_books.html";}@RequestMapping("/admin_book_detail.html")public ModelAndView adminBookDetail(HttpServletRequest request) {long bookId = Long.parseLong(request.getParameter("bookId"));Book book = bookService.getBook(bookId);ModelAndView modelAndView = new ModelAndView("admin_book_detail");modelAndView.addObject("detail", book);return modelAndView;}@RequestMapping("/reader_book_detail.html")public ModelAndView readerBookDetail(HttpServletRequest request) {long bookId = Long.parseLong(request.getParameter("bookId"));Book book = bookService.getBook(bookId);ModelAndView modelAndView = new ModelAndView("reader_book_detail");modelAndView.addObject("detail", book);return modelAndView;}@RequestMapping("/admin_header.html")public ModelAndView admin_header() {return new ModelAndView("admin_header");}@RequestMapping("/reader_header.html")public ModelAndView reader_header() {return new ModelAndView("reader_header");}@RequestMapping("/reader_books.html")public ModelAndView readerBooks(HttpServletRequest request) {ArrayList<Book> books = bookService.getAllBooks();ReaderCard readerCard = (ReaderCard) request.getSession().getAttribute("readercard");ArrayList<Lend> myAllLendList = lendService.myLendList(readerCard.getReaderId());ArrayList<Long> myLendList = new ArrayList<>();for (Lend lend : myAllLendList) {// 是否已归还if (lend.getBackDate() == null) {myLendList.add(lend.getBookId());}}ModelAndView modelAndView = new ModelAndView("reader_books");modelAndView.addObject("books", books);modelAndView.addObject("myLendList", myLendList);return modelAndView;}
}

源码获取:俺的博客首页 "资源" 里下载!

Java项目:图书进销存管理系统(java+SSM+JSP+bootstrap+Mysql)相关推荐

  1. Java项目:医药进销存管理系统(java+SpringBoot+HTML+Echarts+JQuery+maven+mysql)

    源码获取:博客首页 "资源" 里下载! 功能介绍 医药进销存系统,主要分两种角色:员工.客户.本系统具有进销存系统的通用性,可以修改为其它进销存系统,如家电进销存.手机进销存等: ...

  2. 基于javaweb的图书进销存管理系统(java+ssm+jsp+bootstrap+mysql)

    基于javaweb的图书进销存管理系统(java+ssm+jsp+bootstrap+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/m ...

  3. Java项目:医药进销存系统(java+SSM+JSP+Layui+jQuery+Maven+mysql)

    源码获取:博客首页 "资源" 里下载! 功能介绍 医药进销存系统,主要功能包括: 公告管理:发布公告.公告列表: 生产管理:订单列表.增加生产.订单日志: 分店采购:分店审核.采购 ...

  4. Java毕设项目仓库进销存管理系统计算机(附源码+系统+数据库+LW)

    Java毕设项目仓库进销存管理系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ E ...

  5. 【源码及课件分享】Java实战项目之进销存管理系统_Java项目开发_Java项目实战

    还没有搞定毕设的小伙伴一定要看鸭~ Java实战项目--进销存管理系统![源码及课件分享]Java实战项目之进销存管理系统_Java项目开发_Java项目实战_Java毕业设计https://www. ...

  6. java毕业设计超市进销存管理系统Mybatis+系统+数据库+调试部署

    java毕业设计超市进销存管理系统Mybatis+系统+数据库+调试部署 java毕业设计超市进销存管理系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  7. 基于JAVA珠宝首饰进销存管理系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA珠宝首饰进销存管理系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA珠宝首饰进销存管理系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  8. [附源码]计算机毕业设计JAVA校园超市进销存管理系统

    [附源码]计算机毕业设计JAVA校园超市进销存管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(I ...

  9. 基于javaweb的超市进销存管理系统(java+ssm+jsp+bootstrap+jquery+mysql)

    基于javaweb的超市进销存管理系统(java+ssm+jsp+bootstrap+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse ...

最新文章

  1. ie对java的设置字体,css3文字特效和浏览器兼容性
  2. EditText获得焦点后,如何关闭软键盘
  3. 函数sprintf真好用
  4. [js] 字符串拼接有哪些方式?哪种性能好?
  5. 静态代理和动态代理的代码笔记
  6. git cherry-pick 的使用
  7. 文本文档如何运行c语言代码,C程序员如何创建、打开、关闭文本文件或二进制文件...
  8. 莫烦Tensorflow学习笔记(10-12)——构建简单的神经网络及其可视化
  9. 历史双色球数据分析---python
  10. 物联网-通信模块使用笔记
  11. TensorFlow 决策森林来啦!
  12. 【云和恩墨大讲堂】罗海雄 | 如何在不改SQL的情况下优化数据库
  13. jenkins自动化_通过Jenkins自动化PSR合规性
  14. ZStack - 创建云主机
  15. 带通采样(欠采样)原理以及其在ADC中下变频的应用
  16. 前任写的代码,真是辣鸡…
  17. Django启航(四)Django配置数据库
  18. Diffraction、Scatterring、Diffusion、Reflection 衍射、散射、干涉、折射 傻傻分不清
  19. Windbg MESC.dll 加载问题 The call to LoadLibrary(winext/MSEC.dll) failed, Win32 error 0n126
  20. CSDN 简单的MD编辑器-基础知识

热门文章

  1. 青龙配置企业微信推送时出现错误
  2. Cisco Nexus 7700 FEX双宿主割接踩坑经历
  3. 屏蔽lingoes的弹窗.
  4. 分支限界法TSP问题
  5. 视力矫正黑幕笼罩 该如何拯救下一代近视青少年的眼睛?
  6. 在 K8s 中快速部署使用 GitLab 并构建 DevOps 项目
  7. 微信小程序之简单商城部分功能总结
  8. 【图文】【linux驱动、imx6ull核心板、FPGA、qt上位机、持续更新中···】打印机项目
  9. 向量的点乘与叉乘概念理解以及C++代码实现
  10. Java面试通关要点汇总集(山东数漫江湖)