摘要
随着信息化管理的不断深入,超市仓储管理逐渐向高效、智能方向发展。本文基于SpringBoot框架设计并实现了一套B/S架构的超市仓储管理系统,覆盖管理员、采购人员、销售人员和仓管用户等多角色操作,满足不同岗位的业务需求。系统功能涵盖用户权限管理、货物分类与信息维护、采购与销售订单处理、货物的出入库操作等多个方面,通过清晰的功能模块划分,提高了操作效率和数据准确性。管理员可对所有模块进行全面管理,采购和销售人员则聚焦于各自职能相关的订单与货物操作,而仓管用户主要处理入库、出库流程。采用前后端分离的开发模式,结合数据库实现数据持久化,确保系统的可扩展性与稳定性。整体设计兼顾功能实用性与操作便捷性,具有良好的应用推广价值。
关键词:超市仓储管理系统;SpringBoot;B/S
Abstract
As information management continues to advance, supermarket warehouse management is evolving toward greater efficiency and intelligence. This paper designs and implements a B/S architecture-based supermarket warehouse management system using the SpringBoot framework, supporting multi-role operations including administrators, procurement staff, sales staff, and warehouse users to meet the needs of various positions. The system includes functionalities such as user permission control, goods classification and information maintenance, procurement and sales order processing, as well as goods inbound and outbound operations. Clear functional module division improves both operational efficiency and data accuracy. Administrators have full access to manage all modules, procurement and sales staff focus on tasks related to orders and inventory, while warehouse users primarily handle the inbound and outbound processes. The system adopts a front-end/back-end separation model and integrates a database to ensure data persistence, scalability, and system stability. The overall design balances practical functionality with user-friendly operation, offering strong value for application and promotion.
Key words:Supermarket warehouse management system; SpringBoot; B/S
目录
摘要
Abstract
1 绪论
1.1 研究背景与意义
1.1.1 研究背景
1.1.2 研究意义
1.2 国内外研究现状
1.2.1 国内现状
1.2.2 国外现状
1.3 主要研究内容
2 相关技术介绍
2.1 Html语言
2.2 B/S框架
2.3 SpringBoot框架
2.4 CSS
2.5 SQL数据库
3 系统需求分析
3.1 功能需求分析
3.1.1 用户需求
3.1.2 功能需求
3.1.3 用户用例图
3.2 可行性分析
3.2.1 技术可行性
3.2.2 操作可行性
3.2.3 经济可行性
4 系统设计
4.1 系统设计流程
4.1.1 用户登录流程
4.1.2 添加信息流程
4.1.3 修改信息流程
4.1.4 删除信息流程
4.2 数据库表ER
4.3 数据库表物理设计
5 系统实现
5.1 仓管用户功能实现
5.1.1 货物信息
5.1.2 销售订单
5.1.3 采购订单
5.2 采购人员功能
5.2.1 货物信息
5.2.2 采购订单
5.2.3 货物入库
5.3 管理员功能
5.3.1 用户管理
5.3.2 货物分类
5.3.3 货物信息
5.4 销售人员功能
5.4.1 货物信息
5.4.2 销售订单
6 系统测试
6.1 测试目的
6.2 测试方法
6.3 测试内容
6.4 测试结论
7 总结
参考文献
致谢
- 绪论
- 研究背景与意义
- 研究背景
- 研究背景与意义
随着零售行业竞争的日益加剧,超市在日常运营中对仓储管理的依赖程度不断提高。传统的仓储管理多采用人工记录或简单的电子表格工具,存在数据更新滞后、信息混乱、出入库不清等问题,严重影响了货物流通效率和库存准确性。在快速消费品种类繁多、库存变化频繁的背景下,依靠手工管理已难以满足现代企业的运营需求。因此,借助现代信息技术,构建一个高效、智能、可视化的仓储管理平台,已成为超市提高管理水平、降低运营成本、提升客户满意度的重要途径。特别是在大数据和云计算技术不断发展的当下,企业越来越重视信息系统在内部管理中的作用,通过系统化手段实现库存精准控制与业务流程优化已成为行业趋势。
- 研究意义
通过构建一套功能完善的超市仓储管理系统,有助于提升仓储操作的规范化与高效化,实现货物信息的实时更新与追踪,增强库存调度的灵活性和响应速度。不同角色的权限区分保障了数据的安全性与操作的针对性,有效降低了人为差错率,为管理层提供了全面、精准的库存与交易数据支持,为决策提供了可靠依据。同时,通过优化采购、销售和库存的协同流程,有助于减少库存积压,提升商品周转率,增强企业的市场反应能力和运营效率。研究成果不仅对传统零售行业的信息化升级具有现实意义,也为中小型企业在信息系统建设方面提供了可借鉴的参考路径。
- 国内外研究现状
- 国内现状
- 国内外研究现状
近年来,随着信息技术的发展,国内企业对仓储管理的信息化需求逐步增强,许多研究开始聚焦于如何将现代信息系统与仓储业务深度融合。多数超市和零售企业逐步引入ERP系统、WMS系统等,实现对库存、订单、货物流转等环节的数字化管理。国内研究普遍围绕B/S架构系统开发、数据库设计、用户权限管理、数据可视化等展开,注重实用性与可操作性。一些高校和科研机构也开展了大量基于Java、SpringBoot等主流开发框架的仓储管理系统设计项目,推动系统在中小企业中的落地应用。然而,整体水平与发达国家相比仍存在差距,主要体现在系统的智能化程度、数据分析能力、自动化协同管理等方面。同时,中小企业在资金、技术和人才方面存在短板,导致系统建设覆盖率较低,实际应用仍以传统手工或半自动方式为主,限制了仓储管理效率的提升。
- 国外现状
国外在仓储与供应链管理领域起步较早,相关研究已趋于成熟。欧美等发达国家广泛采用自动化仓储系统(AS/RS)、物联网、RFID、人工智能等新兴技术,实现从仓储到配送的全流程智能控制。在软件层面,国外企业注重系统的模块化设计和灵活配置能力,强调与企业其他管理系统如ERP、CRM的无缝集成,提升整体业务协同效率。研究内容涵盖库存优化算法、订单分拣路径规划、动态调度与预测模型等,强调系统对实时数据的采集与分析能力。在用户交互体验方面,国外开发者更加重视界面友好性与响应速度,系统设计理念更为先进。此外,许多研究聚焦于云计算环境下的多租户仓储管理解决方案,提升资源共享与系统弹性,具有较强的前瞻性和实用价值。
- 主要研究内容
本研究围绕超市仓储管理中的核心业务流程,结合现代Web开发技术,构建一个基于SpringBoot的B/S架构管理平台,覆盖用户权限控制、货物信息维护、订单处理与库存流转等关键环节。主要内容包括:系统架构的整体设计与技术选型,明确以SpringBoot为核心框架,结合前端技术实现良好的用户交互体验;数据库结构的设计,涵盖用户信息、货物分类、采购与销售订单、出入库记录等数据表,确保数据存储的完整性与一致性;角色权限划分与功能模块实现,针对管理员、采购人员、销售人员与仓管用户四类角色,分别设计其对应的功能界面与操作权限,确保系统使用的安全性与操作的高效性;业务流程的逻辑实现,通过控制器与服务层分离,实现采购、入库、销售、出库等流程的有序衔接;系统测试与功能验证,包括对各模块功能的全面测试,确保系统在不同场景下的稳定运行。研究过程中注重系统的实用性与可扩展性,为后续增加新功能、对接第三方平台或部署于多端环境提供技术基础,力求构建一个高效、易用、可持续迭代的仓储管理平台。
- 相关技术介绍
- Html语言
HTML(超文本标记语言)是构建Web页面的基础语言,用于定义网页的结构与内容。它通过标记标签对文本、图像、链接、表格等元素进行组织,使浏览器能够正确解析和呈现网页内容。随着前端技术的发展,HTML不断演进,已更新至HTML5版本,增强了对音视频、图形绘制、本地存储等多种功能的支持,提高了网页的交互性与表现力[1]。HTML本身不具备编程逻辑,但可与CSS、JavaScript等技术结合使用,实现页面样式美化与动态效果控制,广泛应用于各类信息管理系统与交互式平台开发中[2]。此外,HTML具有良好的跨平台特性,可在各类终端设备上运行,适配不同浏览器环境,是B/S架构系统中不可或缺的前端技术之一。通过对HTML语言的合理运用,开发者可以高效构建出结构清晰、内容丰富、兼容性强的网页界面,为用户提供良好的访问与使用体验。
- B/S框架
B/S(Browser/Server,浏览器/服务器)架构是一种典型的网络应用模式,客户端无需安装专用软件,仅需通过浏览器即可访问系统服务。该架构将系统的主要功能集中部署在服务器端,客户端负责用户界面展示与基础交互,从而大大简化了系统的维护与更新工作。与传统的C/S(Client/Server)架构相比,B/S架构具有部署简便、维护成本低、跨平台性强等优势,特别适合应用于管理信息系统、在线办公、电子商务等场景中[3]。随着Web技术的发展,B/S架构不断融合HTML、CSS、JavaScript等前端技术,实现更为灵活和动态的用户界面交互,提升了用户体验与系统响应速度。
在实际应用中,B/S架构通常结合Java、SpringBoot等后端技术实现业务逻辑控制,并通过数据库完成数据的持久化存储。服务器作为系统核心,处理所有业务请求、数据验证与逻辑运算,客户端通过浏览器发起HTTP请求,实现与服务器的数据交互。这种模式能够有效降低客户端资源占用,提升系统在多用户并发环境下的运行效率与稳定性[4]。此外,B/S架构支持多终端访问,适用于PC端、移动端等多种设备形态,具备良好的可扩展性与应用推广价值。在各类基于信息系统的开发项目中,B/S架构已成为主流选择之一。
- SpringBoot框架
SpringBoot是基于Spring框架构建的一款快速开发工具,致力于简化Java后端应用程序的开发流程。它通过“约定优于配置”的理念,减少了繁琐的XML配置,开发者只需进行少量配置即可构建出功能完整的Web应用。SpringBoot内置了大量自动化配置组件,集成了常用开发框架如Spring MVC、Spring Data JPA、Thymeleaf等,并支持嵌入式Web服务器(如Tomcat),使得应用具备即插即用、开箱即用的特性[5]。开发者可以通过注解驱动的方式进行控制层、服务层、数据访问层的快速构建,大幅度提高了系统开发效率,降低了项目部署与运维的复杂度。
在实际应用中,SpringBoot广泛应用于各类管理系统、服务平台及数据交互系统的构建中,尤其适合与B/S架构结合,实现前后端分离的系统设计模式。该框架拥有良好的模块化设计和强大的生态支持,可通过与MyBatis、Hibernate等ORM工具结合实现数据库交互,也可轻松对接Redis、RabbitMQ等中间件,增强系统的缓存能力与消息处理能力[6]。此外,SpringBoot支持RESTful API接口开发,适配多终端请求,有助于实现灵活的系统扩展与服务对接。其优越的性能、稳定性及广泛的社区支持,使其成为现代Java Web开发中的主流框架之一。通过SpringBoot的应用,开发者可以更加专注于业务逻辑实现,加快产品上线节奏,提升整体开发质量与效率。
- CSS
CSS(Cascading Style Sheets,层叠样式表)是一种用于网页设计的样式描述语言,主要负责HTML页面的视觉表现与布局控制。它通过定义元素的颜色、字体、边距、对齐方式、动画效果等样式属性,使网页内容与表现分离,提升网页结构的清晰度和可维护性。CSS具有层叠性、继承性和选择器灵活等特点,开发者可以针对不同元素设定样式规则,实现统一美观的页面效果,同时支持响应式设计,适配不同设备终端[7]。随着Web前端技术的发展,CSS不断扩展,新增了如Flexbox、Grid、变量、自定义动画等功能模块,大大增强了页面布局能力与交互效果表现力[8]。在现代网页开发中,CSS与HTML、JavaScript共同构成前端开发的核心技术体系,不仅提升了用户界面美观度,也为网页的交互性和易用性提供了技术支撑,是构建高质量Web页面不可或缺的重要工具。
- SQL数据库
SQL(Structured Query Language,结构化查询语言)是一种专用于关系型数据库管理与操作的标准语言,广泛应用于数据的查询、插入、更新、删除及表结构的定义和权限控制等方面。其语法简洁且功能强大,能够高效处理大规模数据交互和事务控制,是构建现代数据库应用系统的核心工具[9]。SQL语言支持多种数据操作方式,包括数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)等,可满足复杂数据处理与多用户访问控制的需求。同时,SQL具有较强的可移植性,适用于MySQL、PostgreSQL、Oracle、SQL Server等多种主流数据库系统。在系统安全方面,随着Web应用的普及,SQL注入成为常见攻击手段,因此开发中需采用预编译语句、参数化查询等方式防范注入风险,保障数据安全[10]。作为数据库交互的桥梁,SQL在信息系统、企业管理平台及电子商务系统中发挥着不可替代的作用,是实现数据持久化与规范化管理的关键技术之一。
- 系统需求分析
- 功能需求分析
- 用户需求
- 功能需求分析
在超市日常运营过程中,不同岗位的工作人员对仓储管理系统有着不同的使用需求。管理员需要具备对整个平台的全面管理权限,能够进行用户管理、货物分类维护、订单审批及系统数据监控等操作;采购人员关注采购订单的录入与跟进、采购商品的入库确认,希望操作界面简洁、流程清晰;销售人员则侧重于销售订单的创建与处理、商品出库管理,要求系统能快速响应,提高订单处理效率;仓管用户主要负责出入库操作及货物信息的查看,希望能通过系统实现实时库存监控与数据追踪。所有用户普遍希望系统具有操作简便、界面友好、响应迅速的特点,能够减少重复录入、降低操作复杂度,同时保证数据的准确性与安全性。因此,系统需针对不同角色设定对应的功能模块与权限范围,实现个性化、高效化的业务支持。
- 功能需求
根据用户使用场景,系统需实现用户身份识别与权限控制,确保各类用户只能访问与其职责相关的功能模块。管理员功能包括用户管理、货物分类设置、货物信息维护、采购与销售订单审核、库存出入库记录管理等,拥有系统的最高权限;采购人员可查看和录入采购订单,进行入库操作,并查询相关货物信息;销售人员负责销售订单的创建、处理及出库管理,支持订单状态追踪与库存检查;仓管用户可以查看货物信息、处理采购与销售的出入库流程。系统应支持数据的增删改查操作,具备查询过滤、状态提示、数据导出等辅助功能,并与后台数据库实现数据实时交互与更新。此外,为提升使用体验,系统应具备良好的界面设计、操作指引和异常提示机制,确保各类用户能够在最短时间内熟练掌握操作流程。系统功能结构图如图3-1所示。
图3-1系统功能结构图
- 用户用例图
图3-2 仓管用户用例图
图3-3 采购人员用例图
图3-4销售人员用例图
图3-5管理员用例图
- 可行性分析
- 技术可行性
- 可行性分析
本项目的技术可行性较高,系统采用SpringBoot作为后端框架,结合前端的HTML、CSS、JavaScript和数据库技术(如MySQL),构建一个B/S架构的超市仓储管理系统。SpringBoot具有完善的生态支持与社区资源,能够有效提高开发效率并减少配置复杂性,其自动配置功能和灵活的模块化设计使得开发过程更加高效。前端技术HTML、CSS、JavaScript在网页设计中已非常成熟,能够实现良好的用户界面和交互体验。数据库层面,MySQL作为一款开源的关系型数据库,支持高并发查询、事务处理及数据一致性保障,能够满足仓储管理系统的高效数据存储与操作需求。同时,B/S架构的应用能够大大降低客户端的硬件要求,增强系统的可扩展性与易维护性。在实现过程中,结合当前流行的前后端分离技术,系统的开发和部署将更加灵活,且便于后期功能扩展。因此,从技术层面来看,系统设计与实施是可行的,能够支持实际应用的开发和长期稳定运行。
- 操作可行性
本系统的操作可行性较强,考虑到系统用户包括管理员、采购人员、销售人员和仓管用户等多角色,设计时注重系统的操作简便性与用户体验。通过采用现代Web开发技术,系统的前端页面将具备清晰的导航与操作提示,确保各类用户能够在短时间内熟悉并高效使用。管理员将拥有全面的权限,能够管理系统中的所有数据和用户,而其他角色将根据不同岗位职能,限定相应的功能模块权限,避免信息泄露与操作混乱。此外,系统将提供详尽的操作说明与帮助文档,帮助用户解决在操作过程中遇到的问题。同时,系统设计注重响应速度和流畅性,用户无论在PC端还是移动端使用,都能保证良好的交互体验。在实现过程中,系统会针对每个角色提供个性化定制的界面布局和操作流程,确保满足不同用户群体的需求,从而提高系统的适用性和易用性。
- 经济可行性
从经济角度来看,超市仓储管理系统的实施具有较高的经济可行性。首先,采用SpringBoot框架与开源数据库MySQL,能够大大降低开发和部署的成本,避免了昂贵的商业软件许可费用。其次,系统的开发与维护将由技术团队负责,开发周期相对较短,预计在3-6个月内完成系统设计、开发与部署,具有较低的开发成本。通过自动化和信息化的管理手段,系统可以显著提高仓储操作的效率,减少人工错误和库存损失,从而降低运营成本。对于中小型超市来说,通过系统化的管理,能够更好地实现库存控制、订单管理与数据统计,优化采购与销售流程,提高周转率和销售额,最终实现经济效益的提升。此外,B/S架构使得系统的升级和维护更加简便,降低了长期运维的成本。因此,从整体上看,投资建设该系统能够带来可观的经济效益,是一个值得投入的项目。
- 系统设计
- 系统设计流程
用户输入用户名和密码后,系统先检查输入是否为空,再验证用户名是否存在,若存在则通过用户名获取密码并校验。若密码正确则登录成功,否则提示密码错误。若用户名不存在或无法登录,提示用户操作无效。如图4-1所示。
图4-1登录流程图
管理员可以添加信息,用户添加可以自己权限内的信息,输入信息后,要想利用这个软件来进行系统的安全管理,首先需要登录到该软件中。添加信息流程如图4-2所示。
图4-2添加信息流程图
用户首先选择需要修改的记录,输入修改后的数据,系统判断输入数据是否合法。若数据不合法,提示重新输入;若数据合法,则将修改后的数据写入数据库,完成操作后流程结束。修改信息流程图如图4-3所示。
图4-3修改信息流程图
用户选择需要删除的记录后,系统判断是否确认删除。若未确认,返回选择环节;若确认删除,则更新数据库,删除对应记录,完成操作后流程结束。删除信息流程图如图4-4所示。
图4-4删除信息流程图
- 数据库表ER
数据库概念模型是数据库设计的一个阶段,它描述了数据库中数据的逻辑结构和之间的关系,而不关注具体的实现细节。概念模型通常用于数据库设计的初期阶段,以帮助开发人员和用户理解数据库中存储的数据以及数据之间的关系。
数据库概念模型通常采用高层次的概念来描述数据,常见的概念模型包括实体-关系模型(Entity-Relationship Model,ERM)、面向对象模型(Object-Oriented Model)等。在概念模型中,数据被抽象为实体(Entity)和实体之间的关系(Relationship),并且定义了实体的属性(Attribute),通常以E-R图来表达。以下将展示系统的全局E-R图。
系统全局E-R图如图4-5所示。
图4-5系统E-R图
- 数据库表物理设计
表 4-1-access_token(登陆访问时长)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | token_id | int | 是 | 是 | 临时访问牌ID | |
2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
3 | info | text | 65535 | 否 | 否 | 信息 |
4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
5 | create_time | timestamp | 是 | 否 | 创建时间 | |
6 | update_time | timestamp | 是 | 否 | 更新时间 | |
7 | user_id | int | 是 | 否 | 用户编号 |
表 4-2-auth(用户权限管理)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | auth_id | int | 是 | 是 | 授权ID | |
2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
4 | table_name | varchar | 64 | 否 | 否 | 表名 |
5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
6 | path | varchar | 255 | 否 | 否 | 路由路径 |
7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
9 | position | varchar | 32 | 否 | 否 | 位置 |
10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
11 | add | tinyint | 是 | 否 | 是否可增加 | |
12 | del | tinyint | 是 | 否 | 是否可删除 | |
13 | set | tinyint | 是 | 否 | 是否可修改 | |
14 | get | tinyint | 是 | 否 | 是否可查看 | |
15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
20 | option | text | 65535 | 否 | 否 | 配置 |
21 | create_time | timestamp | 是 | 否 | 创建时间 | |
22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-3-cargo_information(货物信息)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | cargo_information_id | int | 是 | 是 | 货物信息ID | |
2 | cargo_no | varchar | 64 | 是 | 是 | 货物编号 |
3 | name_of_goods | varchar | 64 | 否 | 否 | 货物名称 |
4 | classification_of_goods | varchar | 64 | 否 | 否 | 货物分类 |
5 | goods_inventory | double | 否 | 否 | 货物库存 | |
6 | sales_price | double | 否 | 否 | 销售价格 | |
7 | cargo_specifications | varchar | 64 | 否 | 否 | 货物规格 |
8 | pictures_of_goods | varchar | 255 | 否 | 否 | 货物图片 |
9 | goods_remarks | text | 65535 | 否 | 否 | 货物备注 |
10 | purchase_order_limit_times | int | 是 | 否 | 采购订单限制次数 | |
11 | sales_order_limit_times | int | 是 | 否 | 销售订单限制次数 | |
12 | create_time | datetime | 是 | 否 | 创建时间 | |
13 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-4-classification_of_goods(货物分类)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | classification_of_goods_id | int | 是 | 是 | 货物分类ID | |
2 | classification_of_goods | varchar | 64 | 否 | 否 | 货物分类 |
3 | create_time | datetime | 是 | 否 | 创建时间 | |
4 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-5-code_token(验证码)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | code_token_id | int | 是 | 是 | 验证码ID | |
2 | token | varchar | 255 | 否 | 否 | 令牌 |
3 | code | varchar | 255 | 否 | 否 | 验证码 |
4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
5 | create_time | timestamp | 是 | 否 | 创建时间 | |
6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-6-goods_out_of_the_warehouse(货物出库)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | goods_out_of_the_warehouse_id | int | 是 | 是 | 货物出库ID | |
2 | cargo_no | varchar | 64 | 否 | 否 | 货物编号 |
3 | name_of_goods | varchar | 64 | 否 | 否 | 货物名称 |
4 | classification_of_goods | varchar | 64 | 否 | 否 | 货物分类 |
5 | sales_price | double | 否 | 否 | 销售价格 | |
6 | cargo_specifications | varchar | 64 | 否 | 否 | 货物规格 |
7 | sales_staff | int | 否 | 否 | 销售人员 | |
8 | name_of_personnel | varchar | 64 | 否 | 否 | 人员姓名 |
9 | sales_time | date | 否 | 否 | 销售时间 | |
10 | sales_quantity | double | 否 | 否 | 销售数量 | |
11 | sales_amount | varchar | 64 | 否 | 否 | 销售金额 |
12 | outbound_time | date | 否 | 否 | 出库时间 | |
13 | create_time | datetime | 是 | 否 | 创建时间 | |
14 | update_time | timestamp | 是 | 否 | 更新时间 | |
15 | source_table | varchar | 255 | 否 | 否 | 来源表 |
16 | source_id | int | 否 | 否 | 来源ID | |
17 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-7-goods_warehousing(货物入库)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | goods_warehousing_id | int | 是 | 是 | 货物入库ID | |
2 | cargo_no | varchar | 64 | 否 | 否 | 货物编号 |
3 | name_of_goods | varchar | 64 | 否 | 否 | 货物名称 |
4 | classification_of_goods | varchar | 64 | 否 | 否 | 货物分类 |
5 | cargo_specifications | varchar | 64 | 否 | 否 | 货物规格 |
6 | procurement_staff | int | 否 | 否 | 采购人员 | |
7 | name_of_personnel | varchar | 64 | 否 | 否 | 人员姓名 |
8 | purchase_time | date | 否 | 否 | 采购时间 | |
9 | purchase_quantity | double | 否 | 否 | 采购数量 | |
10 | receipt_time | date | 否 | 否 | 入库时间 | |
11 | create_time | datetime | 是 | 否 | 创建时间 | |
12 | update_time | timestamp | 是 | 否 | 更新时间 | |
13 | source_table | varchar | 255 | 否 | 否 | 来源表 |
14 | source_id | int | 否 | 否 | 来源ID | |
15 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-8-hits(用户点击)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | hits_id | int | 是 | 是 | 点赞ID | |
2 | user_id | int | 是 | 否 | 点赞人 | |
3 | create_time | timestamp | 是 | 否 | 创建时间 | |
4 | update_time | timestamp | 是 | 否 | 更新时间 | |
5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
7 | source_id | int | 是 | 否 | 来源ID |
表 4-9-procurement_staff(采购人员)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | procurement_staff_id | int | 是 | 是 | 采购人员ID | |
2 | name_of_personnel | varchar | 64 | 否 | 否 | 人员姓名 |
3 | gender_of_staff | varchar | 64 | 否 | 否 | 人员性别 |
4 | age_of_personnel | varchar | 64 | 否 | 否 | 人员年龄 |
5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
6 | user_id | int | 是 | 否 | 用户ID | |
7 | create_time | datetime | 是 | 否 | 创建时间 | |
8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-10-purchase_order(采购订单)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | purchase_order_id | int | 是 | 是 | 采购订单ID | |
2 | cargo_no | varchar | 64 | 否 | 否 | 货物编号 |
3 | name_of_goods | varchar | 64 | 否 | 否 | 货物名称 |
4 | classification_of_goods | varchar | 64 | 否 | 否 | 货物分类 |
5 | cargo_specifications | varchar | 64 | 否 | 否 | 货物规格 |
6 | procurement_staff | int | 否 | 否 | 采购人员 | |
7 | name_of_personnel | varchar | 64 | 否 | 否 | 人员姓名 |
8 | purchase_time | date | 否 | 否 | 采购时间 | |
9 | purchase_quantity | double | 否 | 否 | 采购数量 | |
10 | purchase_remarks | varchar | 64 | 否 | 否 | 采购备注 |
11 | goods_warehousing_limit_times | int | 是 | 否 | 入库限制次数 | |
12 | create_time | datetime | 是 | 否 | 创建时间 | |
13 | update_time | timestamp | 是 | 否 | 更新时间 | |
14 | source_table | varchar | 255 | 否 | 否 | 来源表 |
15 | source_id | int | 否 | 否 | 来源ID | |
16 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-11-sales_order(销售订单)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | sales_order_id | int | 是 | 是 | 销售订单ID | |
2 | cargo_no | varchar | 64 | 否 | 否 | 货物编号 |
3 | name_of_goods | varchar | 64 | 否 | 否 | 货物名称 |
4 | classification_of_goods | varchar | 64 | 否 | 否 | 货物分类 |
5 | sales_price | double | 否 | 否 | 销售价格 | |
6 | cargo_specifications | varchar | 64 | 否 | 否 | 货物规格 |
7 | sales_staff | int | 否 | 否 | 销售人员 | |
8 | name_of_personnel | varchar | 64 | 否 | 否 | 人员姓名 |
9 | sales_time | date | 否 | 否 | 销售时间 | |
10 | sales_quantity | double | 否 | 否 | 销售数量 | |
11 | sales_amount | varchar | 64 | 否 | 否 | 销售金额 |
12 | sales_note | varchar | 64 | 否 | 否 | 销售备注 |
13 | goods_out_of_the_warehouse_limit_times | int | 是 | 否 | 出库限制次数 | |
14 | create_time | datetime | 是 | 否 | 创建时间 | |
15 | update_time | timestamp | 是 | 否 | 更新时间 | |
16 | source_table | varchar | 255 | 否 | 否 | 来源表 |
17 | source_id | int | 否 | 否 | 来源ID | |
18 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-12-sales_staff(销售人员)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | sales_staff_id | int | 是 | 是 | 销售人员ID | |
2 | name_of_personnel | varchar | 64 | 否 | 否 | 人员姓名 |
3 | gender_of_staff | varchar | 64 | 否 | 否 | 人员性别 |
4 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
5 | user_id | int | 是 | 否 | 用户ID | |
6 | create_time | datetime | 是 | 否 | 创建时间 | |
7 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-13-upload(文件上传)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | upload_id | int | 是 | 是 | 上传ID | |
2 | name | varchar | 64 | 否 | 否 | 文件名 |
3 | path | varchar | 255 | 否 | 否 | 访问路径 |
4 | file | varchar | 255 | 否 | 否 | 文件路径 |
5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
6 | father_id | int | 否 | 否 | 父级ID | |
7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-14-user(用户账户)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | user_id | int | 是 | 是 | 用户ID | |
2 | state | smallint | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) | |
3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
4 | login_time | timestamp | 是 | 否 | 上次登录时间 | |
5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) | |
7 | username | varchar | 16 | 是 | 否 | 用户名 |
8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
9 | password | varchar | 64 | 是 | 否 | 密码 |
10 | varchar | 64 | 否 | 否 | 邮箱 | |
11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-15-user_group(用户组)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | group_id | mediumint | 是 | 是 | 用户组ID | |
2 | display | smallint | 是 | 否 | 显示顺序 | |
3 | name | varchar | 16 | 是 | 否 | 名称 |
4 | description | varchar | 255 | 否 | 否 | 描述 |
5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
7 | source_id | int | 是 | 否 | 来源ID | |
8 | register | smallint | 否 | 否 | 注册位置 | |
9 | create_time | timestamp | 是 | 否 | 创建时间 | |
10 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-16-warehouse_users(仓管用户)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | warehouse_users_id | int | 是 | 是 | 仓管用户ID | |
2 | warehouse_name | varchar | 64 | 否 | 否 | 仓管姓名 |
3 | barn_gender | varchar | 64 | 否 | 否 | 仓管性别 |
4 | warehouse_management_age | varchar | 64 | 否 | 否 | 仓管年龄 |
5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
6 | user_id | int | 是 | 否 | 用户ID | |
7 | create_time | datetime | 是 | 否 | 创建时间 | |
8 | update_time | timestamp | 是 | 否 | 更新时间 |
- 系统实现
- 仓管用户功能实现
- 货物信息
- 仓管用户功能实现
仓管用户进入货物信息页面,浏览货物的编号、名称、分类、库存数量等基本信息。通过搜索框输入关键词或选择分类筛选,快速查找目标货物,点击货物条目可查看详细属性与库存状态。其界面如图5-1所示。
图5-1货物信息界面。
- 销售订单
仓管用户进入销售订单页面,浏览系统内所有销售记录。可根据客户名称或订单状态进行筛选,点击查看详细信息,确认出库情况,并执行后续的发货或库存更新操作。其界面如图5-2所示。
图5-2销售订单界面。
- 采购订单
仓管用户进入采购订单页面,查看所有采购记录及其状态。可通过筛选功能快速定位目标订单,点击订单可查看货物名称、数量、供应商等详细信息,并跟进入库流程。其界面如图5-3所示。
图5-3采购订单界面。
- 采购人员功能
- 货物信息
- 采购人员功能
采购人员进入货物信息页面,浏览货物的编号、名称、供应商、单价、库存等基本信息。通过搜索栏输入关键词或选择分类筛选,快速查找目标货物,点击查看详细信息和采购记录。其界面如图5-4所示。
图5-4货物信息界面。
- 采购订单
采购人员进入采购订单页面,选择需要采购的货物,填写采购数量与相关说明,生成采购订单。可查看订单状态与历史采购记录,便于跟踪供应流程和调整采购计划。其界面如图5-5所示。
图5-5采购订单界面。
- 货物入库
采购人员进入货物入库页面,根据采购订单核对到货信息,填写实际到货数量并提交入库记录。系统同步更新库存数据,生成入库单据以备后续查询与审计。其界面如图5-6所示。
图5-6货物入库界面。
- 管理员功能
- 用户管理
- 管理员功能
管理员登录后台进入用户管理页面,查看各类用户的账户信息与权限状态。可新增、编辑或删除用户账号,并分配角色,确保系统权限分工合理、安全有效。其界面如图5-7所示。
图5-7用户管理界面。
- 货物分类
管理员登录后台进入货物分类页面,查看所有现有分类信息。可对分类进行新增、修改或删除操作,优化分类结构,提升货物信息的管理效率与查询便捷性。其界面如图5-8所示。
图5-8货物分类界面。
- 货物信息
管理员登录后台进入货物信息页面,浏览系统中所有货物详情。可对货物进行添加、修改或下架处理,确保库存数据的准确性及货物信息的实时更新。其界面如图5-9所示。
图5-9货物信息界面。
- 销售人员功能
- 货物信息
- 销售人员功能
销售人员进入货物信息页面,浏览货物的名称、单价、库存数量、分类等基本信息。可通过关键词搜索或筛选条件快速定位所需货物,点击查看详细信息及销售历史。 其界面如图5-10所示。
图5-10货物信息界面。
- 销售订单
销售人员进入销售订单页面,选择客户与所售货物,填写销售数量与价格,提交后生成销售订单。可查看订单状态与历史记录,便于管理客户订单与销售情况。其界面如图5-11所示。
图5-11销售订单界面。
- 系统测试
- 测试目的
测试的主要目的是确保系统的功能和性能满足预期的需求,同时识别和修复潜在的缺陷。通过系统测试,可以验证各个功能模块的正确性和稳定性,确保系统在不同使用场景下的表现符合设计要求。测试目的包括确认系统功能的完整性、验证数据处理的准确性、评估系统的性能和安全性。测试还可以提高用户满意度,保证用户在使用系统时获得流畅和可靠的体验。通过全面的测试,可以降低后期维护成本,减少系统上线后出现故障的风险,从而保障系统的长期稳定运行。
- 测试方法
在本系统中,测试方法主要依赖于测试用例的设计与执行。测试用例是根据系统需求文档编写的,覆盖所有功能模块及其边界情况。每个测试用例包含输入数据、预期结果和实际结果的对比,以验证系统的功能是否按预期工作。
常见的测试用例包括功能测试用例、边界测试用例和异常测试用例。功能测试用例针对系统的各项功能进行验证;边界测试用例则侧重于输入数据的边界条件,验证系统在极端情况下是否能够稳定运行;异常测试用例则用于验证系统在处理错误输入或异常情况时的反应。本文选择功能测试用例进行系统测试。
在测试执行过程中,记录每个用例的执行结果,并根据实际结果与预期结果的对比,判断系统是否存在缺陷。通过系统化的测试用例执行,可以有效提高测试的覆盖率和效率,为系统的最终上线提供保障。
- 测试内容
用户管理测试用例表如表6-1所示。
表6-1 用户管理测试用例。
测试项 | 测试用例 | 预期结果 | 结论 |
用户管理 | 1. 管理员登录后进入用户管理页面,点击“新增用户”,填写信息并提交。 | 系统提示添加成功,用户列表中显示新增用户。 | 与预期结果一致。 |
用户管理 | 2. 管理员点击用户列表中某用户的“编辑”按钮,修改其角色后保存。 | 系统提示修改成功,用户角色信息更新。 | 与预期结果一致。 |
用户管理 | 3. 管理员选中某用户,点击“删除”按钮并确认删除操作。 | 系统提示删除成功,该用户从列表中移除。 | 与预期结果一致。 |
用户管理 | 4. 管理员尝试添加一个已存在用户名的新用户。 | 系统提示用户名已存在,无法重复添加。 | 与预期结果一致。 |
货物分类测试用例表如表6-2所示。
表6-2 货物分类测试用例。
测试项 | 测试用例 | 预期结果 | 结论 |
货物分类 | 1. 管理员进入货物分类页面,点击“新增分类”,填写名称并提交。 | 系统提示添加成功,分类列表显示新分类。 | 与预期结果一致。 |
货物分类 | 2. 管理员点击分类列表中某分类的“编辑”按钮,修改名称后保存。 | 系统提示修改成功,分类名称更新。 | 与预期结果一致。 |
货物分类 | 3. 管理员点击某分类的“删除”按钮并确认操作。 | 系统提示删除成功,分类从列表中移除。 | 与预期结果一致。 |
货物分类 | 4. 管理员尝试添加一个空白名称的分类。 | 系统提示分类名称不能为空,无法提交。 | 与预期结果一致。 |
货物信息测试用例表如表6-3所示。
表6-3货物信息测试用例。
测试项 | 测试用例 | 预期结果 | 结论 |
货物信息 | 1. 管理员点击“新增货物”,填写完整信息后提交。 | 系统提示添加成功,货物信息出现在列表中。 | 与预期结果一致。 |
货物信息 | 2. 管理员点击某货物“编辑”按钮,更新价格信息并保存。 | 系统提示修改成功,列表中显示更新后的价格。 | 与预期结果一致。 |
货物信息 | 3. 管理员点击某货物“删除”按钮并确认删除。 | 系统提示删除成功,该货物不再显示在列表中。 | 与预期结果一致。 |
货物信息 | 4. 用户在货物信息页面搜索关键词“饮料”。 | 系统返回包含“饮料”关键词的所有货物记录。 | 与预期结果一致。 |
采购订单测试用例表如表6-4所示。
表6-4采购订单测试用例。
测试项 | 测试用例 | 预期结果 | 结论 |
采购订单 | 1. 采购人员点击“新增采购订单”,选择货物并填写数量后提交。 | 系统提示提交成功,订单列表显示新订单。 | 与预期结果一致。 |
采购订单 | 2. 采购人员查看采购订单详情,点击“编辑”修改数量后保存。 | 系统提示修改成功,订单详情显示更新的数量。 | 与预期结果一致。 |
采购订单 | 3. 采购人员点击某订单“删除”按钮并确认操作。 | 系统提示删除成功,该订单从列表中移除。 | 与预期结果一致。 |
采购订单 | 4. 采购人员尝试提交未选择货物的采购订单。 | 系统提示请选择货物,无法提交空订单。 | 与预期结果一致。 |
货物入库测试用例表如表6-5所示。
表6-5货物入库测试用例。
测试项 | 测试用例 | 预期结果 | 结论 |
货物入库 | 1. 仓管用户进入入库页面,选择采购订单并填写实际到货数量后提交。 | 系统提示入库成功,库存数量增加,生成入库记录。 | 与预期结果一致。 |
货物入库 | 2. 仓管用户在入库页面查看入库记录,点击查看按钮查看详细信息。 | 系统显示完整的入库记录与货物明细。 | 与预期结果一致。 |
货物入库 | 3. 仓管用户尝试提交数量为负数的入库记录。 | 系统提示入库数量无效,无法提交。 | 与预期结果一致。 |
货物入库 | 4. 仓管用户删除错误入库记录,系统更新库存信息。 | 系统提示删除成功,库存回滚至正确状态。 | 与预期结果一致。 |
- 测试结论
通过对超市仓储管理系统各个功能模块的全面测试,可以得出系统在多个方面均表现出了较好的稳定性与可靠性。所有主要功能,如用户管理、货物分类、货物信息、采购订单、货物入库等,都能够按照预期顺利运行。测试过程中,系统的操作界面简洁直观,用户能够轻松完成相应的任务,无论是管理员、采购人员、销售人员还是仓管用户,均能快速上手,进行相应操作。功能模块的响应速度也较快,用户在执行操作时未出现明显的延迟或卡顿现象。特别是在数据录入、查询与更新过程中,系统展现了较高的准确性和一致性,确保了仓储管理工作的顺畅进行。
此外,系统在数据管理、权限控制等方面表现良好,所有用户权限得到了有效控制,避免了权限滥用或误操作的风险。系统的错误提示与反馈也得到了有效优化,能够帮助用户及时发现并纠正操作中的问题。在货物的入库与出库、订单处理等核心业务流程中,系统不仅能够准确记录每一笔数据,还能确保数据的实时更新与同步,极大提高了工作效率。综合来看,经过全面的测试,超市仓储管理系统已经具备了良好的稳定性和操作体验,能够满足不同用户群体的实际需求,具有较强的实用性与推广价值。
- 总结
通过对超市仓储管理系统的设计与实现,完整构建了一个基于SpringBoot和B/S架构的多角色信息化管理平台,涵盖了货物信息管理、采购与销售流程、入库与出库处理、用户权限控制等核心业务功能。在整个开发过程中,不仅深化了对Web开发框架和数据库设计的理解,也锻炼了需求分析、系统建模、编码实现与测试评估等综合能力。系统的功能划分合理,界面交互友好,数据处理稳定高效,能够有效提升仓储管理的精细化与智能化水平。项目中采用前后端分离与模块化设计思想,也为后期的扩展和维护打下了良好基础。
回顾整个项目过程,从最初的需求调研到最终的功能实现,既充满挑战,也收获颇丰。每一个逻辑判断、每一行代码的推敲,都凝结了对系统完善的追求,也体现了对实际应用场景的深入思考。特别是在多角色权限逻辑、订单处理细节和数据一致性等方面的实现,让我对软件工程的系统性有了更深刻的认识。这一项目不仅是一次编程实践,更是一段成长的过程。未来在类似系统开发中,将更加注重用户体验与系统性能的平衡,让技术真正服务于管理与效率的提升。
参考文献
- 丁一钧,聂电开,张靖男,等.基于HTML的会议管理系统设计与实现[J].电脑编程技巧与维护,2024,(06):83-86+97.DOI:10.16184/j.cnki.comprg.2024.06.040.
- 曹丹.基于HTML语言的网页制作方法探析[J].电脑知识与技术,2021,17(36):83-85.DOI:10.14004/j.cnki.ckt.2021.3524.
- 贾宇,史望聪.基于B/S框架的思政交互式教学系统设计[J].微型电脑应用,2022,38(09):19-22.
- 林睿睿,黄锦桥.基于B/S框架的交互式在线翻译系统设计[J].现代电子技术,2021,44(09):115-119.DOI:10.16652/j.issn.1004-373x.2021.09.023.
- 刘涛.基于SpringBoot的实验室预约排课系统的设计与实现[J].办公自动化,2024,29(23):90-92.
- 李琳,张航,黎俊熙,等.基于SpringBoot的奖学金评定管理系统设计与实现[J].电脑编程技巧与维护,2024,(11):95-97+113.DOI:10.16184/j.cnki.comprg.2024.11.014.
- 韩晓丽,李美玲.基于软决策融合的CSS性能分析及优化[J].机械工程与自动化,2024,(05):8-10.
- 张旻书.电商平台使用、金融素养与农村居民消费水平提升:基于CSS数据的实证分析[J].河南工学院学报,2024,32(05):66-71.
- 赵蓉城.浅析数据库SQL应用性能优化处理[J].佳木斯大学学报(自然科学版),2024,42(05):34-38.
- 刘丹丹,张娜,邵长文,等.基于SQL注入攻击的防御措施[J].电脑编程技巧与维护,2024,(09):71-74+109.DOI:10.16184/j.cnki.comprg.2024.09.034.
- 徐耀飞,李星,苏展.实木复合地板生产企业计算机物料仓储管理系统构建与优化[J].森林防火,2024,42(04):119-124.
- KorkusuzPolat T ,Baran E .A Blockchain-Based Quality 4.0 Application for Warehouse Management System[J].Applied Sciences,2024,14(23):10950-10950.
- Dhanushka S ,Hasaranga C ,Kahatapitiya S N , et al.Efficient Battery Management and Workflow Optimization in Warehouse Robotics Through Advanced Localization and Communication Systems †[J].Engineering Proceedings,2024,82(1):50-50.
- Khan N ,Solvang D W ,Yu H , et al.Towards the design of a smart warehouse management system for spare parts management in the oil and gas sector[J].Frontiers in Sustainability,2024,51426089-1426089.
- Daria M .A review and research agenda for recent socially and environmentally sustainable practices for warehouse management systems[J].The International Journal of Logistics Management,2024,35(7):60-98.
- 王伊侬.物流企业仓储管理的数字化转型与效果分析[J].中国储运,2024,(09):194-195.DOI:10.16301/j.cnki.cn12-1204/f.2024.09.119.
- 罗栗轩.基于案例分析绿色仓储系统应用之研究[J].产业创新研究,2024,(15):82-84.
- 马银龙,邱颖豪,李霄.轨道交通行业智能化仓储管理系统应用[J].价值工程,2024,43(15):126-129.
- 杨文科.物流信息技术在超市仓储环境下的应用研究[J].中国储运,2023,(01):131-132.DOI:10.16301/j.cnki.cn12-1204/f.2023.01.064.
- Lung H L ,Yu Y M .A New Method of Storage Management Based on ABC Classification: A Case Study in Chinese Supermarkets’ Distribution Center[J].SAGE Open,2021,11(2):21582440211023193-21582440211023193.
致谢
在本次超市仓储管理相关课题的研究与开发过程中,离不开指导老师的耐心教导与专业指导。从课题的立意、结构安排到具体功能的设计与实现,老师始终给予细致的帮助与建议,使我在每一个关键节点都能明确方向、持续前进。老师不仅在技术上给予了我诸多启发,在逻辑思维和科研态度方面更是给予了深远影响,让我受益匪浅。同时,也感谢学院提供的良好学习环境和教学资源,为本次课题的顺利推进提供了坚实保障。
此外,还要感谢身边的同学和朋友们,在开发与撰写过程中给予的支持与鼓励。在遇到难题和瓶颈时,他们的交流与建议常常为我打开新的思路,也让我体会到团队合作和思维碰撞的力量。每一次深夜调试,每一轮测试反馈,都是一次宝贵的积累与成长。这段经历不仅提升了我的专业技能,更加坚定了我对软件开发与系统设计的热情。未来我将继续努力,不负这段充实而有意义的学习旅程。
代码:
连接数据库的文件在Resources 文件夹下的application.yml文件,代码如下:
server:
port: 5000
servlet:
context-path: /api
spring:
mvc:
static-path-pattern: /upload/**
resources:
static-locations: file:此处填写地址/project93355/server/src/main/resources/static
datasource:
jdbc:mysql://127.0.0.1:3306/projectxxxxx?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
jackson:
property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
default-property-inclusion: ALWAYS
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
servlet:
项目启动文件Application.java,代码如下:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableJpaRepositories
@MapperScan("com.project.demo.dao")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
修改数据代码如下:
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
删除一条数据代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
通过请求的参数获取列表数据,代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
获取某个组下面的数量,代码如下:
@RequestMapping(value = {"/count_group", "/count"})
public Map<String, Object> count(HttpServletRequest request) {
Integer value= service.selectSqlToInteger(service.groupCount(service.readQuery(request), service.readConfig(request)));
return success(value);
}
注册页登录代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
MD5加密,代码如下:
public String encryption(String plainText) {
String re_md5 = new String();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
re_md5 = buf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return re_md5;
}
登录页代码如下:
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
找回密码,接收用户输入的用户名、密码、验证码,并进行条件判断,代码如下:
/**
* 找回密码
* @param form
* @return
*/
@PostMapping("forget_password")
public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {
JSONObject ret = new JSONObject();
String username = form.getUsername();
String code = form.getCode();
String password = form.getPassword();
// 判断条件
if(code == null || code.length() == 0){
return error(30000, "验证码不能为空");
}
if(username == null || username.length() == 0){
return error(30000, "用户名不能为空");
}
if(password == null || password.length() == 0){
return error(30000, "密码不能为空");
}
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~