ToB企服应用市场:ToB评测及商务社交产业平台

标题: JavaWeb期末大作业——图书管理系统 [打印本页]

作者: 诗林    时间: 2024-6-22 12:56
标题: 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.工程截图


 
二、系统展示

1.登录页面


2.注册页面


 
3.管理员主页面

 


4. 用户主页面


 5.图书管理页面(管理员)


6.读者管理页面(管理员)

 7.图书分类管理页面(管理员)



8.图书借阅管理页面(管理员)


 9.图书归还信息页面(管理员)


10.图书日志查询(管理员)



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


12.还书页面(用户)

 13.借阅历史页面(用户)



 三、部门代码展示

AdminDao.java

  1. package com.hry.dao;
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.util.ArrayList;
  7. import com.hry.bean.AdminBean;
  8. import com.hry.dbUtils.DbUtil;
  9. public class AdminDao {
  10.         /**
  11.          * 登录验证功能,传入用户名和密码,在数据库中查找,如果找到了,返回true,没找到则返回false
  12.          * username、password
  13.          */
  14.         public boolean Login_verify(String username,String password){
  15.                 //连接数据库
  16.                 DbUtil dbUtil=new DbUtil();
  17.                 Connection conn = dbUtil.getConn();
  18.                 //sql语句
  19.                 String sql = "select * from admin where username='"+username+"' and password='"+password+"'";
  20.                 PreparedStatement stm = null;
  21.                 ResultSet rs = null;
  22.                 try {
  23.                         //预编译SQL,减少sql执行
  24.                         stm = conn.prepareStatement(sql);
  25.                         rs = stm.executeQuery();
  26.                         if(rs.next()){
  27.                                 return true;
  28.                         }
  29.                 } catch (SQLException e) {
  30.                         // TODO Auto-generated catch block
  31.                         e.printStackTrace();
  32.                 }
  33.                 finally {
  34.                         DbUtil.CloseDB(rs, stm, conn);
  35.                 }
  36.                 return false;
  37.         }
  38.         /**
  39.          * 注册账号的函数,传入账号,密码,姓名,邮箱,手机号,借阅天数,可借阅数
  40.          *  username,  password,  name,  email,  phone, lend_num, max_num
  41.          */
  42.         public void Register(String username, String password, String name, String email, String phone,int lend_num,int max_num) {
  43.                 // TODO Auto-generated method stub
  44.                 //连接数据库
  45.                         DbUtil dbUtil=new DbUtil();
  46.                                 Connection conn = dbUtil.getConn();
  47.                                 //sql语句
  48.                                 String sql = "insert  into admin(status,username,password,name,email,phone,lend_num,max_num) values(?,?,?,?,?,?,?,?)";
  49.                                 int rs = 0;
  50.                                 PreparedStatement stm = null;
  51.                                 try {
  52.                                         //预编译SQL,减少sql执行
  53.                                         stm = conn.prepareStatement(sql);
  54.                                         //传参
  55.                                         stm.setInt(1, 1);
  56.                                         stm.setString(2, username);
  57.                                         stm.setString(3, password);
  58.                                         stm.setString(4, name);
  59.                                         stm.setString(5, email);
  60.                                         stm.setString(6, phone);
  61.                                         stm.setInt(7, lend_num);//借阅天数
  62.                                         stm.setInt(8, max_num);//可借阅数
  63.                                         //执行更新
  64.                                         rs = stm.executeUpdate();
  65.                                 } catch (SQLException e) {
  66.                                         // TODO Auto-generated catch block
  67.                                         e.printStackTrace();
  68.                                 }
  69.         }
  70.         /**
  71.          * 根据传入的账号,密码,来查找对应的读者信息,返回一个AdminBean类型,
  72.          *
  73.          */
  74.         public AdminBean getAdminInfo(String username, String password) {
  75.                 // TODO Auto-generated method stub
  76.                 AdminBean adminbean = new AdminBean();
  77.                 DbUtil dbUtil=new DbUtil();
  78.                 Connection conn = dbUtil.getConn();
  79.                 String sql = "select * from admin where username='"+username+"' and password='"+password+"'";
  80.                 PreparedStatement stm = null;
  81.                 ResultSet rs = null;
  82.                 try {
  83.                         //预编译SQL,减少sql执行
  84.                         stm = conn.prepareStatement(sql);
  85.                         //执行查询
  86.                         rs = stm.executeQuery();
  87.                         if(rs.next()){
  88.                                 //传参
  89.                                 adminbean.setAid(rs.getInt("aid"));
  90.                                 adminbean.setUsername(rs.getString("username"));
  91.                                 adminbean.setName(rs.getString("name"));
  92.                                 adminbean.setPassword(rs.getString("password"));
  93.                                 adminbean.setEmail(rs.getString("email"));
  94.                                 adminbean.setPhone(rs.getString("phone"));
  95.                                 adminbean.setStatus(rs.getInt("status"));
  96.                                 adminbean.setLend_num(rs.getInt("lend_num"));
  97.                                 adminbean.setMax_num(rs.getInt("max_num"));
  98.                         }
  99.                 } catch (SQLException e) {
  100.                         // TODO Auto-generated catch block
  101.                         e.printStackTrace();
  102.                 }
  103.                 finally {
  104.                         DbUtil.CloseDB(rs, stm, conn);
  105.                 }
  106.                
  107.                 return adminbean;
  108.         }
  109.        
  110.         /**
  111.          * 获取全部用户的信息,其中sql语句中的status=1,表示只查找读者(1),不显示管理员(2)的
  112.          *
  113.          */
  114.         public ArrayList<AdminBean> get_ListInfo(){
  115.                 ArrayList<AdminBean> tag_Array = new ArrayList<AdminBean>();
  116.                 Connection conn = DbUtil.getConn();
  117.                 String sql = "select * from admin where status=1";
  118.                 PreparedStatement stm = null;
  119.                 ResultSet rs = null;
  120.                 try {
  121.                         stm = conn.prepareStatement(sql);
  122.                         rs = stm.executeQuery();
  123.                         while(rs.next()){
  124.                                 AdminBean adminbean = new AdminBean();
  125.                                 adminbean.setAid(rs.getInt("aid"));
  126.                                 adminbean.setUsername(rs.getString("username"));
  127.                                 adminbean.setName(rs.getString("name"));
  128.                                 adminbean.setPassword(rs.getString("password"));
  129.                                 adminbean.setEmail(rs.getString("email"));
  130.                                 adminbean.setPhone(rs.getString("phone"));
  131.                                 adminbean.setStatus(rs.getInt("status"));
  132.                                 adminbean.setLend_num(rs.getInt("lend_num"));
  133.                                 adminbean.setMax_num(rs.getInt("max_num"));
  134.                                 tag_Array.add(adminbean);
  135.                         }
  136.                        
  137.                 } catch (SQLException e) {
  138.                         // TODO Auto-generated catch block
  139.                         e.printStackTrace();
  140.                 }
  141.                 finally {
  142.                         DbUtil.CloseDB(rs, stm, conn);
  143.                 }
  144.                 return tag_Array;
  145.         }
  146.        
  147.         /**
  148.          * 根据传入的aid图书号,查找到对应的读者的全部信息,返回一个AdminBean类型的数据,与上一个相似,只是aid的类型为String,
  149.          *
  150.          */
  151.         public AdminBean get_AidInfo2(String aid){
  152.                 AdminBean adminbean = new AdminBean();
  153.                 DbUtil dbUtil=new DbUtil();
  154.                 Connection conn = dbUtil.getConn();
  155.                 String sql = "select * from admin where aid="+aid;
  156.                 PreparedStatement stm = null;
  157.                 ResultSet rs = null;
  158.                 try {
  159.                         stm = conn.prepareStatement(sql);
  160.                         rs = stm.executeQuery();
  161.                         if(rs.next()){
  162.                                 adminbean.setAid(rs.getInt("aid"));
  163.                                 adminbean.setUsername(rs.getString("username"));
  164.                                 adminbean.setName(rs.getString("name"));
  165.                                 adminbean.setPassword(rs.getString("password"));
  166.                                 adminbean.setEmail(rs.getString("email"));
  167.                                 adminbean.setPhone(rs.getString("phone"));
  168.                                 adminbean.setStatus(rs.getInt("status"));
  169.                                 adminbean.setLend_num(rs.getInt("lend_num"));
  170.                                 adminbean.setMax_num(rs.getInt("max_num"));
  171.                         }
  172.                 } catch (SQLException e) {
  173.                         // TODO Auto-generated catch block
  174.                         e.printStackTrace();
  175.                 }
  176.                 finally {
  177.                         DbUtil.CloseDB(rs, stm, conn);
  178.                 }
  179.                 return adminbean;
  180.         }
  181.         /**
  182.          * 修改读者的信息
  183.          */
  184.         public void updateUser(int aid, String username, String password, String name, String email, String phone,
  185.                         int lend_num, int max_num) {
  186.                 // TODO Auto-generated method stub
  187.                 DbUtil dbUtil=new DbUtil();
  188.                 Connection conn = dbUtil.getConn();
  189.                 String sql = "update admin set username=?,name=?,email=?,phone=?,password=?,lend_num=?,max_num=? where aid=?";
  190.                 PreparedStatement stm = null;
  191.                 try {
  192.                         stm = conn.prepareStatement(sql);
  193.                         stm.setString(1, username);
  194.                         stm.setString(2, name);
  195.                         stm.setString(3, email);
  196.                         stm.setString(4, phone);
  197.                         stm.setString(5, password);
  198.                         stm.setInt(6, lend_num);
  199.                         stm.setInt(7, max_num);
  200.                         stm.setInt(8, aid);
  201.                         stm.executeUpdate();
  202.                 } catch (SQLException e) {
  203.                         // TODO Auto-generated catch block
  204.                         e.printStackTrace();
  205.                 }
  206.                
  207.         }
  208.         /**
  209.          * 删除用户的信息,根据传入的aid作为条件
  210.          *
  211.          */
  212.         public void deleteUser(int aid) {
  213.                 // TODO Auto-generated method stub
  214.                                 DbUtil dbUtil=new DbUtil();
  215.                                 Connection conn = dbUtil.getConn();
  216.                                 String sql = "delete from admin where aid=?";
  217.                                 PreparedStatement stm = null;
  218.                                 try {
  219.                                         stm = conn.prepareStatement(sql);
  220.                                         stm.setInt(1, aid);
  221.                                         stm.executeUpdate();
  222.                                 } catch (SQLException e) {
  223.                                         // TODO Auto-generated catch block
  224.                                         e.printStackTrace();
  225.                                 }       
  226.         }
  227.        
  228. }
