诗林 发表于 2024-6-22 12:56:04

JavaWeb期末大作业——图书管理系统

目次
一、系统先容
1.开辟的情况
2.本系统实现的功能
3.数据库用到的表
4.工程截图
二、系统展示
1.登录页面
2.注册页面
3.管理员主页面
​编辑 
4. 用户主页面
 5.图书管理页面(管理员)
6.读者管理页面(管理员)
​编辑 7.图书分类管理页面(管理员)
8.图书借阅管理页面(管理员)
 9.图书归还信息页面(管理员)
10.图书日志查询(管理员)
​编辑
11. 图书借阅页面(用户)
12.还书页面(用户)
​编辑 13.借阅历史页面(用户)
 三、部门代码展示
AdminDao.java
 LoginServlet.java
 RegisterServlet.java
 BookBean.java
 AdminServlet.java 
四、源码
点击以下链接(内含数据库文件——books.sql):
五、备注 
六、祝福

一、系统先容

1.开辟的情况

开辟工具:eclipse 2022
JDK版本:1.8
数据库:MySQL 5.5
数据库管理软件:Navicat 15.0.27
服务器:apach-tomcat-9.0.68
2.本系统实现的功能

管理员功能:登岸系统、用户信息的增删改查、图书的增删改查、图书分类的增删改查、图书日志查询、图书归还。
用户功能:登岸系统、查阅图书、借阅和归还图书、查询借阅记载
3.数据库用到的表

admin、book、booktype、history
4.工程截图

https://img-blog.csdnimg.cn/ec72d9c358fb4c60879192caabf82060.png
 
二、系统展示

1.登录页面

https://img-blog.csdnimg.cn/0a8a822b0cdd493f98bc02416c643c66.png
2.注册页面

https://img-blog.csdnimg.cn/7805b229a06048508bf4a38f33e3958c.png
 
3.管理员主页面

https://img-blog.csdnimg.cn/2daf7c04d33a486fada3d05a99d61ba8.png 

4. 用户主页面

https://img-blog.csdnimg.cn/5605844b925e49bb9ef623eb0ded6a62.png
 5.图书管理页面(管理员)

https://img-blog.csdnimg.cn/0e97cafdb78e4ef6b823c7795b977964.png
6.读者管理页面(管理员)

https://img-blog.csdnimg.cn/e37aba9999f346b88bf1936fbe8f5858.png 7.图书分类管理页面(管理员)

https://img-blog.csdnimg.cn/429dd097233c474cbb141433b8d362f2.png
8.图书借阅管理页面(管理员)

https://img-blog.csdnimg.cn/e2b81349997443cab638a210bcab69cb.png
 9.图书归还信息页面(管理员)

https://img-blog.csdnimg.cn/921d0a2f018f485ba2644f9ba66b5403.png
10.图书日志查询(管理员)

https://img-blog.csdnimg.cn/8975c8937b9049b19d9b76b9190acc5b.png

11. 图书借阅页面(用户)

https://img-blog.csdnimg.cn/c43418d34f4c4ad8b3d25d0bf11f0e77.png
12.还书页面(用户)

https://img-blog.csdnimg.cn/a14016b4dbba4077bd8617db496c0d9f.png 13.借阅历史页面(用户)

https://img-blog.csdnimg.cn/f6fd266e9ec54f8f854c727ced850c34.png
 三、部门代码展示

AdminDao.java

package com.hry.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.hry.bean.AdminBean;
import com.hry.dbUtils.DbUtil;



public class AdminDao {

