基于SpringBoot+Vue的超市货物管理系统

浏览 11 次

Supermarket Goods Management System Based on SpringBoot+Vue

该系统是一个基于SpringBoot后端与Vue前端框架开发的超市货物管理系统,旨在实现商品信息、库存、采购与销售流程的高效管理。核心功能包括商品分类管理、库存实时监控、采购订单处理、销售数据分析以及用户权限控制。该系统设计适用于中小型超市的日常运营,可作为毕业设计或实际项目实现,展示了现代Web技术在信息管理系统开发中的应用。

SpringBootVueMySQL权限控制后台管理前后端分离PC端

项目简介

该系统是一个基于SpringBoot后端与Vue前端框架开发的超市货物管理系统,旨在实现商品信息、库存、采购与销售流程的高效管理。核心功能包括商品分类管理、库存实时监控、采购订单处理、销售数据分析以及用户权限控制。该系统设计适用于中小型超市的日常运营,可作为毕业设计或实际项目实现,展示了现代Web技术在信息管理系统开发中的应用。

项目基础信息

适合专业计算机科学与技术 / 软件工程 / 信息管理
技术栈SpringBoot + Vue + MySQL + Redis
系统架构前后端分离
项目类型管理系统
运行环境JDK1.8、MySQL5.7+、Node14+
开发工具IntelliJ IDEA、VSCode、Maven

项目包含内容

  • 前后端完整源码
  • 数据库完整脚本
  • 参考论文(如有)
  • 部署软件及部署说明
  • 项目介绍文档(如有)

项目详细介绍

一、项目背景介绍:

在1990年代初期,计算机和网络开始在全球范围内普及。斯坦福大学的学生于1991年建立了世界上第一个万维网服务器,这一事件的发生标志着世界互联网的诞生。在这种时代背景下依然还有许多超市的货物管理方式是依赖传统的手工记录和人工管理的方式,这种方式不仅存在记录的据不正确、工作人员的工作量虚高还存在着管理效率低下等问题。

因此本文旨在研究一种基于互联网方式的的货物管理系统,以此来为超市管理提供了一种更加高效、准确和便捷的方式。未来的研究方向可以包括进一步的功能扩展和性能优化,以满足不断变化的市场需求和用户需求。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

  2. Vue:Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。

Vue是一个独立的社区驱动的项目,它是由尤雨溪在2014年作为其个人项目创建, 是一个成熟的、经历了无数实战考验的框架,它是目前生产环境中使用最广泛的JavaScript框架之一,可以轻松处理大多数web应用的场景,并且几乎不需要手动优化,并且Vue完全有能力处理大规模的应用。

  1. Element-UI:Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。

  2. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

  3. Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。

三、系统功能模块介绍:

功能模块图

四、数据库设计:

1:'管理员'(admins)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 主键ID |

| user_name | varchar | NULL | 用户名(select) |

| pass_word | varchar | NULL | 密码 |

| head_img | varchar | NULL | 头像(img) |

| nick_name | varchar | NULL | 姓名 |

| create_time | datetime | NULL | 创建时间 |

2:'报损管理'(breakage)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 报损编号 |

| pro_id | bigint | NULL | 货品编号 |

| num | bigint | NULL | 数量 |

| detail | text | NULL | 详细信息 |

| create_time | datetime | NULL | 创建时间 |

| create_id | bigint | NULL | 创建人 |

| handle_id | bigint | NULL | 处理人编号 |

| status | int | NULL | 状态[0:未处理,1:已处理] |

3:'入库盘点'(checks)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 盘点编号 |

| records_id | bigint | NULL | 入库编号 |

| create_time | datetime | NULL | 创建时间 |

| update_time | datetime | NULL | 盘点时间 |

| handle_id | bigint | NULL | 盘点人编号 |

| status | int | NULL | 当前状态[0:未盘点,1:已入库,2:货品有误] |

| remark | text | NULL | 备注信息 |

4:'生产商管理'(manufacturer)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 生产商编号 |

| manu_name | varchar | NULL | 生产商名称 |

| manu_location | varchar | NULL | 所在地址 |

| manu_man | varchar | NULL | 负责人名称 |

| manu_tel | varchar | NULL | 联系方式 |

| manu_remark | text | NULL | 详细信息 |

| create_time | datetime | NULL | 创建时间 |

5:'出库记录'(out_storage)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 出库编号 |

| pro_id | bigint | NULL | 货品编号 |

| num | bigint | NULL | 出库数量 |

