Java项目:图书馆图书管理借阅书籍管理系统(java+SSM+JSP+HTML+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版本;


技术栈

1. 后端:Spring+SpringMVC+Mybatis
2. 前端:HTML+CSS+JavaScript+jsp


使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080/ 登录

 

 

 

 

 

用户图书管理控制层:

/**
 * @description: 前台页面列表显示处理
 */

@Controller
@RequestMapping("/user/ch")
public class UserBookController {
    // 注入
    @Autowired
    private LibraryService libraryService;
    @Autowired
    private LibraryCategoryService libraryCategoryService;
    @Autowired
    private CommentService commentService;

    @Autowired
    private TbOrderMapper orderMapper;
    @Autowired
    private TbRecordMapper recordMapper;

    @Value("${LOGIN_USER}")
    private String LOGIN_USER;  // 当前登录用户的 session 存储 属性名

    @RequestMapping("/user_bookList")
    public String toLibraryListByCid(TbLibraryQuery libraryQuery, PageCount pageCount, Model model, HttpSession session) {
        if (libraryQuery == null || libraryQuery.getCateId() == null) {
            libraryQuery = new TbLibraryQuery();
            libraryQuery.setCateId((Integer) session.getAttribute("currentCategory"));
        }
        // 根据 类目 id
        // 若 当前 类目 为 父类目 则获取 其 下面 的 所有子类目
        // 若 当前 类目 为 子类目 则获取 其 同级 类目
        List<TbCategory> categoryList = libraryCategoryService.getCategoryByCid(libraryQuery.getCateId());

        // 获取当前类目信息
        TbCategory currentCategory = libraryCategoryService.getCategoryById(libraryQuery.getCateId());

        // 按照条件进行查询
        PageCount<TblibraryExt> libraryPageCount = libraryService.findLibraryByAll(libraryQuery, pageCount);
        // model 将数据设置到域中
        model.addAttribute("subCategoryList", categoryList);
        model.addAttribute("libraryPageCount", libraryPageCount);
        // 默认
        if (currentCategory == null) {
            currentCategory = new TbCategory();
            currentCategory.setId(0);
        }
        session.setAttribute("currentCategory", currentCategory.getId());

        return "/user/user_bookList";
    }

    /**
     * 通过 图书 id 查询 图书详细信息
     *
     * @param id
     * @return
     */
    @RequestMapping("/bookId")
    public String toBookInfo(int id, Model model) {
        BookExt bookInfo = libraryService.getBookInfoById(id);
        // 将 时间戳 进行转换
        Long dateSS = bookInfo.getLibrary().getCreatedate();

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

        String formatDate = simpleDateFormat.format(new Date(dateSS * 1000));

        bookInfo.setFormatDate(formatDate);

        // 通过 图书id 获取 回复信息
        List<CommentExt> commentExts = commentService.findCommentByBookId(id);

        // 将 查询的 图书信息 设置到 域 中
        model.addAttribute("bookInfo", bookInfo);
        // 将 回复信息 设置到 域 汇总
        model.addAttribute("commentExts", commentExts);

        return "/user/bookDetail";
    }

    /**
     * 用于 借阅 图书  操作
     *
     * @param session 用于 取 用户信息
     * @param order   用户借阅关联信息
     * @return
     */
    @RequestMapping("/jieyue_book")
    public String jieyueBook(HttpSession session, Model model, String oid, String kkid, TbOrder order) {

        if (null != kkid) {
            TbRecord tbRecord = recordMapper.selectByPrimaryKey(Integer.valueOf(kkid));
            tbRecord.setReturnbook(2); //2代表挂失
            recordMapper.updateByPrimaryKey(tbRecord);
            model.addAttribute("successMsg", "图书挂失成功");
            return "errorMsg";
        }


        if (null != oid) {
            TbRecord tbOrder = recordMapper.selectByPrimaryKey(Integer.valueOf(oid));
            // 插入数据
            tbOrder.setBackdate(tbOrder.getBackdate() + 3 * 30 * 24 * 60 * 60);
            recordMapper.updateByPrimaryKey(tbOrder);
            model.addAttribute("successMsg", "续借三个月成功");
            return "errorMsg";
        }
        // 获取 session 中的用户信息
        ActiveUser activeUser = (ActiveUser) session.getAttribute("activeUser");
        TbUser tbUser = new TbUser();
        tbUser.setId(activeUser.getUserid());
        order.setUserId(tbUser.getId());

        // 插入数据
        libraryService.jieyueBookById(order);

        return "redirect:/user/ch/bookId.action?id=" + order.getBookId();
    }


    @RequestMapping("/commitInfo")
    @ResponseBody
    public String commitComment(HttpSession session, TbComment comment) {
        // 获取 session 中的用户信息
        ActiveUser activeUser = (ActiveUser) session.getAttribute("activeUser");
        TbUser tbUser = new TbUser();
        tbUser.setId(activeUser.getUserid());

        comment.setUserId(tbUser.getId());
        libraryService.addCommentInfo(comment);

        return "ok";
    }
}

登录注册管理控制层:

/**

 * @desc 登录注册Controller
 **/
@Controller
@RequestMapping("/login")
public class Login_LoginController {
    @Autowired
    private Login_loginValidation login_loginValidation;

    @RequestMapping("/login")
    public String login(Model model, HttpSession session, String user, String pwd, String passwd2, String tel, String authcode, String statu) throws Exception {
        //提示信息
        String msg;
        //跳转页面
        String url;
        //登录
        ActiveUser activeUser = new ActiveUser();
        TbUser tbUser = new TbUser();
        if ("1".equals(statu)) {
            activeUser = this.login_loginValidation.authenticat(user, pwd);
            if (activeUser == null) {
                msg = "用户名或密码错误!";
                url = "/login.action";
                model.addAttribute("msg", msg);
                model.addAttribute("url", url);
                return "user/error";
            }
            session.setAttribute("activeUser", activeUser);
            return "redirect:/user/userSystem.action";
        } else if ("2".equals(statu)) { //注册
            //获取生成的验证码
            String validateCode = (String) session.getAttribute("randomCode");
            //判断用户名或密码是否为空
            if ("".equals(user) || user == null || "".equals(pwd) || pwd == null) {
                msg = "用户名或密码不能为空!";
                url = "/login.action";
                model.addAttribute("msg", msg);
                model.addAttribute("url", url);
            }
            //判断两次密码是否不一致
            if (!pwd.equals(passwd2)) {
                msg = "您输入的两次密码不一致!";
                url = "/login.action";
                model.addAttribute("msg", msg);
                model.addAttribute("url", url);
            }
            //判断手机号是否为空
            if (!"".equals(tel) || tel == null) {
                msg = "手机号不能为空!";
                url = "/login.action";
                model.addAttribute("msg", msg);
                model.addAttribute("url", url);
            }
            //判断验证码是否错误
            if (!validateCode.equals(authcode)) {
                msg = "您输入的验证码错误!";
                url = "/login.action";
                model.addAttribute("msg", msg);
                model.addAttribute("url", url);
                return "user/error";
            }
            //如果都正确,注册用户
            tbUser.setUsername(user);
            tbUser.setPassword(pwd);
            tbUser.setTelnum(tel);
            long nowTime = System.currentTimeMillis() / 1000;
            tbUser.setRegisterdate(nowTime);

            int result = this.login_loginValidation.addUser(tbUser);
            //判断是否注册成功
            if (0 == result) {
                msg = "注册失败,用户名已存在!";
                url = "/login.action";
                model.addAttribute("msg", msg);
                model.addAttribute("url", url);
                return "user/error";
            }
            //注册成功,将用户名放入seesion中
            tbUser = this.login_loginValidation.findUserByUserName(user);
            activeUser.setUserid(tbUser.getId());
            activeUser.setUsername(tbUser.getUsername());
            activeUser.setHeadImg(tbUser.getHeadimg());
            session.setAttribute("activeUser", activeUser);
            msg = "注册成功!正在为您登录,请稍候...";
            url = "/user/userSystem.action";
            model.addAttribute("msg", msg);
            model.addAttribute("url", url);
            return "user/error";
        } else {
            msg = "参数错误!";
            url = "/login.action";
            model.addAttribute("msg", msg);
            model.addAttribute("url", url);
            return "user/error";
        }
    }

    //账号退出登录
    @RequestMapping("/logout")
    public String logout(HttpSession session) throws Exception {
        session.invalidate();
        return "redirect:/login.action";
    }

    //    管理员登录
    @RequestMapping("/adminlogin")
    public String adminlogin(Model model, HttpSession session, String adminuser, String adminpassword) throws Exception {
        String msg;
        String url;

        //判断用户名为空
        if ("".equals(adminuser) || adminuser == null || "".equals(adminpassword) || adminpassword == null) {
            msg = "用户名或密码不能为空!";
            url = "/admin.action";
            model.addAttribute("msg", msg);
            model.addAttribute("url", url);
            return "user/error";
        }
        ActiveAdmin activeAdmin = this.login_loginValidation.authenticatAdmin(adminuser, adminpassword);
        if (activeAdmin == null) {
            msg = "用户名或密码错误!";
            url = "/admin.action";
            model.addAttribute("msg", msg);
            model.addAttribute("url", url);
            return "user/error";
        }
        session.setAttribute("activeAdmin", activeAdmin);
        return "redirect:/admin/admin.action";
    }
}

图书类别管理控制层:

/**
 * @description: 图书类别处理
 */
@Controller
@RequestMapping("/admin/ch/category")
public class CategoryController {
    //注入
    @Autowired
    private LibraryCategoryService libraryCategoryService;

    /**
     * 添加 图书类目
     *
     * @param category 图书类目信息
     * @param session  添加人
     * @return url
     * @author hiseico
     */
    @RequestMapping(value = "/addCategory", method = RequestMethod.POST)
    public String addCategory(TbCategory category, HttpSession session, Model model) {
        List<TbCategory> categoryList = libraryCategoryService.getCategoryAll();
        boolean is = false;
        for (TbCategory tbCategory : categoryList) {
            if (category.getCatname().equals(tbCategory.getCatname())) {
                is = true;
                break;
            }
        }
        if (!is) {
            // 添加 数据到 数据库,并 修改 父类目
            libraryCategoryService.addBookCategory(category, session);
        } else {
            model.addAttribute("errorMsg", "类目已经存在");
            return "errorMsg";
        }
        return "redirect:/admin/ch/loan_BookClassify.action";
    }

    /**
     * 删除类目信息
     *
     * @param id
     * @return
     */
    @RequestMapping(value = "/delCategory", method = RequestMethod.GET)
    public String delCategory(int id) {

        // 通过 类目id 删除数据
        libraryCategoryService.delBookCategoryById(id);

        return "redirect:/admin/ch/loan_BookClassify.action";
    }

    /**
     * 修改 类目关系
     *
     * @param category
     * @return
     */
    @RequestMapping(value = "/updateCategory", method = RequestMethod.POST)
    public String updateCategory(TbCategory category) {

        return "redirect:/admin/ch/loan_BookClassify.action";
    }

    @RequestMapping("/toUpdatePage")
    @ResponseBody
    public TbCategory toUpdatePage(int id) {
        return libraryCategoryService.getCategoryById(id);
    }
}

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

猜你喜欢

转载自blog.csdn.net/m0_66863468/article/details/125109671