EasyShopping运动商城的设计与实现

EasyShopping运动商城的设计与实现

摘 要

:随着科技的不断发展和创新,以及计算机的普及与应用,同时带来了高速的运算能力,数字统计能力,解决了人们日常所需要的搜索、计算等需求。作为计算机应用的一部分,EasyShopping运动商城也提高了运动系列商品检索效率,商品的分类也使得群众更加方便的理解,同时也提供给更加稳定、便捷的服务给广大的运动爱好者,同时解决了购物复杂度以及提高效率等问题。本系统设计并且实现了一套基于springboot、mybatis的运动商城购物系统。系统基于JAVA语言开发,采用游览器和服务器架构模式(B/S)数据库设计采用MYSQL作为后台数据库系统,系统分为前后台两部分,前台包括登陆、商品搜索管理、商品详情管理、购物车管理等。后台功能包括:运动商品上下架管理、运动商品信息管理、权限配置管理等。运动爱好者和管理员只需要在游览器访问本系统,即可实现商品检索、管理后台等操作。

关键词:运动商城,JAVA,浏览器/服务器架构

Design and Implementation of Sports Shopping Mall

Abstract:With the continuous development and innovation of science and technology,And the popularization and application of computers,At the same time, it brings high-speed computing power and digital statistical power,It solves the daily needs of search and calculation。EasyShopping also improves the retrieval efficiency of sports series goods,The classification of commodities also makes it easier for the masses to understand,At the same time, it also provides more stable and convenient services to the majority of sports fans,At the same time, it solves the problems of shopping complexity and improving efficiency.This system designs and implements a set of sports mall shopping system based on springboot and mybatis。System development based on Java language,Adopt browser and server architecture mode(Browser/Server),MySQL is used as background database system in database design,The system is divided into two parts: front and back。The front desk includeslogin、Product search management、Commodity details management、Shopping cart management, etc。Background functions include :On and off shelf management of sports goods、Rights configuration management。Sports enthusiasts and administrators only need to visit the system in the tourist,It can realize commodity retrieval, management background and other operations。

Key words: Sports Shopping Mall, JAVA, Browser/Server

目 录

第1章 绪 论 1
1.1 系统开发的背景 1
1.2系统开发的意义 1
1.3 运行环境和开发技术 2
1.3.1 运行环境 2
1.3.2 开发技术 2
第2章 系统需求分析 4
2.1 系统的需求 4
2.2 系统的功能需求 4
2.3 UML系统建模 6

  1. 用户功能用例关系图 6
  2. 管理员功能用例关系图 6
    3.超级管理员功能用例关系图 7
    2.4 数据流图 7
    1.商品上架数据流图 7
    2.商品下架数据流图 8
    3.添加商品类型数据流图 8
    4.添加购物车数据流图 9
    5.用户登陆数据流图 9
    6.角色授权数据流图 10
    7.提交订单数据流图 10
    2.5 本章小结 11
    第3章 系统设计与实现 12
    3.1 系统设计 12
    3.2 系统总体设计思想 12
    3.3 系统架构 13
    3.4 系统的功能结构图设计 13
    3.5 系统数据库架构设计 14
    3.6 系统模块的设计 19
    3.7 系统实现 25
    3.7.1 角色管理模块的实现 25
    3.7.2 身份认证管理模块的实现 26
    3.7.3商品管理模块的实现 28
    3.7.4 购物车管理模块的实现 29
    3.7.5 商品检索模块的实现 30
    3.7.6 订单管理模块的实现 31
    3.8 本章小结 32
    第4章 系统测试 33
    4.1 测试的目的和意义 33
    4.1.1测试意义 33
    4.1.2测试目的 33
    4.2软件测试方法 33
    4.2.1 测试的方法 33
    4.2.2 黑盒测试和API介绍 34
    4.2.3 测试用例和测试结果 34
    第5章 结束语 36
    5.1 全文总结 36
    5.2 课题展望 37
    参考文献 38
    致 谢 40

第1章 绪 论

