- 一、系统介绍
- 1.软件环境
- 2.功能模块图
- 3.系统功能
- 4.数据库表
- 5.工程截图
- 二、系统展示
- 1.系统注册
- 2.系统登录
- 3.找回密码
- 4.管理员-主页
- 5.管理员-用户管理主页
- 6.管理员-新增用户
- 7.管理员-修改用户
- 8.管理员-借阅信息管理
- 9.管理员-图书管理主页
- 10.管理员-新增图书
- 11.管理员-修改图书
- 12.用户-主页
- 13.用户-图书明细查看
- 14.用户-新增留言
- 15.用户-借阅信息管理
- 16.用户-书架管理
- 三、代码实现
- Book
- User
- Record
- Comment
- BookShelf
- BookDao
- BookShelfDao
- CommentDao
- RecordDao
- UserDao
- BookService
- BookShelfService
- CommentService
- RecordService
- login.jsp
- login-do-info.jsp
- login-fail.jsp
- logout.jsp
- register.jsp
- register-do.jsp
- search-password.jsp
- search-password-do.jsp
- search-password-info.jsp
- admin-home.jsp
- admin-book-add.jsp
- admin-book-delete.jsp
- admin-book-update.jsp
- admin-user-add.jsp
- admin-user-delete.jsp
- admin-user-update.jsp
- user-home.jsp
- user-comment-add.jsp
- 四、其他
- 1.其他系统实现
- JavaWeb系统系列实现
- JavaSwing系统系列实现
- 2.获取源码
- 3.备注
- 4.联系博主
IDEA:2018.2
Java:jdk1.8
Mysql:8.0.13
Tomcat:8.5.23
1.系统的注册、登录、注销
2.读者信息管理
系统管理员可以对读者信息进行查询、添加、修改、删除等操作。
3.图书信息管理
系统管理员可以对图书信息进行查询、添加、修改、删除等操作。
4.借阅信息管理
管理管理可以对借阅信息进行查询和删除操作,用户可以对借阅信息进行新增、查看操作。
5.个人书架管理
用户对个人书架的新增、删处、查看操作。
6.留言管理
用户可以对留言进行新增、查看操作。
1.读者表
2.借阅信息表
3.评论留言表
4.图书表
5.书架表
package com.sjsq.po;
import java.io.Serializable;
import java.util.Date;
public class Book implements Serializable {
private static final long serialVersionUID = 1L;
private Integer bookid;
private String bookname;
private Double price;
private String author;
private String publish;
private Integer categoryid;
private String booklink;
private Date deadline;
public static long getSerialVersionUID() {
return serialVersionUID;
}
public Integer getBookid() {
return bookid;
}
public void setBookid(Integer bookid) {
this.bookid = bookid;
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPublish() {
return publish;
}
public void setPublish(String publish) {
this.publish = publish;
}
public Integer getCategoryid() {
return categoryid;
}
public void setCategoryid(Integer categoryid) {
this.categoryid = categoryid;
}
public String getBooklink() {
return booklink;
}
public void setBooklink(String booklink) {
this.booklink = booklink;
}
public Date getDeadline() {
return deadline;
}
public void setDeadline(Date deadline) {
this.deadline = deadline;
}
@Override
public String toString() {
return "Book{" +
"bookid=" + bookid +
", bookname='" + bookname + ''' +
", price=" + price +
", author='" + author + ''' +
", publish='" + publish + ''' +
", categoryid=" + categoryid +
", booklink='" + booklink + ''' +
", deadline=" + deadline +
'}';
}
}
User
package com.sjsq.po;
import java.io.Serializable;
public class User implements Serializable {
// 增加序列号,作用是反序列化的时候不会报错,切能进行IO的持久化
public static final long serialVersionUID = 1L;
private Integer userid;
private String username;
private String password;
private String email;
private String phone;
private Integer isadmin;
public static long getSerialVersionUID() {
return serialVersionUID;
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Integer getIsadmin() {
return isadmin;
}
public void setIsadmin(Integer isadmin) {
this.isadmin = isadmin;
}
@Override
public String toString() {
return "User{" +
"userid=" + userid +
", username='" + username + ''' +
", password='" + password + ''' +
", email='" + email + ''' +
", phone='" + phone + ''' +
", isadmin=" + isadmin +
'}';
}
}
Record
package com.sjsq.po;
import java.util.Date;
public class Record {
private Integer borrowid;
private Integer userid;
private Integer bookid;
private String bookname;
private String booklink;
private Date borrowtime;
public Integer getBorrowid() {
return borrowid;
}
public void setBorrowid(Integer borrowid) {
this.borrowid = borrowid;
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public Integer getBookid() {
return bookid;
}
public void setBookid(Integer bookid) {
this.bookid = bookid;
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public String getBooklink() {
return booklink;
}
public void setBooklink(String booklink) {
this.booklink = booklink;
}
public Date getBorrowtime() {
return borrowtime;
}
public void setBorrowtime(Date borrowtime) {
this.borrowtime = borrowtime;
}
@Override
public String toString() {
return "Record{" +
"borrowid=" + borrowid +
", userid=" + userid +
", bookid=" + bookid +
", bookname='" + bookname + ''' +
", booklink='" + booklink + ''' +
", borrowtime=" + borrowtime +
'}';
}
}
Comment
package com.sjsq.po;
import java.sql.Time;
import java.util.Date;
public class Comment {
private Integer commentid;
private Integer userid;
private String username;
private Integer bookid;
private String bookname;
private String comment;
private Date time;
public Integer getCommentid() {
return commentid;
}
public void setCommentid(Integer commentid) {
this.commentid = commentid;
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getBookid() {
return bookid;
}
public void setBookid(Integer bookid) {
this.bookid = bookid;
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
@Override
public String toString() {
return "Comment{" +
"commentid=" + commentid +
", userid=" + userid +
", username='" + username + ''' +
", bookid=" + bookid +
", bookname='" + bookname + ''' +
", comment='" + comment + ''' +
", time=" + time +
'}';
}
}
BookShelf
package com.sjsq.po;
import java.util.Date;
public class BookShelf {
private Integer id;
private Integer userid;
private Integer bookid;
private String bookname;
private String booklink;
private Date adddate;
private Date removedate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public Integer getBookid() {
return bookid;
}
public void setBookid(Integer bookid) {
this.bookid = bookid;
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public String getBooklink() {
return booklink;
}
public void setBooklink(String booklink) {
this.booklink = booklink;
}
public Date getAdddate() {
return adddate;
}
public void setAdddate(Date adddate) {
this.adddate = adddate;
}
public Date getRemovedate() {
return removedate;
}
public void setRemovedate(Date removedate) {
this.removedate = removedate;
}
@Override
public String toString() {
return "BookShelf{" +
"id=" + id +
", userid=" + userid +
", bookid=" + bookid +
", bookname='" + bookname + ''' +
", booklink='" + booklink + ''' +
", adddate=" + adddate +
", removedate=" + removedate +
'}';
}
}
BookDao
package com.sjsq.dao;
import com.sjsq.po.Book;
import java.util.List;
public interface BookDao {
public List select(String sql, Object[] arr);
public Book getBook(Integer bookid);
public boolean addBook(Book book);
public boolean updateBook(Book book);
public boolean deleteBook(Integer bookid);
}
BookShelfDao
package com.sjsq.dao;
import com.sjsq.po.BookShelf;
import java.util.List;
public interface BookShelfDao {
public List selectBookShelf(Integer userid);
public boolean addBookShelf(BookShelf bookShelf);
public boolean removeBookShelf(Integer userid,Integer bookid);
}
CommentDao
package com.sjsq.dao;
import com.sjsq.po.Comment;
import java.util.List;
public interface CommentDao {
public boolean addComment(Comment comment);
public List selectComment(Integer bookid);
}
RecordDao
package com.sjsq.dao;
import com.sjsq.po.Record;
import java.util.List;
public interface RecordDao {
public List selectRecords();
public List selectRecord(Integer userid);
public boolean addRecord(Record record);
public boolean deleteRecord(Integer borrowid);
}
UserDao
package com.sjsq.dao;
import com.sjsq.po.User;
import java.util.List;
public interface UserDao {
public User login(User user);
public boolean register(User user);
public List selectUser(String sql, Object arr[]);
public User getUser(Integer userid);
public boolean addUser(User user);
public boolean updateUser(User user);
public boolean deleteUser(Integer userid);
}
BookService
package com.sjsq.service;
import com.sjsq.po.Book;
import java.util.List;
public interface BookService {
public List select(String bookname);
public Book getBook(Integer id);
public boolean addBook(Book book);
public boolean updateBook(Book book);
public boolean deleteBook(Integer bookid);
}
BookShelfService
package com.sjsq.service;
import com.sjsq.po.BookShelf;
import java.util.List;
public interface BookShelfService {
public List selectBookShelf(Integer userid);
public boolean addBookShelf(BookShelf bookShelf);
public boolean removeBookShelf(Integer userid,Integer bookid);
}
CommentService
package com.sjsq.service;
import com.sjsq.po.Comment;
import java.util.List;
public interface CommentService {
public boolean addComment(Comment comment);
public List selectComment(Integer bookid);
}
RecordService
package com.sjsq.service;
import com.sjsq.po.Record;
import java.util.List;
public interface RecordService {
public List selectRecords();
public List selectRecord(Integer userid);
public boolean addRecord(Record record);
public boolean deleteRecord(Integer borrowid);
}
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%
// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":"
+ request.getServerPort() + path + "/";
%>
用户登录
login-do-info.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ page import="com.sjsq.dao.UserDao" %>
<%@ page import="com.sjsq.dao.impl.UserDaoImpl" %>
<%@ page import="com.sjsq.po.User" %>
<%@ page import="com.sjsq.service.UserService" %>
<%@ page import="com.sjsq.service.impl.UserServiceImpl" %>
<%@ page import="java.util.List" %>
<%
// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":"
+ request.getServerPort() + path + "/";
%>
用户登录
现存图书列表
<%
// 设置接收的编码为UTF-8
request.setCharacterEncoding("utf-8");
User user = new User();
UserDao dao = new UserDaoImpl();
String username = request.getParameter("username");
String password = request.getParameter("password");
user.setUsername(username);
user.setPassword(password);
// 获取用户登录信息
User us = dao.login(user);
// 把数据库里面的User获取出来
UserService service = new UserServiceImpl();
List list = service.selectUser(username);
for (int i = 0; i < list.size(); i++) {
user = list.get(i);
}
System.out.println("----us的信息----");
System.out.println(us);
// 设置会话
session.setAttribute("user", user);
// 这里要对us判空处理,1是管理者,0是学生,此处的isadmin必须填写不能为空。
if (us != null && us.getIsadmin().equals(1)) {
response.sendRedirect("admin-home.jsp");
} else if (us != null && !us.getIsadmin().equals(1)) {
response.sendRedirect("user-home.jsp");
} else {
response.sendRedirect("login-fail.jsp");
}
%>
login-fail.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8"%>
登录失败
登录失败
logout.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
退出登录
<%
// 杀掉会话
session.invalidate();
// 重定向,地址栏的链接会发生改变
response.sendRedirect("login.jsp");
%>
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
用户注册
用户注册
register-do.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8"%>
<%@page import="com.sjsq.dao.impl.UserDaoImpl"%>
<%@page import="com.sjsq.dao.UserDao"%>
<%@page import="com.sjsq.po.User"%>
处理注册
<%
// 设置获取注册时的编码为UTF-8
request.setCharacterEncoding("UTF-8");
User user=new User();
//获取register.jsp页面提交的账号和密码
String name=request.getParameter("name");
String password=request.getParameter("password");
String email=request.getParameter("email");
String phone=request.getParameter("phone");
//获取register.jsp页面提交的账号和密码设置到实体类User中
user.setUsername(name);
user.setPassword(password);
user.setEmail(email);
user.setPhone(phone);
//引入数据交互层
UserDao dao=new UserDaoImpl();
boolean flag=dao.register(user);
if(flag){
response.sendRedirect("login.jsp");
}else{
response.sendRedirect("register.jsp");
}
%>
search-password.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%
// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":"
+ request.getServerPort() + path + "/";
%>
找回密码
找回密码
search-password-do.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@page import="java.util.List"%>
<%@page import="com.sjsq.service.impl.UserServiceImpl"%>
<%@page import="com.sjsq.po.User"%>
<%
// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":"
+ request.getServerPort() + path + "/";
%>
处理找回密码
<%
User user=new User();
//获取searchPassword.jsp页面提交的账号和密码
String name=request.getParameter("name");
user.setUsername(name);
UserServiceImpl service=new UserServiceImpl();
List list=service.selectUser(user);
request.setAttribute("list", list);
for(User u:list){
request.setAttribute("user", u);
out.print(u);
}
if(user!=null){
request.getRequestDispatcher("search-password-info.jsp").forward(request, response);
}
%>
search-password-info.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%
// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":"
+ request.getServerPort() + path + "/";
%>
弹出信息
您的密码是:${user.password}
admin-home.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
管理员主页
<%-- 头部 --%>
欢迎来到图书管理系统
管理员操作
管理用户
管理图书
admin-book-add.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
新增图书
<%-- 头部 --%>
新增图书
admin-book-delete.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ page import="com.sjsq.dao.BookDao" %>
<%@ page import="com.sjsq.dao.impl.BookDaoImpl" %>
<%@ page import="com.sjsq.po.Book" %>
<%@ page import="com.sjsq.service.BookService" %>
<%@ page import="com.sjsq.service.impl.BookServiceImpl" %>
删除图书
<%-- 头部 --%>
<%
// 设置获取注册时的编码为UTF-8
request.setCharacterEncoding("UTF-8");
//获取admin.jsp页面的bookid
Integer bookid = Integer.parseInt(request.getParameter("bookid"));
//引入数据交互层
BookService bookService = new BookServiceImpl();
Book book = new Book();
book = bookService.getBook(bookid);
System.out.println("删除的图书信息:");
System.out.println(book);
boolean flag = bookService.deleteBook(bookid);
if (flag) {
response.sendRedirect("admin-book-manager.jsp");
} else {
response.sendRedirect("error.jsp");
}
%>
admin-book-update.jsp
<%@ page import="com.sjsq.dao.BookDao" %>
<%@ page import="com.sjsq.dao.impl.BookDaoImpl" %>
<%@ page import="com.sjsq.po.Book" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
修改图书
<%-- 头部 --%>
修改图书
<%
//获取admin-home.jsp页面的bookid
Integer bookid = Integer.parseInt(request.getParameter("bookid"));
BookDao dao = new BookDaoImpl();
Book book = new Book();
book = dao.getBook(bookid);
%>
admin-user-add.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
新增用户
<%-- 头部 --%>
新增用户
admin-user-delete.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ page import="com.sjsq.po.User" %>
<%@ page import="com.sjsq.service.UserService" %>
<%@ page import="com.sjsq.service.impl.UserServiceImpl" %>
删除用户
<%-- 头部 --%>
<%
// 设置获取注册时的编码为UTF-8
request.setCharacterEncoding("UTF-8");
//获取admin-user-manager.jsp页面的userid
Integer userid = Integer.parseInt(request.getParameter("userid"));
//引入数据交互层
UserService userService = new UserServiceImpl();
// 获取删除用户的信息
User user = userService.getUser(userid);
System.out.println("删除的用户信息:"+user);
boolean flag = userService.deleteUser(userid);
if (flag) {
response.sendRedirect("admin-user-manager.jsp");
} else {
response.sendRedirect("error.jsp");
}
%>
admin-user-update.jsp
<%@ page import="com.sjsq.po.User" %>
<%@ page import="com.sjsq.service.UserService" %>
<%@ page import="com.sjsq.service.impl.UserServiceImpl" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
修改用户
<%-- 头部 --%>
修改用户
<%
//获取admin-user-home.jsp页面的userid
Integer userid = Integer.parseInt(request.getParameter("userid"));
UserService userService = new UserServiceImpl();
User user = userService.getUser(userid);
%>
user-home.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ page import="com.sjsq.po.Book" %>
<%@ page import="com.sjsq.service.impl.BookServiceImpl" %>
<%@ page import="java.util.List" %>
查看图书
<%-- 头部 --%>
<%--图书信息--%>
<%
// 获取上一个页面传过来的值
String bookname = request.getParameter("bookname");
System.out.println("书名:" + bookname);
// 传入的空字符串处理,null不能使用equals
if (bookname != null && bookname.equals("")) {
bookname = null;
}
BookServiceImpl service = new BookServiceImpl();
List list = service.select(bookname);
%>
图书列表
编号
书名
价格
作者
出版社
<%
String bg = null;
for (int i = 0; i < list.size(); i++) {
Book b = list.get(i);
if (i % 2 == 0) {
bg = "pink";
} else {
bg = "yellow";
}
%>
<%=b.getBookid()%>
<%=b.getBookname()%>
<%=b.getPrice() %>
<%=b.getAuthor() %>
<%=b.getPublish() %>
<%
}
%>
user-comment-add.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ page import="com.sjsq.po.User" %>
<%@ page import="com.sjsq.service.BookShelfService" %>
<%@ page import="com.sjsq.service.impl.BookShelfServiceImpl" %>
<%@ page import="com.sjsq.po.BookShelf" %>
<%@ page import="com.sjsq.po.Book" %>
<%@ page import="com.sjsq.service.BookService" %>
<%@ page import="com.sjsq.service.impl.BookServiceImpl" %>
<%@ page import="com.sjsq.service.CommentService" %>
<%@ page import="com.sjsq.service.impl.CommentServiceImpl" %>
<%@ page import="com.sjsq.po.Comment" %>
加入书架
<%-- 头部 --%>
<%
// 设置获取注册时的编码为UTF-8
request.setCharacterEncoding("UTF-8");
// 获取user信息
User user =(User)session.getAttribute("user");
Integer userid = user.getUserid();
String username = user.getUsername();
//获取book信息
Integer bookid = Integer.parseInt(request.getParameter("bookid"));
BookService bookService = new BookServiceImpl();
Book book = bookService.getBook(bookid);
String bookname = book.getBookname();
String content = request.getParameter("content");
Comment comment = new Comment();
comment.setUserid(userid);
comment.setUsername(username);
comment.setBookid(bookid);
comment.setBookname(bookname);
comment.setComment(content);
session.setAttribute("bookid",bookid);
//引入数据交互层
CommentService commentService = new CommentServiceImpl();
boolean flag = commentService.addComment(comment);
if (flag) {
response.sendRedirect("user-book-info.jsp");
} else {
response.sendRedirect("error.jsp");
}
%>
四、其他
1.其他系统实现
JavaWeb系统系列实现
Java+JSP实现学生图书管理系统
Java+JSP实现学生信息管理系统
Java+JSP实现用户信息管理系统
Java+Servlet+JSP实现航空订票系统
Java+Servlet+JSP实现房屋租赁管理系统
Java+Servlet+JSP实现学生选课管理系统
Java+Servlet+JSP实现学生成绩管理系统
Java+Servlet+JSP实现宠物诊所管理系统
Java+SSM+Easyui实现网上考试系统
Java+Springboot+H-ui实现营销管理系统
Java+Springboot+Mybatis+Bootstrap实现网上商城系统
Java+Swing实现斗地主游戏
Java+Swing实现图书管理系统
Java+Swing实现医院管理系统
Java+Swing实现仓库管理系统
Java+Swing实现考试管理系统
Java+Swing实现通讯录管理系统
Java+Swing实现停车场管理系统
Java+Swing实现学生信息管理系统
Java+Swing实现学生宿舍管理系统
Java+Swing实现学生选课管理系统
Java+Swing实现学生成绩管理系统
Java+Swing实现学校教材管理系统
Java+Swing实现学校教务管理系统
Java+Swing实现企业人事管理系统
Java+Swing实现电子相册管理系统
Java+Swing实现自助取款机(ATM)系统
Java+Swing实现超市管理系统-TXT存储信息
Java+Swing实现宠物商店管理系统-TXT存储信息
点击以下链接获取源码,数据库文件在sql文件下面。
Java+JSP+Mysql实现Web学生图书管理系统
如有侵权请联系我删除。
4.联系博主左侧关注微信公众号,里面有Java教程和一些Java资源。如果此文对您有帮助,请关注加点赞,谢谢!



