# 图书信息管理系统
## 一、实验目的
1 功能描述
设计一个图书信息管理系统,使之具有新建图书信息、显示、插入、删除、查询和排序等功能。
2 具体设计要求
图书信息包括:图书编号、书名、作者名、出版单位、出版时间、价格等。
系统以菜单方式工作:
① 图书信息录入(要求图书信息用文件保存)
② 图书信息浏览
③ 插入图书信息
④ 查询(可以有多种查询方式,如按书名查询、按作者名查询、按价格查询等);
⑤ 排序(可以按图书编号排序、按书名排序、按出版时间排序、按价格排序等);
⑥ 修改图书信息
⑦ 删除图书信息
## 二、项目概况
### 1.总述
此项目为图书信息管理系统,是一个采用了 mysql+mybatis 框架 +java 编写的 maven 项目
### 2. 技术栈选择
Mysql,mybatis
### 3.环境介绍
数据库:mysql8.0
框架:MyBatis
项目结构:maven3.0
语言:Java
JDK 版本:jdk11.0.5(Jdk8.0 以上)
编写的 IDE:IDEA 2020.01
依赖 jar 包:
![](https://www.writebug.com/myres/static/uploads/2021/10/27/234650b0d7fee6b5e5b5e1052b610500.writebug)
### 4. 功能概述
该图书信息管理系统实现了便捷的图书信息管理,利用命令行操作的方式让用户的操作更为简洁。
本系统提供 SQL 和 noSql 两种运行模式。
SQL 模式直接对 MySQL 数据库进行操作,便于数据的持久化和规范化,让数据能够更加便捷高效,同时可以存储大量数据,便于进行大数据的管理,如果你想真正用此系统管理你的信息,建议采用此种模式。
noSql 模式是把数据载入内存中,优点是速度快,但缺点也很明显,在面对大量数据的情况下显得有些力不从心,此模式建议在数据量小的情况下使用。
两种模式都支持以下功能:
![](https://www.writebug.com/myres/static/uploads/2021/10/27/23091c6e317ef9129312a63ed1d902c8.writebug)
### 5.功能结构
![](https://www.writebug.com/myres/static/uploads/2021/10/27/89c589a5a9c216eddc7166ed09a63b73.writebug)
### 6.项目文件结构
![](https://www.writebug.com/myres/static/uploads/2021/10/27/989817429c896bdd5d11ac5fa0f8c916.writebug)
## 三、数据结构描述
### 1.实体类 Book(持久化层)
![](https://www.writebug.com/myres/static/uploads/2021/10/27/efcf11965d54968eaf1597763896643f.writebug)
### 2.Sql 模式下的数据库结构
![](https://www.writebug.com/myres/static/uploads/2021/10/27/b4c9f464ef15e3a02612900833a45d15.writebug)
库名:library
表名:books
| 字段名 | 代表含义 | 数据类型 | 格式 |
| --------- | -------- | ------------- | ------------------ |
| id | 图书编号 | INT | 主键,PK,not null |
| title | 书名 | VARCHAR(20) | not null |
| name | 作者名 | VARCHAR(20) | not null |
| publisher | 出版商 | VARCHAR(20) | 无 |
| time | 出版时间 | DATE | 无 |
| price | 价格 | DECIMAL(7,4) | 无 |
### 3.Sql 模式下的 Mapper 映射(接口结构)
![](https://www.writebug.com/myres/static/uploads/2021/10/27/de8b8c8f84b04d553de9d5782a4907c8.writebug)
### 4.noSql 模式下的数据结构
采用 LinkedList\<Book\>来维护图书信息
![](https://www.writebug.com/myres/static/uploads/2021/10/27/ed92cdf29c01aab56047a2f420dce3dd.writebug)
## 四、程序模块描述
该项目大致分为两个一级模块,分别在两个 Java 文件中
![](https://www.writebug.com/myres/static/uploads/2021/10/27/a78a1c08cc7effeeea4f6e6d44e6c1d6.writebug)
各个文件内用分别有若干个二级模块
### 1.图书信息录入(通过文件录入)模块
![](https://www.writebug.com/myres/static/uploads/2021/10/27/4fc8e9f1355e2a9757f1f160717f5ce7.writebug)
### 2. 图文信息浏览模块
![](https://www.writebug.com/myres/static/uploads/2021/10/27/7ef1cbbfee5ee4eedcec423aa3603825.writebug)
### 3. 插入模块
![](https://www.writebug.com/myres/static/uploads/2021/10/27/149507eb4dd4a6825f28457401c2adc6.writebug)
### 4. 查询模块
![](https://www.writebug.com/myres/static/uploads/2021/10/27/c9d773e445c7ba46920d1ea7436850c2.writebug)
其下按查询条件有分为若干个三级模块
### 5. 排序模块
![](https://www.writebug.com/myres/static/uploads/2021/10/27/ce0dc1545d1768ab879707d3e29e1b23.writebug)
其下按排序条件有分为若干个三级模块
### 6. 更新模块
![](https://www.writebug.com/myres/static/uploads/2021/10/27/aa5e536c91f7976bc26450cb2fd022e8.writebug)
### 7. 删除模块
![](https://www.writebug.com/myres/static/uploads/2021/10/27/2c6f5332ec661cef5f1d8aac58a6ee58.writebug)
### 8. 写出模块
![](https://www.writebug.com/myres/static/uploads/2021/10/27/68b3e1e4a31f0fbe40a88d5dd9b57ca0.writebug)
至于各模块的功能,见名知意,在此就不一一赘述了。
而对于各个模块的返回值和参数,容我卖个关子,此内容将在下个模块中讲解!
## 五、主要功能模块的算法流程图
### 1.Sql 模式下的算法流程(以查找为例)
![](https://www.writebug.com/myres/static/uploads/2021/10/27/d3d89d33f878e9ca6280e6019e7c0bac.writebug)
### 2. 各个模块间的连接算法流程
"套娃"式的连接方式
何为"套娃"?
可以理解为类似递归的连接方式。
与递归有什么不同?
如果采用递归,就要把低层级的模块套在高层级的模块里。这样子虽然连接了各个模块,达到了类似菜单的效果,但有以下两个较为致命的缺点:
1. 当运行完一个模块后,该模块就运行结束,无法做到循环操作,这与实验要求不符
2. 由于该项目是一个系统,各模块间要不断退出重进,循环多次的递归会造成堆栈不断压缩,有堆栈溢出风险
那我们该如何做呢?
对于第一个缺点,我采用了一个死循环来解决;对于第二个缺点,我的思路就是把改变模块重复调用的时机和位置,让它既能达到效果,又不会导致堆栈溢出
基本思路:
每个函数都有一个整数类型的返回值,只要返回 1,就说明该级模块需要退回上一级;返回 0 则说明不需要,即留在当前模块。
而是留在当前模块还是返回上一级模块,由该模块(记为模块 3)的上一级(记为模块 2)控制,如果模块 3 返回一了,就在模块 2 的上一级(记为模块 1)再次调用模块 2,即可做到返回上一层;而如果模块 3 返回 0 则在模块 2 再次循环调用,直至模块返回 1
这样做不仅能实现功能,而且能避免多次"套娃"导致堆栈溢出的风险
![](https://www.writebug.com/myres/static/uploads/2021/10/27/17bd619dcf65d3c54d9e73e600fc9c91.writebug)
## 六、代码清单
### 1.项目结构全览
![](https://www.writebug.com/myres/static/uploads/2021/10/27/521de71665bfd18bacb7394dd294c131.writebug)
### 2. 实体类 Book
```java
ackage com.dreamchaser.domain;
import java.math.BigDecimal;
import java.util.Date;
/
* books
*
* @author 金昊霖
*/
public class Book {
/ 图书编号 */
private Integer id;
/ 图书名称 */
private String title;
/ 作者姓名 */
private String name;
/ 出版社 */
private String publisher;
/ 出版时间 */
private Date time;
/ 价格 */
private BigDecimal price;
public Book() {
}
/
* 用于清空对象里的数据
*/
public void clear(){
this.id=null;
this.title=null;
this.name=null;
this.publisher=null;
this.time=null;
this.price=null;
}
public Book(Integer id, String title, String name, String publisher, Date time, BigDecimal price) {
this.id = id;
this.title = title;
this.name = name;
this.
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
设计一个图书信息管理系统,使之具有新建图书信息、显示、插入、删除、查询和排序等功能。 2 具体设计要求 图书信息包括:图书编号、书名、作者名、出版单位、出版时间、价格等。 系统以菜单方式工作: ① 图书信息录入(要求图书信息用文件保存) ② 图书信息浏览 ③ 插入图书信息 ④ 查询(可以有多种查询方式,如按书名查询、按作者名查询、按价格查询等); ⑤ 排序(可以按图书编号排序、按书名排序、按出版时间排序、按价格排序等); ⑥ 修改图书信息 ⑦ 删除图书信息
资源推荐
资源详情
资源评论
收起资源包目录
100012943-基于Java+MySQL实现的(控制台)图书信息管理系统.zip (27个子文件)
library2
图书信息管理系统.iml 80B
pom.xml 3KB
src
main
resources
db.properties 153B
mybatis-config.xml 2KB
log4j.properties 539B
java
com.dreamchaser
Driver.java 3KB
mapper
BookMapper.java 888B
BookMapper.xml 6KB
PatternNoSql.java 13KB
PatternSql.java 13KB
Main.java 5KB
util
DateUtil.java 609B
FileUtil.java 2KB
Displayer.java 2KB
SqlSessionUtil.java 915B
domain
Book.java 3KB
LICENSE 9KB
.idea
jarRepositories.xml 868B
uiDesigner.xml 9KB
misc.xml 741B
inspectionProfiles
Project_Default.xml 2KB
compiler.xml 545B
.gitignore 176B
encodings.xml 261B
library.sql 2KB
测试.txt 388B
README.md 76KB
共 27 条
- 1
资源评论
- makabaka__D2024-01-02资源很好用,有较大的参考价值,资源不错,支持一下。
神仙别闹
- 粉丝: 3711
- 资源: 7461
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功