| info | text | NULL | 备注 |

| create_time | datetime | NULL | 创建时间 |

| handle_id | bigint | NULL | 操作人 |

6:'货品信息'(produce)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 货品编号 |

| pro_name | varchar | NULL | 货品名称 |

| pro_supplier_id | bigint | NULL | 货品供应商编号 |

| pro_producer_id | bigint | NULL | 货品生产商编号 |

| pro_birthday | datetime | NULL | 生产日期 |

| pro_month | int | NULL | 保质期(月) |

| pro_detail | text | NULL | 型号规格 |

| pro_img | varchar | NULL | 货品图片 |

| pro_remark | varchar | NULL | 货物说明 |

| create_time | datetime | NULL | 创建时间 |

| stock | int | NULL | 当前库存 |

| price | varchar | NULL | 价格 |

7:'入库记录'(put_storage)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 入库编号 |

| pro_id | bigint | NULL | 货品编号 |

| price | varchar | NULL | 进货价 |

| num | int | NULL | 数量 |

| create_time | datetime | NULL | 入库时间 |

| admin_id | bigint | NULL | 负责人编号 |

| handle_id | bigint | NULL | 经手人编号 |

8:'退货记录'(sales_return)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 退货编号 |

| pro_id | bigint | NULL | 货品编号 |

| cases | text | NULL | 退货原因 |

| num | bigint | NULL | 退货数量 |

| create_time | datetime | NULL | 创建时间 |

9:'供应商管理'(supplier)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 供应商编号 |

| sup_name | varchar | NULL | 供应商名称 |

| sup_location | varchar | NULL | 所在地址 |

| sup_man | varchar | NULL | 负责人名称 |

| sup_tel | varchar | NULL | 联系方式 |

| sup_remark | text | NULL | 详细信息 |

| create_time | datetime | NULL | 创建时间 |

10:'用户管理'(users)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 用户编号 |

| username | varchar | NULL | 用户名 |

| password | varchar | NULL | 密码 |

| nick_name | varchar | NULL | 昵称 |

| header_img | varchar | NULL | 头像 |

| create_time | datetime | NULL | 创建时间 |