复制代码
 LoginServlet.java

  1. package com.hry.servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.sql.Connection;
  5. import java.sql.SQLException;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.annotation.WebServlet;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import javax.servlet.http.HttpSession;
  12. import com.hry.bean.AdminBean;
  13. import com.hry.dao.AdminDao;
  14. /**
  15. * Servlet implementation class LoginServlet
  16. */
  17. @WebServlet("/LoginServlet")
  18. public class LoginServlet extends HttpServlet {
  19.         private static final long serialVersionUID = 1L;
  20.         AdminDao userdao = new AdminDao();
  21.         AdminDao admindao = new AdminDao();
  22.        
  23.     /**
  24.      * @see HttpServlet#HttpServlet()
  25.      */
  26.     public LoginServlet() {
  27.         super();
  28.         // TODO Auto-generated constructor stub
  29.     }
  30.    
  31.        
  32.         protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  33.                
  34.         }
  35.         protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  36.                 //登录的判断
  37.                 //编码格式
  38.                 request.setCharacterEncoding("UTF-8");
  39.                 response.setContentType("text/html;charset=UTF-8");
  40.                 //获取账号和密码
  41. //                PrintWriter out = response.getWriter();
  42.                 String username = request.getParameter("username");
  43.                 String password = request.getParameter("password");
  44.                 System.out.println(username);
  45.                
  46.                 //对账号和密码进行判断
  47.                 boolean result = userdao.Login_verify(username, password);
  48.                 System.out.println(result);
  49.                 HttpSession session = request.getSession();
  50.                 //判断输入正确
  51.                 if(result){
  52.                         AdminBean adminbean = new AdminBean();
  53.                         //更加账号和密码查找出读者的信息
  54.                         adminbean = admindao.getAdminInfo(username,password);
  55.                         //将aid存入session中
  56.                         session.setAttribute("aid", ""+adminbean.getAid());
  57.                         //设置session的失效时间
  58.                         session.setMaxInactiveInterval(6000);
  59.                         //根据status的值来判断是管理员,还是读者,status=1为读者
  60.                         System.out.println(adminbean.getStatus());
  61.                         if(adminbean.getStatus()==1){
  62.                                 response.sendRedirect("index2.jsp");
  63.                         }else{
  64.                                 response.sendRedirect("admin.jsp");
  65.                         }
  66.                 }else{
  67.                         //没有找到对应的账号和密码,返回重新登录
  68.                         session.setAttribute("state", "密码错误");
  69.                         response.sendRedirect("login.jsp");
  70.                 }
  71.        
  72.         }
  73. }
