springboot基于微信小程序的电器商城系统的设计与实现毕业设计源码251453

news/2024/4/27 3:24:25/文章来源:https://blog.csdn.net/qq_42335743/article/details/126947489

   Springboot电器商城小程序的开发

摘 要

近年来,随着移动互联网的快速发展,电子商务越来越受到网民们的欢迎,电子商务对国家经济的发展也起着越来越重要的作用。简单的流程、便捷可靠的支付方式、快捷畅通的物流快递、安全的信息保护都使得电子商务越来越赢得网民们的青睐。越来越多的商家使用计算机来开展业务、销售、宣传各种产品。各种商业系统和软件已经解放了商家的双手,并使商家能够最大限度地获得利益。因此,计算机技术在商业领域占有非常重要的地位。

本文主要通过对电器商城小程序的前台和后台管理进行了功能性需求分析,对程序的安全性和可扩展性进行了非功能性需求分析。在详细的需求分析的基础上,根据程序的功能设计确定了数据库结构,实现完整的代码编写。电器商城小程序完成了主要模块的页面设计和功能实现。本文展示了首页页面的实现效果图,并通过代码和页面介绍了用户注册功能、电器商品展示功能、商品购买和在线支付功能的实现过程。

关键词:电子商务;Springboot框架;电器商城

Development of springboot electric appliance mall applet

Abstract

In recent years, with the rapid development of mobile Internet, e-commerce is more and more welcomed by Internet users. E-commerce also plays a more and more important role in the development of national economy. Simple process, convenient and reliable payment method, fast and smooth logistics express delivery and safe information protection all make e-commerce more and more popular among Internet users. More and more businesses use computers to carry out business, sell and publicize various products. Various business systems and software have liberated businesses' hands and enabled businesses to maximize benefits. Therefore, computer technology plays a very important role in the commercial field.

This paper mainly analyzes the functional requirements of the foreground and background management of the small program of the electrical mall, and analyzes the non functional requirements of the security and scalability of the program. On the basis of detailed demand analysis, the database structure is determined according to the functional design of the program to realize complete code writing. Electrical mall applet completed the page design and function realization of the main modules. This paper shows the implementation effect of the home page, and introduces the implementation process of user registration function, electrical commodity display function, commodity purchase and online payment function through code and page.

Key words:Electronic Commerce; Springboot framework; Electric appliance mall

目  录

一、 绪论

(一) 研究背景与意义

(二) 发展现状

二、 开发工具及相关技术介绍

(一) Java开发语言

(二) Springboot框架

() Mysql数据库

() B/S结构

() B/S体系工作原理

() MVVM模式

()小程序框架以及目录结构介绍

三、 系统分析

(一) 可行性分析

1. 经济可行性

2. 技术可行性

3. 操作可行性

(二) 功能性需求分析

(三) 非功能性需求分析

(四) 业务流程分析

四、 系统设计

(一) 功能模块设计

(二) 数据库设计

1. 概念模型设计

2. 数据库逻辑设计

3. 数据库表设计

五、 系统实现

(一) 用户登录的实现

(二) 系统前台主要功能实现

1. 首页的实现

2. 用户注册的实现

3. 好物推荐的实现

4. 产品展示的实现

5. 产品购买的实现

(三) 系统后台主要功能实现

1. 用户管理的实现

2. 商城管理的实现

3. 订单管理的实现

六、 系统测试

(一) 系统可靠性测试

(二) 系统功能性测试

(三) 系统合格性测试

(四) 测试结果

七、 总结与展望

参考文献

致谢

  • 研究背景与意义

线上商城是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些不经常变动或更新的资源,如商家信息、管理规范、页面图像等等;动态信息是指随时变化的信息,如商品报价、公告信息、更新产品等。线上商城具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。这种全新的交易方式实现了商家与用户间的无纸化交换。

电器商城作为B2B,B2C ( Business to Customer,即企业对消费者),C2C(Customer to Customer,即消费者对消费者)电子商务的前端商务平台,在其商务活动全过程中起着举足轻重的作用。本文主要考虑的是如何建设并运作B2C的电器商城小程序。通过分析国内一些主流的、大型的、有代表性的B2C电子商务网站,如易趣网、亚马逊网、当当网等,可以得到以下的一些B2C电子商务系统的共性,而功能模块则体现了小程序所具有的功能,这些功能包括用于指向小程序特定内容的链接集合的导航栏、普通信息、即时信息、电器商品信息等。

电器商城小程序,是在小程序的基础上建立一个虚拟的电器购物商城,避免了挑选商品的烦琐过程,使您的购物过程变得轻松、快捷,很适合现代人快节奏的生活。同时又能有效的控制“商场”运营的成本,开辟了一个新的销售渠道。为顾客提供一个足不出户的供货服务,方便顾客了解商品新闻信息、货物信息以及售后服务留言反馈。为商家提供一个展示和宣传商品的平台,方便商家信息的发布,商品管理和价格统计,以及用户管理等功能。

  • 发展现状

就家电业而言,经济发达国家显然走在家电网购市场的前列。许多电器零售店早就放弃在城市商业街设店经营的传统方式,转向网上销售的电子商务模式。国外大部分人推崇时尚,追求效率,生活节奏较快,这是国外网上购物市场发展迅猛的主要原因,但更重要的是法制上的完善,越来越多的消费者对在线购物感到信赖放心”。同时国外不断运用信息技术,充分地利用巨大的信息资源,计算机技术应用于家电行业已经十分成熟。

