项目类型:JAVA WEB项目
用户类型:管理员+学生
主要技术:Jsp+Servlet+MySQL+Tomcat
前端html+css样式:使用了LayUI
开发工具:Eclipse (Idea导入需要配置信息)
对应环境介绍:JDK1.8+MySQL 5.7+Tomcat(MySQL8.0需要更换mysql-connector8.0.jar)
数据库表:6
功能介绍:图书管理系统,包括了注册登录,学生在线借书、还书、续借,查看借阅统计,管理员管理书籍、添加藏书、管理借阅记录等。其中,每一个学生每一借阅都只能借阅30天,并且可以续借,续借以后,自动延长30天。

项目非开源,是自己原创开发的JavaWeb项目
查看博主公众号——学长源码 了解
其他分类专栏也有不同类型的JavaWeb项目
大学生社团管理系统(获取链接查看)

项目需求分析如下:
在这里插入图片描述

视频演示如下:

【原创项目】基于Jsp+Servlet的图书管理系统

0项目结构设计

1.dao:对数据库的访问,实现了增删改查,SQL语句的定义。
2.entity:定义了实体,并设置对应实体的属性。
3.filter:过滤器,设置字符编码都为utf8,防止乱码出现。
4.service:业务逻辑处理的接口。
5.service.impl:接口的实现类。
5.servlet:处理页面请求。
6.utils:工具类。
7.c3p0-config.xml:JDBC配置。
在这里插入图片描述

1管理员功能介绍

1.1登录

在这里插入图片描述

1.2借阅统计

在线统计所有藏书的借阅情况,并且根据借阅次数进行排名。
在这里插入图片描述

1.3管理员信息修改

管理员登录以后可以修改自己的登录密码。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210709120654689.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzU5MDU5NjMy,size_16,color_FFFFFF,t_

1.4图书分类管理

对图书分类的情况进行增删改查,每一本图书都有对应的图书分类。
在这里插入图片描述
修改和添加图书类型。并能够根据这些分类的名称进行查询。
在这里插入图片描述

1.5图书信息管理

对图书馆内的藏书进行增删改查,并可以根据书籍分类进行搜索。

在这里插入图片描述
可以根据图书类型、图书编号、图书名称、作者进行查询。
在这里插入图片描述

修改和添加图书信息,对书本信息包括编号、书名、库存、类型(从已有书本分类进行选择)等。

在这里插入图片描述

1.5图书借阅管理

此外,分成了两类借阅情况,分别是对于未归还和已经归还的分类。

在这里插入图片描述

在对借阅记录上,使用了分页查询的功能,当前每一页只显示4条记录,并可以在Eclipse里面修改每页显示的条数。
可以根据多种方式进行查询图书借阅的情况。
并可以在后台为用户进行续借、还书。

在这里插入图片描述

如下是所有未还书的记录。

在这里插入图片描述

1.6学生信息管理

能够实现所有的学生增删改查的功能。
在这里插入图片描述

1.6公告管理

​发布公告。并对公告进行增删改查。​
在这里插入图片描述

2用户功能介绍

2.1注册

在这里插入图片描述

2.2个人信息管理

在这里插入图片描述

2.3图书借阅

在这里插入图片描述

2.4图书归还、续借

在这里插入图片描述

2.5个人借阅统计

在这里插入图片描述

3功能实现的代码介绍

以添加书籍功能为例

