【JavaWeb作品】图书管理系统的实现教程

作品需要的知识

  • Java
  • MySql
  • JDBC
  • Servlet相关
  • HTTP相关
  • jsp

实现的功能(主要)

  • 管理员和用户的区分
  • 注册,登录,退出功能
  • 用户的借书,还书,查找,修改密码
  • 管理员对书籍信息的操作,对用户信息操作
  • 支持模糊查询、多条件查询、包含有多表连接操作
  • 支持逻辑删除和物理删除
  • 密码加密存储
  • 借书数量和时间的限制

具体功能实现的代码

登录验证身份:

    /**
     * 登录
     * */
    private void doLogin(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String email = request.getParameter("email");
        String password = Md5Util.encrypt(request.getParameter("password"));
        boolean flag = LoginService.loginServ(email, password);
        if (flag) {
            //获取session对象,如果是第一次登录没有session,创建一个session
            HttpSession session = request.getSession();
            session.setAttribute("email", email);
            String userType = LoginService.queryUserType(email);
            session.setAttribute("usertype", userType);
            session.setMaxInactiveInterval(60 * 60);
            if ("管理员".equals(userType)) {
                response.sendRedirect(request.getContextPath() + "/admin/list/books");
            } else {
                response.sendRedirect(request.getContextPath() + "/customer/books/list");
            }
        } else {
            doExit(request, response);
        }
    }
    /**
     * 退出登录
     * */
    private void doExit(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.getSession().invalidate();
        response.sendRedirect(request.getContextPath());
    }
    /**
     * 判断账号是否已经注册过
     * */
    private void doEmailCheck(HttpServletRequest request, HttpServletResponse response) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(),"utf-8"));
        String email=JSONObject.parseObject(reader.readLine()).getString("email");
        int flag=LoginService.queryEmail(email);
        if(flag==1){
            response.setContentType("text/json;charset=utf-8");
            response.getWriter().write(JSON.toJSONString(flag));
        }
    }
    /**
     * 注册用户信息
     * */
    private void doRegister(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.setCharacterEncoding("utf-8");
        Users users=new Users();
        users.setName(request.getParameter("name"));
        users.setBrith(request.getParameter("brith"));
        users.setAcademy(request.getParameter("academy"));
        users.setMajor(request.getParameter("major"));
        users.setEmail(request.getParameter("email"));
        users.setPassword(request.getParameter("password"));
        users.setUserType(request.getParameter("user_type"));
        users.setBorrowNum(0);
        int num = LoginService.register(users);
        if(num==1){
            response.sendRedirect(request.getContextPath()+"/index.jsp");
        }
    }
}


借书操作:

/**
     * 用户的借书事项
     */
    private void doCustomerBorrow(HttpServletRequest request, HttpServletResponse response) throws IOException {
        int a = 0;
        response.setContentType("text/json;charset=utf-8");
        String bNo = request.getParameter("booknum");
        String username = request.getParameter("username");
        List<Integer> list = BookListService.queryBookLendAndLeft(bNo);
        int left = list.get(0);//获取到剩余的数量
        int lend = list.get(1);//获取到借出的数量
        int borrowNum = BookListService.queryBorrowNum(username);        //查询用户当前借书数量
        int userTypeNum = BookListService.queryUserTypeNum(username);       //查询用户的类型对应的最大借书数量
        boolean falg = BookListService.queryBookIsReturn(bNo,username);             //查询是否再次借用未归还的书籍
        if (borrowNum < userTypeNum) {
            if (!falg) {
                int num = BookListService.customerBorrow(bNo, username, left, lend, borrowNum);
            } else {
                a = 2;
                String jsonString = JSON.toJSONString(a);
                response.getWriter().write(jsonString);
            }
        } else {
            a = 1;
            String jsonString = JSON.toJSONString(a);
            response.getWriter().write(jsonString);
        }
    }

还书操作:

/**
     * 用户的还书事项
     */
    private void doCustomerReturn(HttpServletRequest request, HttpServletResponse response) {
        String bNo = request.getParameter("booknum");
        String username = request.getParameter("username");
        String logNum = request.getParameter("log");
        int num = BookListService.queryBorrowNum(username);         //查询用户借书数量
        int[] arr = BookListService.leftAndLendNumberSel(bNo);      //查询书籍的剩余和借出数量
        String lendTime = BookListService.queryBookLendTime(logNum);//查询书籍的借书时间
        BookListService.customerReturn(bNo, username, arr[0], arr[1], logNum, num,lendTime);
    }

查找书籍:

/**
     * 收藏页面的多条件搜索
     */
    private void doCollectChoice1(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String[] arr = new String[5];
        arr[0] = request.getParameter("choice1");
        arr[1] = request.getParameter("answer1");
        arr[2] = request.getParameter("choice2");
        arr[3] = request.getParameter("answer2");
        arr[4] = (String) request.getSession().getAttribute("email");
        List<CollectListBook> collectListBookList = BookListService.collectChoice1(arr);
        response.setContentType("text/json;charset=utf-8");
        String jsonString = JSON.toJSONString(collectListBookList);
        response.getWriter().write(jsonString);
    }

    /**
     * 收藏页面的模糊查询
     */
    private void doCollectChoice2(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String answer3 = request.getParameter("answer3");
        String email = String.valueOf(request.getSession().getAttribute("email"));
        List<CollectListBook> collectListBookList = BookListService.collectChoice2(answer3, email);
        response.setContentType("text/json;charset=utf-8");
        String jsonString = JSON.toJSONString(collectListBookList);
        response.getWriter().write(jsonString);
    }

修改密码:

/**
     * 修改密码
     * */
    private void doChangePassword(HttpServletRequest request, HttpServletResponse response) throws IOException {
        int f;
        BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
        String string = reader.readLine();
        JSONObject jsonObject = JSONObject.parseObject(string);
        String oldPassowrd = Md5Util.encrypt(jsonObject.getString("old"));  //旧密码
        String newPassowrd = Md5Util.encrypt(jsonObject.getString("new1")); //新密码
        String email = jsonObject.getString("email1");     //账号
        String password = UserListService.cheakPassowrd(email);      //调用方法,查到数据库中的密码
        System.out.println(password);
        if (password.equals(oldPassowrd)) {
//            System.out.println("旧密码输入正确");
            int a = UserListService.changePassword(email, newPassowrd);
            if (a == 1) {
                f = 1;
//                System.out.println("密码修改成功");
            } else {
                f = 2;
//                System.out.println("密码修改失败");
            }
        } else {
            f = 3;
        }
        response.setContentType("text/json;charset=utf-8");
        String jsonString = JSON.toJSONString(f);
        response.getWriter().write(jsonString);
    }

管理员增加书籍

private void doAddBooks(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Books books = new Books();
        books.setbName(request.getParameter("bName"));
        books.setbAuthor(request.getParameter("bAuthor"));
        books.setbNo(Integer.valueOf(request.getParameter("bNo")));
        books.setbType(request.getParameter("bType"));
        books.setbLeft(Integer.valueOf(request.getParameter("bLeft")));
        books.setbLend(Integer.valueOf(request.getParameter("bLend")));
        books.setPress(request.getParameter("press"));
        books.setPressTime(request.getParameter("pressTime"));
        books.setCollectedNum(Integer.valueOf(request.getParameter("collectedNum")));
        int count = BookListService.addBooks(books);
        if (count == 1) {
            response.sendRedirect(request.getContextPath() + "/admin/list/books");
        }
    }

管理员的删除书籍(软删除)

private void doDeleteBooks(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String bno = request.getParameter("b_no");
        int count = BookListService.deleteBooks(bno);
        if (count == 1) {
            response.sendRedirect(request.getContextPath() + "/admin/list/books");
        }
    }

管理员的修改提交书籍

private void doEdit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String bno = request.getParameter("b_no");
        Books books = BookListService.detailBooks(bno);
        request.setAttribute("books", books);
        request.getRequestDispatcher("/" + request.getParameter("f") + ".jsp").forward(request, response);
    }


private void doSubmit(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        Books books = new Books();
        books.setbName(request.getParameter("bName"));
        books.setbAuthor(request.getParameter("bAuthor"));
        books.setbNo(Integer.valueOf(request.getParameter("bNo")));
        books.setbType(request.getParameter("bType"));
        books.setbLeft(Integer.valueOf(request.getParameter("bLeft")));
        books.setbLend(Integer.valueOf(request.getParameter("bLend")));
        books.setPress(request.getParameter("press"));
        books.setPressTime(request.getParameter("pressTime"));
        books.setCollectedNum(Integer.valueOf(request.getParameter("collectedNum")));
        int count = BookListService.submitBooks(books);
        if (count == 1) {
            response.sendRedirect(request.getContextPath() + "/admin/list/detail?f=detail&b_no=" + books.getbNo());
        }
    }

所有操作数据的方法:

在这里插入图片描述

代码下载链接🔗

页面展示:

登录页面:

在这里插入图片描述

注册页面:

在这里插入图片描述

主页面:

在这里插入图片描述

借书记录页面

在这里插入图片描述

我的收藏页面:

在这里插入图片描述

用户修改密码页面

在这里插入图片描述

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值