        /**
       * 登录验证功能,传入用户名和密码,在数据库中查找,如果找到了,返回true,没找到则返回false
       * username、password
       */
        public boolean Login_verify(String username,String password){
                //连接数据库
                DbUtil dbUtil=new DbUtil();
                Connection conn = dbUtil.getConn();
                //sql语句
                String sql = "select * from admin where username='"+username+"' and password='"+password+"'";
                PreparedStatement stm = null;
                ResultSet rs = null;
                try {
                        //预编译SQL,减少sql执行
                        stm = conn.prepareStatement(sql);
                        rs = stm.executeQuery();
                        if(rs.next()){
                                return true;
                        }
                } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                finally {
                        DbUtil.CloseDB(rs, stm, conn);
                }
                return false;
        }
        /**
       * 注册账号的函数,传入账号,密码,姓名,邮箱,手机号,借阅天数,可借阅数
       *username,password,name,email,phone, lend_num, max_num
       */
        public void Register(String username, String password, String name, String email, String phone,int lend_num,int max_num) {
                // TODO Auto-generated method stub
                //连接数据库
                        DbUtil dbUtil=new DbUtil();
                                Connection conn = dbUtil.getConn();
                                //sql语句
                                String sql = "insertinto admin(status,username,password,name,email,phone,lend_num,max_num) values(?,?,?,?,?,?,?,?)";
                                int rs = 0;
                                PreparedStatement stm = null;
                                try {
                                        //预编译SQL,减少sql执行
                                        stm = conn.prepareStatement(sql);
                                        //传参
                                        stm.setInt(1, 1);
                                        stm.setString(2, username);
                                        stm.setString(3, password);
                                        stm.setString(4, name);
                                        stm.setString(5, email);
                                        stm.setString(6, phone);
                                        stm.setInt(7, lend_num);//借阅天数
                                        stm.setInt(8, max_num);//可借阅数
                                        //执行更新
                                        rs = stm.executeUpdate();
                                } catch (SQLException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
        }
        /**
       * 根据传入的账号,密码,来查找对应的读者信息,返回一个AdminBean类型,
       *
       */
        public AdminBean getAdminInfo(String username, String password) {
                // TODO Auto-generated method stub
                AdminBean adminbean = new AdminBean();
                DbUtil dbUtil=new DbUtil();
                Connection conn = dbUtil.getConn();
                String sql = "select * from admin where username='"+username+"' and password='"+password+"'";
                PreparedStatement stm = null;
                ResultSet rs = null;
                try {
                        //预编译SQL,减少sql执行
                        stm = conn.prepareStatement(sql);
                        //执行查询
                        rs = stm.executeQuery();
                        if(rs.next()){
                                //传参
                                adminbean.setAid(rs.getInt("aid"));
                                adminbean.setUsername(rs.getString("username"));
                                adminbean.setName(rs.getString("name"));
                                adminbean.setPassword(rs.getString("password"));
                                adminbean.setEmail(rs.getString("email"));
                                adminbean.setPhone(rs.getString("phone"));
                                adminbean.setStatus(rs.getInt("status"));
                                adminbean.setLend_num(rs.getInt("lend_num"));
                                adminbean.setMax_num(rs.getInt("max_num"));
                        }
                } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                finally {
                        DbUtil.CloseDB(rs, stm, conn);
                }
               
                return adminbean;
        }
       
        /**
       * 获取全部用户的信息,其中sql语句中的status=1,表示只查找读者(1),不显示管理员(2)的
       *
       */
        public ArrayList<AdminBean> get_ListInfo(){
                ArrayList<AdminBean> tag_Array = new ArrayList<AdminBean>();
                Connection conn = DbUtil.getConn();
                String sql = "select * from admin where status=1";
                PreparedStatement stm = null;
                ResultSet rs = null;
                try {
                        stm = conn.prepareStatement(sql);
                        rs = stm.executeQuery();
                        while(rs.next()){
                                AdminBean adminbean = new AdminBean();
                                adminbean.setAid(rs.getInt("aid"));
                                adminbean.setUsername(rs.getString("username"));
                                adminbean.setName(rs.getString("name"));
                                adminbean.setPassword(rs.getString("password"));
                                adminbean.setEmail(rs.getString("email"));
                                adminbean.setPhone(rs.getString("phone"));
                                adminbean.setStatus(rs.getInt("status"));
                                adminbean.setLend_num(rs.getInt("lend_num"));
                                adminbean.setMax_num(rs.getInt("max_num"));
                                tag_Array.add(adminbean);
                        }
                       
                } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                finally {
                        DbUtil.CloseDB(rs, stm, conn);
                }
                return tag_Array;
        }
       
        /**
       * 根据传入的aid图书号,查找到对应的读者的全部信息,返回一个AdminBean类型的数据,与上一个相似,只是aid的类型为String,
       *
       */
        public AdminBean get_AidInfo2(String aid){
                AdminBean adminbean = new AdminBean();
                DbUtil dbUtil=new DbUtil();
                Connection conn = dbUtil.getConn();
                String sql = "select * from admin where aid="+aid;
                PreparedStatement stm = null;
                ResultSet rs = null;
                try {
                        stm = conn.prepareStatement(sql);
                        rs = stm.executeQuery();
                        if(rs.next()){
                                adminbean.setAid(rs.getInt("aid"));
                                adminbean.setUsername(rs.getString("username"));
                                adminbean.setName(rs.getString("name"));
                                adminbean.setPassword(rs.getString("password"));
                                adminbean.setEmail(rs.getString("email"));
                                adminbean.setPhone(rs.getString("phone"));
                                adminbean.setStatus(rs.getInt("status"));
                                adminbean.setLend_num(rs.getInt("lend_num"));
                                adminbean.setMax_num(rs.getInt("max_num"));
                        }
                } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                finally {
                        DbUtil.CloseDB(rs, stm, conn);
                }
                return adminbean;
        }
        /**
       * 修改读者的信息
       */
        public void updateUser(int aid, String username, String password, String name, String email, String phone,
                        int lend_num, int max_num) {
                // TODO Auto-generated method stub
                DbUtil dbUtil=new DbUtil();
                Connection conn = dbUtil.getConn();
                String sql = "update admin set username=?,name=?,email=?,phone=?,password=?,lend_num=?,max_num=? where aid=?";
                PreparedStatement stm = null;
                try {
                        stm = conn.prepareStatement(sql);
                        stm.setString(1, username);
                        stm.setString(2, name);
                        stm.setString(3, email);
                        stm.setString(4, phone);
                        stm.setString(5, password);
                        stm.setInt(6, lend_num);
                        stm.setInt(7, max_num);
                        stm.setInt(8, aid);
                        stm.executeUpdate();
                } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
               
        }
        /**
       * 删除用户的信息,根据传入的aid作为条件
       *
       */
        public void deleteUser(int aid) {
                // TODO Auto-generated method stub
                                DbUtil dbUtil=new DbUtil();
                                Connection conn = dbUtil.getConn();
                                String sql = "delete from admin where aid=?";
                                PreparedStatement stm = null;
                                try {
                                        stm = conn.prepareStatement(sql);
                                        stm.setInt(1, aid);
                                        stm.executeUpdate();
                                } catch (SQLException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }       
        }
       
}
 LoginServlet.java

package com.hry.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.hry.bean.AdminBean;
import com.hry.dao.AdminDao;

/**
* Servlet implementation class LoginServlet
*/
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        AdminDao userdao = new AdminDao();
        AdminDao admindao = new AdminDao();
       