复制代码
 RegisterServlet.java

  1. package com.hry.servlet;
  2. import java.io.IOException;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.annotation.WebServlet;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import com.hry.bean.AdminBean;
  9. import com.hry.dao.AdminDao;
  10. /**
  11. * Servlet implementation class RegisterServlet
  12. */
  13. @WebServlet("/RegisterServlet")
  14. public class RegisterServlet extends HttpServlet {
  15.         private static final long serialVersionUID = 1L;
  16.       
  17.     public RegisterServlet() {
  18.         super();
  19.         // TODO Auto-generated constructor stub
  20.     }
  21.         /**
  22.          * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  23.          */
  24.         protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  25.                
  26.         }
  27.         /**
  28.          * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  29.          */
  30.         protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  31.                 // TODO Auto-generated method stub
  32. //                doGet(request, response);
  33.                 request.setCharacterEncoding("UTF-8");
  34.                 response.setContentType("text/html;charset=UTF-8");
  35.                
  36.                 //获取注册信息
  37.                 AdminDao userdao = new AdminDao();
  38.                
  39.                 String username = request.getParameter("username");
  40.                 String password = request.getParameter("password");
  41.                 String name = request.getParameter("name");
  42.                 String email = request.getParameter("email");
  43.                 String phone = request.getParameter("phone");
  44.                
  45.                 System.out.println(username);
  46.                 //默认设置最大借阅数和借阅天数
  47.                 int lend_num = 30;
  48.                 int max_num = 5;
  49.        
  50.                 //将注册信息存入数据库,再返回登录
  51.                 userdao.Register(username,password,name,email,phone,lend_num,max_num);
  52.         response.sendRedirect("login.jsp");
  53.         }
  54. }