1.1 系统开发的背景
"互联网+"时代给人类的健康发展带来了新的挑战,动商在这个背景下具有了新的价值:第一,动商能够提高人掌控互联网技术的行为水平;第二,动商将成为改变人类体育锻炼意识的新理念;第三,动商是释放"互联网+"时代全民健身的原动力;第四,动商是发挥体育育人功能的最佳方法。
计算机管理运动商品等资源信息可以让检索更快速、管理更方便、可靠性更高,同时随着计算机硬盘的技术的提升,从21世纪00年代的MB容量到20年代TB容量,存储量更大了,硬件资源也更加便宜。同时使用计算机软件技术能够极大地提高检索信息管理的效率,也使运动商品商城能够更加稳定的服务于广大运动爱好者。为了能够更加高效、快捷、稳定地运动商品商城内所有使用过程中产生的大量数据信息,本文设计并实现了一套基于springboot、mybatis技术框架的搭建的运动商品管理系统。系统基于JAVA语言进行开发,采用服务器游览器模型,即(Browser/Server架构),数据库系统使用MYSQL5.5版本。EasyShopping系统分为前端html,以及后端JAVAWEB两个部分实现,其中实现了以下六个模块,包括角色管理、身份认证、商品管理、购物车、商品检索。广大健身达人、运动爱好者可根据自己喜好以及搭配选择,通过浏览器登录访问本系统,即可购买对应的商品。
1.2系统开发的意义
尽管目前很多商店、连锁店有自己独立的商城管理系统,但是商品缺不能做到精确定位,而是各种复杂多样的产品,更新信息也落后,用于对广大的运动爱好等用户访问增加了复杂度,所以这样的商城管理系统根本没有发挥它能提供的最大的效能。
基于此问题,有建立一个运动商城系统有效的分类使得运动爱好者更加精确、有效定位到所需要的商品。使得运动类商品能跟随时代主流同时提高销售数量,获取更大的利润空间。
本系统的设计主要通过互联网的访问以及计算机软件的利用率,实现资源的利用率最大化,使得用户通过浏览器访问互联网即可访问运动商城信息,以及运动商城近期发布的最新产品信息。
本系统总体上分为前台展示和后台管理。前台页面实现了商品列表,商品搜索购物车模块功能。而后台的页面则集成了角色管理模块、身份认证模块、商品管理模块等功能。
1.3 运行环境和开发技术
1.3.1 运行环境
软件环境:MySQL5.5、Elasticsearch6.1
硬件环境:操作系统:CentOS release 6.5 (Final)
最低配置:CPU:PentiumD 1.6G以上
内 存:8G内存
硬 盘:500G空间
推荐配置:CPU: intel Pentium4 2.66GHz以上
内存:8GB内存
硬盘:500G空间
1.3.2 开发技术
EasyShopping运动商城系统在后端开发过程中需要使用IDEA软件、MySQL、ElasticSearch,技术框架用到的有SpringBoot、Spring、SpringMVC、Mybatis、Spring Security等。在前端开发过程中使用到的技术框架有Bootstrap、jQuery、等等。
MySQL是一种开源免费的、支持百万级别数据、支持分布式数据库管理系统(主从系统),同时也类似于linux系统一般,支持多用户、多线程的关系型数据库管理系统。其中主要使用的是Innodb引擎,其主要的有点是支持实务,在复杂的业务处理过程往往会涉及到多个数据持久化,如果仅仅因为其中一个持久化处理而需要回滚其他持久化,会增加代码的复杂度,而Innodb实务恰恰可以解决这个问题。
MyBatis 是一款持久层框架,底层对JDBC进行封装,同时也支持数据缓存,数据连接池缓存,减少了程序访问网络的IO次数,同时也支持定制化SQL,动态SQL,简化SQL的过程。除了以上SQL外,还支持原生SQL,是一种半面向对象的开发框架。
JSON Web Token(JWT)是目前是目前大部分公司流行使用的无状态登录跨域校验身份的解决方案。涉及的有跨域身份验证、门票生成算法、有效时间等。其中跨域身份认证解决无状态的请求以及身份缓存,保证了其会话的一直性,是目前大部分企业主流的跨域验证解决方案。JWT通过特点的算法生成门票前面,且算法也是可逆的,把生成的令牌保存在客户端,每次服务器只需解析客户端发送的令牌是正确即可校验身份的准确性。

第2章 系统需求分析

2.1 系统的需求
一个运动品牌商店在营业中必定在产生大量的数据(收购、贮存、运输、销售和结算等环节),用户在种类繁多的商品内找到适合的商品往往需要过滤大部分不需要用到的信息。除了用户需要花费时间去寻找合适的商品外,管理员还需要在统计商品种类,数量也是一个很耗费时间、精力的工作。传统的运动品牌门店,往往需要花费更多的人员来管理商品分类,统计。用时人流量、商品价格计算、结算等环节加大了工作复杂度,办公的效率也是大大减小,其中花费的人力、物力不言而喻。
因此需要有一个高效率,智能化的商城系统是十分有必要的。由于计算机软件技术可以充分利用计算机的运算能力,以及web技术。可以实现商品的搜索,商品分类统计等功能,大大的提高了企业的工作效率,减少了工作的复杂度。同时也提高了客户在购买需求的准确度,减少了客户带来不必要的问题,如商品用途不准确、误差等。
2.2 系统的功能需求
根据EasyShopping运动商城系统的要求,EasyShopping运动商城系统的功能模块主要包括角色管理、身份认证管理、商品管理、购物车管理、商品检索、订单管理六个模块,系统的功能模块结构图如图2-1所示:

在这里插入图片描述