    /**
   * @see HttpServlet#HttpServlet()
   */
    public LoginServlet() {
      super();
      // TODO Auto-generated constructor stub
    }

   
       
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
               

        }

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                //登录的判断
                //编码格式
                request.setCharacterEncoding("UTF-8");
                response.setContentType("text/html;charset=UTF-8");
                //获取账号和密码
//                PrintWriter out = response.getWriter();
                String username = request.getParameter("username");
                String password = request.getParameter("password");
                System.out.println(username);
               
                //对账号和密码进行判断
                boolean result = userdao.Login_verify(username, password);
                System.out.println(result);
                HttpSession session = request.getSession();
                //判断输入正确
                if(result){
                        AdminBean adminbean = new AdminBean();
                        //更加账号和密码查找出读者的信息
                        adminbean = admindao.getAdminInfo(username,password);
                        //将aid存入session中
                        session.setAttribute("aid", ""+adminbean.getAid());
                        //设置session的失效时间
                        session.setMaxInactiveInterval(6000);
                        //根据status的值来判断是管理员,还是读者,status=1为读者
                        System.out.println(adminbean.getStatus());
                        if(adminbean.getStatus()==1){
                                response.sendRedirect("index2.jsp");
                        }else{
                                response.sendRedirect("admin.jsp");
                        }
                }else{
                        //没有找到对应的账号和密码,返回重新登录
                        session.setAttribute("state", "密码错误");
                        response.sendRedirect("login.jsp");
                }
       
        }

}
 RegisterServlet.java

package com.hry.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.hry.bean.AdminBean;
import com.hry.dao.AdminDao;

/**
* Servlet implementation class RegisterServlet
*/
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
      
    public RegisterServlet() {
      super();
      // TODO Auto-generated constructor stub
    }

        /**
       * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
       */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
               
        }

        /**
       * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
       */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // TODO Auto-generated method stub
//                doGet(request, response);
                request.setCharacterEncoding("UTF-8");
                response.setContentType("text/html;charset=UTF-8");
               
                //获取注册信息
                AdminDao userdao = new AdminDao();
               
                String username = request.getParameter("username");
                String password = request.getParameter("password");
                String name = request.getParameter("name");
                String email = request.getParameter("email");
                String phone = request.getParameter("phone");
               
                System.out.println(username);
                //默认设置最大借阅数和借阅天数
                int lend_num = 30;
                int max_num = 5;
       

                //将注册信息存入数据库,再返回登录
                userdao.Register(username,password,name,email,phone,lend_num,max_num);
      response.sendRedirect("login.jsp");
        }

}
 BookBean.java