复制代码
 BookBean.java

  1. package com.hry.bean;
  2. public class BookBean {
  3.         /**
  4.          * 图书的数据表的bean
  5.          */
  6.         private int bid;//图书id
  7.         private String name;//图书名称
  8.         private String card;//图书号
  9.         private String autho;//作者
  10.         private int num;//图书数量
  11.         private String type;//图书的分类
  12.         private String press;//出版社
  13.         public int getBid() {
  14.                 return bid;
  15.         }
  16.         public void setBid(int bid) {
  17.                 this.bid = bid;
  18.         }
  19.         public String getName() {
  20.                 return name;
  21.         }
  22.         public void setName(String name) {
  23.                 this.name = name;
  24.         }
  25.         public String getCard() {
  26.                 return card;
  27.         }
  28.         public void setCard(String card) {
  29.                 this.card = card;
  30.         }
  31.         public String getAutho() {
  32.                 return autho;
  33.         }
  34.         public void setAutho(String autho) {
  35.                 this.autho = autho;
  36.         }
  37.         public int getNum() {
  38.                 return num;
  39.         }
  40.         public void setNum(int num) {
  41.                 this.num = num;
  42.         }
  43.         public String getType() {
  44.                 return type;
  45.         }
  46.         public void setType(String type) {
  47.                 this.type = type;
  48.         }
  49.         public String getPress() {
  50.                 return press;
  51.         }
  52.         public void setPress(String press) {
  53.                 this.press = press;
  54.         }
  55. }