与世界发达国家相比,我国的家电经营系统管理水平还有很大的差距。我国近年来网上销售爆发火热,家电网上销售也呈现快速增长。2009、2010年随着国美、苏宁、京东商城这些主流企业的进入,消费者对于家电网购的信任感增强,同时由于能从网上以便宜实惠的价格购买到正品行货且有配送物流服务,家电网购逐渐为更大的消费群所接收。

  • 开发工具及相关技术介绍
  • Java开发语言

Java是一种面向对象的程序设计语言,类是Java程序的基本组成单元,类中又包含了属性和方法,在类中又可以创建无数个对象。类中包含的主要成员是字段和方法,字段是指一种数据变量,方法是指对字段进行操作的集合,包括给其他变量赋值、调用方法等[1]。

  • Springboot框架

Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。

  • Mysql数据库

Mysql数据库逻辑结构包含表空间(tablespace)、段(segment)、范围(extend)、数据块(datablock)、和模式对象(schemaobject) [9]。每一个数据库都可以逻辑划分为一个或多个表空间,每一个表空间都是由一个或多个数据文件来组成。Mysql数据库分为系统表空间和非系统表空间,每一个Mysql数据库都包含一个称作SYSTEM的系统表空间。           

Mysql的语言是非结构化的,用户可以在数据上进行工作。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。并且因为Mysql的语言和结构比较简单,但是功能和存储信息量很强大,所以得到了普遍的应用。

Mysql数据库在编程过程中的作用是很广泛的,为用户进行数据查询带来了方便。Mysql数据库的应用因其灵活性强,功能强大,所以在实现某功能时只需要一小段代码,而不像其他程序需要编写大段代码。总体来说,Mysql数据库的语言相对要简洁很多。

数据流程分析主要就是数据存储的储藏室,它是在计算机上进行的,而不是现实中的储藏室。数据的存放是按固定格式,而不是无序的,其定义就是:长期有固定格式,可以共享的存储在计算机存储器上。数据库管理主要是数据存储、修改和增加以及数据表的建立。为了保证系统数据的正常运行,一些有能力的处理者可以进行管理而不需要专业的人来处理。数据表的建立,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。介于数据库的功能强大等特点,本系统的开发主要应用了Mysql进行对数据的管理。

  • B/S结构

B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。           

  • B/S体系工作原理

B/S架构采取浏览器请求,服务器响应的工作模式。

用户可以通过浏览器去访问Internet上由Web服务器产生的文本、数据、图片、动画、视频点播和声音等信息;

而每一个Web服务器又可以通过各种方式与数据库服务器连接,大量的数据实际存放在数据库服务器中;

从Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。而各个企业可以在此结构的基础上建立自己的Internet。

在 B/S 模式中,用户是通过浏览器针对许多分布于网络上的服务器进行请求访问的,浏览器的请求通过服务器进行处理,并将处理结果以及相应的信息返回给浏览器,其他的数据加工、请求全部都是由Web Server完成的。通过该框架结构以及植入于操作系统内部的浏览器,该结构已经成为了当今软件应用的主流结构模式。

   (六)MVVM模式

MVVM模式是常用的开发模式,主要是在代码实现上将其分为M层、V层和C层。

视图(View)代表用户交互界面,一个 Web 应用就可能有很多的界面,在 MVVM 模式中,视图仅仅处理的只有数据采集、处理,还有用户的请求, 并不包括业务流程的处理,业务流程由模型(Model)来处理。

模型(Model)就是业务流程/状态的处理及业务规则的制定。模型处理业务流程的过程其它层是无法看见了的,它就像黑箱子,在接受视图请求的数据之后,然后返回最终的处理结果。MVVM 最主要的核心就是业务模型的设计,一个典型的应用例子就是目前流行的 EJB 模型,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但是它不能作为应用设计模型的框架。

控制器(Controller)可以理解为接收用户的请求,然后视图和模型匹配在一起,一起再完成用户请求。它有非常明显的作用在划分控制层上,可以很清晰地告诉你,它就是一个分发器,选择什么样的模型、视图,可以完成用户的什么样的请求。控制层不做所有的数据处理,比如说:用户点击一个连接,控制层接受到请求之后,并不处理业务信息,它只是向模型传递用户的信息,同时告诉模型做什么,然后选择符合需求的视图返回给用户。

 (七)小程序框架以及目录结构介绍

整个小程序框架系统分为两部分:逻辑层和视图层。小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 小程序 体验的服务。小程序在视图层与逻辑层间提供了数据传输和事件系统,提供了自己的视图层以及逻辑层框架,让开发者能够专注于数据与逻辑。框架的核心是一个响应的数据绑定系统,可以让数据与视图非常简单地保持同步。在逻辑层做数据修改,在视图层就会做相应的更新。框架提供了一套基础的组件,这些组件自带微信风格的样式以及特殊的逻辑,开发者可以通过组合基础组件,创建出强大的微信小程序。

          

  • 系统分析

本系统将在经济、技术、操作这三个角度上进行可行性分析。

  1. 经济可行性

整个系统从设计到开发以及测试过程严谨步骤齐全,所有工作任务全部由本人完成,并未获取外部技术支持,节约了一切服务成本开销以及人工成本,在硬件方面,为节约成本使用一台二手移动工作站作为项目部署服务器以及数据库服务器,成本在一万元一下,真个网络部署也是由本人独立完成不涉及到其他人工费用,整个开发过程本着低成本,低消耗的原则。

  1. 技术可行性

