基于Java的商城网站系统设计与实现(6000字论文范例)

news2024/12/23 15:23:25

基于Java的商城网站系统设计与实现

姓    名:       刘德华         

学    号:                       

指导教师:                       

20234

摘要

随着我国经济活力的不断提升和互联网的快速发展,信息的重要性正在显现出来。电子商务作为经济发展的重要一环取得了突飞猛进的发展。由于具有高效便捷的优点,网上购物已经成为一种不可或缺的新型生活方式,近年来各大互联网企业纷纷布局电子商务,获得了巨大成功。而对于这些平台来说,如何在保证交易不出错的前提下应对短时间内的大流量访问,确保交易系统的高性能成为了技术难点。基于当下电子商务的需求,本系统采用轻量级框架SpringBoot进行开发,提供一个满足用户需求进行网上购物的平台。本系统对商城网站平台进行详细的需求调研之后,确定了平台所要实现的具体功能,依据面向对象的软件工程方法的流程进行开发。系统采用了当下流行的SpringBoot来作为后端开发框架,将数据库框架MyBatis作为数据层ORM框架,采用B/S架构进行开发,使用Mysql作为系统的存储模块来进行开发。系统设计包括管理员和普通用户两个角色用户,既为普通用户提供了商品浏览以及下单购买的服务,也让管理员有用户维护、商品维护、订单维护的平台。在系统开发完成后,采用完善的测试用例对系统平台进行测试,确保该系统是一个的各项功能都能够正常运行、性能良好的商城平台。

关键词:SpringBoot; MySQL; 系统设计; 电子商城

Abstract

With the continuous enhancement of our country's economic vitality and the rapid development of the Internet, the importance of information is appearing. Electronic commerce as an important part of economic development has made rapid development. Due to its advantages of high efficiency and convenience, online shopping has become an indispensable new way of life. Based on the current demand of e-commerce, the system adopts the lightweight framework SpringBoot for development, providing a platform to meet the needs of users for online shopping. This system to the mall website platform after the detailed demand research, to determine the platform to achieve the specific function, according to the object-oriented software engineering method of the process development. The system adopts the current popular SpringBoot as the backend development framework, takes the database framework MyBatis as the data layer ORM framework, adopts B/S architecture for development, and uses Mysql as the storage module of the system for development. System design includes administrator and ordinary user two roles, not only for ordinary users to provide commodity browsing and order purchase services, but also let the administrator have user maintenance, commodity maintenance, order maintenance platform. After the completion of system development, the system platform is tested with perfect test cases to ensure that the system is a mall platform with good performance and normal operation of various functions.

目   录

1 绪论... 5

1.1 研究背景... 5

1.2 研究现状... 5

1.3 研究目标... 6

2 相关技术介绍... 7

2.1 Java语言... 7

2.2 Spring框架技术... 8

2.2.1 Spring框架介绍... 8

2.2.2 SpringMVC框架介绍... 9

2.2.3 SpringBoot框架介绍... 10

2.3 Vue前端技术... 10

2.3.1 Vue框架... 10

2.3.2 Ant-Design-Vue组件... 12

2.4 Nginx负载均衡技术... 12

2.4.1 Nginx应用场景... 13

2.4.2 Nginx优势... 13

2.5 MySQL数据库... 14

3 需求分析... 14

3.1 系统功能需求分析... 14

3.1.1 业务需求分析... 14

3.1.2 数据需求分析... 15

3.2 系统非功能性需求分析... 16

3.2.1 系统处理能力需求... 16

3.2.2 可靠性需求... 16

3.2.3 可用性需求... 17

3.2.4 维修性需求... 17

3.2.5 环境适配需求... 17

4 系统设计... 18

4.1 设计原则... 18

4.1.1 阶段开发原则... 18

4.1.2 易用性原则... 18

4.1.3 业务完整性原则... 18

4.1.4 业务规范化原则... 18

4.1.5 可扩展性原则... 18

4.2 总体架构... 18

4.3 功能设计... 19

4.4 数据库设计... 19

4.4.1 设计规则... 19

4.4.2 表结构设计... 19

5 系统实现... 22

5.1 前台功能模块实现... 22

5.1.1 注册登录模块... 22

5.1.2 首页模块... 23

5.1.3 详情页模块... 24

5.1.4 搜索模块... 24

5.1.5 用户中心模块... 25

5.2 后台管理模块实现... 25

5.2.1 用户管理... 25

5.2.2 分类管理... 26

5.2.3 标签管理... 26

5.2.4 商品管理... 26

5.2.5 订单管理... 26

5.2.6 日志管理... 27

5.2.7 运营管理... 27

5.2.8 系统信息... 27

5.2.9 总览模块... 27

6 系统测试... 28

6.1 测试策略... 28

6.2 测试环境... 31

6.3 测试用例及结果... 31

6.3.1 后台功能测试用例... 31

6.3.2 前台功能测试用例... 32

6.4 测试总结... 33

7 总结与展望... 34

参考文献... 35

  1. 绪论
    1. 研究背景

随着经济的发展,电子商务已经成为了当下商业领域的主要方向,在国内外市场上已经具备了可观的规模和影响力。越来越多的商业运营和交易流程都在互联网上进行实现和推广。因此,开发一个具备商业性质的互联网产品成为了越来越多开发者和创业者的需求。作为电子商务的重要组成部分,商城网站开发在这个领域中也显得尤为重要。商城网站系统不仅提供了一个商品展示平台,而且还是商家、顾客互相交流与交易的商业社交平台。因此,商城网站系统的设计与实现需要综合考虑功能性、易用性、安全性和扩展性等各方面因素。本文以商城网站为研究对象,探讨商城网站系统设计与实现的方法和思路。本系统采用Java技术体系,运用了MVC软件架构模式,架构稳定,可扩展性强,同时利用市场主流的前端开发技术,保证了系统的易用性和流畅性。为满足商城网站在现代市场上的需要,本系统设计了完整的电子商务流程——从用户注册、用户登录、商品分类、商品搜索到下单支付、订单管理、售后服务,每个功能都设计具体实现,以满足用户在商城网站上的日常购物需求。此外,系统还考虑到商家的特殊需求,为商家开发了商家平台,提供了“发布商品”、“订单管理”、“销售统计”等功能,帮助商家更好地管理店铺。

综上所述,商城网站系统设计与实现是电子商务平台建设和发展的重要组成部分,本文研究开发的商城网站系统为消费者和商家提供了一个广阔且安全的交流平台,为企业拓展电子商务业务提供了重要的技术支持。。

    1. 研究现状

随着互联网的普及和电子商务的发展,商城网站已经成为了商业运营的重要渠道,在国内外的研究中也受到了广泛的关注。本文将从国内外研究现状的角度对商城网站系统的设计与实现进行分析。

在国内,商城网站的研究主要集中在网站运营、技术实现等方面。其中,以阿里巴巴和京东等商业网站为研究对象的文献比较多。其中,商城网站的运营研究主要包括用户体验、服务质量、消费者行为等方面。技术实现研究主要包括网站架构、数据库设计、支付系统等方面。而商城网站系统的开发实践主要以建立购物车、订单管理、物流管理、用户管理等模块为主要任务。

在国外,商城网站领域的研究也比较活跃,主要集中在以下几个方面:一是企业网站的发展,二是电子商务的交互设计,三是在线营销,四是移动电子商务等方面。其中,对企业网站的研究主要关注企业网站的开发目的、用户需求等方面,考虑到网站可持续发展问题,文献中提出了很多关于企业网站运营的实践建议。在电子商务交互设计方面,文献中主要研究在电子商务网站中的交互设计问题,研究如何提高用户购物体验等。在在线营销方面,文献中主要探讨如何通过网络实现高效的推广和营销,文献中介绍了多渠道的营销方式并提出了一些实践建议。在移动电子商务方面,文献主要关注移动电子商务在日常生活中的应用场景,并研究了移动电子商务系统的设计及其重要性。

