目录

一、系统介绍

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

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 blocke.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(" /> get_ListInfo(){ArrayList tag_Array = new ArrayList();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 blocke.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 blocke.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 stubDbUtil 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 blocke.printStackTrace();}}/** * 删除用户的信息,根据传入的aid作为条件 **/public void deleteUser(int aid) {// TODO Auto-generated method stubDbUtil 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 blocke.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;//图书idprivate 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的aidString 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("alert('password error');location.href='"+url+".jsp';");}} 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参考了很多的项目,导致我现在已经不记得那位大佬的用户名了,只能说是非常抱歉了。

如有侵权,请联系我删除。

六、祝福

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