springboot调料品网上商城系统 

摘  要

从上世纪末到目前,计算机科学技术已经被尝试应用在各个职业各个领域,在商业贸易上,使用比重较高。计算机科学技术包括软件技术、网络技术、硬件技术等,越来越多的商家使用计算机来进行营业,出售、收购、宣传各类商品,各类商业系统、软件解放了商家的双手,使商家把利益最大化,因此计算机技术在商业领域中占非常重要的地位。电子商务交易是卖家卖出东西,买家得到东西的过程,同时推广推销产品,为顾客提供购买服务。卖家不需要开店费用,节省了很多费用,从而将精力人力投入在销售质量和服务上。

调料品网上商城系统采用Java编程语言,结合前段界面和MVC技术,在Myeclipse编辑器和Mysql数据库上设计并实现的。目的在于呈现一个完整的交易系统,供各种用户使用,系统着重实现了商品发布、出售、交易的功能。

关键词:基于B/S模式;网络销售;订单处理

Spring boot condiment online shopping mall system

Abstract

From the end of the last century to the present, computer science and technology have been tried to be applied in various professions and fields, with a high proportion in commercial trade. Computer science and technology include software technology, network technology, hardware technology, etc. More and more businesses use computers to carry out business, sell, purchase, and publicize various commodities. All kinds of business systems and software have liberated the hands of businesses, enabling businesses to maximize their interests, because computer technology plays a very important role in the business field. E-commerce transaction is a process in which sellers sell things and buyers get things. At the same time, it promotes and sells products and provides customers with purchasing services. The seller does not need to open the store, which saves a lot of money, so they put their energy and manpower into the sales quality and service.

The condiment online shopping mall system is designed and implemented on the Myeclipse editor and MySQL database using Java programming language, combined with the previous interface and MVC technology. The purpose is to present a complete trading system for various users. The system focuses on the functions of commodity release, sale and trading.

Key words: based on B/S mode; Network sales; Order processing

目   录

第1章 绪论

1.1课题背景

1.2目的和意义

1.3本文结构

第2章 工具及技术介绍

2.1开发技术说明

2.2开发技术简介

2.3 MVVM模式介绍

第3章 系统分析

3.1业务流程分析

3.2可行性分析

3.2.1经济可行性

3.2.2技术可行性

3.2.3操作可行性

3.3需求分析

3.4数据流程分析

第4章 系统设计

4.1结构设计

4.2数据库设计

4.2.1数据库物理设计

4.2.2数据库概念设计

4.2.3数据库逻辑设计

第5章 系统实现

5.1首页设计与实现

5.2前台功能设计与实现

5.2.1用户模块设计与实现

5.2.2商品展示模块设计与实现

5.2.3购买模块的设计与实现

5.3后台功能设计与实现

5.3.1用户管理设计与实现

5.3.2订单管理设计与实现

5.3.3商品管理设计与实现

第6章 系统测试

6.1测试方法

6.2测试目的

6.3测试用例

6.3.1注册测试

6.3.2购物车测试

6.3.3商品管理测试

结论

致谢

参考文献

 绪论

1.1课题背景

随着国内产业环境和消费市场的成熟,商品销售尤其是以商品为代表的网络销售将在今年实现更大发展。

根据预测,2020年我国商品销售交易将同比增长135.1%,交易总量将达1263亿,形成了中国商品销售的快速增长浪潮。其中,消费人群成为推动此浪潮的一大主力。究其原因,除了该人群对网络销售等新兴的商业模式接受程度较高之外,相比其他细分行业,商品销售有着更加完备的产业链条和发展后劲,为其高速增长提供了保障。

网络新型的消费方式给人们生活带来了巨大的改变,更重要的是大大改变了传统的消费行为习惯,无论是否想在网上购买东西,上网查询各种商品的相关信息,已经成为人们生活不可缺少的一部分。

1.2目的和意义

随着Internet网络的普及、电子商务的迅猛发展以及人们生活和消费观念的改变,网络购买商品以其内容丰富、方便、快捷、低成本等优势越来越被广泛使用。 对于一个商务型企业来说,电子商务系统是其生存的理由和基础,同时也是企业对外展示信息、从事商务活动的窗口和界面。

本题目拟实现整个购买模块,实现游客浏览商品,查看商品信息的功能,实现登录用户的购买功能,完成继续购买、结账和清空清单等功能。

1.3本文结构

本文的内容包括开发本系统的目的和意义、开发所用的到技术和和方法、系统的需求分析、系统的总体分析、系统的数据库设计、系统的实现过程、系统的编码设计、系统测试等。本文重点描述了系统的组成结构和功能结构,描述了一个系统从无到有的过程,实现了系统的所有功能。最后通过系统测试验证系统的可靠性和可用性。

 工具及技术介绍