综合国内外商城网站系统设计的研究现状,可以得出如下结论:鉴于商城网站的运营的复杂性和技术实现的多样性,需要更多前端设计及程序开发人才参与,特别是对于快速发展和优化运营商城网站的企业,其前端部门应强化前后端联调,快速进行迭代升级,并对数据进行深度挖掘,基于不同设备、入口等特征,分析更详尽的用户需求,实现商城网站的效益最大化及用户的最佳体验。。

    1. 研究目标

本文旨在通过对java商城网站系统的设计与实现,探讨如何实现一个具备良好用户体验和高性能的商城网站系统,并在此过程中探究相关技术和实践,从而为商城网站系统的设计和实现提供参考和借鉴。

具体而言,本文主要研究以下方面:

1.商城网站系统的需求分析:商城网站系统是一个涉及众多方面的综合性系统,需要全面深入地分析和了解各个业务模块的需求,包括但不限于商品管理、订单管理、会员管理、数据统计等方面。

2.商城网站系统的架构设计:为了实现一个高性能、高可靠的商城网站系统,需要设计合理的架构。本文将结合实际需求和技术选型,采用分布式架构+微服务架构,设计出符合要求的商城网站系统架构。

3.商城网站系统的技术选型和实现:合理的技术选型是保证商城网站系统高性能、高可靠性的重要保障,本文将结合架构设计和需求分析,选择合适的技术和框架,同时描述实现商城网站系统各种功能的具体实现方法。

4.商城网站系统的性能测试与优化:商城网站系统的高性能是保证用户体验的重要因素,因此必须进行性能测试和优化。本文将介绍使用Apache JMeter进行性能测试、使用Redis缓存技术进行优化等方法。

5.商城网站系统的安全保障:商城网站系统必须保障用户信息和交易数据的安全,因此必须进行相关安全保障措施。本文将介绍商城网站系统的安全风险和安全保障措施,并结合实际案例,阐述如何实现安全保障。

总之,本文的研究目标是实现一个功能齐备、高性能、安全可靠的商城网站系统,同时提供相关的技术选型、实践方法和案例分析,为商城网站系统的设计和实现提供参考和借鉴。。

  1. 相关技术介绍
    1. Java语言

Java是一种通用的,基于类的,面向对象的编程语言。它是用于应用程序开发的计算平台。因此,Java是快速,安全和可靠的。它被广泛用于在笔记本电脑,数据中心,游戏机,科学超级计算机,手机等中开发Java应用程序。Java遵循WORA(Write Once, Run Anywhere。一次写入,到处运行)的原理,并且与平台无关。它也简单易学。

Java语言具有如下特点:

(1)一种面向对象的编程语言。

按照对象集合的方式组织程序是一种面向对象的编程思维。面向对象编程的四个主要概念是:抽象化,封装,继承,多态。

(2)一种与平台无关的语言。(它提供了在不同平台下的解释运行环境)

编译器将源代码转换为字节码,然后JVM执行编译器生成的字节码。该字节码可以在Windows,Linux和macOS的任何平台上运行,这意味着如果我们在Windows上编译程序,则可以在Linux上运行,反之亦然。每个操作系统具有不同的JVM,但是在字节码执行后,所有操作系统产生的输出都是相同的。这就是为什么我们称Java为平台无关的语言。

(3)简单

Java是简单的语言之一,因为它不具有指针,运算符重载,多重继承,显式内存分配等复杂功能。

(4)一种健壮的语言,吸收了C/C++语言的优点。

Java语言健壮,意味着可靠。它以这样的方式开发:尽力尽早检查错误,这就是Java编译器甚至能够检测到其他编程语言不易检测到的那些错误的原因。使Java健壮的Java主要功能是垃圾收集,异常处理和内存分配。

(5)具有较高的安全性。(自动回收垃圾,强制类型检查,取消指针)

在Java中,我们没有指针,因此我们无法访问越界数组,如果尝试这样做,它将显示ArrayIndexOutOfBoundsException。这就是为什么在Java中无法利用堆栈破坏或缓冲区溢出之类的一些安全漏洞的原因。

(6)分布式

我们可以使用Java编程语言创建分布式应用程序。远程方法调用和企业Java Bean用于在Java中创建分布式应用程序。Java程序可以轻松地分布在通过Internet连接相互连接的一个或多个系统上。

(7)多线程

Java支持多线程。它是Java的一项功能,它允许并发执行程序的两个或更多部分,以最大程度地利用CPU。

(8)可移植

众所周知,在一台机器上编写的Java代码可以在另一台机器上运行。Java的平台无关功能,其中可以将其平台无关字节码带到任何平台上执行,从而使Java可移植。

    1. Spring框架技术
      1. Spring框架介绍

Spring 是一款轻量级的 Java 框架,Spring 框架小巧而且灵活,是为了简化 Java 企业开发而诞生的。它使用一个特殊的类 JavaBean 来管理对象,将 Java 开发从繁杂的配置工作中解放出来。现在 Spring 已经是服务端开发不可获取的开发工具。Spring 框架包含了 7 个模块如图 所示:

Spring 框架模块

Spring有两个重要的特性,控制反转和面向切面。

IOC:Inversion of Control,又称控制反转,是面向对象编程思想中的中的一种设计方法,其思想为将对象的管理权交给 IOC 容器,开发者只关注业务逻辑本身的实现即可。在启动 Spring 时,会由 IOC 容器帮助对象找到相对应的依赖对象并注入,而不是由对象主动去找,这一过程称为依赖注入。依赖注入常用的方法由三种, constructor 构造方法注入、属性注入以及接口注入。本文主要使用的是构造方法注入。

AOP:Aspect Oriented Programming,又称面向切面编程。AOP 事实上并非一种编程技术,而是一种编程思想。即将与业务逻辑本身契合度不高但是又必不可少的代码块从项目中“切”出来,需要的时候可以单独对这个切面进行功能修改而不影响到项目主干内容,然后再将该切面引入原工程即可。同时该思想还能减少代码量,使得代码更工整、易懂,可读性更强。

      1. SpringMVC框架介绍

SpringMVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架。MVC 设计模式,M(Model)指数据模型层,V(View)指视图层,C(Controller) 指控制层,每一层分别负责不同的功能。

视图层:是用户与系统交互的主要场所,负责将从控制层调取需要的数据并把它们呈现给用户,主要是一些使用 HTML、Flash 或者 XHTML 技术制作的界面。

控制层:控制层本身并不作出任何处理,主要负责接收视图层传入的请求并决定调用特定的模块去对处理请求,然后再指定视图并将结果发送给浏览器。

数据模型层:该层是整个 MVC 架构中最核心的部分,它主要负责封装数据并对数据进行操作。使用 MVC 结构的目的是为了将不同的业务分配给不同的层,实现业务的解耦。

视图层、控制层和数据模型层的关系如图所示:

SpringMVC 三层架构

      1. SpringBoot框架介绍

SpringBoot 本质上是Spring框架的扩展,在传统的 Spring 开发中,有大量的 XML 配置文件存在于项目中,使得项目变得臃肿,繁琐的配置导致了开发和部署效率的降低,于是 SpringBoot 应运而生。SpringBoot 是 Spring4.0 的升级版,它继承了 Spring 的所有优点,保留了 IOC 以及 AOP 的功能,也同样支持 SpringMVC 的功能;同时消除了设置 Spring 应用程序所需的 XML 配置,简化了配置和部署过程,只需要在pom 文件中添加需要的依赖即可,再加上注解的引入,使得开发过程变得更为高效,便捷。

    1. Vue前端技术
      1. Vue框架

Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

