【项目实战】 图书信息管理系统(Maven,mybatis)(第一个自己独立完成的项目1)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【项目实战】 图书信息管理系统(Maven,mybatis)(第一个自己独立完成的项目)

一、实验目的


题目七 图书信息管理系统


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包:


q1.png

4. 功能概述

该图书信息管理系统实现了便捷的图书信息管理,利用命令行操作的方式让用户的操作更为简洁。


本系统提供Sql和noSql两种运行模式。


Sql模式直接对mysql数据库进行操作,便于数据的持久化和规范化,让数据能够更加便捷高效,同时可以存储大量数据,便于进行大数据的管理,如果你想真正用此系统管理你的信息,建议采用此种模式。


noSql模式是把数据载入内存中,优点是速度快,但缺点也很明显,在面对大量数据的情况下显得有些力不从心,此模式建议在数据量小的情况下使用。


两种模式都支持以下功能:

q2.png

5.功能结构

q1.png6.项目文件结构

q2.png

三、数据结构描述


1.实体类Book(持久化层)


q3.png


2.Sql模式下的数据库结构

q4.png

库名: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映射(接口结构)

q1.png

4.noSql模式下的数据结构

q2.png

采用LinkedList来维护图书信息



四、程序模块描述


该项目大致分为两个一级模块,分别在两个java文件中


q1.png

各个文件内用分别有若干个二级模块


1.图书信息录入(通过文件录入)模块


q2.png

2. 图文信息浏览模块

q3.png


3. 插入模块

q4.png


4. 查询模块


q5.png

其下按查询条件有分为若干个三级模块


5. 排序模块

w1.png


其下按排序条件有分为若干个三级模块


6. 更新模块

w2.png


7. 删除模块

q1.png


8. 写出模块

q2.png


至于各模块的功能,见名知意,在此就不一一赘述了。


而对于各个模块的返回值和参数,容我卖个关子,此内容将在下个模块中讲解!


五、主要功能模块的算法流程图


1.Sql模式下的算法流程(以查找为例)

q3.png


2. 各个模块间的连接算法流程

"套娃"式的连接方式


何为"套娃"?


可以理解为类似递归的连接方式。


与递归有什么不同?


如果采用递归,就要把低层级的模块套在高层级的模块里。这样子虽然连接了各个模块,达到了类似菜单的效果,但有以下两个较为致命的缺点:


当运行完一个模块后,该模块就运行结束,无法做到循环操作,这与实验要求不符


由于该项目是一个系统,各模块间要不断退出重进,循环多次的递归会造成堆栈不断压缩,有堆栈溢出风险


那我们该如何做呢?


对于第一个缺点,我采用了一个死循环来解决;对于第二个缺点,我的思路就是把改变模块重复调用的时机和位置,让它既能达到效果,又不会导致堆栈溢出


基本思路:


每个函数都有一个整数类型的返回值,只要返回1,就说明该级模块需要退回上一级;返回0则说明不需要,即留在当前模块。


而是留在当前模块还是返回上一级模块,由该模块(记为模块3)的上一级(记为模块2)控制,如果模块3返回一了,就在模块2的上一级(记为模块1)再次调用模块2,即可做到返回上一层;而如果模块3返回0则在模块2再次循环调用,直至模块返回1

这样做不仅能实现功能,而且能避免多次"套娃"导致堆栈溢出的风险

q4.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
2月前
|
Java 区块链 Maven
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
249 3
|
1月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
165 0
|
Java Maven 开发者
maven项目中官方setting.xml文件
`settings.xml` 是 Maven 的配置文件,用于定义用户或全局级别的构建行为。它包含本地仓库路径、网络代理、服务器认证、仓库镜像及构建配置文件等设置,帮助开发者根据环境定制 Maven 行为,提升构建效率与灵活性。
552 0
|
4月前
|
Java 测试技术 项目管理
【JavaEE】从 0 到 1 掌握 Maven 构建 Java 项目核心技巧 解锁 Java 项目高效管理实用实例
本文从Maven基础概念讲起,涵盖安装配置、核心概念(如POM与依赖管理)及优化技巧。结合Java Web项目实例,演示如何用Maven构建和管理项目,解决常见问题,助你高效掌握这一强大工具,提升Java开发与项目管理能力。适合初学者及进阶开发者学习。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
151 6
|
10月前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
302 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
11月前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
843 1
Maven——创建 Spring Boot项目
|
10月前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
781 8
|
10月前
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
1387 3
|
11月前
|
Java API Apache
除了 Maven,还有哪些工具可以管理项目的依赖和版本冲突
除了Maven,常用的项目依赖管理和版本冲突解决工具有Gradle、Ivy、Ant+Ivy、SBT等。这些工具各有特点,适用于不同的开发环境和需求。
881 2
|
11月前
|
缓存 IDE Java
idea的maven项目打包时没有source下的文件
【10月更文挑战第21天】idea的maven项目打包时没有source下的文件
697 1