基于 Web 的药品商城设计与实现
基于 Web 的药品商城系统的设计与实现。系统采用 Spring Boot 框架作为后端核心,结合 Vue.js 前端技术,使用 MySQL 数据库存储数据。实现了用户注册登录、商品浏览搜索、购物车管理、在线支付及订单跟踪等功能。管理员后台提供数据统计、用户管理及商品订单维护能力。系统提升了药品销售效率,增强了数据安全保护,为用户提供便捷高效的购物体验。

基于 Web 的药品商城系统的设计与实现。系统采用 Spring Boot 框架作为后端核心,结合 Vue.js 前端技术,使用 MySQL 数据库存储数据。实现了用户注册登录、商品浏览搜索、购物车管理、在线支付及订单跟踪等功能。管理员后台提供数据统计、用户管理及商品订单维护能力。系统提升了药品销售效率,增强了数据安全保护,为用户提供便捷高效的购物体验。

随着互联网技术的发展和电子商务的普及,传统药品销售模式面临着信息更新不及时、用户互动性差、购买流程繁琐等诸多挑战。为了解决这些问题,本课题提出基于 Web 的药品商城。
药品商城利用 Spring Boot 快速开发、高效集成的特性,实现用户注册登录、商品浏览与搜索、购物车管理、在线支付、订单跟踪等核心功能。同时,引入 Vue.js 等前端技术优化用户界面,提升用户体验。系统还具备管理员后台管理功能,提供了详尽的数据统计图表,便于监控销售情况;同时支持对用户、商品、订单、优惠券等多方面的管理,确保了商城内容的实时更新和服务质量。
通过使用 Spring Boot 框架,结合数据库管理和安全机制,本系统不仅提升了药品销售的效率和商城运营水平,还加强了数据的安全保护,为用户提供了一个功能全面、操作便捷、管理高效的药品商城。
关键词:药品商城;SpringBoot;药品销售
随着互联网技术的飞速发展,电子商务模式在各行各业得到广泛应用,药品零售领域也不例外。互联网药品零售以其方便快捷、有效可及的优势,逐渐成为公众购药的重要渠道 [1]。然而,当前互联网药品零售市场存在诸多问题,如企业经营不规范、药品质量安全管理制度不完善、第三方平台未完全履行审核义务与监督义务等,这些问题严重影响了药品的质量安全与消费者的用药安全 [2]。因此,如何构建一个高效、稳定、安全的互联网药品零售平台,成为当前亟待解决的问题。
研究表明,利用 Spring Boot 框架设计的在线商城系统能够有效提升系统的开发效率和运行稳定性,同时支持复杂的业务逻辑和高并发访问需求 [3]。因此,本课题旨在通过 Spring Boot 技术实现一个功能全面的药品商城,以优化用户体验、增强系统的可扩展性,并为互联网药品零售的规范化提供技术支持。这一研究不仅有助于推动医药电商的发展,也为行业的数字化转型提供了实践参考。
本课题的研究目的在于探索和解决药品销售与互联网融合过程中遇到的优势与劣势,旨在通过技术手段优化现有药品销售模式,提升用户体验和服务质量。研究指出,药品销售与互联网的结合虽然极大地提高了药品的可获得性和信息透明度,但在实际操作中也暴露出诸如信息安全、服务质量参差不齐、监管困难等问题 [4]。
因此,本课题致力于开发一个基于 Web 的药品商城,以期实现以下目标:增强系统的安全性,确保用户数据的安全存储和传输;优化购物流程,提供更加便捷、高效的购物体验;最后,通过完善的后台管理系统提高运营效率和服务质量,从而促进药品销售行业的健康发展,并为互联网药品零售的规范化管理提供技术支持。这一研究不仅有助于解决当前互联网药品销售中存在的问题,也为推动医药电商的发展提供了理论依据和实践指导。
当前国内药品网络销售领域的研究已具备一定深度与广度,形成法律规制、市场分析、技术实现等多维度研究体系。在法律规制研究方面,针对药品网络销售第三方平台的法律规制已有了深入探讨,旨在规范药品网络销售行为,保障公众用药安全 [5]。此外,对于药品网络销售现状及其监管对策的研究表明,虽然我国在药品网络销售领域建立了初步的法律法规框架,并采取了一系列措施加强监管,但在实际操作中仍面临挑战 [6]。同时,基于 Spring Boot 的线上商城平台设计方面的研究表明,利用现代 Web 开发框架构建药品商城不仅提高了系统的稳定性和扩展性,还能够有效地支持复杂的业务逻辑和高并发访问需求 [7]。
虽然国内研究取得了上述进展,但仍存在一些问题,体现在以下几方面。第一,尽管有了一定的法律基础,但仍需进一步完善相关法律法规,尤其是针对新兴的互联网药品销售模式,以更好地适应行业发展需求;第二,当前的监管措施在执行过程中面临一定的挑战,如如何有效监控和管理大量的在线药品销售活动,以及如何提高违规行为的查处效率等问题;第三,虽然 Spring Boot 等技术的应用提高了系统的性能,但在数据安全保护、个性化服务等方面仍有提升空间,特别是在处理用户敏感信息时需要更加严格的安全措施。
国外在药品网络销售监测及技术平台设计领域展现了高度的专业性和前沿性,不仅为全球医药电商的发展提供了宝贵的参考案例,同时也推动了相关技术的创新与应用。通过解析暗网并进行关联性研究,国外专家能够识别出互联网药品销售活动与官方健康指标之间的微妙联系,这种方法极大地增强了对非法药品交易行为的监控能力,为制定更有效的监管策略提供了科学依据 [8]。此外,Spring Boot 3.0 等现代 Web 开发框架的应用,展示了如何利用先进技术构建可扩展且高效的后端系统,从而支持复杂的业务逻辑和高并发访问需求,这为药品商城的开发注入了强大的动力 [9]。
尽管取得了显著进展,但该领域仍面临一系列挑战。比如,面对不断变化的互联网环境,尤其是暗网中复杂多变的药品销售模式,现有的监测技术和方法在实际操作中仍然存在一定的局限性。此外,随着用户对数据安全和隐私保护意识的增强,如何确保药品商城在处理敏感信息时的安全性,成为了一个亟待解决的重要课题。
B/S(Browser/Server)架构是一种基于浏览器和服务器的应用架构模式。它以 Web 浏览器作为客户端,服务器端通过 Web 技术提供应用服务。客户端通过浏览器与服务器进行交互,用户无需安装专门的客户端应用程序,只需要通过互联网连接即可访问应用程序 [10]。在 B/S 架构中,客户端主要承担用户界面的呈现和基本的输入输出功能,而核心的业务处理、数据存储等操作则由服务器端完成。这种架构的核心优势在于无需在每个客户端机器上安装或更新软件,只要用户的浏览器符合要求,就可以使用系统。
B/S 模式三层结构图如图 2-1 所示。