3.1BookServlet.java类

	/**
	 * 去新增图书页面
	 * @param request
	 * @param response
	 */
	private void toAddBook(HttpServletRequest request,
			HttpServletResponse response) {
		try {
			List<Types> typesList = new TypesServiceImpl().selectTypes();
			request.getSession().setAttribute("typesList", typesList);
			request.getRequestDispatcher("/WEB-INF/views/book/addBook.jsp").forward(request,response);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	

3.2BookService.java类

定义了所有方法的接口

	public interface BookService {
	List<Book> selectBookList(Map<String, Object> map);
	int queryBookCount();
	List<Book> getBookListPage(int pageNum, int pageSize);
	void deleteBook(String id);
	void saveBook(Book book);
	Book selectBookById(String id);
	void updateBook(Book book);
	void saveRecord(Record record);
	void setBookType(Book book);
	Book selectBookByNo(String bookNo);

}

3.3NewsDao.java类

所有方法的实现类,继承BookService中的接口,实现方法。

public class BookServiceImpl implements BookService{

	private BookDao bd = new BookDao();
	@Override
	public List<Book> selectBookList(Map<String, Object> map) {
		return bd.selectBookList(map);
	}
	@Override
	public int queryBookCount() {
		return bd.queryBookCount();
	}
	@Override
	public List<Book> getBookListPage(int pageNum, int pageSize) {
		return bd.getBookListPage(pageNum,pageSize);
	}
	@Override
	public void deleteBook(String id) {
		bd.deleteBook(id);
	}
	@Override
	public void saveBook(Book book) {
		bd.saveBook(book);
	}
	@Override
	public Book selectBookById(String id) {
		return bd.selectBookById(id);
	}
	@Override
	public void updateBook(Book book) {
		bd.updateBook(book);
	}
	@Override
	public void saveRecord(Record record) {
		bd.saveRecord(record);
	}
	@Override
	public void setBookType(Book book) {
		bd.setBookType(book);
	}
	@Override
	public Book selectBookByNo(String bookNo) {
		return bd.selectBookByNo(bookNo);
	}
	

3.4BookDao.java类

数据访问层的方法,增加书籍数据。

	public void saveBook(Book book) {
		try {
            runner.update("insert into book (bookNo,bookName,bookZz,bookCbs,type,price,content,time,bookNum,imgUrl) values (?,?,?,?,?,?,?,?,?,?)",
            		book.getBookNo(),book.getBookName(),book.getBookZz(),book.getBookCbs()
            		,book.getType(),book.getPrice(),book.getContent(),book.getTime(),book.getBookNum(),book.getImgUrl());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
	}
}

4数据库表的建立

在这里插入图片描述

4.1管理员表

-- ----------------------------
-- Table structure for admin
-- ----------------------------
DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `userName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `nickName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `pwd` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

4.2公告表

-- ----------------------------
-- Table structure for board
-- ----------------------------
DROP TABLE IF EXISTS `board`;
CREATE TABLE `board`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `fbsj` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;


4.3书籍表

-- ----------------------------
-- Table structure for book
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `bookNo` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图书编号',
  `bookName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '书名',
  `bookZz` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '作者',
  `bookCbs` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '出版社',
  `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类型',
  `price` double(10, 2) NULL DEFAULT NULL COMMENT '价格',
  `content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '简介',
  `state` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '状态 1空闲 2被借出',
  `time` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '录入时间',
  `bookNum` int(11) NULL DEFAULT NULL COMMENT '数量',
  `imgUrl` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

4.4借阅记录表

-- ----------------------------
-- Table structure for record
-- ----------------------------
DROP TABLE IF EXISTS `record`;
CREATE TABLE `record`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `bookId` int(11) NULL DEFAULT NULL,
  `bookName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `studentId` int(11) NULL DEFAULT NULL,
  `studentName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `studentPhone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `bookPrice` double(10, 2) NULL DEFAULT NULL,
  `bookType` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `bookNo` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `jcTime` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '借书时间',
  `normalTime` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '正常归还时间(借书后30天内)',
  `actualTime` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '实际归还时间',
  `timeOut` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否超时(1否 2 是)',
  `money` double(10, 2) NULL DEFAULT NULL COMMENT '需支付金额',
  `state` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '状态 1未还书 2已还书',
  `days` int(10) NULL DEFAULT NULL COMMENT '借书天数',
  `isxj` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否已经续借 1没有续借 2已经续借',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

4.5学生表

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `sex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `classes` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '年级',
  `time` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '入学年月',
  `xy` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学院',
  `phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `pwd` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `stno` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学号',
  `state` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否能够借阅书籍 1是 2否',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

4.6书籍类型表

-- ----------------------------
-- Table structure for types
-- ----------------------------
DROP TABLE IF EXISTS `types`;
CREATE TABLE `types`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `cjr` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `cjsj` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