组件化开发即是对某些可以进行复用的功能进行封装的标准化工作。组件一般会内含他的内部UI元素、样式和JS逻辑代码,它可以很方便的在应用的任何地方进行快速的嵌入。组件内部可以使用其他组件来构成更复杂的组件。

组件化特点:

(1)组件是对逻辑的封装,不限于图形元素

即我们可以把if做成组件,按一个倒计时做成组件,把一段动画做成组件,把数据架构做成组件,而这些并不能成为控件,这些组件在不同的系统中可以做完美的嵌入。

(2)高内聚、低耦合

前端的组件化开发,可以很大程度上降低系统各个功能的耦合性,数据相互独立,并且提高了功能内部的聚合性。这对前端工程化及降低代码的维护来说,是有很大的好处的,内部结构密封,不与全局或其他组件产生影响,特别是针对逻辑复杂的功能能够进行拆分,更好排查问题。

(3)具备单个可移植性

组件可以提供很好的提升代码的可重用性(而非可复制性),如果有其他项目需要该组件可以直接引入使用,而不是拷贝代码,拷贝资源等。

(4)极大提高开发效率

组件划分后,组件的开发不受其他业务影响,可以多个组件并行开发,加快开发进度。在多人团队里,每个人只负责自己的业务模块,他对业务功能的增删改查,都只限定在自己的这个业务模块里,不会影响其他人的业务,他代码质量的好坏也只会影响到自己的业务模块;如果有新人的加入,可以直接分配组件进行开发,而非需要熟悉整个项目,可以从一个组件的开发使新进人员比较快速熟悉项目、了解到开发规范;对测试来说,也十分方便,大部分情况下,我们只需要着重测试修改过的业务组件即可,而不用老是进行全部回归测试。

(5)功能重用的基石

业务组件类似一个个积木一样,我们可以用积木搭建出不同的房子,同理我们也可以创建多个不同的APP。我们只需要维护好每个组件,需要用到该组件的功能时,一建引用集成就可以了。

      1. Ant-Design-Vue组件

Ant Design Vue是蚂蚁金服Ant Design官方推荐的Vue 版UI组件库,它其实是 Ant Design 的 Vue实现,组件的风格与 Ant Design 保持同步,组件的html结构和css样式也保持一致。 用下来发现它的确称得上为数不多的完整的 VUE 组件库与开发方案集成项目。Ant Design Vue 是使用Vue实现的遵循 Ant Design 设计规范的高质量UI组件库,用于开发和服务于企业级中后台产品。特性提炼自企业级中后台产品的交互语言和视觉风格。

开箱即用的高质量 Vue 组件。具有如下优势:

(1)共享Ant Design of React设计工具体系。

(2)支持环境现代浏览器和 IE9 及以上。

(3)支持服务端渲染。

众所周知,Ant Design 作为一门设计语言面世,经历过多年的迭代和积累,它对 UI 的设计思想已经成为一套事实标准,受到众多前端开发者及企业的追捧和喜爱,也是React开发者手中的神兵利器。Ant-design-vue 能够让 Vue 开发者也享受到 Ant Design 的优秀设计。

Ant-design-vue 是 Ant Design 的 Vue 实现,组件的风格与 Ant Design 保持同步,组件的 html 结构和 css 样式也保持一致,真正做到了样式 0 修改,组件 API 也尽量保持了一致。

    1. Nginx负载均衡技术

Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。

IMG_256

Nginx负载均衡

      1. Nginx应用场景

场景一:应用于高访问量的业务

如果您的应用访问量很高,您可以通过配置监听规则将流量分发到不同的服务器上。

场景二:横向扩张系统

可以根据业务发展的需要,通过随时添加和移除服务器,来扩展应用系统的服务能力,适用于各种Web服务器和App服务器。

场景三:消除单点故障

当其中一部分服务器发生故障后,负载均衡会自动屏蔽故障的服务器,将请求分发给正常运行的服务器,保证应用系统仍能正常工作。

场景四:同城容灾 (多可用区容灾)

为了提供更加稳定可靠的负载均衡服务,当主可用区出现机房故障或不可用时,负载均衡仍然有能力在非常短的时间内切换到另外一个备可用区恢复服务能力;当主可用区恢复时,负载均衡同样会自动切换到主可用区提供服务,保证服务依然正常运行。

      1. Nginx优势
  1. 解决并发压力,提高应用处理性能(增加吞吐量,加强网络处理能力);
  2. 提供故障转移,实现高可用;
  3. 通过添加或减少服务器数量,提供网站伸缩性(扩展性);
  4. 安全防护:负载均衡设备上做一些过滤,黑白名单等处理。
  5. Nginx支持页面热部署,不用重启服务器,前端升级更无缝。
  6. Nginx很好的匹配了本项目中子系统多、服务器部署量大、并发量大、运行效率要求高等特点,因此选用Nginx承担系统部署中的负载均衡工作。
    1. MySQL数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

  1. 需求分析
    1. 系统功能需求分析
      1. 业务需求分析

商城网站系统是一个涉及众多方面的综合性系统,需要全面深入地分析和了解各个业务模块的需求,才能实现一个符合用户期望的商城网站系统。本文首先对商城网站系统的业务需求进行详细的分析,以便更好地满足用户需求。

1. 商品管理

商品管理是商城网站系统最基本和最主要的功能之一,包括商品信息录入、修改、删除、推荐、分类等等。商品信息的录入可以采用图形化界面或Excel表格录入等形式,方便商城管理员进行批量操作。在商品信息的管理过程中,必须要支持商品图片的上传和浏览,帮助用户更好地了解商品。

2. 订单管理

订单管理是商城网站系统的核心功能之一,需要提供订单的确认、发货、退货、修改等功能。同时,在订单管理过程中,要注意与支付流程的配合,保证订单的款项正确无误。当然,客户也可以查询自己的订单状态并对其进行管理,例如查询历史订单、确认收货、申请退换货等等。

3. 用户管理

用户管理是商城网站系统与用户交互的重要方式,需要支持用户个人信息、订单记录、等级特权、积分纪录等等。用户可以通过注册、登陆、修改个人资料等方式进行用户管理,同时商城管理可以通过用户管理界面进行统计和管理。

4. 数据统计

数据统计是商城网站系统的另一个重要功能,它可以提供企业管理者了解商城运营数据的综合分析和报告。数据统计主要包括关键指标的图表分析、用户行为分析、购买习惯分析等等。通过对数据统计的分析,商城管理员可以更好地了解商城运营情况,制定更好的经营策略。

总之,商城网站系统的业务需求非常多且复杂,本文只列举了关键部分。为了实现一个好用、易用、高性能、安全可靠的商城网站系统,还需要深入研究和了解各个业务领域的需求,以便提供更好的解决方案。

      1. 数据需求分析

数据需求分析是一份系统设计的重要环节,它主要是明确系统应该支持怎样的数据关联操作,主要涉及需求调研、数据收集与整理、数据审视与分类等方面。在本文中将围绕商城网站系统设计与实现来探讨数据需求分析的具体实现。

一、需求调研

首先,我们要对商城网站的业务特点进行调研,明确它主要涉及到哪些数据关联。通过查阅商城网站资料和同类型网站的特点,我们可以列出以下常见数据关联:

1.用户关联:包括用户的注册信息、个人中心信息、购物车信息、订单信息,个人中心信息包括用户的基本信息、收货地址、记录、评论等。

2.商品关联:包括商品信息、分类信息、品牌信息、评价信息等。

3.商家关联:包括商家信息、商品销售情况、统计信息等。

这些数据关联是商城网站的基本需求,所以在系统设计之前,必须要明确它们之间的关系和操作。

二、数据收集与整理

一旦明确了数据关联,我们就可以开始收集和整理数据了。首先,我们需要收集用户信息,包括用户的身份信息、注册信息、地址信息以及各类监控信息(例如:登录信息)等。