图 2-1 B/S 模式三层结构图
SpringBoot 是一个用于简化 Spring 应用开发的开源框架,通过减少开发人员配置和依赖的复杂性,使得开发者能够快速构建基于 Spring 的生产级应用。SpringBoot 基于 Spring 框架之上,提供了一种自配置的方式,使得开发者可以以最少的配置来启动和开发 Spring 应用 [11]。它通过约定优于配置的原则,将常见的配置预设,使得开发人员能够聚焦于业务逻辑的实现,而不必过多关注繁琐的配置和环境搭建。
SpringBoot 框架的核心特点之一是其自动配置功能。它能够根据项目中已存在的类和库,自动推断出开发环境的配置需求,减少了手动配置的工作量。SpringBoot 还提供了嵌入式 Web 服务器支持(如 Tomcat、Jetty 等),使得应用可以以独立的 Java 应用形式运行,不再依赖外部的 Web 容器。这种特性使得 SpringBoot 特别适合于微服务架构的构建。SpringBoot 还通过其提供的启动器(Starters)简化了常见功能的集成,例如数据库连接、消息队列、缓存、认证与授权等,从而提升了开发效率 [12]。
Vue.js 是一款用于构建用户界面的渐进式 JavaScript 框架,提供一种灵活而高效的方式来开发单页面应用(SPA)。Vue 的设计理念是通过尽量简化开发过程,提供一种声明式的方式来构建用户界面 [13]。Vue.js 通过数据驱动的视图模型,允许开发者以声明式语法绑定数据与视图,使得应用的状态和界面表现更加简洁和可维护。它的核心思想是通过组件化开发将复杂的 UI 拆分为可重用的独立模块,从而提升了代码的模块化、可维护性和可扩展性。
Vue.js 具备响应式数据绑定和虚拟 DOM 的特性。响应式数据绑定意味着当数据变化时,Vue 会自动更新与之绑定的 DOM 元素,从而实现视图的实时更新。虚拟 DOM 则是 Vue.js 的一种优化手段,通过将对 DOM 的操作抽象为一个虚拟的 DOM 树来提高性能,减少实际 DOM 操作的开销 [14]。Vue 还提供了丰富的插件和工具,如 Vue Router 用于路由管理,Vuex 用于状态管理,方便开发者构建复杂的前端应用。Vue 的灵活性和简洁性使其成为现代 Web 开发中常用的前端框架之一。
MySQL 是一种开源的关系型数据库管理系统(RDBMS),基于 SQL(结构化查询语言)进行数据操作。作为一个被广泛使用的数据库系统,MySQL 具有高度的性能、可扩展性和可靠性。MySQL 使用表格结构来存储数据,每个表由多个列和行组成,数据通过 SQL 查询语言进行操作 [15]。MySQL 支持多种数据类型,如整数、浮动小数、字符串、日期等,以满足不同应用场景对数据存储的需求。在实际应用中,MySQL 通常用于存储和管理结构化数据,通过索引、视图、触发器等功能提升数据查询的效率和数据的完整性。
MySQL 支持 ACID 事务特性(原子性、一致性、隔离性、持久性),确保数据库操作的可靠性和数据的一致性。它还支持多种存储引擎,其中 InnoDB 是最常用的存储引擎,具备事务支持、行级锁定和外键约束等特性,适用于高并发、高可靠性的数据存储需求。MySQL 可以通过主从复制、分区和分库分表等技术实现横向扩展,以应对大规模数据存储和高负载的应用需求。MySQL 还具有灵活的权限管理机制,支持用户角色管理、细粒度的权限控制等,保障数据的安全性 [16]。
从技术角度来看,Spring Boot 作为一种轻量级、快速构建的 Java 框架,能够提高开发效率,降低系统的复杂程度,易于维护和升级。同时,MySQL 作为关系型数据库,能够支持平台数据的存储与管理,保障系统的稳定性和高效性。因此,本系统具有技术可行性。
考虑到 Springboot、Vue、MyBatis Plus 及 MySQL 等均为开源技术,无需支付高昂的许可费用,大大降低了系统的开发成本。同时,这些技术拥有广泛的用户群体和成熟的社区支持,便于获取技术支持和资源共享。此外,系统的实施将显著用户体验,从而带来潜在的经济效益。因此,从经济角度来看,该系统的开发同样具备可行性。
系统设计应遵循用户友好原则,确保用户能够轻松上手并高效使用。通过合理的界面布局、直观的操作流程以及详尽的帮助文档,可以大大降低用户的学习成本,提高系统的操作可行性。此外,系统还应具备完善的权限管理和数据安全机制,确保操作的安全性和合规性。
对于药品商城,下面是系统性能分析表:
| 项目 | 内容 |
|---|---|
| 响应时间 | 系统对用户请求的响应时间需在 500ms 以内 |
| 并发用户数 | 系统需要支持 1000 个并发用户同时访问 |
| 吞吐量 | 系统每秒需要处理 1000 个请求 |
| 可用性 | 系统需要保证每月 99.9% 的可用性 |
| 数据安全 | 用户敏感数据需要加密存储,并支持数据库备份和恢复 |
| 数据一致性 | 系统中的数据操作需保证 ACID 特性,确保数据一致性 |
| 扩展性 | 系统需要支持水平扩展,能够方便地增加服务器节点以应对高请求量 |
| 可维护性 | 系统代码需要清晰易懂、结构良好,方便维护和修改 |
| 日志记录 | 系统需要记录用户操作日志、异常日志以及系统运行日志 |
| 监控报警 | 系统需要实时监控运行状态,当系统异常时能够及时发送警报通知相关人员 |
| 缓存设置 | 针对频繁使用的数据,系统需要进行合适的缓存 |
功能需求分析是对系统所需功能进行详细描述的过程,明确系统的目标、功能模块及其相互关系。在此阶段,结合用户需求、业务流程和技术架构,识别系统必须实现的各项功能,并对其优先级、实现方式和约束条件进行梳理。通过功能需求分析,确保系统设计能够满足实际需求,且具有良好的可用性、可维护性和扩展性,为后续的系统开发和测试提供明确的指导和依据。
提供注册登录功能,游客可以通过注册功能,创建个人账号,注册成功后可根据用户名密码登录商城,用户的首页提供了清晰的系统导航和信息展示,可以查看商城发布的通知公告信息;新闻资讯则提供与药品相关的新闻信息,用户可以查看感兴趣的资讯,可对内容进行点赞、收藏和评论。用户还可以通过药品商城功能查看有关药品的各类商品,查看商品详情,可收藏商品,将商品加入购物车,或者直接购买商品,提交订单后可在线支付费用,并可对购买过的商品进行评论;提供商城管理功能,可查看我的购物车,可查看购物车的商品,灵活调整商品数量,可以进行购买结算,查看我的订单详情,在我的地址,可查看、管理和添加收货信息,在我的优惠券,可以查看自己领取的优惠券和使用详情。
在我的账户,用户可点击进入个人资料,对个人信息和密码进行更新修改。个人中心进一步细化用户管理,用户可以查看自己的订单配送情况,可进行签收操作;此外,用户还可以管理自己的收藏和评论,点击收藏可查看自己收藏的内容,可点击跳转至原文,也可进行删除操作。在评论管理,可查看自己评论的详情和被回复内容,可点击跳转查看评论来源,也可进行删除操作。
注册用户用例图如图 3-1 所示。