2.1开发技术说明

本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的springboot框架进行开发。

前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。

后端部分:采用springboot作为开发框架,同时集成MyBatis、Redis等相关技术。

2.2开发技术简介

面向对象的出现以及软件工程不断规范化,原本的双层架构已经不能满足开发者的效率上需求,因为在代码上的封装、移植、扩展、复用等操作使得双层架构难以招架,因此才有三层架构的出现,问题迎刃而解。什么叫三层架构呢?指的是表示层、组件层、数据访问层。组件层是双层架构没有的,它的加入,把复杂的问题分解得更简单、明了,通过组件层,实现控制数据访问层,这样达到功能模块易于管理、易于访问等目的,例如在一个系统的登录功能上,开发者可以分为登录界面模块,登录控制器模块、登录数据访问查询模块等三个模块,登录界面指的是表示层,登录控制器就是组件层,它将开发者的逻辑思想实现出来,然后调用数据访问层,登录数据访问查询模块就是数据访问层。

表示层又叫UI层,指的是用户和软件的交换界面,是可视化的,例如安卓app的xml布局文件和网页的html文件等。在基于B/S模式中,有两个方面的优势。一,使用浏览器作为客户端的操作界面,它的优点是用户界面统一,用户操作便利。二,对于软件开发人员来说,可以将开发的重点放在后台事务的处理方面,前台的细节可以忽略,这样可以大大的提高了系统开发的效率。另外,系统必须拥有良好的界面,一方面考虑到系统用户的操作便利,另一方面考虑到系统的动态性。一般系统的主要界面包括以下几个组成部分:系统登陆界面、系统主界面、各个主要功能模块的界面等。

业务逻辑层(Business Logic Layer)主要负责数据传递的功能。一方面,业务逻辑层响应用户表示层的请求后,从数据访问层中获取所需要的数据,接着在表示层中显示出来。另一方面,业务逻辑层可以接受表示层提交的数据进行业务逻辑的处理,然后提交给数据访问层,实现数据的增删改等数据操作,实际上,业务逻辑层起到连接表示层和数据访问层的作用。

数据访问层(Data access layer)是系统的最基本的层次,用来与数据库进行数据交换,包括数据的增删改查等操作,显然如果没有数据访问层,软件将只是个空壳,可以说数据访问层是软件的灵魂,当今软件的开发过层中,数据访问层基本都可以自动生成数据操作的逻辑代码,节省了开发人员的开发时间。

B/S模式也就是浏览器/服务器模式,它的界面部分是在浏览器端展示,而主要工作是由服务器端进行实现的,用户的请求由浏览器端提交给服务器端进行处理,而服务器将处理结果反馈给浏览器端,在浏览器端界面描画给用户查看。采用B/S模式不仅可以避免用户必须安装专业软件才能开发系统或者访问系统的局限性,而且更加便利。

2.3 MVVM模式介绍

MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。

系统分析

3.1业务流程分析

系统业务流程分析:

根据系统的功能需求,再分析该系统的业务流程,用户登录系统购买商品,先将商品加入至购物车,然后对购物车做调整,接着生成订单,订单生成后,在线支付金额,管理员管理商品,管理用户的订单。

系统前台业务流图如下图所示。

图3-1系统前台业务流图

系统后台业务流图如下图所示。

图3-1系统后台业务流图

3.2可行性分析

3.2.1经济可行性

本系统最直接的目的就是让客户购买商品,为达到这一理念,首先设计了平台提供给用户购买商品,系统还提供清新的界面来吸引用户眼球。使用本系统可以直接为用户提供方便,不需要花太多的时间、精力、经费去宣传商品。系统直接向用户展示商品信息,让用户随心选购,放心使用。整个系统只需要后台管理员操作和配送员,比起传统的商品销售方便、简单、人员需求少,可以为企业节省开支,节省人力资源。系统为用户提供留言回馈让用户对商家服务满意,从而为商家增加客户,扩大市场。系统集多功能与一体,系统开发却不需要企业提供太多的人力物力资源,所以该系统投入市场,可以获得良好的口碑,为企业带来经济效益,绝对有经济可行性。

3.2.2技术可行性

本系统主要采用了Java开发语言,编程语言包括HTML+CSS、JSP、Javascript,技术可行性分析的目的是确认使用现有的技术能否实现系统以及对开发效率和完成情况的评估。技术的可行性是指在当今所拥有的技术条件之下,计算机软件和硬件的发展能否够满足发展的要求。由于本系统开发基于Java语言,在一般的计算机上就能够满足开发本系统所需要的软硬件条件;因为它占用的内存本来就相对较少,所以用Mysql数据库对软件的开发以及设计在理论上没有问题的原因是:它占用的内存实在是太少了。系采用以上技术可以有效的保证系统成功及高效地开发。

