目录
[2.1 相关技术](#2.1 相关技术)
[2.1.1 Java语言](#2.1.1 Java语言)
[2.1.2 HTML、CSS、JavaScript](#2.1.2 HTML、CSS、JavaScript)
[2.1.3 MySQL](#2.1.3 MySQL)
[2.1.4 Vue.js](#2.1.4 Vue.js)
[2.1.5 SpringBoot](#2.1.5 SpringBoot)
[2.2 开发环境](#2.2 开发环境)
[3. 系统分析](#3. 系统分析)
[3.1 可行性分析](#3.1 可行性分析)
[3.1.1 经济可行性](#3.1.1 经济可行性)
[3.1.2 技术可行性](#3.1.2 技术可行性)
[3.1.3 运行可行性](#3.1.3 运行可行性)
[3.2 业务流程分析](#3.2 业务流程分析)
[3.2.1 业务流程分析](#3.2.1 业务流程分析)
[3.2.2 数据流程图和逻辑流程图](#3.2.2 数据流程图和逻辑流程图)
[3.3 用例图分析](#3.3 用例图分析)
[3.4 数据需求分析](#3.4 数据需求分析)
[3.4.1 实体集分析](#3.4.1 实体集分析)
[3.4.2 实体集数据项分析](#3.4.2 实体集数据项分析)
[4. 概要设计](#4. 概要设计)
[4.1 系统设计](#4.1 系统设计)
[4.1.1 系统架构设计](#4.1.1 系统架构设计)
[4.1.2 系统功能板块](#4.1.2 系统功能板块)
[4.2 ER图-数据库概要设计](#4.2 ER图-数据库概要设计)
[4.3 系统后端接口设计](#4.3 系统后端接口设计)
[5. 详细设计](#5. 详细设计)
[5.1 详细功能模块](#5.1 详细功能模块)
[5.1.1 用户登录模块](#5.1.1 用户登录模块)
[5.2 数据库详细设计](#5.2 数据库详细设计)
[5.2.1 关系模型设计](#5.2.1 关系模型设计)
[5.2.2 逻辑结构设计](#5.2.2 逻辑结构设计)
[6. 系统实现](#6. 系统实现)
[6.1 登录模块](#6.1 登录模块)
[6.2 销售模块](#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.删除数据库中该人事的信息。 | 跳转到人事信息界面 |
| 库存管理 | 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 | | 用户名 |
| email | 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 商品信息管理