基于jsp+servlet+mysql的图书管理系统
1.图书管理系统模块介绍
该系统分为三种角色,分别为超级管理员、图书管理员及读者,以下我们根据句三个不同角色分别介绍对应的功能模块。
读者
-
用户的登入及登出
-
图书馆所有图书信息及当前库存查询
-
查询当前用户所有借阅图书状态
图书管理员
-
用户的登入及登出
-
查看所有图书信息
-
有库存图书借书功能
-
新进书籍入库登记
-
所有借阅记录查询
-
根据用户名或者图书名称查询借阅记录(模糊查询)
-
借阅记录删除
-
未归还图书还书
-
未归还图书续借
超级管理员
-
用户的登入及登出
-
用户信息管理
- 新用户录入
- 现有用户信息的修改、删除
-
当前所有用户信息查询
-
图书管理
- 新书入库
- 现有书籍信息修改
- 现有书籍丢失或损毁后信息注销
2.数据库分析
2.1 表结构
User用户信息表
book图书表
operatebook图书借阅信息表
role权限表
2.2 E-R图
用户User表与图书Book为m:n多对多关系,此处采用拆分中间表(图书借阅表)的办法,使用户表book与借阅表operatebook为1:m(一对多关系),同时使图书book表与借阅operatebook表为1:n(一对多关系)。
3.技术栈
技术基础:JDK8、JSP+Servlet、C3P0数据库连接池,apache的DBUtil作为dao(数据访问层的低层),面向接口编程(数据访问层采用接口层dao,以及接口实现层dao.impl),使用JSTL标签以及EL表达式实现页面展示及操作。
-
服务器 :Tomcat8
-
数据库类型 :MySQL
-
操作系统 :Windows
4.项目实现
项目结构图
4.1 编写实体类
```java package com.mage.bean;
public class Book { private int bookid;//图书ID private String bookname;//图书名称 private String publish;//出版社 private int bookcount;//图书库存 private String booktype;//图书类型 private String author;//作者
public Book() {
super();
}
public int getBookid() {
return bookid;
}
public void setBookid(int bookid) {
this.bookid = bookid;
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public String getPublish() {
return publish;
}
public void setPublish(String publish) {
this.publish = publish;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getBookcount() {
return bookcount;
}
public void setBookcount(int bookcount) {
this.bookcount = bookcount;
}
public String getBooktype() {
return booktype;
}
public void setBooktype(String booktype) {
this.booktype = booktype;
}
public Book(int bookid, String bookname, String publish, int bookcount, String booktype, String author) {
super();
this.bookid = bookid;
this.bookname = bookname;
this.publish = publish;
this.bookcount = bookcount;
this.booktype = booktype;
this.author = author;
}
@Override
public String toString() {
return "Book [bookid=" + bookid + ", bookname=" + bookname + ", publish=" + publish + ", author=" + author
+ ", bookcount=" + bookcount + ", booktype=" + booktype + "]";
}
} ```
4.2 编写数据持久层
java
public interface BookDao {
int PAGE_SIZE = 5; //每页显示多少条记录
/**
* 查询当页的用户数
* @param currentPage
* @return
* @throws SQLException
*/
List<Book> findBookByPage(int currentPage) throws SQLException;
PageBean findBookByPages(int currentPage) throws SQLException;
List<Book> findAll() throws SQLException ;
/**
* 添加用户
* @param Book 要添加到数据库的用户对象
* @throws SQLException
*/
void insert(Book Book) throws SQLException ;
/**
* 模糊查询
* @param Bookname
* @param Booktype
* @return
* @throws SQLException
*/
List<Book> searchBook(String Bookname,String Booktype) throws SQLException ;
/**
* 删除用户
* @param Bookid
* @throws SQLException
*/
void delete(int Bookid) throws SQLException ;
/**
* 更改用户数据
* @param Book
* @throws SQLException
*/
void update (Book Book) throws SQLException ;
//根据id找书
Book findBookById(int Bookid) throws SQLException;
//查询总记录数
int findCount()throws SQLException ;
}
4.3 业务层
```java @WebServlet("/ReturnBooksServlet") public class ReturnBooksServlet extends HttpServlet { private static final long serialVersionUID = 1L;
public ReturnBooksServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
System.out.println(request.getParameter("userid"));
System.out.println(request.getParameter("bookid"));
//1. 接收id
int Bookid = Integer.parseInt(request.getParameter("bookid"));
System.out.println(Bookid);
//2. 查询数据
BookDao service = new BookDaoImpl();
Book Book = service.findBookById(Bookid);
System.out.println(Book.toString());
//3. 显示数据
//存数据
request.setAttribute("Book", Book);
if(request.getParameter("userid")==null) {
request.getRequestDispatcher("Book/ReturnBooks.jsp").forward(request, response);
}else {
int userid = Integer.parseInt(request.getParameter("userid"));
//2. 查询数据
UserDao Userservice = new UserDaoImpl();
User user = Userservice.findUserById(userid);
System.out.println(user.toString());
//3. 显示数据
//存数据
request.setAttribute("user", user);
OperaBookDao bookService = new OperaBookDaoImpl();
bookService.ReturnBooks(Book, user, new Date());
request.getRequestDispatcher("/BorrowNoteServlet").forward(request, response);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
} ```
4.4 数据库配置
```java
<!-- default-config 默认的配置, -->
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">200</property>
<!-- intergalactoApp adopts a different approach to configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property>
<!-- he's important, but there's only one of him -->
<user-overrides user="master-of-the-universe">
<property name="acquireIncrement">1</property>
<property name="initialPoolSize">1</property>
<property name="minPoolSize">1</property>
<property name="maxPoolSize">5</property>
<property name="maxStatementsPerConnection">50</property>
</user-overrides>
```
5.项目展示
登录页
5.1 图书管理员
首页
添加图书
借阅图书
借阅记录查询
退出
5.2 读者
图书信息浏览
借阅记录
5.3 系统管理员
首页
用户信息管理
图书信息管理
添加用户
添加图书
6.难点总结
不同角色用户在相同页面显示不同菜单。此处设计用户信息表,角色信息表,菜单信息表三张权限表,其中:用户表与角色表为m:n多对多关系(一个用户可以有多个角色,比如一个用户可以是管理员角色,同时可以是读者角色,同样一个角色可以分配给多个用户,比如很多个用户都可以是读者,因此是m:n关系),角色与菜单表关系为m:n多对多关系(一个读者角色可以查看所有库存图书菜单,也可以具有查看自身借阅信息菜单,因此也是m:n的多对多关系)。为了简化用户user,角色role,菜单menu的关系,以及逻辑,数据库仅仅一张用户user表,记录用户信息及角色。而角色和菜单则体现在登录后的首页与登录用户的角色(此处为usertype)的关系。
参考文献
- 基于Web的图书管理系统的设计与实现(西安电子科技大学·丁侃)
- 基于J2EE的远程网络教育系统研究与实现(电子科技大学·陈南荪)
- 基于JSP的购书系统的设计与实现(电子科技大学·况晶)
- 基于JSP的网上书店交易系统的设计与实现(吉林大学·徐迎新)
- 基于JSP的高校图书管理系统开发和实现(电子科技大学·朱丽萍)
- 基于SSH架构的高校自助化图书管理系统的设计与实现(大连理工大学·杨议)
- 图书综合管理系统(吉林大学·王宇)
- 高校图书管理系统的设计与实现(东北大学·黄鑫)
- 基于JSP的购书系统的设计与实现(电子科技大学·况晶)
- 基于JSP的艺术院校图书管理系统的设计与实现(西安电子科技大学·王擒龙)
- 基于B/S架构的图书管理系统(山东大学·彭鹏)
- 基于B/S架构的图书管理系统的设计与实现(电子科技大学·郭汝奇)
- 基于JSP的网上书店交易系统的设计与实现(吉林大学·徐迎新)
- 山西电大图书管理信息系统的设计与实现(北京工业大学·李莹)
- 山西电大图书管理信息系统的设计与实现(北京工业大学·李莹)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码驿站 ,原文地址:https://m.bishedaima.com/yuanma/35341.html