作者主页:夜未央5788
简介:Java领域优质创作者、Java项目、学习资料、技术互助
文末获取源码
功能介绍
基于ssm的图书馆管理系统.主要功能包括:图书查询、图书管理、图书编辑、读者管理、图书的借阅与归还以及借还日志记录等。
用户分为两类:读者、图书馆管理员。图书馆管理员可以修改读者信息,修改书目信息,查看所有借还日志等;读者仅可以修改个人信息、借阅或归还书籍和查看自己的借还日志。
环境需要
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.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
6.数据库:MySql 5.7版本;
技术栈
1. 后端:Spring SpringMVC MyBatis
2. 前端:JSP+bootstrap+jQuery
使用说明
1. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,下载所需jar包;
2. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
3. 将项目中db.properties配置文件中的数据库配置改为自己的配置
4. 配置tomcat,然后运行项目,输入localhost:8080/ 登录
5. 管理员账户:123456 密码:123456
读者账户:10000 密码:123456
运行截图
相关代码
图书管理控制器
@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");
ArrayList<Lend> lends = lendService.lendList();
ArrayList<LendDate> lendDates = new ArrayList<>();
for (Lend lend : lends) {
LendDate lendDate = new LendDate();
BeanUtils.copyProperties(lend,lendDate);
if (lend.getLendDate()!=null)
lendDate.setLendDateStr(new SimpleDateFormat("yyyy-MM-dd").format(lend.getLendDate()));
if (lend.getBackDate()!=null)
lendDate.setBackDateStr(new SimpleDateFormat("yyyy-MM-dd").format(lend.getBackDate()));
lendDates.add(lendDate);
}
modelAndView.addObject("list", lendDates);
return modelAndView;
}
@RequestMapping("/mylend.html")
public ModelAndView myLend(HttpServletRequest request) {
ReaderCard readerCard = (ReaderCard) request.getSession().getAttribute("readercard");
ModelAndView modelAndView = new ModelAndView("reader_lend_list");
ArrayList<Lend> lends = lendService.myLendList(readerCard.getReaderId());
ArrayList<LendDate> lendDates = new ArrayList<>();
for (Lend lend : lends) {
LendDate lendDate = new LendDate();
BeanUtils.copyProperties(lend,lendDate);
if (lend.getLendDate()!=null)
lendDate.setLendDateStr(new SimpleDateFormat("yyyy-MM-dd").format(lend.getLendDate()));
if (lend.getBackDate()!=null)
lendDate.setBackDateStr(new SimpleDateFormat("yyyy-MM-dd").format(lend.getBackDate()));
lendDates.add(lendDate);
}
modelAndView.addObject("list", lendDates);
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";
}
}
登录管理控制器
@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";
}
}
如果也想学习本系统,下面领取。关注并回复:051ssm