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

CSDN 2024-07-09 08:35:03 阅读 50

目录

一、系统介绍

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

<code>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+"'";code>

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+"'";code>

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"));code>

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>");code>

}

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

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

六、祝福

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。