技术可行性分析的目的是确认该系统能否利用现有技术实现,并评估开发效率和完成情况。技术的可行性是指在当前的技术条件下,计算机软件和硬件的开发是否能够满足发展的要求。因为该系统的开发基于Java语言,所以开发该系统所需的软件和硬件条件可以在普通计算机上满足。因为它占用的内存相对较少,所以用Mysql数据库开发和设计软件理论上没有问题,因为它占用的内存太少。上述技术可以有效地保证系统的成功和高效开发。

  1. 操作可行性

电器商城小程序的使用界面简单易于操作,采用常见的界面窗口来登录界面,通过电脑进行访问操作,用户只要平时使用过电脑都能进行访问操作。此系统的开发采用Java技术开发,人性化和完善化是B/S结构开发比较显要的特点使得用户操作相比较其他更加简洁方便。易操作、易管理、交互性好在本系统操作上体现得淋漓尽致。

  • 功能性需求分析

前台需求:

(1)用户模块:主要包括用户的注册和登陆、用户个人信息管理等功能。

(2)产品管理模块:主要包括产品信息浏览、产品信息展示、产品搜索、产品购买等功能。

(3)购买订单模块:主要包括添加购买订单、查看我的购买订单和删除购买订单等功能。

(4)订单模块:主要包括生成订单、我的订单、查看订单详细信息、在线支付等功能。

后台需求:

(1)用户管理:主要包括用户列表、用户等级管理等功能。

(2)产品管理:主要包括产品列表、产品品类管理、产品添加、产品信息管理等功能。

(3)订单管理:主要包括订单确认、支付查看等功能。

用户用例图如下所示。

图1 用户用例图

管理员用例图如下所示。

图2 管理员用例图

产品添加用例描述如下表所示。

表1产品添加用例描述

用例名称

添加新产品

参与者

管理员

用例概述

本用例用于管理员进行添加新产品操作

前置条件

管理员添加新产品前必须登录系统

后置条件

系统中添加一个新产品

基本事件流

参与者动作

系统响应

  1. 管理员在后台主界面选择“新产品”。

4、管理员填写新产品信息,点击“添加”按钮。

2、系统打开添加新产品界面。

3、系统检查管理员输入的产品信息是正确有效的。

5、系统将产品添加到数据库中。

6、系统提示“操作成功”。

7、系统跳转到产品管理界面。

其他事件流

1、系统验证管理员输入的产品名为空,则提示“*请填写产品名称!”。

2、系统验证管理员输入的价格不是数字格式,则提示“*价格必须是数字格式!”

产品删除用例描述如下表所示。

表2产品删除用例描述

用例名称

删除产品

参与者

管理员

用例概述

本用例用于管理员进行删除产品操作

前置条件

管理员删除产品前必须登录系统

后置条件

系统中删除一个产品

基本事件流

参与者动作

系统响应

1、管理员在后台主界面选择“产品管理”。

4、管理员选择一个产品,点击“删除”按钮。

6、管理员点击“确定”按钮。

2、系统从数据库中获取产品信息列表

3、系统打开产品列表界面。

5、系统提示“你确定要删除吗?”。

7、系统将产品从数据库中删除。

8、系统提示“删除成功”。

9、系统跳转到产品管理界面。

其他事件流

用户编辑用例描述如下表所示。

表3用户编辑用例描述

用例名称

修改用户

参与者

管理员

用例概述

本用例用于管理员进行修改用户信息操作

前置条件

管理员已经登录系统

后置条件

系统中更新一条用户记录

基本事件流

参与者动作

系统响应

1、管理员在后台主界面选择“用户管理”。

4、管理员在用户列表中选择一个用户,点击“编辑”按钮。

6、管理员填写用户信息,点击“保存修改”按钮。

2、系统从数据库中获取用户信息。

3、系统打开用户列表界面。

5、系统打开修改用户信息界面。

7、系统将更改后的添加到数据库中。

8、系统提示“操作成功”。

9、系统跳转到用户管理界面。

其他事件流

产品购买用例描述如下表所示。

表4产品购买用例描述

用例名称

产品购买

参与者

用户

用例概述

本用例用于用户进行对产品购买操作

前置条件

用户已经登录系统

后置条件

系统中增加一条用户购买记录

基本事件流

参与者动作

系统响应

1、用户在前台首页选择任意一个产品分类。

4、管理员在用户列表中选择一个产品。

7、用户填写购买订单,点击“购买”按钮。

2、系统从数据库中获取产品列表信息。

3、系统打开产品列表界面。

5、系统从数据库中获取产品信息。

6、系统打开产品信息及购买界面。

8、系统检查用户输入的信息是正确有效的。

9、系统将购买记录添加到数据库中。

其他事件流

1、系统验证用户输入的字段为空,则提示“*购买数量不能为空!”。

  • 非功能性需求分析 

随着用户量的增加,系统可能会需要同时服务上千、上万个页面,服务器需要同时响应大量用户的操作,这就要求系统需要有良好的可扩展性,否则系统会出现延迟,卡顿甚至服务器崩溃的问题。高扩展性可以使软件保持旺盛的生命力,同时也能够使系统更好的适应用户增加、提高性能需求、增加应用功能等改变。