五、功能模块:

  1. 管理员登录功能实现:管理员可以在后台管理系统登录页面中输入自己的账号密码进入到超市货物管理系统的后台管理界面,当输入的账号密码有误时系统会给出对应的提示如账号不存在、密码错误、账号或者密码不能为空等提示。

    管理员登录功能实现

  2. 货品信息管理功能实现:管理员在登录系统后可以在货品信息管理界面中对系统内的货品进行管理,后续的入库信息管理、报损信息管理等功能都会查找当前功能界面中添加的货品信息,在入库管理中管理员可以对超市内的货品进行进行登记录入,同时管理员还能对登记错误的货品信息进行管理,如管理员可以在当前页面对货品进行进行删除、出库等功能,另外管理员还能根据关键字快速定位到指定的货品信息从而更好的进行管理。

    货品信息管理功能实现

  3. 入库信息管理功能实现:管理员在登录系统后可以在入库信息管理界面中对系统内的入库信息进行管理,货品信息在货品信息管理中已经进行登记了故当前管理界面只能针对已经登记的货品信息进行入库,不能入库尚未登记的货品信息。另外管理员还能根据关键字来快速定位入库的信息。

    入库信息管理功能实现

  4. 应商信息管理功能实现:管理员在登录系统后可以在供应商信息管理界面中对系统内的供应商进行管理,可以对新的供应商信息进行登记,根据关键字快速定位数据并且对有变动的供应商信息进行修改和删除。

    应商信息管理功能实现

  5. 生产商信息管理功能实现:管理员在登录系统后可以在生产商信息管理界面中对系统内的生产商进行管理,可以对新的生产商信息进行登记,根据关键字快速定位数据并且对有变动的供应商信息进行修改和删除。

    生产商信息管理功能实现

  6. 报损信息管理功能实现:管理员在登录系统后可以在报损信息管理界面中对系统的报损信息进行管理,当货品出现损坏和过期等情况可在当前页面进行登记,保证库存数据与可出售的商品数据保持一致这样便不会出现客户需要购买溢出库存量数据的情况,在当前页面登记损坏的数据后可以对登记的信息进行进一步的修改在确认数据无误后,在处理完损坏的货品后点击已处理按钮后库存数会自定减去报损数,当然当库存数少于报损数时系统会给出对应的提示,并且数据状态不变,这种情况便是出现了登记错误,可以选择修改或者删除当前报损记录,当数据较多时可以根据关键字快速定位报损数据。

    报损信息管理功能实现

  7. 管理员信息管理功能实现:管理员在登录系统后可以在管理员信息管理界面中对可以登录系统后台管理的用户进行管理即系统管理员信息进行管理,在当前页面可以登记新的管理员,对已有的管理员信息进行维护保持数据的一致性,也能删除管理员信息,在删除后被删除的管理员便不能再登录当前系统了,因为系统已经不存在当前管理员了,在当前页面也无法通过关键字来快速定位到数据了,因为数据已经不存在了。

    管理员信息管理功能实现

  8. 退货信息管理功能实现:管理员在登录系统后可以在退货信息记录界面中对系统内的退货信息进行管理,当进货的数量较多或者存在过期的货品管理员便可以对货品进行退货,点击登记按钮后便可以对退货信息进行登录,退货数量是无法超出库存数的,当出现这种情况系统会给出提示并且无法保存当前退货信息,在成功点击后列表中会渲染新的退货记录,管理员可以选择删除退货记录。当数据的数据较多时管理员可以通过关键字来快速定位数据进行删除节省管理员的时间。

    退货信息管理功能实现

  9. 出库记录信息管理功能实现:管理员在登录系统后可以在用户信息管理界面中对系统可以登录系统前台页面的用户进行管理即系统用户信息进行管理,在当前页面可以登记新的用户信息,用户也能在页面上面点击注册按钮自行进行注册,对已有的用户信息进行维护保持数据的一致性,也能删除已有用户信息,在删除后被删除的用户便不能再登录当前系统了,因为系统已经不存在当前用户了,在当前页面也无法通过关键字来快速定位到数据了,因为数据已经不存在了。

    出库记录信息管理功能实现

  10. 用户登录注册功能实现:用户可以在系统页面中输入账号密码登录进入超市货物管理系统的用户端中,如没有账号的人员可以点击注册按钮在登记对应的基本信息后可进行注册,注册完以后可以重新登录,输入刚注册的账号密码后可进入系统内。

    用户登录注册功能实现

  11. 系统首页功能实现:在用户登录进超市货物管理系统用户端以后首先看到的便是系统首页,在系统首页中用户可以查看商店点的库存分析统计图,该统计图支持图形查看与文字描述查看,并且可以点击下载按钮,下载当前页面的显示内容,还能点击刷新按钮实时查看系统内的库存分析。

    系统首页功能实现

  12. 库存查询功能实现:在用户登录进超市货物管理系统用户端以后可以点击库存查询菜单按钮可以进入库存查询页面,在库存查询页面用户可以查看当前 超市内的库存信息,系统还支持根据关键字快速定位到指定的商品库存信息。

    库存查询功能实现

  13. 前端开发目录结构及主要文件:在系统的前端开发使用的是现在很火热的Vue来进行的,在当前系统中下图是当前系统的前段开发的目录结构,SRC目录为开发的根目录,所有的开发都是在SRC目录下进行的,其中最为主要目录分别是api目录、component目录、router目录、views目录。

api目录:用于存放和后端交互的接口。

component目:用于保存一些公共的组件,其他地方只需要调用不需要再次编写。

router目录:保存全局路由。

views目录:用户存放各个部分的页面。

前端开发目录结构及主要文件

  1. 后端开发目录结构及主要文件:在系统的后前端开发使用的SpringBoot结合Mybatis-plus来进行的开发,下图是系统后端开发的目录结构。下面我将详细介绍一下主要目录的功能和一些重要的文件。

    后端开发目录结构及主要文件

