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 销售用例图

  1. 会员信息:可以通过关键字搜索,分页展示会员信息,同时可以增加、删除、修改会员信息和积分兑换。
  2. 销售管理:可以进行购物结账、积分兑换、销售记录查询、积分兑换记录查询。

仓库管理员进入网站的页面后,可以进行的功能用例如图3-4所示:

                

图3-4 租客用例图

  1. 商品管理:该功能,销售可以对查看销售统计、商品信息、积分商品管理、商品分类管理。
  2. 库存管理:该功能,仓库管理员可以对仓库进行管理、出库明细、入库明细、库存统计、供货商信息查询。

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 商品信息管理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/9925.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

洛谷 P1434 [SHOI2002] 滑雪 完整题解

一、题目查看 P1434 [SHOI2002] 滑雪 - 洛谷 二、解题思路 本题需要使用记忆化搜索&#xff0c;把第x个点开始最多能走几步记录在dp[x]中&#xff0c;循环递归&#xff0c;记录&#xff0c;并找出最大的dp[i]。 三、题解 #include <bits/stdc.h> using namespace std;int…

分布式唯一ID生成(二): leaf

文章目录 本系列前言号段模式双buffer优化biz优化动态step源码走读 雪花算法怎么设置workerId解决时钟回拨源码走读 总结 本系列 漫谈分布式唯一ID分布式唯一ID生成&#xff08;二&#xff09;&#xff1a;leaf&#xff08;本文&#xff09;分布式唯一ID生成&#xff08;三&am…

Spring Boot 与 Vue 共筑电影评价卓越平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

Everything软件实现FTP功能

Windows的文件共享和ftp实在难用&#xff0c;这里介绍一种新的局域网内共享文件的方法 下载 Everything 选择想要共享的文件&#xff0c;选择包含到数据库&#xff0c;注意&#xff1a;要在对应的分卷设置&#xff0c;共享文件夹名称不要包含中文字符&#xff0c;因为Windows底…

CertiK创始人顾荣辉出席新加坡商业与慈善论坛,发表主旨演讲并主持专题讨论

2024年11月5日 —— 美国哥伦比亚大学教授、CertiK联合创始人、MAS国际技术顾问顾荣辉受邀参加2024年度新加坡商业与慈善论坛&#xff08;Business & Philanthropy Leadership Forum Singapore&#xff0c;简称B&P Forum&#xff09;&#xff0c;期间发表主旨演讲并主持…

oracle创建实例失败-因为网络原因

风起波谲 最近遇到一个case很有意思。 起因是在redhat6.5上&#xff0c;安装一个oracle 19c。这个问题到没有特别大。换glibc的包就装上去了。 但是dbca就失败了 有点紧张&#xff0c;不会是遇到了不可控依赖问题吧。遂去看了把日志 日志看了以后反而没那么紧张了&#xff0…

力扣题库——75.颜色分类

这道题采用三路快速排序&#xff0c;快速排序思路看这里快速排序。将数列分为三组&#xff1a;小于基准、等于基准、大于基准。和快排一样&#xff0c;对左右递归进行快速排序。 先将题目简化&#xff0c;如果只有数字0和1&#xff0c;扫描一遍数组&#xff0c;遇到数字1不用管…

Android中桌面小部件framework层使用到的设计模式

在Android中&#xff0c;桌面小部件&#xff08;App Widget&#xff09;的Framework层采用了多种设计模式&#xff0c;以实现模块化、可维护性和高效的交互。 以下是Android桌面小部件Framework层中常用的设计模式及其具体应用&#xff1a; 1. 观察者模式&#xff08;Observe…

解锁 AI 新境界:元素碰撞的神奇应用技巧全解析

前言 在当今科技飞速发展的时代&#xff0c;ChatGPT 作为一款强大的人工智能工具&#xff0c;为我们开启了全新的创意探索之门。当我们让 ChatGPT 去进行大量的元素碰撞时&#xff0c;相较于传统人力的联想方式&#xff0c;它能够凭借其强大的算法和海量的数据处理能力&#x…

操作系统-磁盘

