30.超市管理系统(基于springboot和Vue的Java项目)
目录
1.系统的受众说明
2.相关技术和开发环境
2.1 相关技术
2.1.1 Java语言
2.1.2 HTML、CSS、JavaScript
2.1.3 MySQL
2.1.4 Vue.js
2.1.5 SpringBoot
2.2 开发环境
3. 系统分析
3.1 可行性分析
3.1.1 经济可行性
3.1.2 技术可行性
3.1.3 运行可行性
3.2 业务流程分析
3.2.1 业务流程分析
3.2.2 数据流程图和逻辑流程图
3.3 用例图分析
3.4 数据需求分析
3.4.1 实体集分析
3.4.2 实体集数据项分析
4. 概要设计
4.1 系统设计
4.1.1 系统架构设计
4.1.2 系统功能板块
4.2 ER图-数据库概要设计
4.3 系统后端接口设计
5. 详细设计
5.1 详细功能模块
5.1.1 用户登录模块
5.2 数据库详细设计
5.2.1 关系模型设计
5.2.2 逻辑结构设计
6. 系统实现
6.1 登录模块
6.2 销售模块
1.系统的受众说明
1 在校学习的学生,可用于日常学习使用或是毕业设计使用
2 毕业一到两年的开发人员,用于锻炼自己的独立功能模块设计能力,增强代码编写能力。
3 亦可以部署为商化项目使用。
4 需要完整资料及源码,请在文末获取联系方式领取。
2.相关技术和开发环境
2.1 相关技术
本课题在Windows系统下使用了JavaEE开发技术、Spring Boot技术、Vue.js技术、MySQL关系型数据库以及ElementUI前端框架技术进行开发。以下是关键技术及开发工具介绍。
2.1.1 Java语言
Java是一种面向对象的编程语言,由Sun Microsystems(现在是Oracle公司)于1995年首次发布。它具有可移植性、安全性和跨平台等特性,因此被广泛应用于各个领域的软件开发中。
Java的平台无关性是其最重要的特性之一。通过Java虚拟机(JVM),Java程序可以在不同的操作系统和硬件上运行,而不需要针对特定平台进行修改。这意味着一次编写的Java代码可以在Windows、Linux、Mac等多个平台上运行。
Java是一种面向对象的语言,它支持封装、继承和多态等面向对象的编程概念。这使得Java程序更易于理解、扩展和维护。它还提供了强大的异常处理机制,使开发者能够更好地应对错误和异常情况。
Java还具有丰富的标准库和第三方库,以及一个庞大的开发者社区。这些库提供了许多常用的功能和工具,使得Java的开发变得更加高效和便捷。
总之,Java是一种功能强大、可靠性高、安全性好的编程语言,非常适合开发各种类型的应用程序,包括桌面应用程序、Web应用程序、移动应用程序等。它的广泛应用和稳定性使得Java成为了当今世界上最流行的编程语言之一。
2.1.2 HTML、CSS、JavaScript
HTML(超文本标记语言)是一种用于创建和组织网页内容的标记语言。它由一系列标签组成,标签用于标记和描述文档中的不同部分,如标题、段落、链接和图像等。HTML提供了结构化的标记方式,使得浏览器能够正确地解析并显示网页内容。
CSS(层叠样式表)是一种用于描述网页外观和布局的样式语言。通过CSS,可以对HTML文档中的元素进行样式设置,包括字体、颜色、大小、间距、边框和背景等。CSS的设计目标是将样式与内容分离,使得网页的样式可以独立于内容进行修改和调整,从而提高网页的可维护性和灵活性。
JavaScript是一种动态的、基于对象和事件驱动的脚本语言。它广泛用于前端开发,用于为网页增加交互性和动态性。通过JavaScript,可以操作网页的元素、处理用户的输入、响应事件、进行表单验证和数据处理等。它还可以通过AJAX技术与服务器进行数据交互,实现动态加载内容和实时更新。
HTML、CSS和JavaScript三者通常一起使用,被称为前端开发技术。HTML负责网页的内容和结构,CSS负责网页的样式和布局,JavaScript负责网页的交互和动态效果。它们共同作用于网页的不同方面,使网页成为一个功能丰富、外观吸引人且易于使用的用户界面。
总结起来,HTML提供了网页内容的结构和标记,CSS负责网页的样式和布局,JavaScript为网页增加了交互性和动态功能。三者的协同工作使得构建现代化、交互式的网页成为可能。
2.1.3 MySQL
MySQL是一种关系型数据库管理系统,是一个多用户,多线程的SQL数据库。MySQL的优点是体积小、速度快、总体拥有成本低,开放源代码等,使得它成为了目前中小企业的最爱[2]。
2.1.4 Vue.js
Vue.js是一套用于构建用户界面的渐进式框架[4]。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。
2.1.5 SpringBoot
SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。使用SpringBoot的最大好处就是简化配置,它实现了自动化配置。
2.2 开发环境
表2-1展示了系统所需的开发环境。
表2-1系统所需开发环境表
操作系统 | Windows 11 |
开发工具 | IntelliJ IDEA 2021.03 |
Java环境 | JDK1.8,Maven 3.8.1 |
数据库 | MySQL 5.7 |
3. 系统分析
3.1 可行性分析
3.1.1 经济可行性
本系统为本科毕业设计,未真正投入到实际生活中,所需要的硬件设备目前只需用到一部电脑,软件方面大部分为官方提高免费使用的,所需资料也可在网上或者查询相关书籍即可找到。因此,本系统开发在经济方面是可行的。
3.1.2 技术可行性
本系统的主要开发语言为Java,基于目前较为流行的SpringBoot以及Vue.js框架进行编写。本系统采用了MySQL数据库作为数据存储基础阵地,保证了一个安全、稳定的数据使用环境。本系统使用的技术,基本上都是目前较为流行的并且是开源的技术,文档和资料在互联网上都非常健全,且有许多开发成功的项目。因此,本系统开发在技术方面是可行的。
3.1.3 运行可行性
本系统基于SpringBoot框架,需要搭建Java,Maven,Redis,MySQL等软件环境。在搭建的过程中,有遇到过种种的问题,但通过查询资料和请教导师,都能一一解决,并能熟练掌握。因此,本系统开发在运行方面是可行的。
3.2 业务流程分析
3.2.1 业务流程分析
本系统的使用者一共有销售、仓库管理员、系统管理员这三种角色:
1、销售:商品管理、商品售卖
2、仓库管理员:仓库管理、出库、入库、供货商信息管理。
3、系统管理员:除了销售和仓库管理员的权限外,还具备角色管理、菜单管理、人员管理等
主要业务需求表3-1:
表3-1 业务需求表
编号 | 业务名称 | 操作者 |
1 | 销售主页 | 销售 |
2 | 销售记录 | 销售 |
3 | 积分兑换记录 | 销售 |
4 | 仓库管理 | 仓库管理员 |
5 | 出库明细 | 仓库管理员 |
6 | 入库明细 | 仓库管理员 |
7 | 供货商信息 | 仓库管理员 |
8 | 库存统计 | 仓库管理员 |
9 | 人事管理 | 系统管理员 |
10 | 系统管理 | 系统管理员 |
3.2.2 数据流程图和逻辑流程图
总体业务流程图如下:
图3-1 业务主体流程图
3.3 用例图分析
根据本系统的使用者将用户划分为三种角色,分别是销售、仓库管理员、系统管理员。进入系统前需要通过账号以及密码进行登录,患者若无账号可由管理员统一分配账号,登录成功后则根据他们的各自的角色进入相应的页面。
图3-2 用户关系用例图
销售进入网站的页面后,可以进行的功能用例如图3-3所示:
图3-3 销售用例图
- 会员信息:可以通过关键字搜索,分页展示会员信息,同时可以增加、删除、修改会员信息和积分兑换。
- 销售管理:可以进行购物结账、积分兑换、销售记录查询、积分兑换记录查询。
仓库管理员进入网站的页面后,可以进行的功能用例如图3-4所示:
图3-4 租客用例图
- 商品管理:该功能,销售可以对查看销售统计、商品信息、积分商品管理、商品分类管理。
- 库存管理:该功能,仓库管理员可以对仓库进行管理、出库明细、入库明细、库存统计、供货商信息查询。
3.4 数据需求分析
3.4.1 实体集分析
实体集是具有相同类型及相同属性的实体的集合[5]。本系统主要的实体集主要有:员工信息、角色信息、菜单信息、部门信息、商品信息、会员信息、库存信息等。
3.4.2 实体集数据项分析
员工信息:员工ID,用户名,邮箱,住址,性别,密码,昵称、头像、状态、是否是超管、年龄、身份证号、离职时间。
角色信息:主键、角色名、描述、状态。
菜单信息:主键、名称、地址、类型、父id、父名称、描述、状态、权限的唯一标识、图标、组件路径。
部门信息:主键、部门名称、描述、状态。
商品信息:主键、商品名、商品分类id、销售价格、进货价格、分类名、商品封面、状态、剩余数量、销量。
库存信息:商品编号、仓库编号、入库数数量、剩余数量、仓库名。
4. 概要设计
4.1 系统设计
4.1.1 系统架构设计
本系统使用SpringBoot、Vue.js等主流开发框架进行开发,遵守MVC模式,同时使用到了Element-UI进行页面的设计。为方便前后端进行整合和日后系统的维护,本系统分为视图层、控制层、业务层和持久层。各层之间相互独立,通过之间的接口进行通信,高内聚,低耦合[6]。
图4-1 系统架构图
4.1.2 系统功能板块
图4-2 系统功能模块图
4.2 ER图-数据库概要设计
员工实体:用来存储员工基本信息。
数据来源:员工数据的录入,修改。
图4-3 员工实体信息属性图
房屋实体:存储角色的基本信息,角色ID为主键。
数据来源:角色的录入,修改。
图4-4 角色实体信息属性图
菜单实体:存储菜单的基本信息,租金ID为主键。
数据来源:菜单录入,修改。
图4-5 菜单实体信息属性图
商品实体:存储商品的基本信息,商品ID为主键。
数据来源:商品的录入,修改。
图4-6 商品信息属性图
本超市管理系统的数据库共有17张表,表与表之间的通过外键建立联系。为了避免数据字段冗余,建立起合理的数据库结构,严格遵循了数据库的设计原则[7]。本系统严格遵循了数据库设计的三大范式,分别为确保每列保持原子性,确保表中的每列都和主键相关以及确保每列都和主键列直接相关。因此本系统的数据库关系是一个结构较为合理的关系型数据库模型。
4.3 系统后端接口设计
本系统的主要接口如表4-1所示。
表4-1 超市管理系统主要接口表
模块 | 接口 | 请求方式 | 作用 |
部门模块 | save | Post | 保存部门 |
update | Post | 更新部门 | |
deactivate | Post | 停用部门 | |
list | Get | 查询部门列表 | |
员工模块 | list | Get | 获取员工列表列表 |
detail | Get | 获取员工详情 | |
uploadImg | Post | 上传图片 | |
save | Post | 保存员工 | |
upadte | Post | 更新员工 | |
角色信息模块 | save | Post | 保存角色 |
update | Post | 更新角色 | |
forbiddenRole | Post | 停用角色 | |
checkPermissons | Get | 检查权限 | |
saveRolePermissons | Post | 保存角色权限 | |
菜单信息模块 | queryPageByQo | Get | 分页查询菜单 |
商品模块 | queryPageByQo | Get | 分页查询商品 |
uploadImg | Post | 上传图片 | |
save | Post | 保存商品 | |
upOrDown | Post | 上/下架 | |
queryGoodsById | Post | 通过 id查询商品 | |
upload | Post | 更新商品 |
5. 详细设计
5.1 详细功能模块
系统功能模块如表5-1所示:
表5-1 系统功能模块
功能 | 输入 | 处理 | 输出 |
登录 | 销售/仓管/系统账号、密码 | 查询数据库中对应的用户信息,匹配则返回Token,存储到本地localStorage中 | 失败:提示错误 成功:进入系统页面 |
销售记录 |
|
| 跳转到用户销售界面 |
人事信息管理 | 1.查看人事信息。 2.点击“修改”人事按钮。 3.点击“增加”人事按钮。 4.点击“删除”人事按钮 | 1.从数据库中查询相应的人事信息。 2.更新数据库中该人事的信息。 3.新增数据库中该人事的信息。 4.删除数据库中该人事的信息。 | 跳转到人事信息界面 |
库存管理 | 1.查看库存信息。 2.点击“修改”库存按钮。 3.点击“增加”库存按钮。 4.点击“删除”库存按钮 | 1.从数据库中查询相应的库存信息。 2.更新数据库中该用库存的信息。 3.新增数据库中该库存的信息。 4.删除数据库中该库存的信息。 | 跳转到库存信息界面 |
退出登录 | 点击“退出登录” | 清除本地localStorage中的Token | 退出到登录页面 |
5.1.1 用户登录模块
用户输入帐号和密码后,传至系统后台进行校验。如果帐号密码不匹配,跳回登录页面。账号密码都匹配的话,后端生成Token,返回给前端,前端存储到本地localStorage中,如图5-1所示。
图5-1 登录时序图
5.2 数据库详细设计
在上一章中,已对本系统的实体集进行了概要设计,并设计了实体集之间的E-R模型图。在本章节中,从数据库关系的角度出发,设计关系模型以及数据表的逻辑结构。
5.2.1 关系模型设计
员工信息:员工ID,用户名,邮箱,住址,性别,密码,昵称、头像、状态、是否是超管、年龄、身份证号、离职时间。
角色信息:主键、角色名、描述、状态。
菜单信息:主键、名称、地址、类型、父id、父名称、描述、状态、权限的唯一标识、图标、组件路径。
部门信息:主键、部门名称、描述、状态。
商品信息:主键、商品名、商品分类id、销售价格、进货价格、分类名、商品封面、状态、剩余数量、销量。
库存信息:商品编号、仓库编号、入库数数量、剩余数量、仓库名。
5.2.2 逻辑结构设计
表5-2:department(部门表)
属性 | 类型 | 键 | 备注 |
id | int | 主键 | 主键 |
name | varchar | 部门名称 | |
info | varchar | 描述 | |
state | char | 状态 |
表5-3:employee(员工表)
属性 | 类型 | 键 | 备注 |
id | int | 主键 | 主键 |
phone | varchar | 用户名 | |
| varchar | 邮箱 | |
address | varchar | 住址 | |
sex | varchar | 性别 | |
password | varchar | 密码 | |
nick_name | varchar | 昵称 | |
head_img | varchar | 头像 | |
state | varchar | 状态 0:在职 1:离职 | |
info | varchar | 描述 | |
age | varchar | 年龄 | |
id_card | varchar | 身份证号 | |
leave_time | datetime | 离职时间 |
表5-4:goods(商品表)
属性 | 类型 | 键 | 备注 |
id | int | 主键 | 租金ID |
name | varchar | 商品名 | |
category_id | int | 商品分类id | |
sell_price | double | 销售价格 | |
purchash_price | double | 进货价格 | |
category_name | varchar | 分类名 | |
cover_url | varchar | 商品封面 | |
state | int | 状态 |
6. 系统实现
本章节展示了销售模块,人事模块,库存模块、商品管理模块部分功能截图。
6.1 登录模块
登录页面,用户在浏览器中输入网址后进入到系统的登录页面,如图6-1所示。
图6-1 登录页面
6.2 销售模块
销售信息列表,可以看到销售记录,如图6-3所示。
图6-3 销售记录
积分兑换记录,销售可以对积分进行兑换管理,如图6-4所示。
图6-4 积分信息管理
员工信息管理,管理员可以添加员工,并且对员工信息进行编辑和删除的功能,如图6-5所示。
图6-5 员工信息管理
仓库信息管理,仓库管理员可以添加仓库,并且对仓库信息进行编辑和删除的功能,如图6-6所示。
图6-6 仓库信息管理
商品信息管理,管理员可以商品信息编辑和删除的功能,如图6-7所示。
图6-7 商品信息管理