基于JSP和MySQL实现的图书管理系统

基于jsp+servlet+mysql的图书管理系统 1,图书管理系统模块介绍 该系统分为三种角色,分别为超级管理员,图书管理员及读者,以下我们根据句三个不同角色分别介绍对应的功能模块

本文包含相关资料包-----> 点击直达获取<-------

基于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 默认的配置,  -->

com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/hd_book?charaterEncoding=utf8 root 123456

<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>

50 100 50 1000

<!-- 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://bishedaima.com/yuanma/35341.html

相关推荐

发表回复

登录后才能评论