项目类型: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管理员信息修改
管理员登录以后可以修改自己的登录密码。
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;