图2-1 系统的功能模块结构图
身份认证管理主要是对登录的用户生成标识,每次用户请求可根据用户带有的身份令牌判断请求是否合理。其中包括的功能有:jwt生成标识令牌,jwt解析请求令牌。对于所有请求都经过身份认证可以降低产品的风险,防止黑客破坏正常的程序。
权限管理主要是对通过对角色的控制,只有具有最高权限的用户可以新建角色并给角色权限,同时也可以删除所创建的角色。包括的功能有:角色新增、角色删除以及角色权限。在本系统中,只设置了超级管理员拥有改模块的的权限控制。
商品管理主要是管理员对产品的分类,产品的详情信息进行管理。包括的功能有:商品类别的新增,商品类别的删除,商品新增,商品删除。
商品检索管理主要是用户在搜索商品时更好定位用户自身需求,其中包括的功能有:价格范围查询,关键字查询,类别查询。
购物车管理主要是用户把需要购买的商品进行预处理,先集中在购物车上面,并且可以对商品数量及删除不需要的商品,包括的功能有:添加购物车、修改数量、删除购物车。
订单管理主要是对购物车上所有商品进行统计,并且生成订单,其主要的功能包括:计算价格、添加订单。
2.3 UML系统建模

  1. 用户功能用例关系图
    在EasyShopping运动商城系统中,用户可以先登录,查询用户需要的商品,然后添加到购物车,防止回头需要重新找一次之前已经找到的商品,通过购物车对商品的数量进行加减,在下订单前如果觉得商品不适合,可以通过删除购物车,再统一下订单。
    用户的功能用例关系图如图2-2所示:
    在这里插入图片描述

图2-2 用户的用例关系图
2. 管理员功能用例关系图
在EasyShopping运动商城系统中,管理员不仅可以在首页上对商品进行审查,同时在对于库存已清空或者下架的商品进行删除,也可以对新产品进行上架,以及对商品的分配管理。管理员的功能用例关系图如图2-3所示:
在这里插入图片描述

图2-3 管理员的功能用例关系图
3.超级管理员功能用例关系图
在这里插入图片描述

图2-4 超级管理人员的功能用例关系图
2.4 数据流图
1.商品上架数据流图
商品上架数据流的过程是后台管理员通过手工的方式将商品的基本信息上架,然后系统处理后将信息写入到数据库库存表中,最后将操作的结果返回给后台管理员。商品上架数据流图如图2-5所示:

在这里插入图片描述

图2-5 商品上架数据流图
2.商品下架数据流图
商品下架数据流的过程:第一步是管理员手工输入商品编号或商品名称,然后经过系统处理后的查询结果返回给用户;第二步是设备管理员根据查询返回的结果,选取要下架的商品,选择下架;最后将操作的结果返回给设备管理员。商品下架如图2-6所示:

在这里插入图片描述

图2-6 商品下架数据流图
3.添加商品类型数据流图
添加商品数据流的过程:第一步是管理员进入添加商品类型管理页面;第二步是操作点击新增按钮,输入类型名称、类型描述等信息,确定提交;最后服务器将操作的结果响应到操作管理员管理员。添加商品类型如图2-7所示:

在这里插入图片描述

图2-7 添加商品数据流
4.添加购物车数据流图
购物车管理主要是方便用户预采购的过程,和超时买商品时推的购物车性质一样,其数据流过程为:第一步是用户进入商城首页面,获取所有商品信息;第二步是点击对应的商品,进入详情页面;第三步点击购物车图标,把商品放入购物车;最后将操作的结果返回给用户。添加购物车数据流如图2-8所示:
在这里插入图片描述

图2-8 添加购物车数据流
5.用户登陆数据流图
用户登陆数据流过程为:第一步是用户进入登陆页面输入用户账号和密码;第二步是系统对用户登陆信息进行验证;第三步就是验证通过后根据用户的信息查询该用户所拥有的角色;第三步是根据角色查询它具有的权限;最后根据用户角色拥有的权限,且在前端判断权限,展示出页面,返回给用户。用户登陆数据流如图2-9 所示:

在这里插入图片描述

图2-9 用户登陆数据流
6.角色授权数据流图
商品后台需要具备一定权限才能对商品的属性进行操作。角色授权数据流的过程:首先是超级管理员进入角色授权页面,选择需要授权的用户,对应改用户选择权限,最后系统根据超级管理员的操作返回提示给超级管理员。角色授权DFD如图2-10所示:
在这里插入图片描述

图2-10 角色授权DFD
7.提交订单数据流图
提交订单数据流展示了用户购买结算的过程,其步骤如下:第一步是用户购物车页面,选择需要购买的商品;第二步是用户选择购买发货地址;第三步点击提交订单,把订单信息写入订单表中;最后将操作的结果返回给设备管理员。提交订单数据流如图2-11所示:
在这里插入图片描述

图2-11 .提交订单数据流
2.5 本章小结
本章对EasyShopping运动商城系统进行了需求分析,并且进行了系统的功能设计。根据学EasyShopping运动商城系统,EasyShopping运动商城系统功能的设计主要包括商品类型操作、商品查询、商品上下架操作、角色授权、安全管理等六个模块。另外,本章从超级管理员、管理员、用户等几个重要角色的角度对系统进行了UML建模,给出了各自的功能用例关系图。最后,文中给出商品上架、商品下架、添加商品类型、添加购物车、用户登陆、角色授权、添加订单的数据流图,并作了详细说明。

第3章 系统设计与实现