文章目录 磁盘的结构一、磁盘的物理结构二、磁盘的逻辑结构 磁盘的调度算法磁盘时间算法先来先服务&#xff08;FCFS - First-Come, First-Served&#xff09;最短寻道时间优先&#xff08;SSTF - Shortest Seek Time First&#xff09;扫描算法&#xff08;SCAN&#xff0c;也…

C++类和对象 (下)

文章目录 前言一. 再探构造函数初始化列表特性总结练习 二. 类型转换2.1 隐式类型转换2.2 临时对象具有常性2.3 explicit关键字2.4 多参数类型转化 三. static成员概念特性练习 四. 友元概念特性 五. 内部类概念特性 六. 匿名对象概念特性 七. 对象拷贝时的编译器优化END 前言 …

玩的花,云产品也能拼团了!!!

说起拼单大家都不陌生&#xff0c;电商一贯的营销手段&#xff0c;不过确实可以给消费者省下一笔钱。双11到了&#xff0c;腾讯云产品也玩起了拼团&#xff0c;这明显是对开发人员和各企业的福利。 对于有云产品需求的个人或企业&#xff0c;这次绝对是难得的一次薅羊毛机会。…

深度学习-张量相关

一. 张量的创建 张量简介 张量是pytorch的基本数据结构 张量&#xff0c;英文为Tensor&#xff0c;是机器学习的基本构建模块&#xff0c;是以数字方式表示数据的形式。 例如&#xff0c;图像可以表示为形状为 [3, 224, 224] 的张量&#xff0c;这意味着 [colour_channels, h…

境内部署DIfy(上篇)

背景&#xff1a; 由于近2年大模型的火热催生出很多业务场景&#xff0c;这也迫使我们这些老一辈的程序搬运工去接触新事物&#xff0c;“工欲善其事必先利其器”&#xff0c;先从大模型应用开始摸索&#xff0c;网上大把工具&#xff0c;再三思考后决定先从Dify开始&#xff…

[CKS] 利用Trivy对image进行扫描

最近准备花一周的时间准备CKS考试&#xff0c;在准备考试中发现有一个题目关于Trivy镜像安全扫描的题目。 What’s Trivy Trivy的官方仓库https://github.com/aquasecurity/trivy&#xff0c;Trivy是一个开源的容器镜像漏洞扫描工具。它通过分析容器镜像中的操作系统包和应用…

vue3入门知识(一)

vue3简介 性能的提升 打包大小减少41%初次渲染快55%&#xff0c;更新渲染快133%内存减少54% 源码的升级 使用Proxy代替defineProperty实现响应式重写虚拟DOM的实现和Tree-Shaking 新的特性 1. Composition API&#xff08;组合API&#xff09; setupref与reactivecomput…

数据结构和算法入门

复杂度 大O记法 计算机怎么判断程序性能&#xff1f; 我们都知道编程基本上是在和数据打交道&#xff0c;大多数程序基本都在处理获取数据、查询数据、操作数据、返回数据相关的逻辑。 因此出现了数据结构和算法&#xff0c;这两者出现本质为了解决如何能够更快、更省进行数…

【Linux第八课-进程间通信】管道、共享内存、消息队列、信号量、信号、可重入函数、volatile

目录 进程间通信为什么&#xff1f;是什么&#xff1f;怎么办&#xff1f;一般规律具体做法 匿名管道原理代码 命名管道原理代码 system V共享内存消息队列信号量信号量的接口 信号概念为什么&#xff1f;怎么办&#xff1f;准备信号的产生信号的保存概念三张表匹配的操作和系统…

串的模式匹配

子串的定位操作通常称为串的模式匹配&#xff0c;它求的是子串(常称模式串)在主串中的位置。 子串——主串的一部分&#xff0c;一定存在 模式串——不一定能在主串中找到 朴素模式匹配 将主串中所有长度为m的子串&#xff08;共有n-m1个&#xff09;依次与模式串对比&…

继承的学习

1.继承 继承权限在类外&#xff0c;访问权限在类内部 1.1继承的概念 继承是面向对象程序设计使代码可以复用的重要手段&#xff08;解决类层次的复用问题&#xff09; 派生类&#xff1a;类特性的基础上进行扩展&#xff0c;增加方法&#xff08;成员函数&#xff09;和属性…