图 3-1 注册用户用例图
管理员凭账号密码可以登录系统后台,并对个人信息和密码进行管控,在后台首页可以查看系统的运营数据图表,包含商品销售金额统计、商品销售数量统计图表,可按日期筛选查看。此外,管理员可以管理系统用户,可对用户信息进行增删改查操作。
对于系统的整体显示,管理员可以进行系统管理(轮播图),调整和更新轮播图的内容。管理员能够发布或管理商城的公告,确保用户及时获取最新信息。同时,管理员还负责管理新闻资讯,发布新闻内容并对其进行分类,以便用户可以方便地查看相关信息。管理员在商城管理中,可以查看药品商城列表、药品详情及其评论,可以删除药品,也可进行药品商城的添加,并可在分类列表,对商品分类进行添加、删除操作,在订单列表,查看订单详情,对已支付订单及时进行配送操作,在订单配送中可以查看订单配送详情,修改配送状态,可以添加、修改和删除优惠券信息。
管理员用例图如图 3-2 所示。

图 3-2 管理员用例图
用户访问系统,可以选择进行注册或登录操作。注册成功后,用户可以使用注册的账号登录平台。登录后的用户可以进入系统功能界面,使用自己权限内的功能操作。程序操作流程图如图 3-3 所示。

图 3-3 程序操作流程图
用户访问系统,进入登录页面页面,入其用户名和密码,后端服务接收登录请求,验证用户提供的用户名和密码是否匹配数据库中存储的信息,验证通过即可登录成功。登录流程图如图 3-4 所示。