其次,我们需要收集商品信息,包括商品名称、库存、价格、颜色、购物车及订单的相关信息。

最后,我们需要收集商家信息,包括商品销售信息、用户信息及网站管理信息等。

在整理数据的过程中,我们需要理清数据之间的关联和操作方式,然后建立数据表以及设计合适的字段和外键等。

三、数据审视与分类

最后,我们需要对数据进行审视和分类。首先是唯一标识符的设计,比如用户ID、商品ID、订单ID等。其次是商城网站中的分类功能,在商品相关数据中,分类功能是必不可少的。最后是对数据的分类,分别将不同类型的数据归类到不同的数据表中,确保数据表之间没有重复的数据。

在商城网站中,因为有大量的交互,所以要在数据处理中学会自然观察并对不合理或冲突的操作进行预判。同时,我们需要考虑系统的数据量和数据安全问题,以便优化数据查询效率并保护用户数据的安全性。

综上所述,数据需求分析在系统设计中极其重要,不光是为了明确数据关联、建立数据表和确定字段、外键等,更是为了确保系统能够正确处理数据并达到业务目标。

    1. 系统非功能性需求分析
      1. 系统处理能力需求

系统需要具备大规模、高并发的处理能力,在云服务部署的情况下,系统处理能力总需求为:

  1. 支持并行同时开展不同类型的数据检索100次/秒,支持并行接收、查看检索结果≥100;
  2. 并发量大于100次/秒时,系统响应时间≤1秒。
      1. 可靠性需求

软件可靠性是指软件产品在规定条件下和规定时间内完成规定功能的能力。 由于功能的持续能力具有概率统计特性, 可靠性也可以定义为产品在规定条件下和规定时间内完成规定功能的概率。为保证数据库检索工作的高效完成,系统软件和数据库需要有较高的可靠性:

1.后台服务系统持续性要求:7*24小时不间断;

2.系统有效工作时间≥99%;

3.系统不间断运行30天,运行效率不会明显降低;

4.系统故障平均间隔时间≥300天。

      1. 可用性需求

软件可用性是对软件系统易学、易用、用户满意等方面的评价。系统用户设计管理人员、技术人员、社会人员等,人员素质参差不齐,需要软件具有较高的可用性:

1.系统人机交互界面友好,便于使用;

2.对于PC端业务处理软件,具有相关专业知识的用户在接收10个工作日以内的培训后,90%的用户能够独立使用。

      1. 维修性需求

软件的维修性是指软件产品在规定的条件下和规定的时间内, 按规定的程序和方法进行维修时,保持或恢复到规定状态的能力。在发生故障时,软件应具备较高的可维修性,保障普查工作顺利进行:

1.软件系统后台服务具备自动故障恢复功能,单个部署节点发生故障时,自动恢复时间<15分钟,手工恢复时间<2小时;

2.软件系统支撑各项功能的在线更新、迭代、升级和扩充,新功能开发测试完成后,更新集成时间≤5个工作日,且升级过程中,用户日常使用不受版本更新和维护的影响。

      1. 环境适配需求

软件系统环境适配包括对于硬件环境的适配和软件环境的适配。考虑到参与本系统的人员有自主可控软硬件环境的情况,软件的环境适应性包括:

1.能够在自主可控的CPU硬件设备中部署和运行,性能能够达到设计要求;

2.支持各种主流数据库,可以在主流数据库中正常运行并保持性能;

3.B/S架构软件具有良好的浏览器兼容性,支持Windows平台以及Linux操作系统下的各类主流浏览器。

  1. 系统设计
    1. 设计原则
      1. 阶段开发原则

系统设计过程中,首先要对系统框架和数据结构全面设计,然后具体功能实现分阶段进行。

      1. 易用性原则

系统设计时需要充分考虑最终用户的特点和操作习惯,最大限度地减轻用户在使用软件时的负担,做到部分业务的自动化处理。

      1. 业务完整性原则

对于业务进行中的特殊情况能够做出及时、正确的响应,保证业务数据的完整性。

      1. 业务规范化原则

在系统设计的同时,也为将来的业务流程制定了较为完善的规范,具有较强的实际操作性。

      1. 可扩展性原则

系统设计要考虑到业务未来发展的需要,要尽可能设计得简明,各个功能模块间的耦合度小,便于系统的扩展,当然如果存在旧有的数据库系统,则需要充分考虑兼容性。

    1. 总体架构

本平台采用了分层设计的思想,将平台所需提供的服务按照功能划分成不同的模块层次,每一模块层次只与上层或下层的模块层次进行交互(通过层次边界的接口),避免跨层的交互,这种设计的好处是:各功能模块的内部是高内聚的,而模块与模块之间是松耦合的。这种架构有利于实现平台的高可靠性,高扩展性以及易维护性。

整个系统按其职能划分为四个模块层次,从下到上依次为:

(1)基础设施层,保障整个平台的基础框架;

(2)数据支撑层,为应用层提供基础数据支撑;

(3)应用服务层,各类应用接口的Restful封装,包括搜索、用户、文件、统计分析、热门推荐、评论、推送等;

(4)数据展示层,为用户提供综合展示和使用。

总体架构如下图所示:

总体架构图

    1. 功能设计

系统分为后台管理部分、PC端部分。其中,后台管理部分包含有用户管理、分类管理、日志管理、统计分析、商品管理、订单管理、系统管理模块;PC端部分包含网站门户展示、类别展示、标签展示、详情页、用户中心。整体功能结构设计如图所示。

功能结构图

    1. 数据库设计
      1. 设计规则

数据库表命名采用多段式命名,各段之间用下划线分隔,如b_xx(一律小写)。其中:第一段表示模块或者主题,如图书模块为b;第二段表示此表的实体类型,如文件表为file。

字段名规则:列名采用多段式命名,各单词间用下划线分隔,如xx_xx(一律小写)。应尽可能地采用简洁明了的列名以准确描述列的内容含义,根据需要可以一个单词或者多个单词进行命名。

      1. 表结构设计

本文分别设计了用户信息表、分类表、标签表、操作日志表、错误日志表、评论表、商品表、订单表。

用户信息表

列名

字段类型

长度

是否为空

是否为主键

默认值

备注

id

bigint

 

NO

Y

 

 

username

varchar

50

YES

 

 

 用户名

password

varchar

50

YES

 

 

 密码

role

varchar

2

YES

 

 

 角色

status

varchar

1

NO

 

 

 

nickname

varchar

20

YES

 

 

 昵称

avatar

varchar

100

YES

 

 

 

mobile

varchar

13

YES

 

 

 

email

varchar

50

YES

 

 

 

gender

varchar

1

YES

 

 

 

description

longtext

4.29E+09

YES

 

 

 

create_time

varchar

30

YES

 

 

 

score

int

 

YES

 

0

 

push_email

varchar

40

YES

 

 

 推送邮箱

push_switch

tinyint

 

YES

 

0

 推送开关

token

varchar

32

YES

 

 

 

注1:用户角色role分为普通用户和管理员。

注2:用户状态, 1-停用,0-正常

分类表

列名

字段类型

长度

是否为空

是否为主键

默认值

备注

id

bigint

 

NO

Y

 

 

title

varchar

100

YES

 

 

 标题

create_time

varchar

30

NO

 

 

 

标签表

列名

字段类型

长度

是否为空

是否为主键

默认值

备注

id

bigint

 

NO

Y

 

 

title

varchar

100

YES

 

 

 

商品信息表

列名

字段类型

长度

是否为空

是否为主键

默认值

备注

id

bigint

 

NO

Y

 

 

title

varchar

100

YES

 

 

 名称

cover

varchar

100

YES

 

 

 封面

description

longtext

4.29E+09