综上从技术可行性上来讲,使用这些技术完全可以实现这个系统的开发。

3.2.3操作可行性

调料品网上商城系统是基于B/S模式,同时所有的信息都是以网页的形式展示,系统中的信息都可以在后台操作数据库达到数据更新的效果。用户只需要会计算机的基本操作或者会上网就可以使用本系统,系统管理员只需要懂得数据的添加、删除、修改,即可操作管理后台。系统布局较简单,功能操作不复杂,完全符合现代市场需求。因此本系统可以进行开发。

3.3需求分析

通过现实商业销售系统的调查,如淘宝网、当当网、京东等知名电子商务系统,以及从企业的实际角度出发,要求本系统具有以下功能。

统一友好的操作界面,保证系统的易用性,方便用户的操作;具备商品信息的展示功能,方便浏览者对商品信息进行浏览与比较;规范的商品分类,方便浏览者分类查找商品;完善的购物车功能与用户结账功能;设置系统主要商品模块,使浏览者能够及时了解系统的各项动态变化;商品评论功能;订单信息查询功能、商品信息查询功能;全面的后台管理功能,以方便管理员对系统信息进行更新与管理。

9.系统前台功能模块分为:

商品模块:展示系统的所有最新商品;

推荐商品模块:展示系统的所有推荐商品;

商品分类模块:通过商品分类更快找到所需的商品;

商品索引模块:输入关键词,如商品名称、商品ID、商品类别来索引商品。

用户购物车模块:跟淘宝、京东等大型电子商务网站一样,将商品放入用户购物车,从而管理用户购物车里的商品。

订单上交模块:跟淘宝、京东等大型电子商务网站一样,确认购物车的商品后,提交用户订单,然后确认收货地址和收货人、联系电话等,方可付款。

用户订单索引模块:对用户的已有的订单进行查看和索引。

商品评论模块:用户可以对自己购买过的商品进行评论。

用户注册模块:浏览者可以通过注册成为用户;

用户登录模块:用户可以登录后购买想要的商品;

用户资料修改:用户可以修改自己的信息。

10.系统后台功能模块分为:

商品信息管理模块:管理各商品信息,对商品的信息进行维护,可以增加商品,修改,删除商品信息;

系统用户维护模块:包括注册用户维护和系统管理员用户维护,普通管理员能对注册用户维护,不能对系统管理员用户维护,只有超级管理员才有维护管理员的权限。

订单维护模块;对用户的交易订单进行维护,是否有刷单等不合理订单,删除不合理的订单等操作。

公告管理模块:可以管理分类信息,增加和删除公告信息;

评论管理模块:管理员可以查看用户的评论,对评论进行维护。

3.4数据流程分析

系统的0层数据流图如下图所示。

图3-2系统数据流图(0层)

系统1层数据流图如下图所示。

图3-3系统数据数据流图(1层)

订单管理数据流图如下图所示。

图3-4订单管理数据流图(2层)

 系统设计

4.1结构设计

系统分为前台和后台,前台为普通用户,后台由管理员使用,但也可以用来登录普通用户,前台功能模块和后台功能模块可以细分为各种功能模块。

1.前台系统功能模块分为:

用户注册模块:要求新用户可以在系统前台注册,注册信息可以保存在数据库中,后台管理员审核注册的用户,防止一些违规注册,注册后即可登录系统前台。

商品展示模块:通过主要商品和商品类别展示系统的所有商品;

购买模块:要求购买商品的用户可以电话购买,也可以注册登录后在线购买,在线购买则需用户填写购买信息,并提交订单将信息展示在后台。

评论模块:要求用户评论信息可以展示在后台中,管理员可以查看用户评论操作。

用户购物车模块:跟淘宝、京东等大型电子商务网站一样,将商品放入用户购物车,从而管理用户购物车里的商品。

订单上交模块:跟淘宝、京东等大型电子商务网站一样,确认购物车的商品后,提交用户订单,然后确认收货地址和收货人、联系电话等,方可付款。

付款模块:用户提交订单后,确认收货地址和收货人、联系电话等信息后,方可进入付款界面,付款。

商品评论模块:用户添加商品评论,填写评分和评语。

2.后台系统功能模块分为:

用户管理模块:要求用户信息可以展示在后台中,用户管理分管理员和普通用户两部分,管理员可以修改管理员的名字和密码,用户管理可以显示用户注册的信息、修改用户个人资料和删除用户的操作[9]。

订单管理模块:要求用户在线购买产生的订单信息可以展示在后台,卖家可以对订单信息进行标记审核,表示已接单,并分配物流配送,如果该订单过期或者迟迟没付款,也可以删除该订单的信息。

商品管理模块:要求商品信息可以展示在后台中,卖家可以对商品进行修改操作,修改后的商品替代原有的,并可以展示在前台中。