系统中保存了大量用户和管理员的个人信息,因此,保证系统服务器和数据安全是在开发过程中需要考虑的重要问题。安全性包括服务器安全、操作系统安全、数据库安全、程序代码安全以及用户个人信息和支付安全等,系统可以通过采用防火墙技术、加密技术、认证技术等来增强其安全性,只有一个健壮安全的系统才能具有长久的生命力。

  • 业务流程分析

电器商城小程序的前台中,用户模块和产品商品模块进行数据交互,实现购买的功能。前台的功能主要包括用户模块、好物推荐模块、商城模块、购买模块和订单模块。

电器商城小程序的后台中,管理员对用户在前台提交申请产生的数据进行处理,以满足用户的需求。前台系统和后台系统有数据交互,整个系统各个部分相互独立又密不可分。后台的功能主要包括用户管理、商城管理、产品管理、订单管理。

  • 系统设计
  • 功能模块设计

通过软件的需求分析已经获得了系统的基本功能需求。根据各大功能模块的不同,将系统分为各种功能大块。系统功能结构如下图所示。

图4系统功能结构图

注册/登录

游客(未进行注册或登陆的用户)可以浏览、搜索产品,但不能进行收藏和购买。用户注册首先需要进行表单验证,来验证账号和密码是否合法,然后验证账号是否已经存在,验证通过即可注册。

注册成功后,用户可以通过输入用户名来登录系统,输入密码后进行验证。登录成功后,用户可以使用产品收藏、产品购买、查看我的订单、产品展示、个人信息管理等功能。

个人信息管理

用户登录系统后,在账户设置中,可以修改昵称、头像、登陆密码、收货地址等个人基本信息。

产品搜索

系统首页展示了产品搜索输入框,用户在输入框内输入与产品类型相关的关键字,系统通过模糊查询搜索到用户需要的产品并展示。

产品信息展示

用户在浏览产品时,点击某一个产品,跳转到该产品的信息展示页。在产品信息页面展示了产品的详情信息,比如产品介绍,产品详情等,用户通过浏览信息了解产品的具体信息,最终决定是否购买。

产品购买

在产品信息页面,用户可以通过点击“购买”进行购买产品,点击后跳转到订单生成页面。订单生成页面会展示产品信息,收货地址,配送信息等,用户确认后信息无误点击“提交”生成订单,订单生成后跳转到支付页面,支付完成则购买成功。

查看订单详情

用户在查看我的订单列表时,可以点击某一个订单来查看该订单的详细信息,主要包括订单编号、订单状态、订单日期、订单中的产品信息、交易金额等。

商城列表

管理员可以在“商城列表”中展示商城中需要销售的商城,包含商城名称,商城属性以及类目等商城信息。管理员可以对商城进行搜索,按分类查询商城。

产品添加

添加产品首先需要输入产品基本信息,如产品信息、产品价格、产品分类等;然后需要编辑产品详情,如产品类型,产品价格,产品图片等。管理员也可以删除已添加的产品。

产品管理

用户在购买产品时需要选择产品类型,管理员可以设置产品类型以及展示的顺序等。管理员还可以给产品类型添加属性值,也可以删除不需要的属性值。同时,管理员可以编辑产品信息,如产品介绍、价格、展示图片等,方便用户浏览。

  • 数据库设计
  1. 概念模型设计

概念设计包括实体和联系两部分,如该系统中,用户是一个实体,其属性包括用户 ID 标识、用户名、密码、电话、地址等属性。联系是指实体之间有意义的关联,包括一对一、一对多、多对多三种类型。

系统E-R图如下所示。

图5系统E-R图

在图中,用户购买产品,关系为1:N,管理员管理产品信息,关系为1:N,用户和订单的关系为1:N。

连接数据库的文件在Resources 文件夹下的application.yml文件,代码如下:

server:

  port: 5000

  servlet:

    context-path: /api

spring:

  datasource:

    url: jdbc:mysql://127.0.0.1:3306/CS725260_20211101091736?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8

    username: root

    password: root

    driver-class-name: com.mysql.cj.jdbc.Driver

  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:

    multipart:

      max-file-size: 100MB

      max-request-size: 100MB

  1. 数据库逻辑设计

针对系统的实体和属性,结合数据设计思想,对系统的逻辑设计的内容进行如下描述。

产品(产品编号、产品名称、产品图片、价格、品牌、介绍)。

购买订单(购买订单编号、产品编号、购买数量、总额、购买人、购买时间)。

订单(订单编号、用户名、订单内容、总金额、收货地址、是否支付、配送信息)。

产品展示(展示编号、标题、类别、品牌、图片)。

  1. 数据库表设计

数据库表是设计和实现系统的一个重要基础。以下列出了电器商城小程序几个重要的数据库表。

名称

类型

长度

不是null

主键

注释

registered_user_id

int

11

注册用户ID

user_name

varchar

64

用户名

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

mall_center_id

int

11

商城中心ID

brand

varchar

64

品牌

recommend

int

11

智能推荐

cart_title

varchar

125

标题

cart_img

text

0

封面图

cart_description

varchar

255

描述

cart_price_ago

double

8

原价

cart_price

double

8

卖价

cart_inventory

int

11

商品库存

cart_type

varchar

64

商品分类:

cart_content

longtext

0

正文

cart_img_1

text

0

主图1:

cart_img_2

text

0

主图2:

