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

相关推荐

  • 中小型医院网站

    这是一个🔥🔥基于SpringBoot框架的中小型医院网站设计与实现🔥🔥的项目源码,开发语言Java,框架使用的SpringBoot+vue技术,开发环境Idea/Eclipse
    2024年05月23日
    3 1 1
  • 基于Springboot和Redis实现的在线选课系统

    基于Springboot和Redis实现的在线选课系统 1,项目简介 1,1 介绍 毕业设计真的就是demo吗?作为工作前的最后一个校园项目,毕业设计应当尽可能的贴近企业实战
    2024年05月14日
    4 1 1
  • 基于java的捕鱼达人游戏设计与实现课程设计源码

    基于Java的捕鱼达人游戏设计与实现课程设计源码 基于Java的捕鱼游戏达人设计与实现是一项具有挑战性和趣味性的课程设计,随着计算机技术的不断发展,游戏设计成为了一个备受关注的领域
    2024年05月07日
    3 1 1
  • JSP+SQL服装销售系统

    JSP+SQL 服装销售系统 1 设计工具 Java 版本:1,8 数据库:MySQL 框架:Spring + Spring MVC + MyBatis 服务器:Tomcat 前端解析框架:Thymeleaf 开发工具:Idea 2017 版本管理工具:Maven 版本控制工具:GitHub 2 详细设计 数据字典 用户信息表 字段名 字段类型 是否可为空 备注 Id Int(11) 否 主键 Modify Datetime 是 修改时间 Username Varchar(50) 否 用户昵称 Phone Char(11) 否 用户手机号码 realName Varchar(20) 是 用户真实姓名 Clazz Varchar(20) 是 用户所在班级 Sno Char(12) 是 用户学号 Dormitory Varchar(20) 是 宿舍号 Gender Char(2) 是 性别 Createtime Datetime 是 创建时间 Avatar Varchar(200) 是 头像 用户密码表 字段名 字段类型 是否可为空 备注 Id Int 否 主键 Modify Datetime 是 修改时间 Password Varchar(24) 否 用户密码 Uid Int 否 用户 id 商品表 字段名 字段类型 是否可为空 备注 Id Int(11) 否 主键 Modify Datetime 是 修改时间 Name Varchar(50) 否 商品名称 Level Int 否 商品成色 Remark Varchar(255) 是 商品详细信息 Price Decimal(0
    2024年05月14日
    44 1 4
  • 密码学课程设计之Python

    CryptographyLab 编译并运行 ```bash git clone git@github,com:Kiprey/CryptographyLab
    2024年05月14日
    4 1 1
  • 基于Python制作的2048小游戏

    基于 Python 制作的 2048 小游戏 导语 感觉好久没和大家一起写小游戏玩了,今天恰巧有空,那就过来补一期 python 制作小游戏系列的文章呗
    2024年05月14日
    1 1 1
  • 基于SpringBoot框架的技术的智慧生活商城

    这是一项利用🔥🔥SpringBoot框架构建的智慧生活购物中心的开发项目,源代码提供,项目采用Java编程语言,结合SpringBoot和Vue技术栈进行开发,适用于Idea或Eclipse集成开发环境
    2024年05月23日
    5 1 1
  • 基于Jsp和MySQL的数据统计系统

    基于Jsp和MySQL的数据统计系统 1, 概述 1,1 开发背景 参照 Java 大作业的要求,需要实现一个面向自贸试验区领导机关的统计系统,实现以下功能:采集片区的数据信息(重点为企业注册登记信息)
    2024年05月14日
    13 1 6
  • 基于SpringBoot框架的医护人员排班系统

    这是一个采用🔥🔥SpringBoot核心框架构建的医疗人员排班管理系统源代码,编程语言为Java,该项目巧妙融合了SpringBoot技术和Vue,js前端框架,开发工具涵盖Idea或Eclipse
    2024年05月23日
    3 1 1
  • 基于Web技术实现多人博客平台

    一,需求分析 博客是网络交流的一种重要形式,国内拥有许多专业的博客平台,如 CSDN 等, 为了实现小规模用户之间文章的分享,多人之间的交流互动,熟悉博客平台的开发流程
    2024年05月14日
    3 1 1

发表回复

登录后才能评论