YES

 

 

 描述

price

varchar

50

YES

 

 

 价格

status

varchar

1

NO

 

 

 

repertory

int

 

NO

 

 

 库存

score

int

 

YES

 

0

 分数

create_time

varchar

30

YES

 

 

 

pv

int

 

YES

 

0

 

recommend_count

int

 

YES

 

0

 推荐数

wish_count

int

 

YES

 

0

 

collect_count

int

 

YES

 

0

 

classification_id

bigint

 

YES

 

 

 

订单表

列名

字段类型

长度

是否为空

是否为主键

默认值

备注

id

bigint

 

NO

Y

 

 

status

varchar

2

YES

 

 

 

order_time

varchar

30

YES

 

 

 

pay_time

varchar

30

YES

 

 

 

thing_id

bigint

 

YES

 

 

 

user_id

bigint

 

YES

 

 

 

count

int

 

NO

 

0

 

order_number

varchar

13

YES

 

 

 订单编号

receiver_address

varchar

50

YES

 

 

 

receiver_name

varchar

20

YES

 

 

 

receiver_phone

varchar

20

YES

 

 

 

remark

varchar

30

YES

 

 

 

地址表

列名

字段类型

长度

是否为空

是否为主键

默认值

备注

id

bigint

 

NO

Y

 

 

name

varchar

100

YES

 

 

 姓名

mobile

varchar

30

YES

 

 

 手机号

description

varchar

200

YES

 

 

 地址

def

varchar

10

YES

 

 

 默认

create_time

varchar

30

YES

 

 

 

user_id

bigint

 

YES

 

 

 用户id

评论表

列名

字段类型

长度

是否为空

是否为主键

默认值

备注

id

bigint

 

NO

Y

 

 

content

varchar

200

YES

 

 

 评论内容

comment_time

varchar

30

YES

 

 

 评论时间

like_count

int

 

NO

 

0

 

user_id

bigint

 

YES

 

 

 

thing_id

bigint

 

YES

 

 

 

消息表

列名

字段类型

长度

是否为空

是否为主键

默认值

备注

id

bigint

 

NO

Y

 

 

title

varchar

100

YES

 

 

 

content

varchar

1000

YES

 

 

 

create_time

varchar

30

YES

 

 

 

日志表

列名

字段类型

长度

是否为空

是否为主键

默认值

备注

id

bigint

 

NO

Y

 

 

re_ip

varchar

100

YES

 

 

 

re_time

varchar

30

YES

 

 

 

re_ua

varchar

255

YES

 

 

 

re_url

varchar

200

YES

 

 

 

re_method

varchar

10

YES

 

 

 

re_content

varchar

200

YES

 

 

 

access_time

varchar

30

YES

 

 

 

  1. 系统实现

在结束了上一章系统设计部分之后,本章将对系统中核心功能模块的实现作出介绍,界面给出系统最终实现的功能效果图以及部分关键代码。本章将系统分为前台功能模块功能和后台管理模块两部分分别进行展示。

    1. 前台功能模块实现
      1. 注册登录模块

本系统的后端开发框架采用的是 SpringBoot,所以使用 SpringBoot 来新建一个Maven 项目,应用 SpringMVC 的分层设计思想进行开发。用户需要通过注册和登录后的操作后,方能进入商城系统,首先用户在注册页面填入自己的基本信息,包括用户名和密码等等。用户注册界面如下图所示:

用户注册成功之后,可以通过登录界面输入用户名和密码进行登录,便可进入到商城平台首页。登录界面如下图所示。用户进入登录界面输入账号和密码后,登录的 url 的请求发给处理器后,对用户输入的用户名和密码进行非空校验,判断账号和密码是否已经填写,并从数据库中询是否有匹配的记录,如果查询成功则登录成功,如果未查询到则提示“用户名或密码错误”,系统将返回到登陆界面继续操作。

@RequestMapping(value = "/userLogin", method = RequestMethod.POST)
public APIResponse userLogin(User user){
    user.setPassword(DigestUtils.md5DigestAsHex((user.getPassword() + salt).getBytes()));
    User responseUser =  userService.getNormalUser(user);
    if(responseUser != null) {
        return new APIResponse(ResponeCode.SUCCESS, "查询成功", responseUser);
    }else {
        return new APIResponse(ResponeCode.FAIL, "用户名或密码错误");
    }
}


登录和注册部分代码如下所示:

      1. 首页模块

用户进入到首页后,即可看到商品信息的列表,整个首页的布局分为三部分,顶部是搜索栏,左侧是分类和标签栏,右侧是列表栏。默认情况下,右侧列表栏会展示全部商品,当用户点击左侧分类栏的某一项时,右侧列表将会筛选出对应的商品。当用户点击左侧某标签时,右侧列表将会筛选出当前标签的所有商品。右侧列表栏顶部还有最新、最热、推荐的tab栏,当点击最新的时候,当前列表将按照时间倒序展示列表,当点击最热的时候,当前列表将按照pv数倒序展示列表,点击推荐的时候,列表将请求推荐接口,按照后端推荐逻辑获取列表。如果用户有搜索的需求,可以在顶部搜索栏输入关键词进行搜索。

首页模块界面如下:

@RequestMapping(value = "/list", method = RequestMethod.GET)
public APIResponse list(String keyword, String sort, String c, String tag){
    List<Thing> list =  service.getThingList(keyword, sort, c, tag);

    return new APIResponse(ResponeCode.SUCCESS, "查询成功", list);
}


首页列表展示的关键代码如下:

      1. 详情页模块

用户点击首页列表某个商品时,系统将会跳转到对应商品的详情页,详情页展示的是商品的所有基本信息,包括名称、价格、上架状态、库存、封面、简介、收藏数、推荐列表等信息。用户通过点击立即购买按钮,可以购买当前商品,然后进入到确认页。页面右侧是交互栏,包括心愿单、收藏、分享等功能。页面下面是简介和评论tab页面,用户可以通过点击简介和评论标签来实现切换。如果用户想要评论当前商品时,可以输入关键词,然后点击发送按钮,系统会调用发送评论的接口,将评论内容发送到后端,发送成功后,系统会给出发送成功的提示。除此之外,页面右侧还有热门推荐列表,该列表运用了后端推荐接口将数据获取到前端展示。

详情页模块界面如下:

详情页关键代码如下:

@RequestMapping(value = "/detail", method = RequestMethod.GET)
public APIResponse detail(String id){
    Thing thing =  service.getThingById(id);

    return new APIResponse(ResponeCode.SUCCESS, "查询成功", thing);
}

      1. 搜索模块

搜索模块实现了搜索功能,在页面顶端的搜索栏,用户输入关键词后,系统会自动跳转到搜索结果页面,在搜索结果页面,系统会调用后端search接口,将关键词内容传给后端,后端通过查询数据库,将列表信息返回给前端,前端页面拿到数据后,在将数据渲染到搜索结果页面。界面如下所示:

搜索接口关键代码如下:

@RequestMapping(value = "/list", method = RequestMethod.GET)
public APIResponse list(String keyword, String sort, String c, String tag){
    List<Thing> list =  service.getThingList(keyword, sort, c, tag);

    return new APIResponse(ResponeCode.SUCCESS, "查询成功", list);
}

      1. 用户中心模块

   点击顶部用户头像后,系统会跳转到用户中心模块。用户中心模块,集成实现了和用户相关的所有信息的展示,包括订单中心、地址管理、收藏、心愿单、个人资料等信息展示。其中,收藏和心愿单实现了收藏列表和心愿单列表的展示,我的订单实现了我的所有订单的展示,包括订单状态、订单物流信息、支付状态的显示。我的评论模块实现了用户对于所有商品的评论列表。地址管理模块实现了当前用户的所有地址列表。编辑资料模块实现了用户基本信息显示,包括头像、昵称、手机号、邮箱、个人简介等。账号安全模块实现了用户密码的修改功能。消息管理模块实现了后台推送消息的显示。整个界面预览如下:

其中订单列表关键代码如下:

@RequestMapping(value = "/userOrderList", method = RequestMethod.GET)
public APIResponse userOrderList(String userId, String status){
    List<Order> list =  service.getUserOrderList(userId, status);
    return new APIResponse(ResponeCode.SUCCESS, "查询成功", list);
}

编辑资料接口关键代码如下:

@Access(level = AccessLevel.ADMIN)
@RequestMapping(value = "/update", method = RequestMethod.POST)
@Transactional
public APIResponse update(User user) throws IOException {
    // update不能修改密码,故置空
    user.setPassword(null);
    String avatar = saveAvatar(user);
    if(!StringUtils.isEmpty(avatar)) {
        user.avatar = avatar;
    }
    userService.updateUser(user);
    System.out.println(user);
    return new APIResponse(ResponeCode.SUCCESS, "更新成功");
}

    1. 后台管理模块实现

当使用管理员账号登录后台管理系统之后,即可进入后台管理主页。管理员在后台有对各个模块的功能的详细管理信息、并拥有对数据的管理的权限,可以对数据进行输入、现有数据进行修改和输出、添加新数据、管理权限等等。

      1. 用户管理

在用户信息管理模块,管理员能够修改用户信息,并根据用户身份的不同,给予当前用户相应的角色权限,并且修改状态、邮箱、手机号等信息。如果想新增用户,可以通过点击新增按钮进行新增,如果要删除用户,点击列表右侧的删除按钮进行删除,如果想查询用户,需输入用户名关键词进行搜索。

界面如下所示:

      1. 分类管理

点击左侧的分类管理,右侧将展示当前系统的所有分类信息,如果管理员想对当前分类进行编辑,可以点击编辑按钮进行编辑,如果管理员想对当前分类进行删除,可以点击删除按钮就行删除。界面如下所示:

      1. 标签管理

点击左侧的标签管理,右侧将展示当前系统的所有标签信息,如果管理员想对当前标签进行编辑,可以点击编辑按钮进行编辑,如果管理员想对当前标签进行删除,可以点击删除按钮就行删除。界面如下所示:

      1. 商品管理

在商品信息管理模块,管理员能够修改商品信息,包括修改商品状态、商品名称、价格、库存、封面、分类、标签等信息。如果想新增商品,可以通过点击新增按钮进行新增,如果要删除商品,点击列表右侧的删除按钮进行删除,如果想查询商品,需输入商品关键词进行搜索。界面如下所示:

      1. 订单管理

在订单信息管理模块,管理员能够修改订单状态,如果想取消订单,可以通过点击取消按钮进行取消,如果要删除订单,点击列表右侧的删除按钮进行删除。界面如下所示:

      1. 日志管理

在日志信息管理模块,包括三部分:登录日志、操作日志、异常日志。管理员通过点击这三项,在右侧列表栏将会显示对应的日志列表,日志基本信息有请求方式、ip地址、操作时间等信息。界面如下所示:

      1. 运营管理

在运营管理模块,包括两部分:广告管理和通知管理。其中广告管理实现了网站广告设置功能,通知管理实现了整个系统的通知的显示与删除。界面如下所示:

      1. 系统信息

在系统信息模块,页面通过请求后端系统信息接口,后端通过系统工具类来实现系统名称、版本信息、操作系统、系统平台、CPU核数        、处理器、CPU负载、系统内存、内存使用、内存利用率、系统语言、系统时区等信息,并返回给页面进行渲染显示。界面如下所示:

      1. 总览模块

在总览模块,系统实现了系统数据的统计分析功能,分别统计了商品数、订单数、网站访问量、热门商品排名、热门分类排名等数据。界面如下所示:

  1. 系统测试

系统测试是关注系统的外部特性。它的主要对象是进行系统测试的测试工程师。该系统所包含的测试用例范围包括随机抽查信息平台的所有功能测试用例、环境测试用例、性能测试用例以及UI测试用例等。

    1. 测试策略

(1)集成测试

按照模块上下集关系,进行从上到下或者从下到上的集成测试方法进行集成测试,单元测试与集成测试主要考虑功能性测试。同时也对各个模块或者集成模块进行非功能性的抽样测试。

(2)系统测试

对整合系统进行整合测试,主要测试系统的整体功能和全部非功能性的需求。

(3)验收测试

验收测试首先进行正规性的测试,由技术人员模拟各用户环境,以用户的身份进行应用测试工作。然后进行非正规测试alpha测试和bate测试。

Alpha测试

由开发人员模拟用户进行测试,允许对需求做修改工作。

Bate测试

alpha测试后将产品提交给特定用户进行测试,冻结系统需求。

(4)功能测试

功能测试是保障测试软件各个功能模块正确、逻辑正确。对测试对象的功能测试应侧重于所有可直接追踪到用例或业务功能和业务规则的测试需求。测试的目标是核实数据的接受、处理和检索是否正确,以及业务规则的实施是否恰当。功能测试的主要参考为类似于功能说明书之类的文档。

(5)UI测试

UI测试指测试用户界面的风格是否满足客户要求,文字是否正确,页面美工是否好看,文字、图片组合是否完美,背景是否美观,操作是否友好等。

用户界面 (UI) 测试用于核实用户与软件之间的交互。UI测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能。另外,UI测试还可确保UI中的对象按照预期的方式运行,并符合行业的标准。包括用户友好性,人性化,易操作性测试。

(6)性能测试

性能测试主要测试软件的性能,包括负载测试,强度测试,容量测试等。

(7)安全性测试

安全性主要体现在以下两个方面:

应用程序级别的安全性,包括对数据或业务功能的访问。

系统级别的安全性,包括对系统的登录或远程访问。

应用程序级别的安全性,可确保在预期的安全性情况下,用户只能访问特定的功能或用例,或者只能访问有限的数据。

系统级别的安全性

可确保只有具备系统访问权限的用户才能访问应用程序,而且只能通过相应的网关来访问。比如输入管理员账户,检查其密码是否容易猜取,或者可以从数据库中获得。

(8)故障转移和恢复测试

故障转移和恢复测试指当主机软硬件发生灾难时候,备份机器是否能够正常启动,使系统是否可以正常运行。

故障转移和恢复测试可确保测试对象能成功完成故障转移,并能从导致意外数据损失或数据完整性破坏的各种硬件、软件或网络故障中恢复。如突然主机程序发生死机,备份机器是否能够启动,确保系统能够正常运行,从而不影响用户使用。

(9)安装测试

安装测试的目的就是确保该软件在运行环境下进行安装、升级等都能顺利进行。

(10)测试管理

软件测试的主要目的在于发现软件存在的错误(bug),对于如何处理测试中发现的错误,将直接影响到测试的效果。在实际测试过程中,对于每个错误,都需要进行测试、确认、修复、验证等管理过程:

(1)错误跟踪管理

为了正确跟踪每个功能项错误的处理过程,将软件测试中发现的每个错误作为一条条记录输入错误跟踪管理系统。正确设计每个错误的包含信息的字段内容和记录错误的处理信息的全部内容。字段内容应该包括测试软件名称、测试版本号、测试人名称、测试事件、测试软件和硬件配置环境、发现软件错误的类型、错误的严重等级、详细步骤、必要的附图、测试注释等。处理信息包括处理者姓名、处理时间、处理步骤、错误记录的当前状态。正确的数据库权限管理是错误跟踪管理系统的重要考虑要素,一般要保证对于添加的错误不能从数据库中删除。

(2)软件错误的状态

新信息(New):测试中新报告的软件缺陷;

打开 (Open):被确认并分配给相关开发人员处理;