cart_img_3

text

0

主图3:

cart_img_4

text

0

主图4:

cart_img_5

text

0

主图5:

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

type_id

int

11

商品分类ID:

father_id

smallint

5

上级分类ID

name

varchar

255

商品名称:

desc

varchar

255

描述:

icon

varchar

255

图标:

source_table

varchar

255

来源表:

source_field

varchar

255

来源字段:

create_time

timestamp

0

创建时间:

update_time

timestamp

0

更新时间:

名称

类型

长度

不是null

主键

注释

cart_id

int

11

购物车ID:

title

varchar

64

标题:

img

varchar

255

图片:

user_id

int

10

用户ID:

create_time

timestamp

0

创建时间:

update_time

timestamp

0

更新时间:

state

int

1

状态:

price

double

8

单价:

price_ago

double

8

原价:

price_count

double

10

总价:

num

int

8

数量:

goods_id

mediumint

8

商品id

type

varchar

64

商品分类:

description

varchar

255

描述

名称

类型

长度

不是null

主键

注释

order_id

int

11

订单ID:

order_number

varchar

64

订单号:

goods_id

mediumint

8

商品id

title

varchar

32

商品标题:

img

varchar

255

商品图片:

price

double

10

价格:

price_ago

double

10

原价:

num

int

8

数量:

price_count

double

8

总价:

norms

varchar

255

规格:

type

varchar

64

商品分类:

contact_name

varchar

32

联系人姓名:

contact_email

varchar

125

联系人邮箱:

contact_phone

varchar

11

联系人手机:

contact_address

varchar

255

收件地址:

postal_code

varchar

9

邮政编码:

user_id

int

10

买家ID:

merchant_id

mediumint

8

商家ID:

create_time

timestamp

0

创建时间:

update_time

timestamp

0

更新时间:

description

varchar

255

描述

state

varchar

16

订单状态

名称

类型

长度

不是null

主键

注释

feedback_id

int

11

意见反馈ID

theme

varchar

64

主题

relevant_vouchers

varchar

255

相关凭证

user_name

int

11

用户名

content

text

0

内容

merchant_reply

text

0

商家回复

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

  • 系统实现
  • 用户登录的实现

用户注册完成后,点击“登陆”进入到登陆页面,输入用户名和密码,点击“登陆”按钮,对用户名和密码进行验证,根据传入的用户名和密码在数据库中是否能查询到一条用户信息,若不能返回用户信息则登陆失败,页面提示用户名或密码错误。

登陆拦截管理器,在config文件夹下的WebAppConfig.java文件,代码如下:

@Configuration

@Slf4j

public class WebAppConfig implements WebMvcConfigurer {

    @Override

    public void addInterceptors(InterceptorRegistry registry) {

        //登录拦截的管理器

        InterceptorRegistration registration = registry.addInterceptor(loginInterceptor());

        //拦截的地址

        registration.addPathPatterns("/**");

        //方行的地址

//registration.excludePathPatterns("/**");

        //根据需要拦截,一般设置所有地址拦截,放行公共连接

    }

    @Bean

    public LoginInterceptor loginInterceptor(){

        return new LoginInterceptor();

    }

}

登录界面如下图所示。

图5-1登录界面

用户登录的关键代码如下。

