Java 實戰圖書管理系統的實現流程
一、項目簡述
功能包括(管理員和學生角色): 管理員和學生登錄,圖書管理,圖書添加刪除修改,圖書 借閱,圖書歸還,圖書查看,學生管理,借還管理,讀者 管理,密碼管理,信息修改等等功能。
二、項目運行
環境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
項目技術: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。
讀者信息控制器:
@Controller public class ReaderController { @Autowired private ReaderInfoService readerInfoService; @Autowired private LoginService loginService; @Autowired private 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 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); 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 BookController { @Autowired private BookService bookService; @Autowired private 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; } }
借書控制層:
@Controller public class LendController { @Autowired private LendService lendService; @Autowired private BookService bookService; @RequestMapping("/deletebook.html") public String deleteBook(HttpServletRequest request, RedirectAttributes redirectAttributes) { long bookId = Long.parseLong(request.getParameter("bookId")); if (bookService.deleteBook(bookId)) { redirectAttributes.addFlashAttribute("succ", "圖書刪除成功!"); } else { redirectAttributes.addFlashAttribute("error", "圖書刪除失敗!"); } return "redirect:/admin_books.html"; } @RequestMapping("/lendlist.html") public ModelAndView lendList(HttpServletRequest request) { ModelAndView modelAndView = new ModelAndView("admin_lend_list"); modelAndView.addObject("list", lendService.lendList()); return modelAndView; } @RequestMapping("/mylend.html") public ModelAndView myLend(HttpServletRequest request) { ReaderCard readerCard = (ReaderCard) request.getSession().getAttribute("readercard"); ModelAndView modelAndView = new ModelAndView("reader_lend_list"); modelAndView.addObject("list", lendService.myLendList(readerCard.getReaderId())); return modelAndView; } @RequestMapping("/deletelend.html") public String deleteLend(HttpServletRequest request, RedirectAttributes redirectAttributes) { long serNum = Long.parseLong(request.getParameter("serNum")); if (lendService.deleteLend(serNum) > 0) { redirectAttributes.addFlashAttribute("succ", "記錄刪除成功!"); } else { redirectAttributes.addFlashAttribute("error", "記錄刪除失敗!"); } return "redirect:/lendlist.html"; } @RequestMapping("/lendbook.html") public String bookLend(HttpServletRequest request, RedirectAttributes redirectAttributes) { long bookId = Long.parseLong(request.getParameter("bookId")); long readerId = ((ReaderCard) request.getSession().getAttribute("readercard")).getReaderId(); if (lendService.lendBook(bookId, readerId)) { redirectAttributes.addFlashAttribute("succ", "圖書借閱成功!"); } else { redirectAttributes.addFlashAttribute("succ", "圖書借閱成功!"); } return "redirect:/reader_books.html"; } @RequestMapping("/returnbook.html") public String bookReturn(HttpServletRequest request, RedirectAttributes redirectAttributes) { long bookId = Long.parseLong(request.getParameter("bookId")); long readerId = ((ReaderCard) request.getSession().getAttribute("readercard")).getReaderId(); if (lendService.returnBook(bookId, readerId)) { redirectAttributes.addFlashAttribute("succ", "圖書歸還成功!"); } else { redirectAttributes.addFlashAttribute("error", "圖書歸還失敗!"); } return "redirect:/reader_books.html"; } }
以上就是Java 實戰圖書管理系統的實現流程的詳細內容,更多關於Java 圖書管理系統的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Java 實戰項目錘煉之網上圖書館管理系統的實現流程
- springboot 如何重定向redirect 並隱藏參數
- 詳細聊聊Spring MVC重定向與轉發
- springboot如何重定向攜帶數據 RedirectAttributes
- SpringMVC 重定向參數RedirectAttributes實例