公告管理模块:要求公告信息可以在展示后台中,展示分二部分信息,分别站内新闻和系统公告。可以进行增加、修改、删除、查看操作,然后更新到系统前台。

商品评论管理模块:管理员管理商品的评论信息。

系统功能结构图如下所示。

图4-1系统功能结构图

4.2数据库设计

对于电子商务系统而言,为了支持更大流量的数据访问需求,桌面数据库管理系统的使用不能满足需求,安全也得不到充分的保护。因此,需要采用商业常用的企业级数据库Mysql数据库。

4.2.1数据库物理设计

要设计数据库,需要对数据进行物理分析。

从用户的注册、登录等功能来分析需要建立用户信息表,其中包含的数据项会有用户名、密码、电话、邮箱、QQ、微信、录入时间等。

从商品的类别和商品的信息等功能来分析需要建立商品类别表和商品信息表,其中包含的数据项会有商品类别名、商品类别录入时间、商品名称、库存数量、销售价格、商品录入时间等。

系统包含用户提交的订单,所以需要订单的相关数据,如订单号,订单提交时间,订单金额等。

用户提交订单后,管理员审核订单后,这个过程需要一系列关于订单的状态数据。

系统应该要存在多个管理员管理系统,所以系统需要管理员相关的数据,如管理员账号、密码等。

普通用户在系统前台进行留言,需要有留言数据,例如留言内容、留言时间等。

4.2.2数据库概念设计

经过数据库的物理设计后,得到如下几个概念模型,它们的ER图如下所示。

表4-2系统ER图

4.2.3数据库逻辑设计

根据本系统的实际情况,本系统的数据库命名为db,db数据库中共分为如下几张数据表。

1.商品信息表

此表用于记录系统所有商品的基本信息,是与商品相关联的商品的类别表。如下表所示。

article_type 字段名称 类型 长度 不是null 主键 字段说明 type_id smallint 5 是 主键 分类ID display smallint 4 是 显示顺序 name varchar 16 是 分类名称 father_id smallint 5 是 上级分类ID description varchar 255 否 描述 icon text 0 否 分类图标 url varchar 255 否 外链地址 create_time timestamp 0 是 创建时间 update_time timestamp 0 是 更新时间 cart 字段名称 类型 长度 不是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 否 描述 collect 字段名称 类型 长度 不是null 主键 字段说明 collect_id int 10 是 主键 收藏ID user_id int 10 是 收藏人ID source_table varchar 255 否 来源表 source_field varchar 255 否 来源字段 source_id int 10 是 来源ID title varchar 255 否 标题 img varchar 255 否 封面 create_time timestamp 0 是 创建时间 update_time timestamp 0 是 更新时间 comment 字段名称 类型 长度 不是null 主键 字段说明 comment_id int 11 是 主键 评论ID user_id int 11 是 评论人ID reply_to_id int 11 是 回复评论ID空为0 content longtext 0 否 内容 nickname varchar 255 否 昵称 avatar varchar 255 否 头像地址 create_time timestamp 0 是 创建时间 update_time timestamp 0 是 更新时间 source_table varchar 255 否 来源表 source_field varchar 255 否 来源字段 source_id int 10 是 来源ID goods 字段名称 类型 长度 不是null 主键 字段说明 goods_id mediumint 8 是 主键 产品id title varchar 125 否 标题 img text 0 否 封面图 description varchar 255 否 描述 price_ago double 8 是 原价 price double 8 是 卖价 sales int 10 是 销量 inventory int 11 是 商品库存 type varchar 64 是 商品分类 hits int 10 是 点击量 content longtext 0 否 正文产品的主体内容 img_1 text 0 否 主图1 img_2 text 0 否 主图2 img_3 text 0 否 主图3 img_4 text 0 否 主图4 img_5 text 0 否 主图5 create_time timestamp 0 是 创建时间 update_time timestamp 0 是 更新时间 customize_field text 0 否 自定义字段 source_table varchar 255 否 来源表 source_field varchar 255 否 来源字段 source_id int 10 是 来源ID user_id int 11 否 添加人 goods_type 字段名称 类型 长度 不是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 是 更新时间 mall_center 字段名称 类型 长度 不是null 主键 字段说明 mall_center_id int 11 是 主键 商城中心ID brand varchar 64 否 品牌 specifications 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 是 更新时间 order 字段名称 类型 长度 不是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 是 订单状态 praise 字段名称 类型 长度 不是null 主键 字段说明 praise_id int 10 是 主键 点赞ID user_id int 11 是 点赞人 create_time timestamp 0 是 创建时间 update_time timestamp 0 是 更新时间 source_table varchar 255 否 来源表 source_field varchar 255 否 来源字段 source_id int 10 是 来源ID status tinyint 1 是 点赞状态1为点赞,0已取消 registered_users 字段名称 类型 长度 不是null 主键 字段说明 registered_users_id int 11 是 主键 注册用户ID gender varchar 64 否 性别 age varchar 64 否 年龄 examine_state varchar 16 是 审核状态 recommend int 11 是 智能推荐 user_id int 11 是 用户ID create_time datetime 0 是 创建时间 update_time timestamp 0 是 更新时间

                       

 系统实现