修正(Fixed):开发人员已完成修正,等待测试人员验证;

拒绝(Declined):拒绝修改缺陷;

延期(Deferred): 不在当前版本修复的错误,下一版修复;

关闭(Closed):错误已被修复;

未处理(Reopen):错误未处理;

(3)Bug管理的一般流程

测试人员提交新的Bug入库,错误状态为New。高级测试人员验证错误,如果确认是错误,分配给相应的开发人员,设置状态为Open。如果不是错误,则拒绝,设置为Declined状态。开发人员查询状态为Open的Bug,如果不是错误,则置状态为Declined;如果是Bug则修复并置状态为Fixed。不能解决的Bug,要留下文字说明及保持Bug为Open状态。对于不能解决和延期解决的Bug,不能由开发人员自己决定,一般要通过某种会议(评审会)通过才能认可。测试人员查询状态为Fixed的Bug,然后验证Bug是否已解决,如解决置Bug的状态为Closed,如没有解决置状态为Reopen。

(4)软件错误流程管理要点

为了保证错误的正确性,安排有丰富测试经验的测试人员验证发现的错误是否是真正的错误,书写的测试步骤是否准确,可以重复。每次对错误的处理都要保留处理信息,包括处理姓名、时间、处理方法、处理意见、Bug状态。拒绝或延期错误不能由程序员单方面决定,应该由项目经理,测试经理和设计经理共同决定。错误修复后必须由报告错误的测试人员验证后,确认已经修复,才能关闭错误。加强测试人员与程序员的交流,对于某些不能重复的错误,可以请测试人员补充详细的测试步骤和方法,以及必要的测试用例。

    1. 测试环境

为了保证软件版本的控制,本文建立三个环境,分别是:开发环境,测试环境以及运行环境。

开发环境

测试环境

运行环境

开发环境: 软件产品开发工作所用的环境。

测试环境:软件测试工作所用的环境。

运行环境:软件运行的环境。

软件在各个环境中的迁移:

当软件经过开发完毕,将软件产品移植到测试环境进行测试,这样测试和开发工作可以相互独立,互不影响。

当软件测试完成发现错误,开发人员在开发环境中修改错误,修改好后,打成数据包,传输到测试环境进行回归测试。

当软件决定运行时,将软件从测试环境移植到运行环境,供用户使用。

    1. 测试用例及结果

      1. 后台功能测试用例

模块名称

测试内容

并发数

状态

平均耗时(秒)

登录首页

1)管理员登录到后台首页

100

正常

0.218

2)前端并发刷新后台首页

用户管理列表

1)查看用户列表

100

正常

0.582

2)新增一个用户

3)删除一个用户

4)查询用户关键词

日志管理

1)刷新操作日志列表

100

正常

0.877

2)刷新错误日志列表

3)刷新登录日志列表

分类管理

1)新增一个分类

100

正常

0.697

2)刷新分类列表

3)删除一个分类

4)更新一个分类

标签管理

1)新增一个标签

100

正常

0.233

2)刷新标签列表

3)删除一个标签

4)更新一个标签

评论管理

1)刷新评论列表

100

正常

0.605

2)删除一条评论

总览

1)刷新总览页面

100

正常

0.572

订单管理

1)刷新订单列表

100

正常

0.339

      1. 前台功能测试用例

模块名称

测试内容

并发数

状态

平均耗时(秒)

登录

1)用户登录到前台首页

100

正常

0.594

2)并发刷新前台首页

注册

1)填写信息注册账号

100

正常

0.382

搜索

1)顶部输入内容并Enter

100

正常

0.227

2)顶部留空并Enter

3)刷新搜索页面

首页

1)刷新首页

100

正常

0.677

2)点击一个分类查看结果

3)点击一个标签查看结果

4)点击一个单项跳转详情

详情页

1)多次刷新详情页

100

正常

0.653

2)点击收藏

3)点击添加心愿单

4)点击评论按钮并刷新

5)发送一条评论

6)评论点击最新或最热

7)点击喜欢一条评论按钮

订单确认页

1)点击确认按钮

100

正常

0.601

2)返回上一页

用户中心

1)刷新订单信息

100

正常

0.587

2)刷新地址管理信息

3)刷新我的收藏界面

4)刷新我的心愿单界面

5)刷新资料界面

6)刷新安全界面

7)刷新推送设置界面

8)刷新消息界面

通知中心

1)点击通知中心icon

100

正常

0.217

    1. 测试总结

从后台并发性能测试用例结果看,该系统可以支持到100并发需求,按在线用户和执行事务比例10:1算,可满足1000人在线需求。后台管理功能的性能亦达到非功能性需求所定义的指标。从事务高并发时服务器资源占用的情况来看,资源瓶颈大部分在应用服务器的CPU时间及数据库服务器的磁盘IO。说明在同等数据量及服务器配置的情况下,提高应用服务器的CPU配置,提高数据库服务器的磁盘IO能力,能够进一步提升系统性能。

  1. 总结与展望

本文使用 SpringBoot 框架设计了基于分层架构的商城项目,完成了数据库和模型的设计,并且实现了注册、登陆、创建商品、评论、购买下单和收藏点赞等基础功能和后台管理功能。在系统中也着重阐述了使用 SpringBoot作为开发框架的原因,相比于 Spring 和J2EE 繁琐复杂的配置,SpringBoot更加轻量化更加方便,同时又比较稳定,极大地减少了开发人员的工作量,并且减少了开发周期。然后通过测试用例对不同的场景和数据进行了测试,通过测试发现该系统具有较高的性能,满足了社会对于网上购物的需要。

本文对于商城系统的应用研究提供了一套行之有效的解决方案,但是随着研究的深入,了解到还有许多研究方向与优化方案在本文中没有涉及到,包括:

(1)用户界面的优化。本文对于前端界面的设计较为简单,用户界面还不够美观,未来可以尝试使用更多 CSS 样式对网页进行美化,优化用户体验

(2)使用 phantosjs 全页面静态化技术,在服务端完成 html,css 的加载工作, 渲染成纯静态html文件,然后将这些文件直接以静态资源的方式部署到内容分发网络CDN上。这样的做法可以极大程度上提升响应系统速度,也更利于网站的稳定性与安全性。

(3)引入智能算法推荐技术。系统目前还不具有数据挖掘等算法的部分,在后续的开发中笔者会努力学习这部分知识,完善该系统,对电商数据进行有效的利用。

参考文献

[1]何为,迟文恒. Java服务端研发知识图谱[M].机械工业出版社:信息科学与技术丛书, 201812.430.

[2]杨开振. 深入浅出Spring Boot 2.x[M].人民邮电出版社:, 201808.442.

[3]古凌岚,张婵,罗佳. Java系统化项目开发教程[M].人民邮电出版社:, 201802.313.

[4]肖睿,喻晓路,朱微,张超,戴立坤. Java Web应用设计及实战[M].人民邮电出版社:大数据开发实战系列, 201801.238.

[5]李宗花,朱林. 软件工程原理与实践[M].南京大学出版社:, 202008.252.

[6]陆惠恩,褚秋砚. 软件工程[M].人民邮电出版社:, 201712.284.

[7]肖睿,郭泰,王丁磊. SSH框架企业级应用实战[M].人民邮电出版社:大数据开发实战系列, 201801.344.

[8]付森,石亮,吴起立,刘冰. MySQL开发与实践[M].人民邮电出版社:, 201408.261.

[9]陈陆扬. Vue.js前端开发快速入门与专业应用[M].人民邮电出版社:, 201702.207.

[10]陈晓兵. Web前端开发技术[M].南京大学出版社:, 202008.252.

[11]杨洋,刘全. 软件系统分析与体系结构设计[M].南京东南大学出版社:, 201710.207.

