**图书管理系统**
# 1. 项目介绍
通过一段时间对SSM整合的学习,对基本理论以及主要知识点的掌握,实现简易图书管理系统,当然肯定有很多可以改进的地方。之前没有记录SSM整合的过程,这次刚好项目有更深刻的理解。以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下。这次,先说说三大框架整合过程。个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助。不过,如果用都不会,谈思想就变成纸上谈兵了!!!先技术,再思想。实践出真知。
项目中相关的配置文件,大家可以拿来直接copy ,只需要改改里面的包名以及Mapper.xml配置即可使用。
分为管理员、用户和图书模块。其中管理员实现了登录,对读者与图书的增删改查,还有管理读者的图书借阅、续借、归还、预约和逾期处理。
该项目已实现功能:
- 管理员的登录与退出,登录错误提示
- 图书的新增,修改,下架,彻底删除,重新上架,分页显示,按照图书标题与作者名字模糊查询
- 还有其它未完成的功能可自由发挥,包括登录后的欢迎页面可自由发挥
- 该系统执行过程无任何报错,如果出现错误请仔细检查配置
## 1.2. 软件架构
MyEclipse+SSM框架+JSP+MySQL8+Tomcat8.5+Maven
## 1.3. 使用说明
1. 借阅:同一本书只可借阅一本,每次可借30天
2. 续借:同一本书只可续借一次,每次续借15天
3. 归还:在归还日期内方可归还图书
4. 预约:当图书余量为0时,可预约该图书
5. 逾期处理:需缴费,分为缴费并还书和缴费未还书
6. 上架图书:需要输入图书基本信息和上架数量
# 2.数据库设计
## 2.1表结构
**管理员表**
![image-20210908222915667](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210908222915667.png)
**图书表**
![image-20210908222937289](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210908222937289.png)
**借阅记录表**
![image-20210908222957375](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210908222957375.png)
**分类表**
![image-20210908223013287](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210908223013287.png)
## 2.2ER图
![image-20210908223055715](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210908223055715.png)
# 3.项目实现
## 3.1.搭建数据库
创建一个存放书籍数据的数据库(library_oa),并在该数据库中建立一个名为ms_book的表,代码如下:
```sql
DROP TABLE IF EXISTS `ms_book`;
CREATE TABLE `ms_book` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL COMMENT '书名',
`ISBN` varchar(255) DEFAULT NULL COMMENT '统一使用07年新颁布的13位数字',
`author` varchar(255) DEFAULT NULL COMMENT '作者',
`introduction` varchar(255) DEFAULT NULL COMMENT '简介',
`price` varchar(255) DEFAULT NULL COMMENT '价格',
`publish_time` varchar(255) DEFAULT NULL COMMENT '出版时间',
`category_id` int(10) DEFAULT NULL COMMENT '类别',
`image` varchar(255) DEFAULT NULL COMMENT '图片url',
`create_time` date DEFAULT NULL COMMENT '上架时间',
`create_admin` varchar(255) DEFAULT NULL COMMENT '上架管理员',
`update_pre_admin` varchar(255) DEFAULT NULL COMMENT '上一次修改信息的管理员',
`del_flg` int(1) DEFAULT NULL,
`sum` int(11) NOT NULL,
`remainder` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of `ms_book`
-- ----------------------------
BEGIN;
INSERT INTO `ms_book` VALUES ('1', '活着', '9787506365437', '余华', '《活着》是作家余华的代表作之一,讲述了在大时代背景下,随着内战、三反五反,大跃进,文化大革命等社会变革,徐福贵的人生和家庭不断经受着苦难,到了最后所有亲人都先后离他而去,仅剩下年老的他和一头老牛相依为命。', '25.30', '1923年6月', '1', '', '2019-04-13', 'Bob', '大天狗', '1', '10', '7'), ('3', '2', '2', '2', '2', '2', '2020-05-21', '1', '38a77897-124f-403d-96da-942192b3fa15', '2020-05-21', 'Bob', 'Bob', '1', '2', '0'), ('4', '3', '3', '3', '3', '3', '2020-05-21', '2', '38be617c-5aa3-41b3-bf7e-f343d4a17cf7', '2020-05-21', 'Bob', 'Bob', '1', '3', '1'), ('5', '4', '4', '4', '4', '4', '2020-05-22', '3', 'f4bc6a21-64fb-4ce9-a9ec-fec193362c3d', '2020-05-21', 'Bob', 'Bob', '1', '4', '2'), ('6', '5', '5', '5', '5', '5', '2020-05-21', '4', '3be0532c-48a2-4ea8-b6e0-b1053f18e871', '2020-05-21', 'Bob', 'Bob', '1', '5', '4'), ('7', '6', '6', '6', '6', '6', '2020-05-21', '5', '46ed11c5-5819-4d23-b58a-0a96084e3a12', '2020-05-21', 'Bob', 'Bob', '1', '6', '5'), ('8', '7', '7', '7', '7', '7', '2020-05-21', '6', '63dcaf76-0f07-476b-a529-e0680b15e832', '2020-05-21', 'Bob', 'Bob', '1', '7', '7'), ('9', '8', '8', '8', '8', '8', '2020-05-28', '7', '7ef89434-7c77-47d8-8a2a-2f72866f0ddc', '2020-05-21', 'Bob', 'Bob', '1', '8', '8'), ('10', '9', '9', '9', '9', '9', '2020-05-21', '8', '425b7fd7-c1d3-4bc8-9390-c8d3d4baef7a', '2020-05-21', 'Bob', 'Bob', '1', '9', '9'), ('11', '10', '10', '10', '10', '10', '', '9', 'f4d173fd-b194-4a07-8663-0b47b7e8ab6f', '2020-05-21', 'Bob', 'Bob', '1', '10', '10'), ('12', '11', '11', '11', '11', '11', '2020-05-22', '8', '9500c8d2-ce65-4970-9b3d-3220fe9ed159', '2020-05-21', 'Bob', 'Bob', '1', '11', '11');
COMMIT;
```
写好数据库的配置文件database.properties,该文件可以放在resources目录下,代码如下:
```xml
url=jdbc:mysql://localhost:3306/library_oa?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
driver=com.mysql.cj.jdbc.Driver
username=root
password=123456
initialSize=5
maxActive=50
```
在Maven中导入数据库连接所需要的驱动包(mysql-connector),代码如下:
```xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
```
## 3.2.实现pojo层
在项目的java目录下新建pojo包,因为数据库中只有一个表,所以只需要编写一个实体类MsBook即可,代码如下所示:
```java
public class MsBook implements Serializable {
private Integer id;
private String title;
private String isbn;
private String author;
private String introduction;
private String price;
private String publishTime;
private Integer categoryId;
private String image;
private Date createTime;
private String createAdmin;
private String updatePreAdmin;
private Integer delFlg;
private Integer sum;
private Integer remainder;
public Integer getSum() {
return sum;
}
public void setSum(Integer sum) {
this.sum = sum;
}
public Integer getRemainder() {
return remainder;
}
public void setRemainder(Integer remainder) {
this.remainder = remainder;
}
private static final long serialVersionUID = 1L;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title == null ? null : title.trim();
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn == null ? null : isbn.trim();
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author == null ? null : author.trim();
}
public String getIntroduction() {
return introduction;
}
public voi