六、代码示例:


    /**

     * 生成验证码

     */

    @GetMapping(/captchaImage)

    public AjaxResult getCode(HttpServletResponse response) throws IOException

    {

        AjaxResult ajax = AjaxResult.success();

        boolean captchaEnabled = configService.selectCaptchaEnabled();

        ajax.put(captchaEnabled, captchaEnabled);

        if (!captchaEnabled)

        {

            return ajax;

        }



        // 保存验证码信息

        String uuid = IdUtils.simpleUUID();

        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;



        String capStr = null, code = null;

        BufferedImage image = null;



        // 生成验证码

        String captchaType = RuoYiConfig.getCaptchaType();

        if (math.equals(captchaType))

        {

            String capText = captchaProducerMath.createText();

            capStr = capText.substring(0, capText.lastIndexOf(@));

            code = capText.substring(capText.lastIndexOf(@) + 1);

            image = captchaProducerMath.createImage(capStr);

        }

        else if (char.equals(captchaType))

        {

            capStr = code = captchaProducer.createText();

            image = captchaProducer.createImage(capStr);

        }



        redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);

        // 转换流信息写出

        FastByteArrayOutputStream os = new FastByteArrayOutputStream();

        try

        {

            ImageIO.write(image, jpg, os);

        }

        catch (IOException e)

        {

            return AjaxResult.error(e.getMessage());

        }



        ajax.put(uuid, uuid);

        ajax.put(img, Base64.encode(os.toByteArray()));

        return ajax;

    }

    /**

     * 通用的本地文件上传

     *

     * @param multipartFile 文件对象

     * @return 文件访问链接URL

     */

    @PostMapping(/file)

    public SimpleResponse uploadImg(@RequestParam(file) MultipartFile file) {

        // 文件后缀

        String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(.) + 1);

        File savePathFile = new File(newTomcatFolder);

        if (!savePathFile.exists()) {

            // 若不存在该目录,则创建目录

            savePathFile.mkdir();

        }

        // 通过UUID生成唯一文件名

        String filename = UUID.randomUUID() + . + suffix;

        try {

            // 将文件保存指定目录

            file.transferTo(new File(newTomcatFolder + filename));

        } catch (Exception e) {

            e.printStackTrace();

            return SimpleResponse.error(保存文件异常);

        }

        // 返回访问链接

        return SimpleResponse.success(newTomcatHost + filename);

    }

    @PostMapping(/login)

    public ReturnMsg manageLogin(@RequestBody Map<String, String> param) {

        if (StrUtil.isEmpty(param.get(username)) || StrUtil.isEmpty(param.get(password))) {

            return ReturnMsg.error(用户名或密码错误!);

        }

        ManageDTO manageDTO = new ManageDTO();

        manageDTO.setUserName(param.get(username));

        manageDTO.setPassWord(param.get(password));

        QueryWrapper<ManageDTO> manageDTOQueryWrapper = new QueryWrapper<>(manageDTO);

        manageDTOQueryWrapper.last(limit 1);

        ManageDTO adminDTOS = manageService.getOne(manageDTOQueryWrapper);

        if (adminDTOS == null) return ReturnMsg.error(用户名或密码错误!);

        Map<String, Object> map = new HashMap<>();

        map.put(avatar, StrUtil.isNotBlank(adminDTOS.getPhotoImg()) ? adminDTOS.getPhotoImg() : https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif);

        map.put(introduction, adminDTOS.getName() + ,你好!);

        map.put(name, adminDTOS.getName());

        map.put(roles, Arrays.asList(admin));

        map.put(type, adminDTOS.getStatus());

        Map<String, String> returnMap = new HashMap<>();

        String uuid = UUID.randomUUID().toString();

        returnMap.put(token, uuid);

        userInfoMap.put(uuid, JSON.toJSONString(map));

        return ReturnMsg.ok(returnMap);

    }

七、论文参考:

论文参考···论文参考图

八、项目总结:

本次项目开发是一个基于互联网的货物管理系统,旨在解决传统的手工记录和人工管理的方式带来的数据准确性、工作量和管理效率等问题。

在开发过程中,我们采用了SpringBoot和Vue作为总体框架前后端的总体框架,并使用了MySQL数据库用于数据存储与管理。同时,在开发过程中使用ElementUI和Mybatis-Plus来提高开发过程中的效率与质量。在本次项目中,我们设计了一个测试用例管理系统,通过系统的用户管理、角色管理、菜单管理、部门管理、岗位管理、操作日志管理、登录日志管理等模块,实现了对测试用例进行管理的功能。在技术方面,我们使用了Spring Boot框架、MyBatis框架、MySQL数据库以及ElementUI等技术进行开发,并且在开发过程中遵循了敏捷开发和测试驱动开发的原则,保证了开发效率和软件质量。

该项目的优点在与数据准确性高:系统通过网络实时更新库存信息,有效避免手工记录带来的数据错误。工作量减少:系统可以自动完成部分复杂的管理工作,减少了人工的工作量。管理效率提高:系统提供了多种管理功能,使得超市管理人员可以更加高效地管理货物。

联系咨询区

可沟通项目方向、预算、交付周期与答辩时间安排,支持按学校要求定制交付内容。

为你推荐

根据你的浏览兴趣与热门趋势,精选可能适合你的毕业设计项目。

基于JAVA+SpringBoot+Vue+uniapp的微信小程序点餐平台

