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

avatar
作者
筋斗云
阅读量:6

目录

一、系统介绍

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 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 = "insert  into 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参考了很多的项目,导致我现在已经不记得那位大佬的用户名了,只能说是非常抱歉了。

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

六、祝福

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!