复制代码
 AdminServlet.java 

  1. package com.hry.servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.annotation.WebServlet;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import javax.servlet.http.HttpSession;
  10. import com.hry.bean.AdminBean;
  11. import com.hry.dao.AdminDao;
  12. import com.hry.dao.BookDao;
  13. /**
  14. * Servlet implementation class AdminServlet
  15. */
  16. @WebServlet("/AdminServlet")
  17. public class AdminServlet extends HttpServlet {
  18.         private static final long serialVersionUID = 1L;
  19.       
  20.     public AdminServlet() {
  21.         super();
  22.         // TODO Auto-generated constructor stub
  23.     }
  24.        
  25.         protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  26.                
  27.         }
  28.         protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  29.                 //PrintWriter:输出流,为异常处理
  30.                 PrintWriter out = response.getWriter();
  31.                 //设置编码类型
  32.                 request.setCharacterEncoding("UTF-8");
  33.                 response.setContentType("text/html;charset=UTF-8");
  34.                 BookDao bookdao = new BookDao();
  35.                 //这里为了简单,设置了tip,用来区分是修改密码功能,还是修改个人资料的功能,tip=1为修改密码
  36.                 int tip = Integer.parseInt(request.getParameter("tip"));
  37.                 //获取发起请求页面的文件名称,这个在对应的jsp里面的表单填写,修改完成后就可以直接返回对应的页面
  38.                 String url = request.getParameter("url");
  39.                 System.out.println(url);
  40.                 HttpSession session = request.getSession();
  41.                 AdminBean adminbean = new AdminBean();
  42.                 //获取存到session的aid
  43.                 String aid = (String) session.getAttribute("aid");
  44.                 AdminDao admindao = new AdminDao();
  45.                 //通过aid获取到读者的信息
  46.                 adminbean = admindao.get_AidInfo2(aid);
  47.                 //修改密码
  48.                 if (tip==1) {
  49.                         //获取到输入的旧密码,新密码
  50.                         String password = request.getParameter("password");
  51.                         String password2 = request.getParameter("password2");
  52.                        
  53.                         //获取读者数据表中的密码
  54.                         String old_password = adminbean.getPassword();
  55.                         //对旧密码进行比较,如果相同就修改,不相同就直接退出
  56.                         if(old_password.equals(password)){
  57.                                 admindao.updateUser(adminbean.getAid(), adminbean.getUsername(), password2, adminbean.getName(),
  58.                                                 adminbean.getEmail(), adminbean.getPhone(), adminbean.getLend_num(), adminbean.getMax_num());
  59.                                 response.sendRedirect(url+".jsp");
  60.                         }else{
  61.                                 out.write("<script type='text/javascript'>alert('password error');location.href='"+url+".jsp';  </script>");
  62.                                
  63.                         }
  64.                 } else {
  65.                         //修改个人资料
  66.                         //获取输入的信息
  67.                         String name = request.getParameter("name");
  68.                         String email = request.getParameter("email");
  69.                         String phone = request.getParameter("phone");
  70.                         //修改输入的信息到数据表中
  71.                         admindao.updateUser(adminbean.getAid(), adminbean.getUsername(), adminbean.getPassword(), name,
  72.                                         email, phone, adminbean.getLend_num(), adminbean.getMax_num());
  73.                         response.sendRedirect(url+".jsp");
  74.                 }
  75.         }
  76. }
复制代码
四、源码

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

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

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

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



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4