SpringBootVue微信小程序UniAppMySQL前后端分离支付功能小程序端

该系统是一个基于Java+SpringBoot后端、Vue+Uniapp前端的微信小程序点餐平台。平台实现了在线菜单浏览、购物车管理、订单提交与支付、后台数据统计等核心功能,为餐饮商家提供高效便捷的数字化点餐解决方案。项目采用前后端分离架构,适合作为毕业设计或实际项目开发,展示了现代Web与移动应用系统的完整实现流程。

基于JAVA+SpringBoot+Vue+uniapp+协同过滤算法+爬虫+AI的减肥小程序

SpringBootVueUniAppAI智能推荐算法小程序端

该项目是一个集成了协同过滤推荐算法、网络爬虫与AI技术的智能减肥小程序。系统采用JAVA+SpringBoot构建后端服务,Vue+uniapp实现跨平台前端,旨在为用户提供个性化的饮食与运动方案。核心功能包括基于用户行为的智能推荐、健康数据管理及社区互动,适合作为毕业设计或实际项目开发,展示了现代Web与移动应用在信息管理与系统开发中的综合实践。

基于JAVA+SpringBoot+Vue的自动阅卷分析系统

SpringBootVueMySQLAI智能数据可视化前后端分离PC端

该系统是一个基于JAVA+SpringBoot后端与Vue前端的自动阅卷分析系统,旨在实现高效、准确的试卷批改与学习数据分析。核心功能包括智能识别与评分、错题统计分析、成绩报告生成以及教学效果评估。该系统开发专注于提升阅卷效率与信息管理深度,适用于在线教育、考试机构及毕业设计项目实现,为教学管理与学习分析提供一体化解决方案。

基于JAVA+SpringBoot+Vue+uniApp小程序的心理健康测试平台

SpringBootVue微信小程序UniAppMySQL前后端分离小程序端

该心理健康测试平台是一个集前端小程序与后端管理系统于一体的综合系统开发项目。平台采用JAVA与SpringBoot构建稳健后端,结合Vue与uniApp实现跨端小程序开发,为用户提供便捷的心理测评与报告服务。系统核心功能包括题库管理、在线测试、数据分析及报告生成,旨在通过信息化手段提升心理健康服务的可及性与专业性,适用于毕业设计或实际项目实现。

基于JAVA+SpringBoot+Vue+uniapp的前后端分离的微信小程序的艺术品陶瓷商城

SpringBootVue微信小程序UniAppMySQL前后端分离小程序端

该项目是一个基于JAVA+SpringBoot+Vue+uniapp技术栈的前后端分离微信小程序艺术品陶瓷商城系统。系统开发实现了艺术品陶瓷的在线展示、商品管理、用户订单处理及支付集成等核心功能,为陶瓷艺术品的数字化交易提供了完整的信息管理解决方案,适合作为毕业设计或商业项目实现。

基于JAVA+SpringBoot+Vue的二手车交易系统

SpringBootVueMySQL前后端分离PC端

该系统是一个基于Java+SpringBoot+Vue的二手车交易管理系统,旨在为用户提供便捷的在线车辆买卖平台。核心功能包括车辆信息发布、智能搜索、在线咨询、交易管理及用户评价等模块。通过前后端分离的系统开发模式,实现了高效的信息管理和流畅的用户体验,适合作为毕业设计或实际项目实现,帮助提升二手车交易效率与透明度。

基于JAVA+SpringBoot+Vue的故障报修平台

SpringBootVueMySQL前后端分离PC端

该项目是一个基于Java、SpringBoot和Vue的故障报修平台,旨在实现高效的设备故障管理与维修流程。系统提供用户在线报修、工单分配、进度跟踪及数据统计等核心功能,适用于企业或校园的日常运维。通过前后端分离架构,确保了系统的可扩展性和维护性,适合作为毕业设计或实际项目实现,展示了现代Web信息管理系统的开发实践。

基于JAVA+SpringBoot+Vue的前后端分离的学校请假管理系统

SpringBootVueMySQL权限控制多角色系统前后端分离PC端

这是一个基于JAVA+SpringBoot+Vue的前后端分离学校请假管理系统,旨在实现学生请假流程的数字化与高效管理。系统开发涵盖了学生在线提交申请、辅导员与院系审批、请假记录统计等核心功能,优化了传统纸质流程。该项目可作为信息管理系统的毕业设计或实际应用案例,展示了前后端分离架构在项目实现中的优势。