图 3-4 登录流程图
未有账号的用户可进入注册界面进行注册操作,填写注册表格,包括用户名、密码、电子邮件等必要信息。后台系统验证并保存用户提交的信息。分配唯一用户标识符。注册成功后,用户可以使用账号密码进行登录。用户注册流程图如图 3-5 所示。

图 3-5 注册流程图
系统由表现层、业务逻辑层、数据访问层和数据库服务器组成。表现层通过浏览器(如 IE、Chrome、Firefox)与用户交互,采用 FreeMarker、Bootstrap、jQuery 等技术实现界面呈现。业务逻辑层负责处理系统的核心业务逻辑,通过分模块设计实现功能分离。数据访问层使用 MyBatis 框架连接数据库,执行数据的增删改查操作。数据库服务器采用 MySQL 进行数据存储和管理,为系统提供稳定的数据库支持。整个架构通过 Tomcat 服务器完成用户请求的接收和处理,确保系统的高效运行。整个系统架构如图 4-1 所示。

图 4-1 系统架构图
系统功能结构图如图 4-2 所示。

图 4-2 系统功能结构图
数据库设计是系统开发中至关重要的环节,为系统提供高效、规范的数据存储和管理方案。设计过程包括需求分析、实体设计、表设计和逻辑结构设计。首先,通过分析业务需求,确定系统的核心实体及其属性,同时明确实体间的关系。接着,将实体抽象为具体的数据库表,为每张表定义字段名、数据类型、主键和外键,通过主外键关系和关联表设计,保证数据的完整性和一致性。最后,数据库逻辑设计进一步优化表之间的关系,通过索引、视图和存储过程提升查询效率和操作性能。整个设计需严格遵循规范,避免数据冗余和冲突,确保系统在高并发访问和复杂数据处理场景下的稳定性和高效性。
数据库实体设计是数据库设计的关键步骤,对实际业务逻辑中涉及的实体及其属性进行抽象建模,明确系统中的主要信息对象及其关系。在实体设计中,根据需求分析确定系统的核心实体,如用户、角色、权限等,提取实体的主要属性,如用户的 ID、姓名、联系方式,名称、类型等,同时定义各实体之间的关系,包括一对一、一对多、多对多等。在设计过程中,注重实体的完整性、规范性和唯一性,确保设计能够满足系统功能需求,并为后续的表设计提供清晰的结构框架。实体设计需遵循数据库设计的标准化要求,避免数据冗余和不必要的复杂度。
系统全局 E-R 图如图 4-3 所示。

图 4-3 系统 E-R 图
下面是根据基于 Web 的药品商城总 E-R 关系图得出的很多实体图,如下列出。

图 4-4 注册用户 E-R 关系图

图 4-5 药品商城 E-R 关系图

图 4-6 订单列表 E-R 关系图

图 4-7 优惠券 E-R 关系图

