基于javaweb+mysql的ssm+maven图书馆图书管理系统(java+ssm+jsp+js+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM+Maven图书馆图书管理系统(java+ssm+jsp+js+mysql)
项目介绍
读者角色包含以下功能: 读者登录,图书查询,借阅图书,借阅管理,修改密码,借阅记录等功能。
管理员角色包含以下功能: 管理员登录,图书管理,图书类别管理,读者列表等功能。
环境需要
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 5.7版本;
技术栈
- 后端:Spring+SpringMVC+Mybatis 2. 前端:HTML+CSS+JavaScript+jsp
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/ 登录
//获取类别
List<Category> categoryList = bookService.listCategory();
session.setAttribute(Const.CATEGORY,categoryList);
return "index";
}
//显示全部图书
@RequestMapping(value = "/listBook")
@ResponseBody
public String listBook(@RequestParam(value = "page", defaultValue = "1") Integer pageno,
@RequestParam(value = "limit", defaultValue = "5") Integer pagesize,
String bname,String author,String cid,HttpSession session
) {
Map<String,Object> paramMap = new HashMap();
paramMap.put("pageno",pageno);
paramMap.put("pagesize",pagesize);
//判断是否为空
if(StringUtil.isNotEmpty(bname)) paramMap.put("bname",bname);
if(StringUtil.isNotEmpty(author)) paramMap.put("author",author);
if(StringUtil.isNotEmpty(cid)) paramMap.put("cid",Integer.parseInt(cid));
PageBean<Book> pageBean = bookService.queryBookPage(paramMap);
//获取类别
List<Category> categoryList = bookService.listCategory();
session.setAttribute(Const.CATEGORY,categoryList);
// 转化为json
//List<Book> list = bookService.listAllBook(pageBean);
//PageBean pb=bookService.getPb();
// 讲json发送给浏览器
// list转成json
JSONObject obj = new JSONObject();
// Layui table 组件要求返回的格式
obj.put("code", 0);
obj.put("msg", "");
obj.put("count",pageBean.getTotalsize());
obj.put("data", pageBean.getDatas());
return obj.toString();
}
//添加图书页面
@RequestMapping("/addBook")
public String addbook() {
return "book/addBook";
}
//添加图书
@RequestMapping("/submitAddBook")
@Controller
@RequestMapping("/reader")
public class ReaderController {
@Autowired
private ReaderService readerService;
//跳转读者列表界面
@RequestMapping("/readerIndex")
public String readerIndex(){
return "readerIndex";
}
//读者列表异步请求
@RequestMapping("/listReader")
@ResponseBody
public String listCategory(@RequestParam(value = "page", defaultValue = "1") Integer pageno,
@RequestParam(value = "limit", defaultValue = "5") Integer pagesize,
String reader_id,String name) {
Map<String,Object> paramMap = new HashMap();
paramMap.put("pageno",pageno);
paramMap.put("pagesize",pagesize);
//判断是否为空
if(StringUtil.isNotEmpty(reader_id)) paramMap.put("reader_id",Integer.parseInt(reader_id));
if(StringUtil.isNotEmpty(name)) paramMap.put("name",name);
PageBean<Reader> pageBean = readerService.listReader(paramMap);
JSONObject obj = new JSONObject();
obj.put("code", 0);
obj.put("msg", "");
obj.put("count",pageBean.getTotalsize());
obj.put("data", pageBean.getDatas());
return obj.toString();
}
//添加页面跳转
@RequestMapping("/addReader")
public String addreader() {
return "/reader/addReader";
}
}
}
@Controller
@RequestMapping("/type")
public class TypeController {
@Autowired
private TypeService typeService;
//跳转到图书分类界面
@RequestMapping("/bookType")
public String bookType() {
return "/book/bookType";
}
//图书分类异步请求
@RequestMapping("/bookTypeList")
@ResponseBody
public String listCategory() {
ArrayList<Category> categorylist= typeService.listCategory();
JSONObject obj = new JSONObject();
obj.put("code", 0);
obj.put("msg", "");
obj.put("count",categorylist.size());
obj.put("count",categorylist.size());
obj.put("data", categorylist);
return obj.toString();
}
//修改图书类别
@RequestMapping("/editBookType")
@ResponseBody
public AjaxResult editBookType(Category category) {
AjaxResult ajaxResult = new AjaxResult();
try{
typeService.updateBookType(category);
ajaxResult.setSuccess(true);
ajaxResult.setMessage("修改成功");
}catch (Exception e){
e.printStackTrace();
ajaxResult.setSuccess(false);
ajaxResult.setMessage("修改失败");
}
return ajaxResult;
}
//删除图书类别
@RequestMapping("/delBookType")
@ResponseBody
public AjaxResult delBookType(Integer cid) {
AjaxResult ajaxResult = new AjaxResult();
try{
typeService.delBookType(cid);
ajaxResult.setSuccess(true);
}catch (Exception e){
e.printStackTrace();
ajaxResult.setSuccess(false);
ajaxResult.setMessage("删除失败");
}
return ajaxResult;
}
//添加加图书类别
@Controller
@RequestMapping("/library")
public class libraryController {
@Autowired
private BookService bookService;
@Autowired
private LendInfoSerivce lendInfoSerivce;
@RequestMapping("/index")
public String index(HttpSession session){
//获取类别
List<Category> categoryList = bookService.listCategory();
session.setAttribute(Const.CATEGORY,categoryList);
return "index";
}
//显示全部图书
@RequestMapping(value = "/listBook")
@ResponseBody
public String listBook(@RequestParam(value = "page", defaultValue = "1") Integer pageno,
@RequestParam(value = "limit", defaultValue = "5") Integer pagesize,
String bname,String author,String cid,HttpSession session
) {
Map<String,Object> paramMap = new HashMap();
paramMap.put("pageno",pageno);
paramMap.put("pagesize",pagesize);
//判断是否为空
if(StringUtil.isNotEmpty(bname)) paramMap.put("bname",bname);
if(StringUtil.isNotEmpty(author)) paramMap.put("author",author);
ajaxResult.setMessage("添加成功");
}catch (Exception e){
e.printStackTrace();
ajaxResult.setSuccess(false);
ajaxResult.setMessage("添加失败");
}
return ajaxResult;
}
//跳转读者借阅界面readerIndex.jsp
@RequestMapping("/frontIndex")
public String frontIndex() {
return "frontIndex";
}
@SuppressWarnings("unlikely-arg-type")
@RequestMapping("/lendBook")
@ResponseBody
public AjaxResult borrowBook(Integer book_id,HttpSession session) {
AjaxResult ajaxResult = new AjaxResult();
Reader reader = (Reader)session.getAttribute(Const.READER);
//判断库存是否足够
Book book = bookService.selectById(book_id);
if (book.getStock()==0){
ajaxResult.setStatus("2");
return ajaxResult;
}
//判断该读者是否已经借过该图书
LendInfo lendInfo = new LendInfo();
lendInfo.setBook_id(book_id);
lendInfo.setReader_id(reader.getReader_id());
if (lendInfoSerivce.isLended(lendInfo)){
ajaxResult.setStatus("0");
return ajaxResult;
}
//判断是否达到借书上限
Integer cardState = lendInfoSerivce.cardState(reader.getReader_id());
if (cardState.equals(reader.getCard_state())){
ajaxResult.setStatus("3");
return ajaxResult;
}
lendInfoSerivce.lendBook(lendInfo);
ajaxResult.setStatus("1");
return ajaxResult;
}
//跳转读者借阅记录页面
@RequestMapping("/listDisBack")
public String listDisBack() {
return "listDisBack";
}
@RequestMapping("/listDisBackBook")
@ResponseBody
public String listDisBackBook(@RequestParam(value = "page", defaultValue = "1") Integer pageno,
@RequestParam(value = "limit", defaultValue = "5") Integer pagesize,
@RequestParam(value = "power",defaultValue = "0") Integer power,
String rname,String bname,String state){
Map<String,Object> paramMap = new HashMap();
paramMap.put("pageno",pageno);
paramMap.put("pagesize",pagesize);
if(StringUtil.isNotEmpty(bname)) paramMap.put("bname",bname);
if(StringUtil.isNotEmpty(rname)) paramMap.put("rname",rname);
if(StringUtil.isNotEmpty(state)) paramMap.put("state",state);
//为0说明是读者,1说明是管理员点击未还图书
if (power.equals(0)){
//读者号
//pageBean.setAdminId(admin.getAdminId());
//读者姓名
//pageBean.setRname(admin.getName());
}
PageBean<LendInfo> pageBean = lendInfoSerivce.queryLeadInfoPage(paramMap);
JSONObject obj = new JSONObject();
// Layui table 组件要求返回的格式
obj.put("code", 0);
obj.put("msg", "");
obj.put("count",pageBean.getTotalsize());
obj.put("data", pageBean.getDatas());
return obj.toString();
}
//管理员归还图书
@RequestMapping(value = "/backBook")
@ResponseBody
public AjaxResult backBook(@RequestParam(value = "reader_id" , defaultValue = "1") Integer reader_id,
@RequestParam(value = "book_id" , defaultValue = "1") Integer book_id) {
AjaxResult ajaxResult = new AjaxResult();
Map<String, Object> ret = new HashMap<String, Object>();
ret.put("reader_id",reader_id);
ret.put("book_id",book_id);
try{
lendInfoSerivce.backBook(ret);
ajaxResult.setSuccess(true);
ajaxResult.setMessage("已归还");
}catch (Exception e){
e.printStackTrace();
ajaxResult.setSuccess(false);
ajaxResult.setMessage("归还失败");
Integer cardState = lendInfoSerivce.cardState(reader.getReader_id());
if (cardState.equals(reader.getCard_state())){
ajaxResult.setStatus("3");
return ajaxResult;
}
lendInfoSerivce.lendBook(lendInfo);
ajaxResult.setStatus("1");
return ajaxResult;
}
}
@Controller
@RequestMapping("/reader")
public class ReaderController {
@Autowired
private ReaderService readerService;
//跳转读者列表界面
@RequestMapping("/readerIndex")
public String readerIndex(){
return "readerIndex";
}
//读者列表异步请求
@RequestMapping("/listReader")
@ResponseBody
public String listCategory(@RequestParam(value = "page", defaultValue = "1") Integer pageno,
@RequestParam(value = "limit", defaultValue = "5") Integer pagesize,
String reader_id,String name) {
Map<String,Object> paramMap = new HashMap();
paramMap.put("pageno",pageno);
paramMap.put("pagesize",pagesize);
return "listDisBack";
}
@RequestMapping("/listDisBackBook")
@ResponseBody
public String listDisBackBook(@RequestParam(value = "page", defaultValue = "1") Integer pageno,
@RequestParam(value = "limit", defaultValue = "5") Integer pagesize,
@RequestParam(value = "power",defaultValue = "0") Integer power,
String rname,String bname,String state){
Map<String,Object> paramMap = new HashMap();
paramMap.put("pageno",pageno);
paramMap.put("pagesize",pagesize);
if(StringUtil.isNotEmpty(bname)) paramMap.put("bname",bname);
if(StringUtil.isNotEmpty(rname)) paramMap.put("rname",rname);
if(StringUtil.isNotEmpty(state)) paramMap.put("state",state);
//为0说明是读者,1说明是管理员点击未还图书
if (power.equals(0)){
//读者号
//pageBean.setAdminId(admin.getAdminId());
//读者姓名
//pageBean.setRname(admin.getName());
}
PageBean<LendInfo> pageBean = lendInfoSerivce.queryLeadInfoPage(paramMap);
JSONObject obj = new JSONObject();
// Layui table 组件要求返回的格式
obj.put("code", 0);
obj.put("msg", "");
obj.put("count",pageBean.getTotalsize());
obj.put("data", pageBean.getDatas());
return obj.toString();
}
//管理员归还图书
@RequestMapping(value = "/backBook")
@ResponseBody
public AjaxResult backBook(@RequestParam(value = "reader_id" , defaultValue = "1") Integer reader_id,
@RequestParam(value = "book_id" , defaultValue = "1") Integer book_id) {
AjaxResult ajaxResult = new AjaxResult();
Map<String, Object> ret = new HashMap<String, Object>();
ret.put("reader_id",reader_id);
ret.put("book_id",book_id);
}
}catch (Exception e){
e.printStackTrace();
ajaxResult.setStatus("3");
ajaxResult.setMessage("服务器异常,请改天登录");
}
return ajaxResult;
}
//推出
@RequestMapping("/loginout")
public String loginout(HttpSession session){
session.invalidate();
return "login";
}
//跳转借阅管理页面
@RequestMapping("/listDisBackAdmin")
public String listDisBackAdmin() {
return "listDisBackAdmin";
}
//跳转读者借阅记录页面
@RequestMapping("/listDisBack")
public String listDisBack() {
return "listDisBack";
}
@RequestMapping("/listDisBackBook")
@ResponseBody
public String listDisBackBook(@RequestParam(value = "page", defaultValue = "1") Integer pageno,
@RequestParam(value = "limit", defaultValue = "5") Integer pagesize,
@RequestParam(value = "power",defaultValue = "0") Integer power,
String rname,String bname,String state){
Map<String,Object> paramMap = new HashMap();
paramMap.put("pageno",pageno);
paramMap.put("pagesize",pagesize);
if(StringUtil.isNotEmpty(bname)) paramMap.put("bname",bname);
//跳转读者借阅记录页面
@RequestMapping("/listDisBack")
public String listDisBack() {
return "listDisBack";
}
@RequestMapping("/listDisBackBook")
@ResponseBody
public String listDisBackBook(@RequestParam(value = "page", defaultValue = "1") Integer pageno,
@RequestParam(value = "limit", defaultValue = "5") Integer pagesize,
@RequestParam(value = "power",defaultValue = "0") Integer power,
String rname,String bname,String state){
Map<String,Object> paramMap = new HashMap();
paramMap.put("pageno",pageno);
paramMap.put("pagesize",pagesize);
if(StringUtil.isNotEmpty(bname)) paramMap.put("bname",bname);
if(StringUtil.isNotEmpty(rname)) paramMap.put("rname",rname);
if(StringUtil.isNotEmpty(state)) paramMap.put("state",state);
//为0说明是读者,1说明是管理员点击未还图书
if (power.equals(0)){
//读者号
//pageBean.setAdminId(admin.getAdminId());
//读者姓名
//pageBean.setRname(admin.getName());
}
PageBean<LendInfo> pageBean = lendInfoSerivce.queryLeadInfoPage(paramMap);
JSONObject obj = new JSONObject();
// Layui table 组件要求返回的格式
obj.put("code", 0);
obj.put("msg", "");
obj.put("count",pageBean.getTotalsize());
obj.put("data", pageBean.getDatas());
return obj.toString();
}
//管理员归还图书
@RequestMapping(value = "/backBook")
@ResponseBody
public AjaxResult backBook(@RequestParam(value = "reader_id" , defaultValue = "1") Integer reader_id,
@RequestParam(value = "book_id" , defaultValue = "1") Integer book_id) {
AjaxResult ajaxResult = new AjaxResult();
Map<String, Object> ret = new HashMap<String, Object>();
ret.put("reader_id",reader_id);
ret.put("book_id",book_id);
try{
lendInfoSerivce.backBook(ret);
ajaxResult.setSuccess(true);
public AjaxResult checkPwd(String password,String state,HttpSession session){
AjaxResult ajaxResult = new AjaxResult();
if (state.equals("0")){
Admin admin = (Admin)session.getAttribute(Const.ADMIN);
if(admin.getPassword().equals(password)){
ajaxResult.setSuccess(true);
}else{
ajaxResult.setSuccess(false);
ajaxResult.setMessage("原密码错误");
}
}else{
Reader reader = (Reader)session.getAttribute(Const.READER);
if(reader.getPassword().equals(password)){
ajaxResult.setSuccess(true);
}else{
ajaxResult.setSuccess(false);
ajaxResult.setMessage("原密码错误");
}
}
return ajaxResult;
}
//修改密码
@RequestMapping("/alterpwd")
@ResponseBody
public AjaxResult alterpwd(String password,String state,HttpSession session){
AjaxResult ajaxResult = new AjaxResult();
try{
if(state.equals("0")){
Admin admin = (Admin)session.getAttribute(Const.ADMIN);
admin.setPassword(password);
adminService.alterpwd(admin);
}else{
Reader reader = (Reader)session.getAttribute(Const.READER);
reader.setPassword(password);
readerService.alterpwd(reader);
}
ajaxResult.setSuccess(true);
ajaxResult.setMessage("更改密码成功");
}catch(Exception e){
e.printStackTrace();
ajaxResult.setSuccess(false);
ajaxResult.setMessage("更改密码失败");
return "listDisBack";
}
@RequestMapping("/listDisBackBook")
@ResponseBody
public String listDisBackBook(@RequestParam(value = "page", defaultValue = "1") Integer pageno,
@RequestParam(value = "limit", defaultValue = "5") Integer pagesize,
@RequestParam(value = "power",defaultValue = "0") Integer power,
String rname,String bname,String state){
Map<String,Object> paramMap = new HashMap();
paramMap.put("pageno",pageno);
paramMap.put("pagesize",pagesize);
if(StringUtil.isNotEmpty(bname)) paramMap.put("bname",bname);
if(StringUtil.isNotEmpty(rname)) paramMap.put("rname",rname);
if(StringUtil.isNotEmpty(state)) paramMap.put("state",state);
//为0说明是读者,1说明是管理员点击未还图书
if (power.equals(0)){
//读者号
//pageBean.setAdminId(admin.getAdminId());
//读者姓名
//pageBean.setRname(admin.getName());
}
PageBean<LendInfo> pageBean = lendInfoSerivce.queryLeadInfoPage(paramMap);
JSONObject obj = new JSONObject();
// Layui table 组件要求返回的格式
obj.put("code", 0);
obj.put("msg", "");
obj.put("count",pageBean.getTotalsize());
obj.put("data", pageBean.getDatas());
return obj.toString();
}
//管理员归还图书
@RequestMapping(value = "/backBook")
@ResponseBody
public AjaxResult backBook(@RequestParam(value = "reader_id" , defaultValue = "1") Integer reader_id,
@RequestParam(value = "book_id" , defaultValue = "1") Integer book_id) {
AjaxResult ajaxResult = new AjaxResult();
Map<String, Object> ret = new HashMap<String, Object>();
ret.put("reader_id",reader_id);
ret.put("book_id",book_id);
try{
lendInfoSerivce.backBook(ret);
ajaxResult.setSuccess(true);
ajaxResult.setMessage("已归还");
}catch (Exception e){
e.printStackTrace();
ajaxResult.setSuccess(false);
ajaxResult.setMessage("归还失败");
}
return ajaxResult;
@Controller
@RequestMapping("/type")
public class TypeController {
@Autowired
private TypeService typeService;
//跳转到图书分类界面
@RequestMapping("/bookType")
public String bookType() {
return "/book/bookType";
}
//图书分类异步请求
@RequestMapping("/bookTypeList")
@ResponseBody
public String listCategory() {
ArrayList<Category> categorylist= typeService.listCategory();
JSONObject obj = new JSONObject();
obj.put("code", 0);
obj.put("msg", "");
obj.put("count",categorylist.size());
obj.put("data", categorylist);
return obj.toString();
}
//修改图书类别
@RequestMapping("/editBookType")
@ResponseBody
public AjaxResult editBookType(Category category) {
AjaxResult ajaxResult = new AjaxResult();
try{
@RequestMapping("/checkPwd")
@ResponseBody
public AjaxResult checkPwd(String password,String state,HttpSession session){
AjaxResult ajaxResult = new AjaxResult();
if (state.equals("0")){
Admin admin = (Admin)session.getAttribute(Const.ADMIN);
if(admin.getPassword().equals(password)){
ajaxResult.setSuccess(true);
}else{
ajaxResult.setSuccess(false);
ajaxResult.setMessage("原密码错误");
}
}else{
Reader reader = (Reader)session.getAttribute(Const.READER);
if(reader.getPassword().equals(password)){
ajaxResult.setSuccess(true);
}else{
ajaxResult.setSuccess(false);
ajaxResult.setMessage("原密码错误");
}
}
return ajaxResult;
}
//修改密码
@RequestMapping("/alterpwd")
@ResponseBody
public AjaxResult alterpwd(String password,String state,HttpSession session){
AjaxResult ajaxResult = new AjaxResult();
try{
if(state.equals("0")){
Admin admin = (Admin)session.getAttribute(Const.ADMIN);
admin.setPassword(password);
adminService.alterpwd(admin);
}else{
Reader reader = (Reader)session.getAttribute(Const.READER);
reader.setPassword(password);
readerService.alterpwd(reader);
}
ajaxResult.setSuccess(true);
ajaxResult.setMessage("更改密码成功");
@SuppressWarnings("unlikely-arg-type")
@RequestMapping("/lendBook")
@ResponseBody
public AjaxResult borrowBook(Integer book_id,HttpSession session) {
AjaxResult ajaxResult = new AjaxResult();
Reader reader = (Reader)session.getAttribute(Const.READER);
//判断库存是否足够
Book book = bookService.selectById(book_id);
if (book.getStock()==0){
ajaxResult.setStatus("2");
return ajaxResult;
}
//判断该读者是否已经借过该图书
LendInfo lendInfo = new LendInfo();
lendInfo.setBook_id(book_id);
lendInfo.setReader_id(reader.getReader_id());
if (lendInfoSerivce.isLended(lendInfo)){
ajaxResult.setStatus("0");
return ajaxResult;
}
//判断是否达到借书上限
Integer cardState = lendInfoSerivce.cardState(reader.getReader_id());
if (cardState.equals(reader.getCard_state())){
ajaxResult.setStatus("3");
return ajaxResult;
}
lendInfoSerivce.lendBook(lendInfo);
ajaxResult.setStatus("1");
return ajaxResult;
}
}
e.printStackTrace();
ajaxResult.setSuccess(false);
ajaxResult.setMessage("更改密码失败");
}
return ajaxResult;
}
}
@Controller
@RequestMapping("/library")
public class libraryController {
@Autowired
private BookService bookService;
@Autowired
private LendInfoSerivce lendInfoSerivce;
@RequestMapping("/index")
public String index(HttpSession session){
//获取类别
List<Category> categoryList = bookService.listCategory();
session.setAttribute(Const.CATEGORY,categoryList);