3.1 系统设计
系统的总体设计阶段的任务就是如何组件与实现这个系统,运动商城信息数据实现计算机在线管理,就需要一套管理系统来对商品信息、用户信息、购物车信息、订单信息等信息组合起来。
在之前已经合理的对需求分析进行了设计,这部分就是总体设计阶段。总体需要实现角色管理、身份认证管理、商品管理、购物车管理、商品检索、订单管理六个模块,目的是把个个模块组成,同时也解析各个模块,把系统的每个模块都进行描述,这对提高系统的效率和质量是一个关键保证。
3.2 系统总体设计思想
本系统开发主要实现该六个模块,并且需要对模块进行分析。需要考虑以下几个方面:
身份认证的设计:主要是通过登录校验身份返回的请求头,该请求头是一个身份令牌,需要在用户每次请求时带上该令牌。
角色管理的设计:本系统中超级管理员专门展示的页面,超级管理员进入后台后,查看角色管理,可以对角色授权。
购物车的设计:本套系统中对用户的购物车信息做了专门的页面展示,登陆后可点击购物车,查看购物车信息,对订购的商品进行结算等操作。
商品管理的的设计:本套系统中对于管理员使用专门展示的页面,管理员登陆进入后台,查看商品分配管理以及商品管理,可以对商品类型、商品进行操作。
商品检索的的设计:本套系统中对用户的商品搜索信息做了专门的页面展示,用户进入商城主界面,可以根据商品类型、关键字搜索,进入分类商品列表时支持价格范围搜索。
订单管理的的设计:本套系统中对用户的订单信息做了专门的页面展示,用户进入商城主界面,可以根据购买物品进行下单,查看订单等。
3.3 系统架构
系统的总体架构。其模式如图3-1所示。
在这里插入图片描述

图3-1 商城系统总体架构
数据持久层采用的是MySQL数据库,数据持久化采用Mybatis框架和Durid数据源负责数据信息的存储。
服务层采用SpringBoot框架为基础的模式,项目前后端分离,前后端采用json数据格式进行数据交换。
前端采用Bootstrap+jQuery,更好地实现项目的前后端分离,方便项目的部署。
3.4 系统的功能结构图设计
系统的功能结构图的设计要考虑到整个系统要实现的具体功能,根据用户需求,要实现用户系统和管理后台系统两部分。其中,用户系统的功能包括商品检索,购物车管理,地址管理,订单管理。后台管理系统的功能则包括商品分类,商品管理,角色授权,地址信息,用户信息。具体情况如图3-2 所示。

在这里插入图片描述

图3-2 系统功能模块图
3.5 系统数据库架构设计
根据第二章的系统需求分析,系统需要建立一些数据库表来保存一些相关的信息,如用户信息、角色信息、商品类型信息、收货信息、商品信息、订单信息等一些数据库,图3-3是对上述一些主要数据库表的ER图设计:

在这里插入图片描述

图3-3 系统全局E-R图
地址表和用户表关系如图3-4所示:
在这里插入图片描述

图3-4 地址用户E-R图
角色表和用户表关系如图3-5所示:
在这里插入图片描述

图3-5 角色用户E-R图
用户表和订单表关系如图3-6所示:
在这里插入图片描述

图3-6用户订单E-R图
订单表和商品表关系如图3-7所示:
在这里插入图片描述

图3-7订单商品E-R图

商品类型表和商品表关系如图3-8所示:
在这里插入图片描述

图3-8商品和商品类型E-R图

(1)User(用户信息)表
表3-1给出了存放用户信息的数据库表结构
表3-1 User
列名 数据类型 可为空 注释
ID INT(11) NOT NULL 用户Id
USERNAME VARCHAR(255) NOT NULL 用户名
PASSWORD VARCHAR(255) NOT NULL 密码
SALT VARCHAR(255) NULL hash盐
PHONE VARCHAR(255) NOT NULL 手机号码
ROLE_ID INT(11) NULL 角色id
CREATE_TIME DATATIME NULL 创建时间
UPDATE_TIME DATATIME NULL 更新时间
STATE TINYINT(1) NULL 状态

(2)role(角色表)表
该表为角色表,用于角色信息、角色描述等信息。主键为ID,表结构如表3-2所示:

表3-2 role
列名 数据类型 可为空 注释
ID INT(11) NOT NULL id
ROLE_NAME VARCHAR(255) NOT NULL 角色名
ROME_REMAKE VARCHAR(255) NOT NULL 描述
CREATE_TIME DATATIME NULL 创建时间
UPDATE_TIME DATATIME NULL 更新时间
(3)type(商品类型表)表
该表为商品类型表,用于记录商品类型,方便于分类商品。表结构如表3-3所示:
表3-3 type
列名 数据类型 可为空 注释
ID INT(11) NOT NULL id
TYPE_NAME VARCHAR(255) NOT NULL 类型名称
REMAEK VARCHAR(255) NOT NULL 描述
CREATE_TIME DATATIME NULL 创建时间
UPDATE_TIME DATATIME NULL 更新时间
(4)commodity(商品表)表
表结构如上表3-4所示,该表为商品信息表,用于记录商品信息(如类型ID、商品名称、商品数量、商品价格、上架时间、更新时间、商品描述、商品状态、等)
表3-4 commodity
列名 数据类型 可为空 注释
ID INT(11) NOT NULL id
TYPE_ID VARCHAR(255) NOT NULL 类型id
NUMBER VARCHAR(255) NOT NULL 商品数量
PRICE DECIMAL(10,2) NULL 商品单价
NAME VARCHAR(255) NULL 商品名称
DETAIL VARCHAR(255) NULL 商品描述
PICTRUE_URL VARCHAR(255) NULL 图片URL
CREATE_TIME VARCHAR(255) NULL 创建时间
UPDATE_TIME VARCHAR(255) NULL 更新时间
STATE TINGYINT(1) NOT NULL 状态 1上架/0下架
(5)address(收货信息表)表
该表为收货信息表,收货时确认收货地址信息等,表结构:(如ID、用户ID、收货地址、手机号码、创建时间、是否默认地址信息等),表结构如表3-5所示:
表3-5 Address
列名 数据类型 可为空 注释
ID INT(11) NOT NULL id
USER_ID INT(11) NOT NULL 用户ID
ADDRESS VARCHAR(255) NOT NULL 收货地址
PHONE VARCHAR2(20) NULL 手机号码
CREATE_TIME DATATIME NULL 创建时间
pk TINYINT(1) NULL 是否默认地址信息
(6)ordering(订单表)表
该表为订单表,用户购买商品订单信息,表结构:(如ID、收货地址表ID、商品描述【JSON结构】等),表结构如表3-6所示:
表3-6 ordering
列名 数据类型 可为空 注释
ID INT(11) NOT NULL id
USER_ID INT(11) NOT NULL 用户ID
ADDRESS_ID INT(11) NOT NULL 收货地址表ID
COMMODITY VARCHAR2(20) NULL 商品详情
CREATE_TIME DATATIME NULL 创建时间
TOTAL_PRICE DECIMAL(10,2) NOT NULL 总价
STATE TINGYINT(1) NOT NULL 订单状态
3.6 系统模块的设计
根据需求分析,EasyShopping运动商城系统的实现主要包括角色管理、身份认证管理、商品管理、购物车管理、商品检索、订单管理六个模块的实现,本小节不在此对所有的模块的实现进行介绍,主要介绍系统中角色管理、身份认证管理、商品管理、购物车管理、商品检索、订单管理模块的设计。

  1. 角色管理模块
    角色管理模块是超级管理员赋予user是否能操作商品后台的权限控制,超级管理员要访问EasyShopping运动商城后台系统首先必须要进行身份验证,只有验证通过的user才能访问本系统。因此,首先要打开用户登陆页面,输入账号密码,登录成功后,进入角色授权页面,选中用户,赋予用户角色,点击确定,提交信息,系统返回提示用户。
    其具体的流程图如下图3-9所示:
    在这里插入图片描述

图3-9 角色管理模块流程图

2.身份认证管理模块
身份认证主要是识别请求是否带头token,并且能够识别token。用户发送请求到服务端,服务端获取token,如果token信息是空,则返回提示非法的请求操作。
如果token不为空,则通过JWT提供的Base64 URL算法解析token,如果token令牌失效则返回游览器提示实现,反正正常进入请求。
根据上面的分析,用户提交请求,后台解析请求是否带有token。失败则提示401权限不足,反正放行该请求。其具体的流程图如下图3-10所示:

在这里插入图片描述

图3-10 身份认证流程图

  1. 商品管理模块
    将商品上下架是商城系统运行数据的来源,管理员登陆成功后,在主操作页面的功能菜单栏点击商品管理,在该页面可添加新的商品。
    根据上面的分析,商品管理的流程为管理员先打开用户登陆页面,输入自己的用户名和密码进行登陆,登陆成功后将返回主操作页面给设备管理员,设备管理员进入商品管理页面即可添加商品,其具体的流程图如下图3-11所示:

在这里插入图片描述

图3-11 商品管理的流程图
4. 购物车管理模块
购物车管理是用户在浏览商品时,筛选到合适的商品,提交添加到购物车,方便统一结算。下面是对购物车管理模块的设计与实现情况。
购物车管理的流程为用户先打开用户登陆页面,输入自己的用户名和密码进行登陆,登陆成功后将返回商城界面给用户,用户筛选商品并单击该商品,进入商品详情页面,点击添加商品。其具体的流程图如下图3-12所示:

在这里插入图片描述

图3-12 设备库存查询流程图
5. 商品检索模块
商品检索主要是方便用户根据关键字、价格等信息查询商品,找到符合的商品。
商品检索的流程为进入商城页面,点击输入搜索关键字,获取关键字匹配的的商品,点击该商品,进入商品详情页。其具体的流程图如下图3-13所示:
在这里插入图片描述

