一·、课程设计题目
图书管理系统
二、课程设计目的
通过对图书管理系统的系统分析、系统设计、编码和调试等工作的实践,熟悉管理信息系统的开发过程、设计方法及编程技术,熟悉掌握数据库设计的基本理论及方法。
三、需求概述
图书管理系统的基本功能需求包括:读者管理、图书管理、借阅管理、用户登录与用户管理等;其它功能需求包括:读者查询与预约借书 、统计与报表 、数据备份 、书架管理 、期刊管理 、期刊借阅 、论文管理 、论文借阅 等。(* 表示留待以后的迭代周期完成,下同)
四、设计准备
系统准备
操作系统:Windows 10
数据库系统:mysql
客户端开发工具:IDEA,Navicat
知识准备
熟悉mysql的使用;
熟悉Java语言及其数据库编程技术。
了解:迭代式开发过程、UML设计文档、设计模式;以及图书馆相关业务知识。
迭代式开发
迭代式开发(统一过程UP) 系统开发被组织成一系列固定的短期(一段为2-6周)小项目,称为迭代;每次迭代都产生可执行的系统。每次迭代都包括计划、需求、分析、设计、编码、测试等过程以及文档编写工作;第一次迭代考虑系统的核心功能,随后的迭代逐步扩展系统功能;每次迭代的成果(含需求、分析、设计、代码和文档等)均为下一次迭代的工作基础,直至满足最终需求。这种开发过程是基于面向对象方法的。
技术栈
前端: Thymeleaf、Layui、Ajax、JQuery
后端 : springboot , mybatis
开发环境: IDEA 、SpringBoot 2.3、Maven
数据库:MySQL 5.7
五、系统分析与设计
系统功能分析
数据库分析与设计
概念模型:ER图
数据模型:表结构
表模型
表格
Admin表(管理员表) | |||
---|---|---|---|
字段序号 | 字段名称 | 字段类型 | 字段说明 |
1 | admin_id | Int | 管理员id【主键递增】 |
2 | admin_name | Varchar(20) | 管理员名称,非空 |
3 | admin_pwd | Varchar(20) | 管理员密码,非空 |
4 | admin_email | Varchar(20) | 管理员邮箱,默认为null |
User表(用户表) | |||
---|---|---|---|
字段序号 | 字段名称 | 字段类型 | 字段说明 |
1 | user_id | int | 用户id(主键递增) |
2 | user_name | varchar(20) | 用户名称,非空 |
3 | user_pwd | varchar(20) | 用户密码,非空 |
4 | user_email | varchar(30) | 用户邮箱,默认为null |
5 | user_dept | int | 用户所在院系(外键) |
book表(书籍表) | |||
---|---|---|---|
字段序号 | 字段名称 | 字段类型 | 字段说明 |
1 | book_id | int | 书籍id(主键递增) |
2 | book_name | varchar(20) | 书籍名称,非空 |
3 | book_author | varchar(20) | 书籍作者 |
4 | book_public | varchar | 出版社 |
5 | book_category | int | 书籍类别,建立非空索引 |
6 | book_price | int | 书本价格 |
7 | book_introduction | varchar(100) | 书本描述 |
book_category(书籍类别) | |||
---|---|---|---|
字段序号 | 字段名称 | 字段类型 | 字段说明 |
1 | category_id | int | 类别id(主键递增) |
2 | category_name | varchar(20) | 类别名称 |
borrowingbooks(借阅记录表) | |||
---|---|---|---|
字段序号 | 字段名称 | 字段类型 | 字段说明 |
1 | id | int | 借阅记录编号(主键) |
2 | user_id | int | 记录所属用户(外键) |
3 | book_id | int | 记录对应书籍(外键) |
4 | data | data | 借书时间 |
5 | back_data | data | 还书时间 |
dept(学生院系表) | |||
---|---|---|---|
字段序号 | 字段名称 | 字段类型 | 字段说明 |
1 | dept_id | int | 院系id(主键) |
2 | dept_name | varchar(20) | 院系名字 |
具体实现
数据库具体实现
1、 创建数据库
sql
CREATE DATABASE IF NOT EXISTS library-manager-system default charset utf8mb4 COLLATE utf8mb4_general_ci;
2、 创建数据模型对应数据表
```sql Dept表
CREATE TABLE
dept
(
dept_id
int NOT NULL AUTO_INCREMENT,
dept_name
varchar(20) DEFAULT NULL,
PRIMARY KEY (
dept_id
)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
Admin表
CREATE TABLE
admin
(
admin_id
int NOT NULL AUTO_INCREMENT,
admin_name
varchar(20) DEFAULT NULL,
admin_pwd
varchar(20) DEFAULT NULL,
admin_email
varchar(20) DEFAULT NULL,
PRIMARY KEY (
admin_id
)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
book_category表
CREATE TABLE
book_category
(
category_id
int NOT NULL AUTO_INCREMENT,
category_name
varchar(20) DEFAULT NULL,
PRIMARY KEY (
category_id
)
) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8;
User表
CREATE TABLE
user
(
user_id
int NOT NULL AUTO_INCREMENT,
user_name
varchar(20) DEFAULT NULL,
user_pwd
varchar(20) DEFAULT NULL,
user_email
varchar(30) DEFAULT NULL,
user_dept
int DEFAULT NULL,
PRIMARY KEY (
user_id
),
KEY
user_dept_key
(
user_dept
),
CONSTRAINT
user_dept_key
FOREIGN KEY (
user_dept
) REFERENCES
dept
(
dept_id
)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;
Book表
CREATE TABLE
book
(
book_id
int NOT NULL AUTO_INCREMENT,
book_name
varchar(20) NOT NULL,
book_author
varchar(20) DEFAULT NULL,
book_publish
varchar(20) DEFAULT NULL,
book_category
int DEFAULT NULL,
book_price
double DEFAULT NULL,
book_introduction
varchar(100) DEFAULT NULL,
PRIMARY KEY (
book_id
),
KEY
book_category
(
book_category
) USING BTREE,
CONSTRAINT
book_ibfk_1
FOREIGN KEY (
book_category
) REFERENCES
book_category
(
category_id
)
) ENGINE=InnoDB AUTO_INCREMENT=74 DEFAULT CHARSET=utf8;
borrowingbooks表
CREATE TABLE
borrowingbooks
(
id
int NOT NULL AUTO_INCREMENT,
user_id
int DEFAULT NULL,
book_id
int DEFAULT NULL,
date
date DEFAULT NULL,
back_data
date DEFAULT NULL,
PRIMARY KEY (
id
),
KEY
user_id
(
user_id
) USING BTREE,
KEY
book_id
(
book_id
) USING BTREE,
CONSTRAINT
borrowingbooks_ibfk_1
FOREIGN KEY (
book_id
) REFERENCES
book
(
book_id
),
CONSTRAINT
borrowingbooks_ibfk_2
FOREIGN KEY (
user_id
) REFERENCES
user
(
user_id
)
) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=utf8; ```
三层架构
基于B/S的三层mvc架构
三层架构是指:视图层View、服务层Service、持久层Dao,分别完成不同的功能。
View层:用于接收用户提交请求的代码在这里编写。
Service层:系统的业务逻辑主要在这里编写。
Dao层:直接操作数据库的代码在这里编写。
为了更好的降低各层间的耦合度,在三层架构程序设计中,采用面向抽象编程。即上层对下层的调用,是通过接口实现的。而下层对上层的真正服务提供者,是下层接口的实现类。服务标准(接口)是相同的,服务提供者(实现类)可以更换。这就实现了层间的耦合。
搭建此项目的mvc三层架构
如图,在IDEA中创建maven项目目录结构
其中每一个包对应三层架构中一层
Controller:View层,处理用户请求
Domain: model层 实体类模块
Mapper:DAL数据访问层
Service:BBL业务逻辑层
类与页面的设计
前端设计:
静态资源
静态资源都放在static包下:如图片,样式,图标等
页面资源
Admin:存放管理员页面
User:存放用户页面
Commom:存放公共页面资源
后端设计
视图层
表示层VIEW | AdminController | 处理管理员相关请求 |
---|---|---|
BookController | 处理书籍相关请求 | |
BorrowingController | 处理借阅相关请求 | |
UserController | 处理用户相关请求 |
业务逻辑层
Model层
Model层设计主要依赖于orm思想
ORM Object Relational Mapping 对象关系映射,是为了解决面向对象的类,与关系数据库的表之间,存在的不匹配的现象,通过使用描述对象和关系之间映射的元数据,在程序中的类对象,与关系数据库的表之间建立持久的关系,用于在程序中描述数据库表。本质上就是将数据从一种形式转换到另外一种形式。
其中包括对象实体类和传输对象类还有条件对象
实体对象:与数据库表先对应的类
传输对象:用于在mvc三层间数据的传输
条件对象:通过对实体对象进行条件的包装,使得更灵活的进行数据库的增删改查操作,后缀example,如
以下各实体类对应表
Admin表
Book表
Brrowing表
其中核心就是sql字段类型和java字段类型之间的转换
同理,其他数据相关表均可知道。此处略。
DAL层设计:(也称dao层或者mybats中的mapper层)
DAL层的类主要实现对应数据表的插、删、改、查等操作,以及存储过程的调用系统实现
其中每一个mapper接口都对应一个实现他的mybatis映射文件
AdminMapper
能过通过条件对象对数据表进行各种参数的增删改查(包括用户和书籍以及借阅情况)
BookMapper:对书籍的增删改查操作
BorrowingBooksMapper:对借阅记录的增删改查的各种操作
userMapper:拥有用户权限能进行的各种操作。
其他的mapper类(DAO类)也相似。
六、系统实现
数据库实现(sql)脚本
```sql SET FOREIGN_KEY_CHECKS=0;
-- Table structure for ms_admin
DROP TABLE IF EXISTS
ms_admin
;
CREATE TABLE
ms_admin
(
id
int(11) NOT NULL AUTO_INCREMENT,
admin_number
varchar(11) NOT NULL COMMENT '登录号',
admin_pwd
varchar(255) DEFAULT NULL COMMENT '登录密码',
admin_name
varchar(255) DEFAULT NULL COMMENT '名称',
login_pre_time
date DEFAULT NULL COMMENT '上次登录时间',
del_flg
int(1) DEFAULT NULL COMMENT '是否删除(标记用)',
PRIMARY KEY (
id
)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- Records of ms_admin
INSERT INTO
ms_admin
VALUES ('1', '1101', '123456', 'Bob', '2019-04-12', '1');
INSERT INTO
ms_admin
VALUES ('2', '1102', '123456', '大天狗', '2019-04-09', '1');
INSERT INTO
ms_admin
VALUES ('3', '1103', '123456', '酒吞童子', '2019-01-09', '1');
-- Table structure for ms_book
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,
PRIMARY KEY (
id
)
) ENGINE=InnoDB AUTO_INCREMENT=344 DEFAULT CHARSET=utf8;
-- Records of ms_book
INSERT INTO
ms_book
VALUES ('1', '活着', '9787506365437', '余华', '《活着》是作家余华的代表作之一,讲述了在大时代背景下,随着内战、三反五反,大跃进,文化大革命等社会变革,徐福贵的人生和家庭不断经受着苦难,到了最后所有亲人都先后离他而去,仅剩下年老的他和一头老牛相依为命。', '25.30', '1923年6月', '1', '', '2019-04-13', 'Bob', '大天狗', '1');
-- Table structure for ms_category
DROP TABLE IF EXISTS
ms_category
;
CREATE TABLE
ms_category
(
id
int(11) NOT NULL AUTO_INCREMENT,
category_id
int(11) DEFAULT NULL COMMENT '类别号',
category_name
varchar(255) DEFAULT NULL COMMENT '类别名称',
del_flg
int(1) DEFAULT NULL COMMENT '0表示已删除,1表示未删除',
PRIMARY KEY (
id
)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
-- Records of ms_category
INSERT INTO
ms_category
VALUES ('1', '1', '小说', '1');
INSERT INTO
ms_category
VALUES ('2', '2', '文学', '1');
INSERT INTO
ms_category
VALUES ('3', '3', '动漫', '1');
INSERT INTO
ms_category
VALUES ('4', '4', '文化', '1');
INSERT INTO
ms_category
VALUES ('5', '5', '传记', '1');
INSERT INTO
ms_category
VALUES ('6', '6', '艺术', '1');
INSERT INTO
ms_category
VALUES ('7', '7', '童书', '1');
INSERT INTO
ms_category
VALUES ('8', '8', '古籍', '1');
INSERT INTO
ms_category
VALUES ('9', '9', '历史', '1');
```
程序界面
管理员页面
管理员首页
添加书籍页面
通过类别查找书籍页面
查询用户页面
新增用户界面
借阅记录页面
修改信息页面
用户界面
用户登录首页
用户书籍借阅记录页面
用户借书页面
用户还书页面
查询书籍页面
个人信息以及修改页面
七、总结
课程设计小结
数据库课程设计,不能急于开始编码。我在本次的数据库课程设计中,一开始并没有认 真进行需求分析以及数据库的设计,而是急于去编码实现界面等前台的东西。结果编到第二 个界面的时候,发现数据库设计不合理,只好重新回去修改。我的解决方法是:详细进行需 求分析,争取做到对整个系统了然于胸;详细进行系统功能划分,分到最小模块为止,然后 再一个一个模块添加代码即可,当然,要考虑模块与模块之间的耦合程度以及模块与模块之 间的信息共享。 在本次数据库课程设计中遇到不少困难,例如:在编写学生借用图书的模块的时候,由 于原来没有用过存储过程,在后台编写以及前台调用的时候都没有头绪;在编写图书信息管 理模块时,dataview 的更新总也实现不了等等诸如此类的困难很多。在这时,我一般采取 以下措施:上网查资料;在网上论坛上提问题;和同学讨论;在图书馆查找相关图书资料。 总之,这些是我比较常用的方法。最重要的一点是,遇到困难时的心态要平和,冷静地去查 找问题并解决问题。
参考文献
- 面向小学校园的图书分享管理系统的设计与实现(华中科技大学·杨凡)
- 基于SSH架构的高校自助化图书管理系统的设计与实现(大连理工大学·杨议)
- 基于Web的图书管理系统的设计与实现(西安电子科技大学·丁侃)
- 基于B/S架构的图书管理系统设计与实现(西安电子科技大学·龚玉)
- 图书馆管理信息系统的设计与实现(华东师范大学·朱瑞)
- 基于J2EE的图书管理系统的分析与设计(吉林大学·李妍)
- 基于B/S架构的图书管理系统的设计与实现(电子科技大学·郭汝奇)
- 基于ASP.NET技术的中山图书Web管理系统的设计与实现(江西财经大学·陈宇)
- 图书综合管理系统(吉林大学·王宇)
- 基于JSP的艺术院校图书管理系统的设计与实现(西安电子科技大学·王擒龙)
- 基于B/S架构的图书管理系统(山东大学·彭鹏)
- 基于ASP.NET技术的中山图书Web管理系统的设计与实现(江西财经大学·陈宇)
- 基于RBAC的SSH架构下的图书管理应用研究(大连理工大学·姜楠)
- 复旦大学数字图书馆个人图书管理系统的设计与实现(电子科技大学·陆卫国)
- 高校图书管理系统的设计与实现(东北大学·黄鑫)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码项目助手 ,原文地址:https://bishedaima.com/yuanma/35736.html