/**

     * 登录

     * @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.select(map, new HashMap<>()).getResultList();

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

  • 系统前台主要功能实现 
  1. 首页的实现

用户界面要尽量简洁大方,使用户能够方便找到需要的功能入口,浏览、购买产品,且要易于修改和维护,同时还要保证用户合法和系统安全。

首页界面如下图所示。

图5-2首页界面

  1. 用户注册的实现

用户进入系统首页后,点击“注册”链接进入到注册页面,按照页面提示输入用户名、密码和产品号,页面进行表单验证,验证输入的用户名和产品号是否合法,表单验证通过后,点击“立即注册”按钮,利用 Ajax 技术,对用户名和产品号实现页面无刷新验证,检测数据库中是否已经存在该用户名,若数据库中不存在,则注册成功,注册成功后,自动跳转到登录页面。

用户注册界面如下所示。

            

图5-3用户注册界面

  1. 好物推荐的实现

好物推荐页面,如下图所示。

 

图5-4好物推荐页面

好物推荐的关键代码如下。

 @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

    @Transactional

    public Map<String, Object> addMap(Map<String,Object> map){

        service.insert(map);

        return success(1);

}

  1. 产品展示的实现

系统首页提供了产品展示,用户可以在线浏览产品信息、也可以进行产品搜索等。产品展示界面如下图所示。

图5-5产品展示界面

产品展示的关键代码如下。

 @RequestMapping(value = {"/count_group", "/count"})

    public Map<String, Object> count(HttpServletRequest request) {

        Query count = service.count(service.readQuery(request), service.readConfig(request));

        return success(count.getResultList());

}

  1. 产品购买的实现

用户在浏览产品时,对于心仪的想要购买的产品,可以将该产品添加到购买订单中。点击“添加购买订单”按钮,页面将该产品的数据传递到后台,首先查询数据库购买订单表中是否已经存在该产品,若存在直接将产品数量加一,若不存在则创建一个新的购买订单对象,添加购买订单成功,数据库中的购买订单表添加一条信息。用户还可以点击“我的购买订单”查看添加到购买订单的产品,系统通过读取 session获取到用户 ID,将用户 ID 传递到后台,在购买订单表中查询该用户的所有购买订单信息,返回数据到我的购买订单页面。

产品购买界面如下图所示。

图5-6产品购买界面

个人购买订单界面如下图所示。

图5-7个人购买订单界面

个人购买关键代码:

 @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);

}

  • 系统后台主要功能实现 
  1. 用户管理的实现

管理员对系统用户的管理,在管理员管理实现管理员用户的管理,包括录入、删除、修改,修改密码通过SESSION获取用户名,然后输入新密码,使用sql命令更新密码。

用户管理界面如下图所示。

5-8用户管理界面

  1. 商城管理的实现

管理员可以获取系统中所有商城的列表并对其进行编辑。管理员在添加商城时,需要输入商城基本信息,如标题。、标签,还需要输入商城详情描述,包括对商城功能的描述以及展示图片等。添加商城完成,数据库商城表添加一条信息。管理员可以搜索商城,同时可以对已经添加的商城进行编辑。

商城管理界面如下图所示。

图5-9商城管理界面

商城管理关键代码:

  @RequestMapping(value = {"/avg_group", "/avg"})

public Map<String, Object> avg(HttpServletRequest request) {

        Query count = service.avg(service.readQuery(request), service.readConfig(request));

        return success(count.getResultList());

}

  1. 订单管理的实现

管理员在后台管理界面点击到所有订单界面列表,可以搜索当前所有订单信息,调用搜索全部订单的请求,向数据库的订单表搜索当前所有订单并将订单信息以对象的形式层层返回到订单列表界面,显示出当前所有订单信息。同时可以删除过期订单,确认已有订单,进行发货处理。

订单管理界面如下图所示。

图5-10订单管理界面

意见反馈界面如下图所示。

图5-11意见反馈界面

订单管理的关键代码如下。

@RequestMapping("/get_obj")

    public Map<String, Object> obj(HttpServletRequest request) {

        Query select = service.select(service.readQuery(request), service.readConfig(request));

        List resultList = select.getResultList();

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("obj",resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

}

 public Query select(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("select ");

        sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");

        sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

            sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");

        }

        if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

            sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");

        }

        if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

            int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

            int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

            sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);

        }

        log.info("[{}] - 查询操作,sql: {}",table,sql);

        return runEntitySql(sql.toString());

    }

  • 系统测试
  • 系统可靠性测试

以进入系统首页的访问速度为例展示系统的性能测试;系统的主要用户群体是购物理念较为先进的消费者,系统要在3秒钟内响应;需要完成页面的菜单栏、首页轮播图片、类目及产品列表、好物推荐以及各功能模块入口等元素的显示。

  • 系统功能性测试

功能性测试是指执行指定的工作流程,通过对一个系统的所有特性和功能都进行测试确保符合需求和规范。

系统功能性测试表如下表所示。

11系统功能性测试表

编号

测试功能

测试内容

测试结果

1

用户登录

1.验证用户名与密码的正确性。

2.验证密码是否可见。

通过

2

首页展示

1.首页数据是否成功加载。

2.验证搜索功能的准确性。

3.验证是否可以异步加载。

4.验证导航栏按钮。

通过

3

个人信息修改

1.验证登录名是否可以正常更改。

2.验证联系方式是否可以更改。

3.验证收货地址可以正常修改。

4.验证密码是否可以修改。

通过

4

购买订单管理

1.购买订单清单是否可以生成。

2.验证消费信息是否准确。

通过

7

好物推荐管理

1.验证类目新增是否可以成功。

2.验证类目删除是否可以成功。

通过

8

产品管理

1.产品信息是否与上传一致。

2.是否能完成价格修改。

3.验证库存信息修改。

通过

9

订单处理

1.能否正常上传单号完成发货。

2.验证数据准确性。

通过

10

添加产品

1.上传产品是否添加验证。

2.图片是否成功上传。

3.验证表单是否提交成功。

通过

11

用户管理

1.验证用户录入功能。

2.验证用户违规清理功能。

通过

  • 系统合格性测试

集成测试后,所有的模块已经全部连接完毕,形成了一个完整的系统。合格性测试是在集成测试完毕后,进一步对系统进行综合性的检测。经过合格性测试,可以检查出系统是否符合系统的设计,能够完成需求的所有功能。本系统经过最后的测试,所有模块功能都能按预定要求工作。

  • 测试结果

在实际测试中,经过一系列系统性的测试,使我们能够及时发现一些系统在设计中出现的疏忽和漏洞。经过严密的测试,不仅发现了模块内部的错误,也查找到模块连接后产生的错误。经过测试,对系统产生错误的地方进行优化、修改和完善,使得系统能够实现最初设计的基本功能。

  • 总结与展望

本文针对电器商城小程序的特点和用户需求,利用 Java相关技术、Springboot框架和MVVM 模式等技术,通过详细的需求分析、页面设计和功能设计,最终实现了一个基于Java 的电器商城小程序。

系统实现了包括用户模块、产品模块、购买订单模块和订单模块的前台系统以及包括用户管理模块、产品管理模块、订单管理模块的后台系统。另外,系统还进行了数据安全设计和好物推荐模块设计,并添加了用户的访问控制,建立了一个完整、健壮、安全稳定的电器商城小程序。

由于时间限制和本人能力条件有限,还存在一些不足,今后也会出现许多新的开发技术,未来还可以对程序做出如下改进:

(1)优化程序页面,使页面更加美观且方便操作;

(2)优化产品搜索功能,提供多条件选择查询搜索;

(3)优化产品推荐功能,提高产品推荐的精准度;

(4)优化在线支付功能,提供更多支付接口,使用户付款更加方便;

(5)进一步提高使用程序的安全性,使其更加健壮;

(6)优化数据和代码,提升软件效率,方便维护和扩展。

参考文献

  1. 杨文豪. 基于微服务的网上商城系统的设计与实现[D].北京邮电大学,2021.
  2. [2]程红琳. 网上商城品目扩容效果几何[N]. 中国政府采购报,2021-05-18(005).
  3. 魏钢毅. 从“一品目一采购”到供应商承诺入驻[N]. 中国政府采购报,2021-05-11(005).
  4. [4]王娟.基于Android系统的手机网上商城设计与实现[J].电子技术与软件工程,2021(03):43-44.
  5. 裴来芝,宁云智,刘东海.基于ASP.NET的网上商城中用户注册功能模块设计与实现[J].电脑编程技巧与维护,2020(10):44-46.
  6. [6]袁江琛.Ajax+jQuery在网上商城购物车模块中的设计与实现[J].电脑编程技巧与维护,2020(10):34-35+68.

[7]王柯梦,王瑞平.基于B2C网上商城前台系统数据库设计与实现[J].广西质量监督导报,2020(09):70-71.

[8]黄舒珣. 基于文本挖掘的迪卡侬网上商城顾客满意度影响因素研究[D].广西民族大学,2020.

[9]孙建英.分布式、集中式、区块链技术在网上商城中的应用[J].商场现代化,2020(01):13-15.

[10]李贝贝. 考虑策略型消费者的网上商城动态定价研究[D].大连大学,2019.

[11]王一凡. 基于MOT的云南移动网上商城O2O手机营销策略优化研究[D].云南大学,2019.

[12]袁嘉. 零售商多渠道供应链的定价决策与渠道选择[D].重庆交通大学,2019.

[13]徐光耀. 基于Dubbo分布式架构网上商城的研究与实现[D].沈阳师范大学,2019.

[14]刘芳羽.新华书店“网上商城”上线运营[J].时尚北京,2018(06):158-159.

致谢

时光飞逝,转眼间我在学校的这些年生活即将结束,回顾这几年的学习生活,收获良多,既有幸福也有难过,学校生活的结束对于我来说也是一个新的开始。论文即将完成,在此,我心中有许多想要感谢的人。首先感谢我的导师,不仅在学习研究方面加以指导,也在生活和为人处世上给予帮助。还要感谢授课老师,你们严谨的学术精神和积极向上的工作态度都在激励我的成长和进步。感谢多年来一直生活在一起的室友,谢谢你们多年来的陪伴和照顾。最后,要感谢各位论文评审老师,感谢您们在百忙之中抽空评阅本论文并给出宝贵的意见和建议。


免费领取本源代码,请关注点赞+私信

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch使用和架构分析

介绍 简介 ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于 RESTful web 接口。Elasticsearch 是用 Java 开发的&#xff0c;并作为 Apache 许可条款下的开放源码发布&#xff0c;是当前流行的企业级搜索引擎。 …

洛谷 P8368 [LNOI2022] 串 题解

首先感谢 高一零起点 AuAuAu 的学长 对本蒟蒻的细心教导。stostosto windwindwind_whisperwhisperwhisper orzorzorz 题目传送门 题意分析 给定一个英文小写字母构成的字符串 SSS&#xff0c;找到一个尽可能长的字符串序列(T0,T1,…,Tl)(T_0,T_1,\dots,T_l)(T0​,T1​,…,Tl…

【力扣】杨辉三角问题

力扣&#xff5c;杨辉三角【力扣】杨辉三角I✌杨辉三角快速入门&#x1f4ac;输出杨辉三角I问题&#x1f375;思路分析✍️ 算法实现【力扣】杨辉三角II&#x1f4ac; 输出杨辉三角II问题&#x1f375;思路分析✍️ 算法实现【力扣】杨辉三角I ✌杨辉三角快速入门 每行端点与…

【JavaScript 逆向】猿人学 web 第十八题:jsvmp,洞察先机

案例目标 网址&#xff1a;第十八题 jsvmp 洞察先机 - 猿人学 本题目标&#xff1a;抓取 5 页数字&#xff0c;计算加和并提交结果 常规 JavaScript 逆向思路 一般情况下&#xff0c;JavaScript 逆向分为三步&#xff1a; 寻找入口&#xff1a;逆向在大部分情况下就是找一些…

【Redis】arm64架构,docker的Redis出现Failed to test the kernel for a bug that could lead to data corruption

一、问题说明在运行docker的redis镜像,log打印 # Failed to test the kernel for a bug that could lead to data corruption during background save. Your system could be affected, please report this error.# Redis will now exit to prevent data corruption. Note tha…

Replication(下):事务,一致性与共识

本文主要介绍事务、一致性以及共识&#xff0c;首先会介绍它们怎么在分布式系统中起作用&#xff0c;然后将尝试描述它们之间的内在联系&#xff0c;让大家了解&#xff0c;在设计分布式系统时也是有一定的“套路”可寻。最后将介绍业界验证分布式算法的一些工具和框架。希望能…

告别if else,试试这款轻量级流程引擎吧,自带IDEA插件真香

在我们平时做项目的时候&#xff0c;经常会遇到复杂的业务逻辑&#xff0c;如果使用if else来实现的话&#xff0c;往往会很冗长&#xff0c;维护成本也很高。今天给大家推荐一个轻量级流程引擎 LiteFlow &#xff0c;可以优雅地实现复杂的业务逻辑&#xff0c;本文将以电商项目…

HashSet的存储机制

文章目录HashSet类内部存储机制实验1.不重写hashcode equals方法2.重写&#xff0c;但改写equals3.重写参考&#xff1a;HashSet类 HashSet是Set接口的典型实现&#xff0c;大多数时候使用Set集合时就是使用这个实现类。HashSet按Hash算法来存储集合中的元素&#xff0c;因此具…

PID控制算法

闭环控制(反馈回路close loop): 闭环控制系统需要目标量,执行器,传感器 通过偏差量获得执行量是最为重要的 目标量和传感器获得的执行器数据都需要是连续的; 偏差量来自于传感器和目标量数据和执行量不是同一个单位,需要一个比例P系数进行规整; 偏差量=目标量-当前位置量…

Java项目:JSP宠物店管理系统

作者主页&#xff1a;夜未央5788 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台&#xff0c;主要分为管理员与用户两种角色&#xff0c;管理员登录后台&#xff0c;普通用户登录前台&#xff1b; 管理员角色包含…

【LeetCode每日一题】——面试题17.16.按摩师

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 动态规划 二【题目难度】 简单 三【题目编号】 面试题17.16.按摩师 四【题目描述】 一个有名的按摩师会收到…

App移动端测试(10)—— Monkey自定义脚本案例

01、前言 Monkey自定义脚本案例&#xff1a;QQ的操作 02、Monkey API LaunchActivity(pkg_name, cl_name)启动应用的Activity。参数&#xff1a;包名和启动的 Tap(x, y, tapDuration)模拟一次手指单击事件。参数&#xff1a;x,y为控件坐标&#xff0c;tapDuration为点击的持续…

你到底是前端人还是搬砖人?推荐一款国产摸鱼神器!

☀️ 前言 大家好我是小卢&#xff0c;前几天在群里见到有群友抱怨一周内要完成这么一个大概20&#xff5e;30页的小程序。 群友: 这20多个页面一个星期让我开发完&#xff0c;我是不相信&#x1f62e;‍&#x1f4a8;。群友1: 跑吧&#xff0c;这公司留着没用了&#xff0c;不…

【Python 技能树共建】Beautiful Soup

Beautiful Soup 模块是什么 初学 Python 爬虫&#xff0c;十之八九你采集的目标是网页&#xff0c;因此快速定位到网页内容&#xff0c;就成为你面临的第一道障碍&#xff0c;本篇博客就为你详细说明最易上手的网页元素定位术&#xff0c;学完就会系列。 本文核心使用到的是 …

Spring Security 中的RBAC角色和权限

在这篇文章中&#xff0c;我们将看看使用 Spring boot的R ole B ased A ccess Control ( RBAC )。 了解 RBAC 在 RBAC 模型中存在三个关键实体。他们是&#xff0c; 用户或主题 ——执行操作的系统参与者。它可以代表一个自然人、一个自动帐户&#xff0c;甚至是另一个应用程…

专业思维导图软件 Mindjet MindManager 2021下载

Mindjet MindManager 2021 是一款专业的思维导图软件&#xff0c;美国Mindjet公司开发&#xff0c;一款视觉工作管理的思维导图软件&#xff0c;界面友好功能强大&#xff0c;头脑风暴、会议管理及项目管理工具帮您轻松创建思维导图&#xff0c;有序组织思维、资源和项目进程。…

win10+cuda+cudnn+anconda+pytorch+pycharm全家桶安装

1、下载安装cuda&#xff1a; 网址&#xff1a;CUDA Toolkit 11.7 Update 1 Downloads | NVIDIA Developer 网址下方可以找到以前版本 安装完后&#xff0c;可以在命令行窗口输入nvcc --version查看cuda版本是否正确 显卡驱动版本与cuda版本对应关系&#xff1a; 2、安装cud…

操作系统实验四 进程间通信

★观前提示&#xff1a;本篇内容为操作系统实验内容&#xff0c;代码等内容经测试没有问题&#xff0c;但是可能会不符合每个人实验的要求&#xff0c;因此以下内容建议仅做思路参考。 目录一、实验目的二、实验内容三、具体实现四、实验总结一、实验目的 多道程序设计中&…

【前端面试】-- 必知必会的promise题

Promise 想必大家都十分熟悉&#xff0c;想想就那么几个 api&#xff0c;可是你真的了解 Promise 吗&#xff1f; 请迎接测试: 以下 promise 均指代 Promise 实例&#xff0c;环境是 Node.js 题目一&#xff1a; const promise new Promise((resolve, reject) > {conso…

ES8JC-ASEMI快恢复二极管ES8JC

编辑:ll ES8JC-ASEMI快恢复二极管ES8JC 型号:ES8JC 品牌:ASEMI 封装:SMC 特性:快恢复二极管 正向电流:8A 反向耐压:600V 恢复时间:35ns 引脚数量:2 芯片个数:1 芯片尺寸:84MIL 浪涌电流:125A 漏电流:<5ua 工作温度:-40℃~150℃ 包装方式:30/管;3000/箱 备受…