[12]王昊,刘友华. 信息系统分析与设计[M].南京大学出版社:, 202109.323.

[13]张永奎. 数据库原理与设计[M].人民邮电出版社:, 201909.260.

[14]佟伟光,郭霏霏. 软件测试[M].人民邮电出版社:, 201501.281.

[15]郑钢,贺亚涛,尤胜涛. 大型网站服务器容量规划[M].人民邮电出版社:201608.204.

[16]姚庆涛.浅析计算机网络应用安全[J].网络安全技术与应用,2023(05):169-171.

[17]熊威.Java编程基础课程类和对象的教学设计[J/OL].中国教育技术装备:1-4

[18]齐研科,杨颖,贺喜,蔡雨耕,赵家骏,王一先. 软件开发系统及方法[P]. 重庆市:2023-05-02.

[19]朱若榕.人机交互软件界面设计的重要性[J].文化产业,2023(12):153-155.

[20]刘德山,金百东. Java设计模式深入研究[M].人民邮电出版社:, 201407.222.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringIOC之ConditionEvaluator

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

如何使用cpolar+Inis在Ubuntu系统快速搭建本地博客网站公网可访问

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总…

安装Nacos2.2.3集群

目录 一、传统方式安装 二、Docker安装 一、传统方式安装 1、配置jdk环境 vi /etc/profile JAVA_HOME/usr/local/java JRE_HOME/usr/local/java/jre CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH$JAVA_HOME/bin:$PATH export PATH JAVA_…

统筹高级前端,系统进阶精选案例实战,高效奠定前端基石

在当今的软件开发中&#xff0c;前端技术的重要性日益突出。为了应对不断变化的市场需求和用户期望&#xff0c;前端开发人员需要不断进阶&#xff0c;并掌握高级技术和系统化的实战经验。本文将介绍一些高级前端开发的精选案例&#xff0c;帮助开发者高效地奠定前端基石&#…

WRF--修改geo_em.d01.nc中的变量,保持其他信息不变

WRF–修改geo_em.d01.nc中的变量&#xff0c;保持其他信息不变 首先呢&#xff0c;找到编译WRF过程中自带的读取nc的一个fortran函数&#xff1a;read_wrf_nc.f90 可以使用Linux命令&#xff1a; find / -name read_wrf_nc.f90 找到之后&#xff0c;修改这个文件&#xff0c…

ke14--10章-1数据库JDBC介绍

注册数据库(两种方式),获取连接,通过Connection对象获取Statement对象,使用Statement执行SQL语句。操作ResultSet结果集 ,回收数据库资源. 需要语句: 1Class.forName("DriverName");2Connection conn DriverManager.getConnection(String url, String user, String…

通过异步序列化提高图表性能 Diagramming for WPF

通过异步序列化提高图表性能 2023 年 12 月 6 日 MindFusion.Diagramming for WPF 4.0.0 添加了异步加载和保存文件的功能&#xff0c;从而提高了响应能力。 MindFusion.Diagramming for WPF 提供了一个全面的工具集&#xff0c;用于创建各种图表&#xff0c;包括组织结构图、图…

华为数通---配置本地端口镜像示例(1:1)

镜像概念 定义 镜像是指将指定源的报文复制一份到目的端口。指定源被称为镜像源&#xff0c;目的端口被称为观察端口&#xff0c;复制的报文被称为镜像报文。 镜像可以在不影响设备对原始报文正常处理的情况下&#xff0c;将其复制一份&#xff0c;并通过观察端口发送给监控…

IntelliJ IDEA无公网远程连接Windows本地Mysql数据库提高开发效率

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…

每日一练【查找总价格为目标值的两个商品】

一、题目描述 题目链接 购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况&#xff0c;返回任一结果即可。 示例 1&#xff1a; 输入&#xff1a;price [3, 9, 12, 15], target 18 输出&#xff1a;[3,15] …

Pytorch深度强化学习1-6:详解时序差分强化学习(SARSA、Q-Learning算法)

目录 0 专栏介绍1 时序差分强化学习2 策略评估原理3 策略改进原理3.1 SARSA算法3.2 Q-Learning算法 0 专栏介绍 本专栏重点介绍强化学习技术的数学原理&#xff0c;并且采用Pytorch框架对常见的强化学习算法、案例进行实现&#xff0c;帮助读者理解并快速上手开发。同时&#…

摄像机镜头,家庭监控云台等安防监控系统镜头选型分析,低噪声,低振动,多通道

安防镜头步进驱动选用型号 GC6107 C6109 GC6209 GC6119 GC6129 GC6139 GC6208 GC6150 GC6151 GC6152 GC6125 GC6236采用5V的镜头驱动 。其中GC6107 C6109 GC6209 GC6119 GC6129 GC6139 GC6208关键特性两通道&#xff0c;256细分&#xff0c;低噪&#xff0c;内部和外部时钟…

【算法系列篇】递归、搜索和回溯(二)

文章目录 前言1. 两两交换链表中的节点1.1 题目要求1.2 做题思路1.3 代码实现 2. Pow(X,N)2.1 题目要求2.2 做题思路2.3 代码实现 3. 计算布尔二叉树的值3.1 题目要求3.2 做题思路3.3 代码实现 4. 求根节点到叶结点数字之和4.1 题目要求4.2 做题思路4.3 代码实现 前言 前面为大…

解锁数据安全秘诀:医药企业选择上海迅软DSE,防范泄密威胁!

随着数字化和信息化程度的提高&#xff0c;医药企业存储了大量的患者医疗记录、药品研发数据、临床试验数据以及财务信息。但由于医药行业的特殊性和敏感性&#xff0c;其数据的变现价值非常高&#xff0c;在各种利益的非法驱动下&#xff0c;医药行业早已成为数据泄露的重灾区…

想知道修改图片dpi会影响清晰度吗?点击这里找答案

很多人都对图片dpi分辨率有不少疑问&#xff0c;比如dpi对图片清晰的影响&#xff0c;还有哪些地方需要修改图片dpi&#xff1f;其实dpi是指每英寸墨点的数量。对同一张图像来说,一般使用300dpi比使用72dpi打印出来的效果要清晰很多 &#xff0c;一般只有在打印照片或者上传证件…

Windows系统Java开发环境安装

总结一下Java软件开发工程师常见的环境的安装&#xff0c;仅限Windows环境。 以下下载链接均来自官网&#xff0c;网络条件自己克服。 目录 1. JDKJDK Oracle 官网下载地址配置系统环境变量 2. Mavenapache maven 官网地址本地仓库和中央仓库配置配置系统环境变量 3. GitGit 官…

java学习part42反射

187-反射机制-反射的理解与使用举例_哔哩哔哩_bilibili

Python实现获取b站视频的弹幕内容

前言 本文是该专栏的第39篇,后面会持续分享python的各种干货知识,值得关注。 在本专栏之前,有详细介绍使用python增加b站视频的播放量方法,感兴趣的同学可往前翻阅《Python-增加b站视频播放量》。而本文,笔者再来单独的详细介绍,通过python来获取b站视频的弹幕内容。如下…

应用程序清理和卸载缓存清理软件:App Cleaner Uninstaller Pro Mac中文

App Cleaner & Uninstaller Pro是一款专为Mac电脑设计的应用程序清理和卸载工具。它帮助用户彻底删除不需要的应用程序、插件和残留文件&#xff0c;从而有效释放磁盘空间并提高系统性能。其强大的搜索功能和批量卸载特性使得管理应用程序变得轻而易举。同时&#xff0c;用…

PETS渗透测试标准流程

PTES组织 PETS渗透测试标准流程原文 http://www.pentest-standard.org/index.php/Main_Page学习一下渗透测试国际规范流程 英文不好的师傅可以使用浏览器插件沙拉查词或者整页翻译。 浏览器扩展中添加划词翻译 非常好用