图 4-8 我的购物车 E-R 关系图
数据库表设计基于实体设计,将抽象的实体映射为具体的表结构。设计过程中,为每个实体定义表名、字段名及数据类型。根据业务需求,合理定义主键、外键及约束条件,确保表之间的关联性,例如通过外键建立用户表和角色表之间的关系。表设计时注重数据存储的完整性、一致性,并通过索引优化查询效率,最终确保数据库结构能够支持系统的功能需求。以下是系统的数据库表设计展示。
表 4-1 address(收货地址)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | address_id | int | 是 | 是 | 收货地址 | |
| 2 | name | varchar | 32 | 否 | 否 | 姓名 |
| 3 | phone | varchar | 13 | 否 | 否 | 手机 |
| 4 | postcode | varchar | 8 | 否 | 否 | 邮编 |
| 5 | address | varchar | 255 | 是 | 否 | 地址 |
| 6 | user_id | mediumint | 是 | 否 | 用户 ID | |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 9 | default | tinyint | 是 | 否 | 默认判断 |
表 4-2 cart(购物车)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | cart_id | int | 是 | 是 | 购物车 ID | |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | img | varchar | 255 | 是 | 否 | 图片 |
| 4 | user_id | int | 是 | 否 | 用户 ID | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | state | int | 是 | 否 | 状态:使用中,已失效 | |
| 8 | price | double | 是 | 否 | 单价 | |
| 9 | price_ago | double | 是 | 否 | 原价 | |
| 10 | price_count | double | 是 |
表 4-3 coupon(优惠券)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | coupon_id | int | 是 | 是 | 优惠券 ID | |
| 2 | coupon_user_id | int | 否 | 否 | 优惠券用户 ID | |
| 3 | coupon_user_auth | varchar | 255 | 否 | 否 | 优惠券用户 |
| 4 | coupon_name | varchar | 255 | 否 | 否 | 优惠券名称 |
| 5 | coupon_price | int | 否 | 否 | 优惠券价格 | |
| 6 | coupon_price1 | int | 否 | 否 | 优惠券券后价格 | |
| 7 | coupon_time | varchar | 255 | 否 | 否 | 优惠券时间 |
| 8 | coupon_type | varchar | 255 | 否 | 否 | 优惠券类型 |
| 9 | create_time | timestamp | 否 | 否 | 创建时间 | |
| 10 | update_time | timestamp |
表 4-4 goods(商品信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | goods_id | mediumint | 是 | 是 | 产品 ID | |
| 2 | title | varchar | 125 | 否 | 否 | 标题 |
| 3 | img | text | 65535 | 否 | 否 | 封面图:用于显示于产品列表页 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | price_ago | double | 是 | 否 | 原价 | |
| 6 | price | double | 是 | 否 | 卖价 | |
| 7 | sales | int | 是 | 否 | 销量 | |
| 8 | inventory | int | 是 | 否 | 商品库存 | |
| 9 | type | varchar | 64 | 是 | 否 | 商品分类 |
| 10 | hits | int | 是 |
表 4-5 order(订单)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | order_id | int | 是 | 是 | 订单 ID | |
| 2 | order_number | varchar | 64 | 否 | 否 | 订单号 |
| 3 | goods_id | mediumint | 是 | 是 | 商品 ID | |
| 4 | title | varchar | 255 | 否 | 否 | 商品标题 |
| 5 | img | varchar | 255 | 否 | 否 | 商品图片 |
| 6 | price | double | 是 | 否 | 价格 | |
| 7 | price_ago | double | 是 | 否 | 原价 | |
| 8 | num | int | 是 | 否 | 数量 | |
| 9 | price_count | double | 是 | 否 | 总价 | |
| 10 | norms | varchar | 255 | 否 |
表 4-6 registered_user(注册用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | registered_user_id | int | 是 | 是 | 注册用户 ID | |
| 2 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 3 | user_age | double | 否 | 否 | 用户年龄 | |
| 4 | user_gender | varchar | 64 | 否 | 否 | 用户性别 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户 ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-7 slides(轮播图)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | slides_id | int | 是 | 是 | 轮播图 ID | |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | content | varchar | 255 | 否 | 否 | 内容 |
| 4 | url | varchar | 255 | 否 | 否 | 链接 |
| 5 | img | varchar | 255 | 否 | 否 | 轮播图 |
| 6 | hits | int | 是 | 否 | 点击量 | |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-8 user(用户账户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
|---|---|---|---|---|---|---|
| 1 | user_id | int | 是 | 是 | 用户 ID | |
| 2 | state | smallint | 是 | 否 | 账户状态:(1 可用 | |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 4 | login_time | timestamp | 是 | 否 | 上次登录时间 | |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | phone_state | smallint | 是 | 否 | 手机认证:(0 未认证 | |
| 7 | username | varchar | 16 | 是 | 否 | 用户名 |
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 9 | password | varchar | 64 | 是 | 否 | 密码 |
| 10 | varchar |
用户注册时,系统要求用户提供必要的信息,例如账号、密码、昵称、邮箱等。这些信息通常由用户在注册表单中输入,并通过前端验证确保格式的正确性。注册过程完成后,系统会为新用户创建一个账户。这包括分配一个唯一的用户 ID 和设置初始的权限或者角色。用户注册界面如下图所示。

图 5-1 用户注册界面图
用户输入用户名和密码后,系统首先对这些输入进行基本的格式验证,确保用户名和密码符合系统设定的格式要求(如长度、特殊字符要求等)。系统接收到用户输入后,会根据用户名查找系统中存储的用户信息数据库或者其他持久化存储方式。系统需要验证密码的正确性,验证成功即可成功登录。用户登录界面如下图所示。

图 5-2 用户登录界面图
用户在新闻资讯可以浏览资讯列表,可按分类或局部搜索查询,点击图片查看详情,并可对内容进行点赞、收藏和评论操作。新闻资讯界面如下图所示。

图 5-3 新闻资讯界面
用户进入药品商城页面,可以查看有关药品的各类商品,可按分类筛选查询,查看商品详情,可以领取优惠券、收藏商品、加入购物车和购买商品,提交订单后可在线支付费用,并可对购买过的商品进行评论。药品商城界面如下图所示。

图 5-4 药品商城界面
用户在我的购物车可以查看自己加入购物车的药品信息,可以灵活调整商品数量,也可删除不要的商品,勾选商品,点击购买按钮,可以提交订单,领取优惠券,并在线支付费用。我的购物车界面如下图所示。

图 5-5 我的购物车界面
订单待付款界面如下图所示。

图 5-6 订单待付款界面
订单配送模块,用户可以查看查看订单详情,包含订单号、商品名称、购买数量、交易总额、发货日期、配送单号、配送状态和签收状态等信息,可进行签收操作。订单配送界面如下图所示。

图 5-7 订单配送界面
管理员凭账号密码可以登录系统后台,并对个人信息和密码进行管控,在后台首页可以查看系统的各项运营数据图表,包含商品销售金额统计和商品销售数量统计图表,可按日期筛选查看,并据此做出决策。后台首页界面如下图所示。

图 5-8 后台首页界面
在'系统用户'模块下,管理员可以管理系统上的两类用户:管理员和注册用户。管理员可以进行用户的增、删、改、查操作,包括设置权限、修改用户信息等。系统用户界面如下图所示。
图 5-9 系统用户界面
管理员点击'系统管理'菜单,可以进行轮播图管理,此模块赋予管理员灵活调整平台首页视觉展示的能力。通过后台操作,管理员可以轻松上传、替换或删除轮播图,设置图片链接,引导用户关注热门信息。系统管理界面如下图所示。

图 5-10 系统管理界面
管理员点击'商城管理'菜单,可查看药品商城列表、商品详情及其评论,可以删除药品,也可进行药品的添加,并可在分类列表,对商品分类进行添加、删除操作,在订单列表,查看订单详情,对已支付订单及时进行配送操作,在订单配送中可以查看订单配送详情,修改配送状态,在优惠券中,可对优惠券信息进行增删改查操作。商城管理界面如下图所示。

图 5-11 商城管理界面
药品添加界面如下图所示。

图 5-12 药品添加界面
优惠券添加界面如下图所示。

图 5-13 优惠券添加界面
测试的主要目的是确保系统的功能和性能满足预期的需求,同时识别和修复潜在的缺陷。通过系统测试,可以验证各个功能模块的正确性和稳定性,确保系统在不同使用场景下的表现符合设计要求。测试目的包括确认系统功能的完整性、验证数据处理的准确性、评估系统的性能和安全性。测试还可以提高用户满意度,保证用户在使用系统时获得流畅和可靠的体验。通过全面的测试,可以降低后期维护成本,减少系统上线后出现故障的风险,从而保障系统的长期稳定运行。
在本系统中,测试方法主要依赖于测试用例的设计与执行。测试用例是根据系统需求文档编写的,覆盖所有功能模块及其边界情况。每个测试用例包含输入数据、预期结果和实际结果的对比,以验证系统的功能是否按预期工作。
常见的测试用例包括功能测试用例、边界测试用例和异常测试用例。功能测试用例针对系统的各项功能进行验证;边界测试用例则侧重于输入数据的边界条件,验证系统在极端情况下是否能够稳定运行;异常测试用例则用于验证系统在处理错误输入或异常情况时的反应。本文选择功能测试用例进行系统测试。
在测试执行过程中,记录每个用例的执行结果,并根据实际结果与预期结果的对比,判断系统是否存在缺陷。通过系统化的测试用例执行,可以有效提高测试的覆盖率和效率,为系统的最终上线提供保障。
通过对系统中所含的主要实体对象及其功能操作进行测试用例设计。以下是详细的测试:
表 6-1 用户注册登录测试表
用户注册登录测试用例:
| 用例说明 | 测试目的 | 测试步骤 | 预期结果 | 输出结果 | 通过情况 |
|---|---|---|---|---|---|
| 用户注册、登录 | 测试用户正确注册、登录 | 1. 在首页界面注册一个新用户,按规定输入合理的注册信息,提交。 2. 用户在登录界面输入账户密码登录 | 用户注册成功,登录成功 | 结果输出符合预期 | 通过 |
表 6-2 我的订单测试表
我的订单用例:
| 用例说明 | 测试目的 | 测试步骤 | 预期结果 | 输出结果 | 通过情况 |
|---|---|---|---|---|---|
| 我的订单 | 测试用户我的订单功能 | 1. 在首页点击药品商城,进入详情页; 2. 点击'立即购买',输入相关信息后点击去支付 | 支付成功,生成我的订单信息 | 结果输出符合预期 | 通过 |
表 6-3 新闻资讯评论测试表
新闻资讯评论测试用例:
| 用例说明 | 测试目的 | 测试步骤 | 预期结果 | 输出结果 | 通过情况 |
|---|---|---|---|---|---|
| 新闻资讯评论 | 测试用户新闻资讯评论功能 | 1. 在首页点击新闻资讯并看详情; 2. 点击评论,输入相关信息点击提交 | 生成新的评论信息并展示在页面 | 结果输出符合预期 | 通过 |
表 6-4 药品商城添加测试表
管理员药品商城添加测试用例:
| 用例说明 | 测试目的 | 测试步骤 | 预期结果 | 输出结果 | 通过情况 |
|---|---|---|---|---|---|
| 药品商城添加测试 | 测试管理员添加药品商城功能 | 1. 管理员点击药品商城、点击添加; 2. 输入相关信息点击提交 | 药品添加成功 | 结果输出符合预期 | 通过 |
表 6-5 公告删除测试表
公告删除测试用例:
| 用例说明 | 测试目的 | 测试步骤 | 预期结果 | 输出结果 | 通过情况 |
|---|---|---|---|---|---|
| 公告删除测试 | 测试公告删除功能 | 1. 管理员点击公告管理; 2. 选择一个公告点击删除并确认删除 | 公告删除成功,前端不在展示该公告 | 结果输出符合预期 | 通过 |
在本次测试的过程主要针对所有功能下的添加操作,修改操作和删除操作,并以真实数据一一进行相关功能项目的输入,最终能够保证每个项目涉及的功能都是能够正常运行,因此能够保证本次设计的,已实现的功能能够正常运行并且相关数据库的信息也同样保证正确。
基于 Web 的药品商城旨在通过现代技术解决传统药品销售模式中的多种问题,如信息不透明、购物流程繁琐及用户体验差等。药品商城核心框架采用 Spring Boot,它极大地简化了应用的初始搭建以及开发过程,为了确保数据的安全性和访问效率,系统采用了 MySQL 作为数据库解决方案,并结合 Redis 实现了高效的缓存机制。
该系统不仅实现了用户查看、浏览药品商城与药品购买、订单管理等基本功能,还提供了个性化的用户体验,如商品收藏、评论和购物车支持等。此外,系统的后台管理功能确保了运营数据的实时监控和高效管理,包括商品管理、订单处理、优惠券管理和内容发布等功能。整个系统的设计充分考虑到了安全性、稳定性和可扩展性,为用户提供了一个安全可靠的在线购物环境。
展望未来,随着技术的发展和市场需求的变化,药品商城可以通过拓展更多功能来提升用户体验和服务质量。例如,可以引入社区互动功能。通过建立一个健康咨询社区或论坛,用户可以分享他们的用药经验、健康小贴士以及对特定药品的评价,这不仅有助于用户之间的信息交流,还能为新用户提供有价值的参考。此外,优化用户界面设计,使其更加直观友好,也是提升用户体验的关键。另一方面,添加在线客服支持是提高客户满意度的有效途径之一。集成即时聊天工具或智能客服机器人,可以在用户遇到问题时提供即时帮助,解答关于药品使用、订单状态查询等方面的疑问。这种实时互动不仅能迅速解决用户的问题,还能增加他们对平台的信任感。此外,持续关注最新的网络安全技术和隐私保护措施,确保用户数据的安全,也将是未来发展的重要方向。通过不断的技术创新和业务拓展,药品商城有望在促进医药电商健康发展方面发挥更大的作用。
[1] 宋田宇.TR 医药连锁药店线上营销策略研究 [D].河北工业大学,2023.
[2] 吕鸿妮。互联网药品零售的规范化路径研究 [D].福建中医药大学,2023.
[3] 杨晟,罗奇。基于 Spring Boot 的在线商城系统设计 [J].科技创新与应用,2022,12(19):58-61.
[4] 解奇杰。探究药品销售和互联网融合的优势与劣势及其解决办法 [J].商讯,2023,(06):76-79.
[5] 高晓彤,马韶青。药品网络销售第三方平台的法律规制研究 [J].卫生软科学,2025,39(01):46-51.
[6] 蒋磊。药品网络销售现状分析及监管对策 [J].中国药业,2024,33(03):30-33.
[7] 田松涛,段元梅。基于 SpringBoot 的线上商城平台设计 [J].无线互联科技,2022,19(01):56-57.
[8] Soshnikov S ,Bekker S ,Idrisov B , et al.Association of Drugs for Sale on the Internet and Official Health Indicators: Darknet Parsing and Correlational Study.[J].JMIR formative research,2024,8e56006.
[9] Ahmet M .Mastering Spring Boot 3.0:A comprehensive guide to building scalable and efficient backend systems with Java and Spring[M].Packt Publishing Limited:2024-06-28.
[10] 张丹丹,李弘。基于 B/S 架构的办公管理系统设计与开发 [J].铁路通信信号工程技术,2024,21(09):44-48+106.
[11] 胡荣,羊雪玲。基于 Spring Boot 前后端分离 Web 系统的设计与实现 [J].新能源与智能网联,2024,(01):88-97.
[12] 陈小燕,朱映辉,余晓春。基于 SpringBoot+Vue 的好农物商城的设计与实现 [J].电脑知识与技术,2022,18(22):37-39.
[13] 赵媛。基于 Vue 的 Web 系统前端性能优化分析 [J].电脑编程技巧与维护,2024,(09):44-46.
[14] 秦冬。浅析 Vue 框架在前端开发中的应用 [J].信息与电脑 (理论版),2024,36(13):61-63.
[15] 李艳杰.MySQL 数据库下存储过程的综合运用研究 [J].现代信息科技,2023,7(11):80-82+88.
[16] 王志亮,纪松波。基于 SpringBoot 的 Web 前端与数据库的接口设计 [J].工业控制计算机,2023,36(03):51-53.
[17] 宋光胜,黄兴,田宝坤,等。山东省药品网络销售现状及监管建议 [J].食品与药品,2024,26(04):375-379.
[18] 王丽丽,姜云莉。互联网药品零售的法律规制探究 [J].山西广播电视大学学报,2023,28(02):54-59.
[19] Peng Y ,Wang S.Research and design of online drug mall system based on SOA[J].International Journal of Biomedical Engineering and Technology,2023,42(1):64-77.
[20] Cai Z ,Liu Y ,Gan Y , et al.Design and Implementation of Online Mall System based on Java Web[J].International Journal of Performability Engineering,2019,15(12):3237-3244.

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
| 否 |
| 总价 |
| 11 | num | int | 是 | 否 | 数量 |
| 12 | goods_id | mediumint | 是 | 是 | 商品 id |
| 13 | type | varchar | 64 | 是 | 否 | 商品分类 |
| 14 | description | varchar | 255 | 否 | 否 | 描述 |
| 否 |
| 否 |
| 更新时间 |
| 否 |
| 点击量 |
| 11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 12 | img_1 | text | 65535 | 否 | 否 | 主图 1 |
| 13 | img_2 | text | 65535 | 否 | 否 | 主图 2 |
| 14 | img_3 | text | 65535 | 否 | 否 | 主图 3 |
| 15 | img_4 | text | 65535 | 否 | 否 | 主图 4 |
| 16 | img_5 | text | 65535 | 否 | 否 | 主图 5 |
| 17 | create_time | timestamp | 是 | 否 | 创建时间 |
| 18 | update_time | timestamp | 是 | 否 | 更新时间 |
| 19 | customize_field | text | 65535 | 否 | 否 | 自定义字段 |
| 20 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 21 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 22 | source_id | int | 是 | 否 | 来源 ID |
| 23 | user_id | int | 否 | 否 | 添加人 |
| 否 |
| 规格 |
| 11 | type | varchar | 64 | 是 | 否 | 商品分类 |
| 12 | contact_name | varchar | 32 | 否 | 否 | 联系人姓名 |
| 13 | contact_email | varchar | 125 | 否 | 否 | 联系人邮箱 |
| 14 | contact_phone | varchar | 11 | 否 | 否 | 联系人手机 |
| 15 | contact_address | varchar | 255 | 否 | 否 | 收件地址 |
| 16 | postal_code | varchar | 9 | 否 | 否 | 邮政编码 |
| 17 | user_id | int | 是 | 否 | 买家 ID |
| 18 | merchant_id | mediumint | 是 | 否 | 商家 ID |
| 19 | create_time | timestamp | 是 | 否 | 创建时间 |
| 20 | update_time | timestamp | 是 | 否 | 更新时间 |
| 21 | description | varchar | 255 | 否 | 否 | 描述 |
| 22 | state | varchar | 16 | 是 | 否 | 订单状态:待付款,待发货,待签收,已签收,待退款,已退款,已拒绝,已完成 |
| 23 | remark | text | 65535 | 否 | 否 | 订单备注 |
| 24 | delivery_state | varchar | 16 | 否 | 否 | 发货状态:未配送,已配送 |
| 25 | vip_discount | double | 否 | 否 | 折扣 |
| 64 |
| 否 |
| 否 |
| 邮箱 |
| 11 | email_state | smallint | 是 | 否 | 邮箱认证:(0 未认证 |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 |