图3-13 商品检索流程图
6. 订单管理模块
订单管理主要对购物车的商品进行结算,并且生成订单。其过程用户先打开用户登陆页面,输入自己的用户名和密码进行登陆,登陆成功后将返回商城界面给用户,用户进入购物车页面,点击选择购买的商品、数量,收货地址信息,下单。其具体的流程图如下图3-14所示:
在这里插入图片描述

图3-14 订单管理流程图
3.7 系统实现
根据上一节的系统模块的设计,本节给出了它们的实现。下面分别是它们实现的界面效果。
3.7.1 角色管理模块的实现
下图3-15是角色管理模块实现的界面图,超级管理登陆成功后自动跳转后台界面,默认进入的是用户管理界面,界面包括用户名,密码,密码hash盐,手机号码等多种属性,在对应的一列的末尾有修改权限操作。
在这里插入图片描述

图3-15 用户管理界面
如图3-16所示,点击权限操作,进入角色角色授权界面,选择管理员,单击确认进行修改角色权限操作。
在这里插入图片描述

图3-16 角色授权管理界面
3.7.2 身份认证管理模块的实现
身份认证管理主要是为了校验非法请求,用户登录成功会返回身份令牌,用户每次请求需要带上身份令牌,如果请求未曾带上令牌,可视为改操作未违法操作,如图3-17所示,未请求正常操作,同样的url,图3-18所示未非法操作。
在这里插入图片描述

图3-17 用户正常请求界面
在这里插入图片描述

图3-18 用户非法请求界面
核心代码:
@Override
protected void doFilterInternal(HttpServletRequest req, HttpServletResponse rep, FilterChain fc)
throws ServletException, IOException {
if(passRequest(req)) {
fc.doFilter(req, rep);
return;
}
Authentication authResult = null;
AuthenticationException failed = null;
try {
String token = getToken(req);
if(StringUtils.isNotBlank(token)) {
Claims claims = JwtTokenUtils.parseToken(token);
Map<String,Boolean> authroityMap = webSecurityConfig.getJwtUserService().getAuthroityMap();
if( authroityMap.get(claims.getSubject()) != null && !authroityMap.get(claims.getSubject()))
failed = new InsufficientAuthenticationException(“授权已更新”);
else {
JwtToken authToken = new JwtToken(claims);
authResult = this.getAuthenticationManager().authenticate(authToken);
}
} else {
failed = new InsufficientAuthenticationException(“token为空”);
}
}catch (ExpiredJwtException e) {
logger.error(“用户 “+e.getClaims().getSubject()+” token已过期”, e);
failed = new InsufficientAuthenticationException(“token已过期”, failed);
}catch (AuthenticationException e) {
logger.error(“token解析失败”, e);
failed = new InsufficientAuthenticationException(“token解析失败”, failed);
}catch (SignatureException e) {
logger.error(“token签名异常”, e);
failed = new InsufficientAuthenticationException(“token签名异常”, failed);
}catch (MalformedJwtException e){
logger.error(“token不能正常解析”, e);
failed = new InsufficientAuthenticationException(“token不能正常解析”, failed);
}
if(authResult != null) {
successfulAuthentication(req, rep, fc, authResult);
} else{
unsuccessfulAuthentication(req, rep, failed);
return;
}
fc.doFilter(req, rep);
}
3.7.3商品管理模块的实现
下图3-19是设商品管理模块实现的界面图,界面上包含了商品的种类名称、商品数量、商品名称、商品价格、商品描述、商品图片存储位置等基本信息,当用户填写好基本信息后,单击“添加”按钮将进行添加操作;如果用户添加成功将返回添加页
面,否则将提示相应的错误信息。
在这里插入图片描述
图3-19 商品管理界面
3.7.4 购物车管理模块的实现
是购物车管理模块实现,用户查询需要的商品,点击进入商品详情页,如图3-20所示商品详情界面,点击加入购物车按钮,后台自动根据用户信息,添加该商品到数据库,同时也跳转到购物车页面,展示用户已添加到购物车的所有商品记录。如果3-21所示购物车记录详情页面。
在这里插入图片描述

图3-20 商品详情界面
在这里插入图片描述

图3-21 购物车详情界面
3.7.5 商品检索模块的实现
下图3-22是商品检索模块实现的界面图,用户可以点击商品分类选择商品类型查询,或者根据关键字查询商品信息。当用户输入关键字查询商品,或者点击分类查询商品,进入商品列表,如图3-23所示,同时也支持价格范围搜索。
在这里插入图片描述

图3-22 商品检索界面
在这里插入图片描述

图3-23 商品检索界面

核心代码:
select * from commodity where PRICE BETWEEN #{startPrice} and #{endPrice} and type =#{type}

3.7.6 订单管理模块的实现
订单管理模块实现,当用户在商品列表点击立即购买,或者对购物车结算,点击结算进入收货地址信息界面,选择收货地址,即可进入订单处理,选择购买的商品,下订单。如图3-24所示,是选择地址,如果用户需要更换地址,点击该页面下方,添加新地址。用户选中地址信息,点击提交,即可进入订单详情页面,如图3-25所示。
在这里插入图片描述