5.1首页设计与实现

系统的主界面设计结构上使用左右结构,上部的主要功能菜单区,主要显示系统的主要功能,上部导航栏有首页、网站公告、美食资讯、商城中心、个人账户、个人收藏、地址管理、购物管理、订单管理,商品显示主要是为方便用户查看一些主要产品的信息。

系统首页界面如下图所示。

图5-1系统首页界面

首页代码如下:

@SpringBootApplication

@EnableJpaRepositories

public class Application {

    public static void main(String[] args) {

        SpringApplication.run(Application.class,args);

    }

}

5.2前台功能设计与实现

5.2.1用户模块设计与实现

作为调料品网上商城系统,必须保证用户的正确性、购物安全、有效管理用户信息,用户管理是电子商务系统的重要组成部分。它主要包括用户注册、登录和验证、用户注册数据修改和用户退出等功能。

1.注册

用户首先进入系统前台,点击用户注册链接,进入用户注册页面,用户填满表单,即可点击提交,完成注册,之后用户可以使用账号登录系统前台。

用户注册是通过userreg.jsp和yonghuzhuce_add_list.jsp等页面实现的,userreg.jsp是用户点击注册后,进入注册页面的纯静态页面,通过userreg.jsp的表单将注册数据提交到yonghuzhuce_add_list.jsp,yonghuzhuce_add_list.jsp直接操作数据库,从而实现将注册数据添加至数据库的用户表中。

用户注册界面如下图所示。

图5-2用户注册界面

注册代码如下:

/**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map signUp(@RequestBody User user) {

        // 查询用户

        Map query = new HashMap<>();

        query.put("username",user.getUsername());

        List list = service.select(query, new HashMap<>()).getResultList();

        if (list.size()>0){

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

        }

        user.setUserId(null);

        user.setPassword(service.encryption(user.getPassword()));

        service.save(user);

        return success(1);

}

/**

     * 用户ID:[0,8388607]用户获取其他与用户相关的数据

     */

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Column(name = "user_id")

    private Integer userId;

    /**

     * 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

     */

    @Basic

    @Column(name = "state")

    private Integer state;

    /**

     * 所在用户组:[0,32767]决定用户身份和权限

     */

    @Basic

    @Column(name = "user_group")

    private String userGroup;

    /**

     * 上次登录时间:

     */

    @Basic

    @Column(name = "login_time")

    private Timestamp loginTime;

    /**

     * 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "phone")

    private String phone;

    /**

     * 手机认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "phone_state")

    private Integer phoneState;

    /**

     * 用户名:[0,16]用户登录时所用的账户名称

     */

    @Basic

    @Column(name = "username")

    private String username;

    /**

     * 昵称:[0,16]

     */

    @Basic

    @Column(name = "nickname")

    private String nickname;

    /**

     * 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

     */

    @Basic

    @Column(name = "password")

    private String password;

    /**

     * 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "email")

    private String email;

    /**

     * 邮箱认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "email_state")

    private Integer emailState;

    /**

     * 头像地址:[0,255]

     */

    @Basic

    @Column(name = "avatar")

    private String avatar;

    /**

     * 创建时间:

     */

    @Basic

    @Column(name = "create_time")

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

    private Timestamp createTime;

    @Basic

    @Transient

    private String code;

}

2.登录

用户进入系统前台首页后,即可看到左上角有登录表单,用户输入用户名、密码、验证码,经过数据库验证,即可登录。如果验证失败,将通过js提示账号或密码错误。

本功能参与的代码文件有index.jsp、userlog_list.jsp、首先用户进入前台首页index.jsp,输入账号密码,通过表单提交到userlog_list.jsp,验证成功后跳到index.jsp,然后通过session获取用户的用户名,并显示出来。

用户登录流程图如下所示。

图5-3用户登录流程图

用户登录界面如下图所示。

图5-4用户登录界面

登录代码如下:

/**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map login(@RequestBody Map 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 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);

        Map groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();

        if (groupList.size()<1){

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

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();

            String res = String.valueOf(service.runCountSql(sql).getSingleResult());

            if (res==null){

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

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            tokenService.save(accessToken);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

}

3.用户资料修改

登录系统前台的用户可以进入个人中心修改个人信息,包括姓名、年龄、性别等,当用户要退出系统时,可以点击注销,系统将情况session。

首先用户进入yonghuzhuce_updt.jsp页面,即修改个人信息页面,用户可以任意修改表单中的数据,然后用户点击提交按钮,将表单提交至yonghuzhuce_updt_list.jsp中,yonghuzhuce_updt_list.jsp直接操作数据库完成用户信息的修改。

界面如下图所示。

图5-5用户资料修改界面

5.2.2商品展示模块设计与实现

用户进入系统前台,先展示系统主要的商品,用户可以选择所有商品,查看所有商品,也可以点击某个商品,查看某个商品的详细信息,包括商品名称、类别、价格、库存数量等。

shangpinxinxilisttp.jsp即系统前台所有商品页面、shangpinxinxidetail.jsp是商品详细页面,shangpinxinxilisttp.jsp通过循环遍历所有商品信息,然后通过排列,<%=shangpinmingcheng%>显示数据库的数据。

商品展示界面如下图所示。

图5-6商品展示界面

5.2.3购买模块的设计与实现

用户在添加到购物车后选择并购买商品,在购物车中删除不满意的商品的同时,还可以更改数量,或清空购物车的所有商品,用户确认购物车后,可以提交订单,填写收货地址、收货人和联系方式。

顾客将商品添加到购物车和顾客对购物车的管理,例如更新所购物品的数量,清空购物车以及从购物车中移除购物车中的物品。 购物车是持久的,并不限制用户购买的物品数量,也就是说购物车可以显示许多商品。

在系统前台,用户选择好商品,可以点击添加至购物车,这里通过onClick="javascript:location.href='goumaijiluadd.jsp?id=<%=id%>,将商品ID传值到goumaijilu_add.jsp页面,然后在goumaijilu_add.jsp向goumaijilu_list.jsp页面提交添加购物车表单,即可实现将商品添加至购物车。

购买流程图如下图所示。

图5-7购买流程图

购买界面的设计如下图所示。

图5-8购买界面

购物车界面的设计如下图所示。

图5-9购物车界面

5.3后台功能设计与实现

5.3.1用户管理设计与实现

该功能包括管理员用户管理和注册用户管理,主要是由超级管理员使用,对管理员用户进行添加、删除、修改,审核用户注册、删除普通用户、修改普通用户的个人资料。首先管理员用户进入后台主页,在左边菜单栏选择相应的功能操作。

首先管理员点击进入普通用户列表yonghuzhuce_list.jsp,可以选择删除、或者修改,如果管理员点击删除,则将通过js提示管理员是否删除onClick="return confirm('真的要删除?')",如果删除后将请求sh.jsp进行数据库数据删除,如果管理员选择修改用户信息,将跳转至yonghuzhuce_updt2.jsp,然后管理员修改后,页面请求yonghuzhuce_updt2_list.jsp来操作数据库完成用户信息的修改。

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

图5-10用户信息管理界面

5.3.2订单管理设计与实现

普通用户在系统前台购买商品后,提交订单,后台将生成用户提交的订单,管理员需要处理订单,审核订单,删除、修改订单等操作。

首先管理员点击进入订单列表dingdan_list.jsp,可以选择删除、或者修改,如果管理员点击删除,则将通过js提示管理员是否删除onClick="return confirm('真的要删除?')",如果删除后将请求sh.jsp进行数据库数据删除,如果管理员选择修改订单信息,将跳转至dingdan_updt2.jsp,然后管理员修改后,页面请求dingdan_updt2_list.jsp来操作数据库完成订单信息的修改,审核订单是将订单的是否审核状态的boolean值改成是true。

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

图5-11订单管理界面

5.3.3商品管理设计与实现

除了商品的基本信息管理功能外,为了方便客户浏览商品的真实外观,在添加的商品模块中添加商品图片上传的功能。

用户在商品添加页面中输入添加商品的基本信息,点击提交进入上传图片页面。在上传图片位置添加文件并单击提交按钮,在提交成功后,弹出提示信息。查看用户的商品信息,视图上的鼠标可以查看图片。

用户在系统后台点击添加商品,跳转至shangpin_add.jsp页面,填写好表单参数,提交至shangpin_add_list.jsp页面,然后又shangpin_add_list.jsp操作数据库,完成商品的添加。首先管理员点击进入普通商品列表shangpinxinxi_list.jsp,可以选择删除、或者修改,如果管理员点击删除,则将通过js提示管理员是否删除onClick="return confirm('真的要删除?')",如果删除后将请求sh.jsp进行数据库数据删除,如果管理员选择修改商品信息,将跳转至shangpinxinxi_updt2.jsp,然后管理员修改后,页面请求shangpinxinxi_updt2_list.jsp来操作数据库完成商品信息的修改。

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

图5-12商品管理界面

 系统测试

6.1测试方法

根据系统测试目的并结合面向对象的测试方法,给出如下系统测试方案:

1、尽可能早的、并且不断地进行系统测试。因为错误发现的越早,修正它所付出的代价以及费用就会越小。

2、设计本测试用例时,应该给出测试的预期结果。一个合理的测试用例由两部分组成:主要有测试用的输入数据和该输入数据所期望的系统运行结果。

3、在设计本测试用例时,不仅需要有合法的输入测试用例,还应该要有非法的输入测试用例。因为,因为在系统的实际使用过程中,通常由于各种原因,用户往往会使用一些非法的输入测试用例来进行测试。测试用例为了测试系统的正确性和完整性,本节将对系统中重点模块的测试进行介绍。

6.2测试目的

该系统能够完成商品选购,加入购物车,商品管理,商品类别管理,订单管理,购物车管理,用户管理等功能,做到所开发的系统操作简单,符合系统开放性要求,该系统能够在开放的硬件体系结构中运行,并且能与其他系统顺利连接。

6.3测试用例

6.3.1注册测试

用户注册功能测试,如下表所示。

表6-1用户注册测试用例表

用例编号 用例名称 测试功能 输入 操作过程 预期输出 测试结果 B1 用户注册模块测试 正确输入用户信息,完成用户的注册。 用户的基本信息 用户在系统的注册页面根据提示填写相应的信息,然后点击“注册”按钮。 提示成功并跳转到登陆界面。 正确 B2 用户注册模块测试 用户注册失败的情况 用户不填写用户名 用户在系统的注册页面根据提示填写除了用户名以外相应的信息,然后点击“注册”按钮。 注册失败,提示“*用户名不符合要求”。 正确 B3 用户注册模块测试 用户注册失败的情况 用户两次输入密码不一致 用户在系统的注册页面根据提示填写相应的信息,填写密码时两次输入的密码不一致,然后点击“注册”按钮。 注册失败,提示“*两次输入密码不一致”。 正确

6.3.2购物车测试

首先对购物车的商品的数量进行单元测试,修改商品的数量,当输入除数字外的数量,比如输入a,系统能自动识别,并将数量改成1,通过测试几组数据,均发现没有bug,并且,系统能根据商品的数量,自动计算出商品总价。接着测试购物车出现添加2种同样商品时的情况,发现添加商品的数量为2后,再添加该同样的商品数量为3,发现购物车该商品的数量为5,测试无误,通过几次测试,均发现购物车的商品数量和总价是正确的。

购物车功能测试,如下表所示。

表6-2购物车测试用例表

用例编号 用例名称 测试功能 输入 操作过程 预期输出 测试结果 A1 购物车功能测试 商品加入购物车成功场景。 点击商品,填写数量加入购物车 在系统的商品信息页选择商品点击“加入购物车”按钮。 界面提示“有一件商品加入购物车!” 正确

6.3.3商品管理测试

添加功能的测试

添加商品时,如果上传的是jpg等图片格式的图片,将上传成功,并且系统能正常显示该图片,如果上传doc、mp3等非图片格式的文件后,系统将提示上传失败,并要求用户重新上传图片,进行了几次的测试,均发现正常。

删除功能的测试

例如,用户想删除编号为2的商品,则点击删除按钮,系统提示是否删除,点击是,则将删除该商品,页面自动更新,同时查看数据库,发现该商品对应的数据也删除了,证实该功能正常。

查询功能的测试

该系统中的查询功能是通过点击链接来实现的。 对商品管理代码进行测试,当用户的密码输入到后台时,可以通过点击商品管理直接看到商品信息。 点击查看商品图片查看商品是否已上传图片,系统未出现错误,查询成功。

结论

在调料品网上商城系统的设计过程中,由于对Java并不熟悉,系统的开发也属于边学习边应用的过程,因此对Java的理解不免出现偏差和错误,程序中肯定存在许多需要改正的地方。另外,由于毕业设计的时间比较紧张,而且自己技术有限,系统不免有些简陋,这也是今后系统需要改进和完善的地方。

调料品网上商城系统采用Java+springboot+Html+Css+JavaSrcript,Java语言成熟、强大、易理解易使用,通过使用这个架构,降低了开发的难度。本系统实现了基于Java框架的调料品网上商城系统,将销售流程转化成电脑操作流程,具体实现了对销售订单和客户的管理、系统人员管理、商品和商品类型管理,并提供查询统计功能来对订单和商品的相关数据进行统计分析,让商家能更清晰的掌握运营情况,帮助商家进行销售管理,简化商家工作流程,提高工作效率和盈利。

目前完成的调料品网上商城系统,还有许多有待改进的地方。一个是功能上的改进,用户理应可以修改自己的相关信息,故应增设个人中心功能;另外,系统如果能提供更多查询统计功能就会使得系统更加丰富和多样化,比如客户购买力排行功能、业务员销售能力排行功能等。第二个是技术上的改进,由于对MVC架构不太熟悉,权限管理这部分,本系统采用一个Jsp页面来规定好导航栏,即跳转的页面,这相对比较不灵活,如果将URL路径记录到数据库并实现增删查改会比较好;另外就是对EasyUI的使用还不够熟练,视觉效果和界面观感有待提升,希望日后能对这个系统有所改进。

致谢

此次毕业设计的课题开发中,遇到了很多分析和技术上的问题,通过网上查找资料和请求同学帮忙,顺利解决许多问题。

首先,我要感谢学校,是它给了我四年良好的生活环境和学习的平台。我要感谢我的指导老师。在这次毕业课题设计和论文的撰写中,指导老师都给了我真诚的帮助和细心的指导。我要感谢我的专业老师,是他们在专业知识上帮我解除了疑惑,让我学到更多。我还要感谢的同学和朋友,是他们陪伴我走过四年的学习生活。

时间随流水般走过,大学四年时光就是这样在不经意之间就走到了尽头。有太多的不舍,但却不会有太多的遗憾。四年时间见证了很多,也让你们见证了我的成长。感谢在大学里有你们的陪伴,感谢在成长的路上有你们的支持和鼓励,谢谢你们,让我的生活变得更加精彩!

参考文献

[1]. USU Software Asset Management is Verified for Data Discovery of JAVA Software[J]. M2 Presswire,2022.

[2]Paul Krill. Azul detects Java vulnerabilities in production apps[J]. InfoWorld.com,2022.

[3]王岳杨.京东商城战略定位分析[J].合作经济与科技,2022(21):136-138.DOI:10.13665/j.cnki.hzjjykj.2022.21.036.

[4]张晨.Java Web反序列化网络安全漏洞分析[J].四川职业技术学院学报,2022,32(05):158-162+168.DOI:10.13974/j.cnki.51-1645/z.2022.05.021.

[5]李乐.Java语言应用研究[J].智慧中国,2022(09):80-81.

[6]彭莉芬.大数据视域下Java集合应用研究[J].福建电脑,2022,38(09):55-58.DOI:10.16707/j.cnki.fjpc.2022.09.012.

[7]周雨萌,董芳芳,邓朗. 立创商城:甘当中国智造的“创新保姆”[N]. 深圳商报,2022-08-04(A04).DOI:10.28774/n.cnki.nszsb.2022.002684.

[8]宋旸.使用Java语言开发Web应用软件的知识探讨[J].中国设备工程,2022(14):121-123.

[9]任建新,王一鸣,李鑫,刘曜嘉,孙岩琦.基于Java Web的智慧商城购物系统设计[J].信息技术与信息化,2022(07):23-27.

[10]杨迎.Java技术在嵌入式系统中的作用探讨[J].无线互联科技,2022,19(14):96-98.

[11]李璋,赵鸿皓,黄震,陈逸凡,杨洲.Java在程序设计语言课程中的应用[J].长江信息通信,2022,35(07):108-111.

[12]朱启方,黄彩霞,范旭,万坦,任淑晖,牛佳坤.基于SpringBoot和Vue的多功能时间管理系统的设计与实现[J].电脑知识与技术,2022,18(18):31-32+41.DOI:10.14004/j.cnki.ckt.2022.1024.

[13]吴拓.Java编程语言在计算机软件开发中的应用[J].无线互联科技,2022,19(12):35-37.

[14]谢宇新. 拼多多商城发展战略研究[D].华北电力大学(北京),2022.DOI:10.27140/d.cnki.ghbbu.2022.001201.

[15]郑宇彤. 基于Java的农产品电子商城设计与实现[D].武汉轻工大学,2022.DOI:10.27776/d.cnki.gwhgy.2022.000171.

[16]武永兴,陈力波,姜开达.基于混合分析的Java反序列化利用链挖掘方法[J].网络与信息安全学报,2022,8(02):160-174.

[17]杨迎.Java语言异常处理机制的分析[J].电子技术,2022,51(03):42-43.

[18]田松涛,段元梅.基于SpringBoot的线上商城平台设计[J].无线互联科技,2022,19(01):56-57.

[19]喻佳,吴丹新.基于SpringBoot的Web快速开发框架[J].电脑编程技巧与维护,2021(09):31-33.DOI:10.16184/j.cnki.comprg.2021.09.013.

[20]巢晟盛.基于SpringBoot微服务架构下前后端分离的MVVM模型浅析[J].电脑知识与技术,2021,17(23):128-129+141.DOI:10.14004/j.cnki.ckt.2021.2412.

免费领取项目源码,请关注❤赞收藏并私信博主,谢谢-

参考阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。