package com.hry.bean;

public class BookBean {
        /**
       * 图书的数据表的bean
       */
        private int bid;//图书id
        private String name;//图书名称
        private String card;//图书号
        private String autho;//作者
        private int num;//图书数量
        private String type;//图书的分类
        private String press;//出版社
        public int getBid() {
                return bid;
        }
        public void setBid(int bid) {
                this.bid = bid;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public String getCard() {
                return card;
        }
        public void setCard(String card) {
                this.card = card;
        }
        public String getAutho() {
                return autho;
        }
        public void setAutho(String autho) {
                this.autho = autho;
        }
        public int getNum() {
                return num;
        }
        public void setNum(int num) {
                this.num = num;
        }
        public String getType() {
                return type;
        }
        public void setType(String type) {
                this.type = type;
        }
        public String getPress() {
                return press;
        }
        public void setPress(String press) {
                this.press = press;
        }

}
 AdminServlet.java 

package com.hry.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.hry.bean.AdminBean;
import com.hry.dao.AdminDao;
import com.hry.dao.BookDao;

/**
* Servlet implementation class AdminServlet
*/
@WebServlet("/AdminServlet")
public class AdminServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
      
    public AdminServlet() {
      super();
      // TODO Auto-generated constructor stub
    }

       
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
               
        }

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                //PrintWriter:输出流,为异常处理
                PrintWriter out = response.getWriter();
                //设置编码类型
                request.setCharacterEncoding("UTF-8");
                response.setContentType("text/html;charset=UTF-8");
                BookDao bookdao = new BookDao();
                //这里为了简单,设置了tip,用来区分是修改密码功能,还是修改个人资料的功能,tip=1为修改密码
                int tip = Integer.parseInt(request.getParameter("tip"));
                //获取发起请求页面的文件名称,这个在对应的jsp里面的表单填写,修改完成后就可以直接返回对应的页面
                String url = request.getParameter("url");
                System.out.println(url);
                HttpSession session = request.getSession();
                AdminBean adminbean = new AdminBean();
                //获取存到session的aid
                String aid = (String) session.getAttribute("aid");
                AdminDao admindao = new AdminDao();
                //通过aid获取到读者的信息
                adminbean = admindao.get_AidInfo2(aid);
                //修改密码
                if (tip==1) {
                        //获取到输入的旧密码,新密码
                        String password = request.getParameter("password");
                        String password2 = request.getParameter("password2");
                       
                        //获取读者数据表中的密码
                        String old_password = adminbean.getPassword();
                        //对旧密码进行比较,如果相同就修改,不相同就直接退出
                        if(old_password.equals(password)){
                                admindao.updateUser(adminbean.getAid(), adminbean.getUsername(), password2, adminbean.getName(),
                                                adminbean.getEmail(), adminbean.getPhone(), adminbean.getLend_num(), adminbean.getMax_num());
                                response.sendRedirect(url+".jsp");
                        }else{
                                out.write("<script type='text/javascript'>alert('password error');location.href='"+url+".jsp';</script>");
                               
                        }
                } else {
                        //修改个人资料
                        //获取输入的信息
                        String name = request.getParameter("name");
                        String email = request.getParameter("email");
                        String phone = request.getParameter("phone");
                        //修改输入的信息到数据表中
                        admindao.updateUser(adminbean.getAid(), adminbean.getUsername(), adminbean.getPassword(), name,
                                        email, phone, adminbean.getLend_num(), adminbean.getMax_num());
                        response.sendRedirect(url+".jsp");
                }
        }

}
四、源码

点击以下链接(内含数据库文件——books.sql):

链接:https://pan.baidu.com/s/1HN8CY281ctJWjSkynUgxag?pwd=5ugw 
提取码:5ugw 
五、备注 

该项目是基于一位GitHub上的大佬的项目模板写的,我在上课时按照老师的要求给原项目增加和优化了一些功能,末了变成了现在这个样子。由于当时在GitHub参考了很多的项目,导致我现在已经不记得那位大佬的用户名了,只能说黑白常歉仄了。
如有侵权,请接洽我删除。
六、祝福

路虽远行则可至,将来一定可期!祝您生存愉快、工作顺心、学业有成!



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: JavaWeb期末大作业——图书管理系统