图3-24 选择界面
在这里插入图片描述

图3-25 订单管理界面

3.8 本章小结
本章介绍了从系统的总体架构、数据库的设计和系统部分模块设计与实现四个方面阐述了EasyShopping运动商城系统的设计与实现。
系统模块设计主要包括了角色管理模块、身份认证管理模块、购物车管理模块、商品检束模块和订单管理模块。
数据库表设计方面:用户信息表、角色信息表、商品类型表、商品详情表、收货地址信息和订单表。最后,文中给出了系统模块设计中相应的实现界面。

第4章 系统测试

4.1 测试的目的和意义
4.1.1测试意义
系统测试是保证系统安全性、稳定性等因素的重要保证,只要经过大量的测试,才能够让项目在线上稳定运行。系统测试属于项目开发生命周期中一项非常重要且复杂的工作,对软件的可靠性具有极其重要的意义。只有经过大量测试的洗礼,才能拖动项目产品的进步。引用泰戈尔说过的一句名言”只有经过下地狱般的磨练,才能够创造出天堂的力量”,软件也正当如此。
4.1.2测试目的
系统测试(System Testing)是对整个系统的测试,将对应的系统设计模块进行测试,检验不合理的地方,包括代码的BUG、系统配置环境是否生效等。这种测试可以发现系统分析和设计中的错误。类似于本系统的安全认证模块设置一般,校验token信息,判断身份认证安全措施是否完善、能不能保证系统无非法的侵入等安全问题,比如xss攻击等。同时该系统属于高并发系统,也需要通过压力测试等,判断系统的并发性。在本次测试中主要解决用户非法请求的问题。
4.2软件测试方法
4.2.1 测试的方法
目前主流常用的测试方法有两种:黑盒测试和白盒测试
黑盒测试:
在测试过程中只注重参数的输入以及服务端的响应结果。在企业开发过程中使用最多的测试方法。黑盒测试不需要去注重代码的实现,主需要关心测试的结果是否正常,输入边界值系统是否会正常,对测试人员的计算机能力要求不高。

白盒测试:
在测试过程中去研究模块的核心代码,实现原理等。白盒测试对个人计算机技术能力要求高,需要对代码有一定理解性,且熟悉程序的结构,判断逻辑是否合理。
本次测试中用到的就是白盒测试。
4.2.2 黑盒测试和API介绍
本次测试主要用黑盒测试,提交输入参数的边界值,获取响应的结果值。
本次测试主要分为测试身份认证模块,参数边界分别包括用户请求后端接口时未携带token信息以及携带错误的token信息

测试的API包括:
http://localhost:8080/user/getAll
http://localhost:8080/commodity/getAll

4.2.3 测试用例和测试结果
表4-1 测试用例表
测试类型 功能测试 模块名称 身份认证模块
用例描述 测试非法的请求操作,服务端后台是如何处理。
请求不带token操作,也就是不进行登陆,未获取token的情况下请求接口
前置条件 不登陆的情况下
编号 测试项 测试步骤 数据 期望结果
1 http://localhost:8080/user/getAll
Url测试 1.退出登陆
2.访问url 无 http请求返回401错误
2 http://localhost:8080/commodity/getAll
Url测试 1.退出登陆
2.访问url 无 http请求返回401错误

测试结果,如图4-1所示

在这里插入图片描述

图4-1不带token测试图

测试结果:
非法的请求后端返回401(权限不足的提示),实际上,测试用例已经记载了测试结果数据,测试缺陷上说明了实测结果数据和与预期结果数据的无偏差;

第5章 结束语

5.1 全文总结
本文给出了EasyShopping运动商城系统的开发过程。系统采用java语言为开发语言,数据库使用的是MYSQL。而系统中用到的用例图以及体系结构图等是采用WPS软件绘制的。在软件开发过程中,大量使用了开源框架,如Spring系列等。
通过完成这次毕业设计,以及在学校学习的理论知识和实习学习的实际技能,将各种框架技术、网络知识融入到软件开发中,提高了自己解决编程问题的能力,同时通过查阅资料、参考文献、设计文档、UML建模设计等,让我对自己所学到的知识有了又一次的巩固。
这次毕业设计的完成,让我在大学学习期间以及实习期间的知识重新有了一个新的认知,不再是之前停留在理论阶段,同时让我明白了,扎实的理论知识,扎实的基础是一件多么重要的事情。在本次软件开发过程中,遇到了大量未接触过的技术、封装框架,在遇到不懂问题的时候通过百度等搜索工具获取答案,相对于搜索到的答案,如果没有扎实的理论和基础,也不一定能看得懂,所以在此很感谢学校老师的教导以及公司高级开发工程师的指导。同时在通过此次毕业设计,重新把技能知识汇总,所以此次毕业设计具有非常重要的意义。
在技术方面,通过此项目的开发,加深了对基于SpringBoot等技术框架结合的相关技术实战经验,同时对项目的开发过程有了深刻的理解。在独立开发过程中,独立思考,提高了自身的动手编程能力。
不足方面,主要是商城系统所涉及的业务量很大,本系统中仅仅只是完成一部分业务及代码。当然随着时间的推移,不断的对项目添加,最后能完成一个真真正正的商城系统,项目需要一定的积累和沉淀才能更加优秀。
此次毕业设计是给即将走完的大学生涯的一个交代,在大学生涯中,学过的计算机网络,javaweb等理论知识,全部都在此次毕业设计中展示。给指导老师们一个满意的答卷。
通过毕业设计,让我知道理论知识只有运用到实践中才是真正的懂了,在编写程序的过程中遇到了许多问题,让我知道自己的编程能力还是要加强学习,加强练习,通过这次毕业设计让我意识到知识需要通过长期的积累和实践才能掌握,只有不断提高自己的知识与技能,才能够成为一个优秀的编程人员。
5.2 课题展望
虽然已经完成了EasyShopping运动商城系统的设计,但是还是局限于目前所学的技术,在github开源项目中存在着许许多多优秀的star项目,相信随着时间的推着,不断加深个人理论知识以及知识能力,同时学习更多优秀的开源框架,用于完善本次商城系统,经过不断的修改和改进。目前还有缓存、消息队列等高并发技术没有使用上,在不久的将来,把这些技术整合到本项目中,项目将会更加强大,功能也会更加丰富多彩。

