【JAVA项目实战】【图书管理系统】借阅管理功能【Servlet】+【Ajax】+【MySql】+【Session】

个人主页:欢迎访问Ali.s的首页

⏰ 最近更新:2022年10月23日

⛽ Java框架学习系列:【Spring】【SpringMVC】【Mybatis】

Java项目实战系列:【飞机大战】【图书管理系统】

Java算法21天系列:【查找】【排序】【递归】

⛳ Java基础学习系列:【继承】【封装】【多态】

通信仿真学习系列:【硬件】【通信】【MATLAB】

个人简介:通信工程本硕、Java程序员。目前只会CURD

点赞 收藏 留言 都是我最大的动力

在这里插入图片描述

文章目录

  • 前言
  • 一、需求分析
  • 二、功能实现
    • 1.借书卡管理
    • 2.生成借书卡
    • 3.我的借书卡
    • 4.借阅与归还
  • 三、功能测试
  • 总结


前言

这里是【JAVASE】项目实战的第八节课,前面完成了学生管理、书籍管理、院系管理、登录登出等功能,今天做的是最后的一个模块借阅管理功能,使用【Servlet】【AJax】【MySql】【Session】来实现借阅卡管理和借阅图书的功能。基本功能模块就介绍到这里,整体项目的源码可以私信找我获取。

欢迎访问Ali.s的首页


一、需求分析

与前面的前面的其他模块的功能不太一样,这里需要制作独一无二的借阅卡,与每个学生信息对应,然后通过借阅卡去查询、借阅、归还图书。不仅需要进行联合查询,而且对数据的传递要求较高,需要对【Ajax】技术掌握较好。

二、功能实现

1.借书卡管理

管理员通过给不同的学生生成对应放入借书卡,同时学生可以看到自己的借书卡和对应的状态,凭借自己的借书卡去借阅图书。

public class ReaderCard implements Serializable {
    private static final long serialVersionUID = 598227642102145185L;
    /**
    * 借书卡id
    */
    private Integer id;
    /**
    * 学生编号
    */
    private String stuId;
    /**
    * 学生姓名-冗余字段
    */
    private String stuName;
    /**
    * 借书卡密码
    */
    private String password;
    /**
    * 借书卡状态 0 未使用  1 已使用
    */
    private Integer state;
    /**
    * 是否被删除 0 删除 1未删除
    */
    private Integer isDeleted;


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getStuId() {
        return stuId;
    }

    public void setStuId(String stuId) {
        this.stuId = stuId;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getState() {
        return state;
    }

    public void setState(Integer state) {
        this.state = state;
    }

    public Integer getIsDeleted() {
        return isDeleted;
    }

    public void setIsDeleted(Integer isDeleted) {
        this.isDeleted = isDeleted;
    }

}

2.生成借书卡

后端开发一般从dao层开始写,然后在业务逻辑成实现业务逻辑,接着使用控制器对页面进行处理和跳转,这里使用UUID生成唯一与学生对应的密文形式的借书卡。

private void save(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        try {
            ReaderCard readerCard = RequestParameterUntil.getRequestParameterForReflect(req, ReaderCard.class);
            Student student = studentService.queryStudentById(Integer.parseInt(readerCard.getStuId()));
            readerCard.setStuName(student.getStuName());
            //生成卡密
            String password = UUID.randomUUID().toString();
            readerCard.setPassword(password)
            ;
            readerCardService.save(readerCard);
            resp.sendRedirect("/readerCardServlet?sqltype=query");
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }

3.我的借书卡

管理员在管理页面可以看到所有的借书卡信息,而学生在管理页面只能看到自己的借书卡信息,使用学生的唯一字段与信息卡做绑定,就可以使每个学生都有自己唯一的借书卡。

 private void querylist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        List<ReaderCard>list=null;
        User user = (User) req.getSession().getAttribute(Constant.SESSION_LONGIN);
        if (!"admin".equals(user.getUserName())){
            //如果不是管理员,就只查询当前自己的卡信息
            String phone=user.getPhoneNum();
            Student stu=studentService.queryByPhone(phone);
            //判断是否已有借书卡
            if (stu!=null){
                list=readerCardService.queryByStuId(stu.getId());
            }
        }else{
            //查询所有的借书卡信息
            list=readerCardService.list(null);
        }

        //进行参数绑定
        req.setAttribute("list",list);
        //进行页面跳转
        req.getRequestDispatcher("/card/card.jsp").forward(req, resp);
    }

4.借阅与归还

使用借书卡对不同的书进行借阅和归还操作,不仅要记录借阅记录,这里需要同时更新书籍信息和借书卡信息,

    @Override
    public Integer borrowLendList(LendList lendList) {
        //更新借书卡的状态
        ReaderCard readerCard=readerCardService.queryById(Integer.parseInt(lendList.getCardId()));
        readerCard.setState(1);
        readerCardService.update(readerCard);
        //更新书籍的状态
        Book book=bookService.queryBookById(lendList.getBookId());
        book.setState(BookFlag.BORROW.code);
        bookService.updateBook(book);
        return listDao.borrowLendList(lendList);
    }

    @Override
    public Integer backLendList(LendList lendList) {
        //更新借书卡的状态
        ReaderCard readerCard=readerCardService.queryById(Integer.parseInt(lendList.getCardId()));
        readerCard.setState(0);
        readerCardService.update(readerCard);
        //更新书籍的状态
        Book book=bookService.queryBookById(lendList.getBookId());
        book.setState(BookFlag.FREE.code);
        bookService.updateBook(book);
        return listDao.backLendList(lendList);
    }

三、功能测试

启动服务器,让项目在服务器中运行,在借书卡管理页面使用【百里守约】学生的借阅卡,借阅【Java程序设计】书籍。
【JAVA项目实战】【图书管理系统】借阅管理功能【Servlet】+【Ajax】+【MySql】+【Session】_第1张图片

查看书籍的借阅状态,发现借阅的书籍状态为【借阅中】
在这里插入图片描述
归还操作与借阅的操作类似,可以完成书籍的归还,此时借阅卡也更新状态。
【JAVA项目实战】【图书管理系统】借阅管理功能【Servlet】+【Ajax】+【MySql】+【Session】_第2张图片

在这里插入图片描述

总结

以上就是今天要讲的内容,使用【Servlet】【AJax】【MySql】【Session】来实现借阅管理功能,整个项目到此就介绍完毕,对每个模块进行了详细分析与实现,对自己的基本知识进一步巩固,后面会继续写【SSM】项目。

你可能感兴趣的:(Java后端,#,Java阶段二项目,java,servlet,ajax,java-ee,intellij,idea)