参考文献

[1].Bruce Eckel著 .Thinking In Java[M]. 机械工业出版社:第四版
[2].Barson Schwartz.Peter Zaitsev,Vadim Tkachenko著. .High Performance MySQL,Third Edition[M]. 电子工业出版社:第三版
[3].周志明著. 深入理解Java虚拟机[M]. 机械工业出版社:第三版
[4].王慧、张炎著. “互联网+”背景下动商价值的新探讨[J]. 中国知网. 南京理工大学学报(社会科学版) 2017-12-12
[5].吴阳阳、 宋加强、宋玉著. 现代奥林匹克运动价值变迁的历史回溯与现实观照[J]. 中国知网. 安徽体育科技 2018-08-31
[6].邵珠琳著. “互联网+”行动计划下的体育消费价值嬗变[J]. 中国知网. 山东体育学院 2017-03-15
[7].耿美厚、王立君、张海连、祁晓红著. 论体育之价值[J]. 中国知网. 2018-07-05
[8].JSON Web Token(JWT). [Online]Available: https://jwt.io/introduction/
[9].SpringSecurity. [Online]Available:https://spring.io/projects/spring-security-oauth
[10].IDEA.百度百科. [Online]Available:https://baike.baidu.com/item/IntelliJ%20IDEA/9548353?fr=aladdin&fromtitle=idea&fromid=1671803
[11].MySQL.百度百科. [Online]Available:https://baike.baidu.com/item/mySQL/471251
[12].Elasticsearch. 百度百科. [Online]Available:https://baike.baidu.com/item/elasticsearch/3411206?fr=aladdin
[13].clinton gormley,zachary tong著. elasticSearch权威指南(中文版)[M] [Online]Available:https://es.xiaoleilu.com/
[14].Springboot . [Online]Available: https://spring.io/projects/spring-boot/
[15].Serving Web Content with Spring MVC . [Online]Available: https://spring.io/guides/gs/serving-web-content/
[16].Leszek A. Maciaszek著. Requirements Analysis and System Design[M]. 机械工业出版社
[17].宗明仪著. 浅析中国本土运动品牌市场现状及发展策略[J]. 中国知网 .2019-07-30
[18].张立新著. 我国体育产业化发展的机制构建及路径选择[J]. 中国知网 .2017-09-23
[19].Mybatis. [Online]Available: https://mybatis.org/mybatis-3/zh/index.html
[20].Javascript. 百度百科 .[Online]Available:https://baike.baidu.com/item/javascript/321142?fromtitle=js&fromid=10687961&fr=aladdin
[21].jQuery. [Online]Available: https://jquery.com/
[22].李红陛著. 基于J2EE技术的网上商城系统设计[J]. 中国知网 2010-12-11

致 谢

本次毕业设计的完成特别要感谢的是我的指导教师,从毕业设计的选题、整体设计安排、设计中问题的解决、模块功能的具体实现、论文的撰写和论文的修改等等都离不开的悉心教导。
这次毕业设计的完成还要感谢我的学校、老师和同学以及公司中的同时,学校中给予我们舒适的学习环境,老师传授我们专业的理论知识,在每次课堂学习,每次都学到了不一样的理论知识,通过长时间的积累,才能很好的完成此次毕业设计。在计算机科学与技术学习过程中,同学们之间一起学习、研究、一起解决问题,丰富了我们大学的生活,感谢班上一起学习进步的同学们。当然还有我实习的公司广州金越,在实习过程中学习到更多实战经验,只要在战场才能更好磨练自身的能力。在此,再一次感谢学校的培养,老师的教导,同学的帮助以及公司的实习机会。
最后向评审本论文以及参加论文答辩的各位老师们表示我最衷心的感谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值