基于SSM的宜家灯具商城的设计与实现

基于SSM的宜家灯具商城的设计与实现

摘要:众所周知,我国正在迈向全面小康的阶段,人民生活水平不断提高,线上用户剧增,越来越多的用户愿意使用网络商城,而宜家灯具种类众多,价格实惠,产品质量好。客户不在满足于普通的照明方式,需要更多富含艺术感的灯具装置在卧室等区域,宜家灯具商城的设计与实现势在必行。
本次研究主要是对宜家灯具商城的设计与开发进行了一些论述,包括了本商城系统。设计与实现的过程,设计部分上主要对本灯具商城与数据库的设计进行了建模,采用了SpringMvc,Spring,Mybatis框架搭建;实现的部分主要包扩了商城后台管理与前台管理各个功能的实现。本系统实现的后台功能有:宜家用户管理,灯具一级分类管理,灯具二级分类管理,商品管理,灯具订单管理。前台实现的功能有,购物车功能,留言功能,查看灯具的功能。
商城系统满足客户的浏览,购物,查看订单状态,商家管理员可以进行更多细致的操作,满足了产品从商户到客户的基本流程,操作过程简单,易懂。

关键词:灯具,商城,SSM,JAVA

Design And Implementation of IKEA Lighting Mall
Based on SSM
Abstract:As is known to all, China is moving towards the stage of all-round well-off, people’s living standard is constantly improving, online users are increasing rapidly, and more and more users are willing to use online shopping mall, and ikea lamps are of many types, affordable price, good product quality.
The customer is no longer satisfiedOrdinary lighting, need more rich in artistic sense of lamps and lanterns installation in the bedroom and other areas, the design and implementation of ikea lamps and lanterns mall is imperative.This study mainly discusses the design and development of ikea lamp store, including the store system. In the process of design and implementation, the design part mainly modeled the design of this lamp store and database, and adopted the framework of SpringMvc,Spring and Mybatis.
Part of the main package to expand the mall background management and front management of the realization of various functions. The background functions of this system are: ikea user management, lamp classification management, lamp classification management, commodity management, lamp order management. The function of the front desk, shopping cart function, message function, view lamp function.The mall system can satisfy customers’ browsing, shopping and order status, and the business administrator can carry out more detailed operation, which satisfies the basic flow of products from merchants to customers. The operation process is simple and easy to understand.

Keywords:Lighting, Mall, SSM, Java

目 录

第1章 绪 论 1
1.1研究背景和意义 1
1.2国内外研究现状 2
1.3本系统研究的主要内容 3
第2章 相关技术介绍 4
2.1 Spring框架 4
2.1.1 Ioc与Aop 4
2.1.2 SpringMVC 4
2.2 Mybatis 4
第3章 系统需求分析 5
3.1可行性分析 5
3.2系统的功能需求分析 5
3.3 UML系统建模 6
第4章 系统的设计 8
4.1系统架构设计 8
4.2系统的功能模块结构设计 8
4.2.1用户功能模块 8
4.3 数据库模型设计 10
4.3.1 数据库概念设计 10
4.3.2数据库表概述 11
第5章 系统的实现 15
5.1商城后台管理模块 15
5.1.1 管理员登录模块 15
5.1.2 后台管理用户模块 16
5.1.3 后台管理商品分类 16
5.1.4 后台管理商品信息 18
5.1.5 后台管理订单模块 19
5.1.6 后台管理发货功能 20
5.1.7 后台留言管理模块 21
5.2 商城前台功能模块 22
5.2.1 商城首页的实现 22
5.2.2 用户注册功能实现 23
5.2.3 用户登录功能实现 24
5.2.4 用户留言功能实现 25
5.2.5 商品展示功能实现 26
5.2.6 用户购物车功能 26
5.2.7 用户支付功能实现 27
5.2.8 用户确认收货功能 28
第6章 系统测试 29
6.1测试目的 29
6.2测试方法 29
6.3测试用例 29
6.3.1 管理员模块测试 29
6.3.2 前台用户模块测试 29
第7章 结束语 31
7.1全文总结 31
7.2展望 31
参考文献 32
致 谢 33

第1章 绪 论

1.1研究背景和意义
从1949年到今日,计算机火速发展,发展的速度跟光速一样快,世界各地的人也越来越喜欢用计算机保存数据,录入数据等方面,随着90年电商的发展,我国第一批电商人才如马云到美国学习了电商技术,把网页编程技术带回了中国,把电商项目的起步设计思想也带回了中国,由此,电商项目在中国大火,越来越多的电商功项目,越来越丰富的电商类型,以多形式多样化的技术得以发展。随着马云带动中国电商项目的兴起,人们思想也越来越开放,不在拘泥于线下购物,03年起,阿里巴巴就偷偷的已经发起了调查,如果有一种方式让你在家挑衣服,过不了多久就有人给你送过来,这种方式你们喜欢吗类似这种的社会调研调查。结果人们都非常渴望向往这种模式,得下结论,这种电商模式被称为B2C模式。随着计算机在我国10年前几年的快速发展,越来越多的人愿意,开始接触计算机,慢慢地,悄悄地,电商行业在我们身边悄然发展起来了。到了08年,我们身边开始有了网上商店,那段时间在我们身边看来并不被大众接受,很多商家被冠以了骗子,给了钱不发货等情况,其实,很多商家并没有错,而是那段时间物流还没发展起来,那段时间仅仅只有邮寄还有没发展起来的顺丰快递,当物流发展起来以后,线下的传统商店生意越来越差,网上商城大火。
在那个时间阶段,还有一小部分人们认为网上商城不安全,选的东西跟上传的图片有差异等等,但这些声音阻挡不了电子商城B2C的起兴,马云抓准了时机,看准了线下传统商店也可以入驻到淘宝,于是就形成了百花齐放的淘宝店铺,反正赚钱的是店家,方便的是购买者,于是又过了一个阶段,更多的人喜欢在网上看店铺找好尺寸跟图片,去线下找这种符合他们内心标准的产品,当时,媒体称这种时代为上看下买,人们也慢慢接受了这种模式。随着程序员技术的越来越好,第三方支付的兴起,没错,阿里巴巴弄了个支付宝,它的出现,告诉了世人,阿里就是专门为商家,为用户服务的,有了支付宝以后,马云团队还研究购买了超级计算机,把服务器部署到各个区域,研发了各种中间件,可以实现负载均衡的服务器,把老年代的技术直接替换成了新年代的服务技术,出现了低流量可以看所有商品,实现海量并发,海量购买,海量结账也不会出现安全故障的时代,我称之为网购时代,网购不再拘泥于青年人,中年人了,也吸引了很多会用计算机的小孩跟老人,促成全民购物时代。
所以说,在全民购物时代中,宜家灯具商城的研究出现是很有意义的,一有前人的经验,保障了安全的起步。二是在大时代面前,遵守当今的规矩,是有帮助的,这并不是随波逐流,而是跟上了时代的步伐。
1.2国内外研究现状
因为大互联网年代的来临,B2C模式给阿里巴巴,京东等电商商城公司带来了巨大盈利,方便惬意的生活方式以及大众的选择也给人们带来新的选择,用好的平台来购买好的商品。其实,从90年代开始,海外就已经在研究新的销售模式了,他们发现计算机其实可以不仅仅用于单纯的记录数据,从我查阅的资料来看,最早的电商项目不是用于商用,而是用于简单的银行录入数据,图形界面及其简陋,录入数据还需要人工录入,效率低,不实在。但随着网页时代的来临,国外大神们推出了文本编辑语句,就是网页三剑客,在当时,引起了全球风靡,当当时技术的不全面,还是使用静态的网页,谈不上发展电商项目的地步,直到亚马逊的出现。
经研究表明,亚马逊已经用了好几年的时间做市场调研,这个时间上保守用了8年,耗费了大量的时间,金钱,人力,物力,用脑图画出B2C模式的研究,提出了猜想,没错,就是电子商城的猜想。在计划的起步阶段,他们跟微软公司合作,聘请了50多个资深程序员,招募了各地名牌大学生进行第一个电商项目的着手研究,要知道,当时的编程都是用于系统上,几乎没有使用在网站上,而且也没有店铺自行加入,可想而知,能执行这种项目需要花费多少的资源,但他们挺住了。第一个电商平台,真正作用于店铺的平台出现了。
从2015年到至今,我国的电商平台研究的比国外更透彻,因为我国经济快速发展,人民生活水平日益增长,最主要的是我国店铺商家多,不怕单纯一种商品被垄断,我国的电商店铺是面向全部民众的,从企业到农民都有他们各自不同的内部业务,相反,国外入铺电商平台门槛太高了,经资料显示,美国入铺一个电商平台,需要耗费大量钱财,要开域名,服务器,他们的发展已然偏向资本发展,是走不远的,相反我们国家的电商项目的入铺简单,域名可以申请,只需要提供身份证号码,相貌的照片,以及一系列的产品的描述,通过质量检测即可入户。
不同电商商城还有着不同特殊业务,比如淘宝有它专属的支付宝,外带花呗等预支付支付手段,京东的京东快送,说起京东,京东虽然今年不愠不火,但它的老板是真的很有智慧,比如他把各个商品派送到各地仓库,分布式发送,消费者不拘束那点送货费用,只要你快,就给你钱的口号被京东消费者说出,这种竞争模式,是不是侧面说明我们电商的发展兴起,其次,越来越多自家的企业不在拘束于入驻阿里,京东等店铺,他们追求了自身的业务,做自己的主人,从入库到派送,更多的业务更细致,更明确,更快,更方便,更适合人们去使用。
1.3本系统研究的主要内容
本设计主要研究的是电商系统,为了搭上电商火热的班车,研究能在网站上购买灯具,基于SSM框架的整合与开发。Spring,Spring MVC和MyBatis三个框架的整合,开发时更方便,代码高内聚低耦合。本系统研究的主要内容是从消费者以及生产者的关系来阐述的,如何让消费者更快拿到商品,如何帮助商家更快出售商品是本文的主要内容,主要是通过后台管理多商品,前台把商品给用户浏览,以MyBatis作为持久层,SpringMvc作为处理请求,返回请求的业务层处理,这就是本系统研究的主要内容。

第2章 相关技术介绍
2.1 Spring框架
Spring具有面向切面的编程的思想(Aop),以控制反转(Ioc)作为容器,是一个普遍认知的轻量级,非侵入式的框架,它集成包含了JDO等第三方API,强调了面向对象的设计,用接口开发就是Spring的初衷。
2.1.1 Ioc与Aop
Ioc是一个容器,也可以当作是OOP(面向对象)思想编程的设计原则,它可以大大的降低了代码之间的耦合度,它常用的使用方式有两种,一种是依赖注入(DI)的方式,另外一种是依赖查找,本人在本文中使用的是依赖注入,我可以通过注解注入把我的Bean添加到Spring容器中,让Spring做管理。
Aop是面向切面编程,它需要找到一个方法的或一个业务的切面,把它横切,在这个切面的业务执行前,执行后,添加相关的操作,这就是Aop,它大大的降低了代码的耦合度,是Spring的精髓。本人在宜家灯具商城的开发中,使用了Aop配置了日志,事务,异常处理。
2.1.2 SpringMVC
SpringMVC是Spring的一个mvc组件,它既保留了传统的MVC开发模式,M(Model),V(View),C(Controller)模型,视图,控制器,用新增了我们常用的视图解析器等等减少代码量的工具,它把所有接受的请求放入到一个处理器链,让处理相关业务的处理器来处理相应的业务,返回响应给用户,SpringMVC在本文中常用的注解有@Controller,把它声明为控制器,从而给Spring做管理。
2.2 Mybatis
Mybatis是一个在ibtis基础上晋升的一款优秀的持久层框架,也是作为SSM框架的持久层的工具。

第3章 系统需求分析

3.1可行性分析
在任何一个系统的开发前,都需要客户与商户进行需求分析,首先需要对用户的使用配置,开发者的能力的技术可行性,经济可行性,是否出动法律的法律可行性。
一、用户配置使用可行性
用户在使用前台用户模块时,只需要有一个能渲染页面的配置就可以,配置低,实用性高。
二、开发者的技术可行性
开发者在校时已经解除了JAVAEE的相关基础,也有一定的JavaWeb开发经验,数据库建模的能力,与用户的需求分析对接无沟通困难,且系统的流程业务比较清晰,开发者也比较熟悉电子商城的业务逻辑,在技术可行性上基本上是没有任何问题的。
三、经济开销方面的经济可行性
开发者使用的是免费的Eclipse开源开发工具,插入了支持Spring的插件以及相关业务包,Mysql的安装也是安装官网免费版本,不存在收费行为。在经济的可行性上也没有任何问题。
四、是否违法侵权的法律可行性
开发者使用的SSM以及相关连接池的jar包都是从阿里云上面的开源社区下载的,只要不用于商用都不会违法,MySQL视图工具使用的是navicat12试用版(免费使用30天),PowerDeigner本人使用的是公司内部已购买的账号,前端框架使用的是传统的开源OA的EasyUi,只要不用于商用,就不会触犯法律。
3.2系统的功能需求分析
(1)用户登录模块:后台使用者通过用户名或者邮箱作为账号,以及加上用户的
密码匹配成功后即可登录成功。
(2)用户的商城前台模块:用户可以浏览商品,用户可以模糊查询商品,如果用户需要购买产品,需要先登录,否则会弹出登录页面,登录后,用户可以查看购物车以及下单的状态,也可以对产品进行留言。
(3)管理员后台模块:管理员可以查看所有用户的信息,以及产品的一级分类二级分类的管理,也可以对每个订单的状态进行调整。
3.3 UML系统建模
1.用户功能用例图
在这里插入图片描述

图3-1用户功能用例图
图3-1是用户的功能用例图,本系统采用的是Session写的购物车,所以用户必须登录,激活登录状态,才可以进行购买,用户如果没有账号登录,可以点击注册按钮填写信息激活账号,激活以后可以进行登录,登录完成可以查看物品,搜索物品,根据产品的一级分类,二级分类找到相应的灯具,然后点击图片可以查看物品的详情,最后进行购买,在购物车可以找到购买的产品以及是否支付,支付后可查看订单有没有发货。
2.后台商家管理员用例图
在这里插入图片描述

图3-2 后台管理员用例图
图3-2是后台管理员的功能用例图,当管理员在后台登录页面登录后,可以查看用户的相关信息,商品一级分类信息的管理,商品二级分类信息的管理,可以查看是哪个用户对哪个商品发起的留言,后台管理员可以对这个留言进行管理,从而实现控制舆论的操作,也可以对商品进行管理。最后,是查看订单的状态,查看哪些订单是用户发起未完成的,用户发起未支付,用户支付为送货,用户收获未确认等状态。后台管理员是专属的商户管理员特有的账号密码,所以不能通过本系统随意添加,只能通过数据库进行语句操作添加账号密码,每个后台管理员都拥有对所有商品所有用户进行操作的最高权限,所以每一步操作都必须谨慎。

第4章 系统的设计

4.1系统架构设计
系统的成员只有两个,一个是用户,一个是商家,用户具有查看物品,购买物品,用户注册,查看自己的订单。商家可以管理商品,查看用户信息,订单管理。项目的整体功能结构分解如图4-1所示:
在这里插入图片描述

图4-1 系统的功能模块结构图
4.2系统的功能模块结构设计
4.2.1用户功能模块
用户模块可先分为四大模块,有用户注册,查看物品,购买物品,查看订单灯等功能,如图4-2所示:
在这里插入图片描述

图4-2 用户功能模块结构图
(1)用户注册功能:因为用户要使用到购买的功能,必须要道路,要把用户的账号激活,才能使用购买的功能,否则会弹出请登录页面,所以要有注册这个模块。
(2)查看物品功能:查看物品指的是用户登录前或者登录后,可以通过导航栏的一级分类,二级分类选择要用看的物品,也可以在导航栏处搜索物品,查找到物品的图片名字后,点击图片的详情即可查看到该物品的详情信息,点击购买。
(3)购买物品功能:用户找到想要的产品灯具时,可以点击购买,购买可选取数量,购买后在购物车可以看到。
查看订单功能:当用户下单后,可实时查看用户的订单处于什么状态,比如支付后等待商家送货状态等等。
4.2.2 商城管理员功能模块
管理员模块克县分为用户信息管理模块,商品信息分类模块,订单管理模块,如图4-3所示:
在这里插入图片描述

图4-3 商城管理员功能模块结构图
(1)用户信息管理功能模块:管理员登录进入后台管理页面后,点击左方的Z-tree数型节点中的用户管理,可以对用户进行相关的curd操作,也可以把有不良言论的用户进行删除。
(2)商品信息分类管理:商品管理员可以对灯具的一级分类,灯具二级分类进行管理,可增加,可删除,可修改,但二级分类是建立在已有的一级分类以上才能操作,也可以对商品进行添加,去除,修改,灯具商品是建立于二级分类上边的产物,所以必须要一级一级储备下来。
(3)订单管理功能模块:商家在这个函数模块上可以查看订单的各个状态,并且可以修改订单的状态。
4.3 数据库模型设计
宜家灯具商城的数据库模型如图4-4所示:
在这里插入图片描述

图4-4 宜家商城数据库模型图
4.3.1 数据库概念设计
(1)用户、购物车、商品之间的关系图如图4-5所示:
在这里插入图片描述

图4-5 用户、购物车、商品E-R图
(3)订单,用户关系图如图4-6所示:

在这里插入图片描述

图4-6 订单、用户E-R图

4.3.2数据库表概述
根据数据库建模,设计出表单的字段,以及他们的实体,下面是各个表的详细信息,由PowerDeisnger导出:
所有表概况如表4-1所示:
表4-1数据库建模图
概念名称 物理名称
billitem billitem
category category
categorysecond categorysecond
orderitem orderitem
orders orders
product product
shopcartitem shopcartitem
user user
(1)管理员表(id,账号,密码)如表4-2所示:
表4-2 管理员表
代码 注释 数据类型 主键 描述
auid 管理员ID int TRUE 存储管理员自身的id
username 账号 varchar(255) FALSE 存储账号名
password 密码 varchar(255) FALSE 存储密码值

(2)订单项(订单id,数量,价钱,商品id)如表4-3所示:
表4-3订单项表
代码 注释 数据类型 主键 描述
billid 订单id int TRUE 订单自身id
count 数量 int FALSE 存储数量
ptotal 价钱 double FALSE 存储价钱
pid 商品id int FALSE 存储商品id

(3)灯具一级分类表(一级分类id,一级分类名)如表4-4所示:
表4-4灯具一级分类表
代码 注释 数据类型 主键 描述
cid 一级分类id int TRUE 存储id
cname 分类名称 varchar(255) FALSE 存储分类名

(4)灯具二级分类表(二级分类id,二级分类名,一级分类id)如表4-5所示:
表4-5灯具二级分类表
代码 注释 数据类型 主键 描述
csid 二级分类id int TRUE 存储自身id
csname 分类名称 varchar(255) FALSE 存储分类名
cid 一级分类id int FALSE 存储一级分类id

(5)订单状态(订单id,商品的购买总数,总价钱,商品id,订单的id)如表4-6所示:
表4-6 订单状态表
代码 注释 数据类型 主键 描述
oiid 订单id int TRUE 存储订单id
count 总数 int FALSE 存储总数
subtotal 总价钱 double FALSE 存储总价钱
pid 商品id int FALSE 存储商品id
oid 订单项id int FALSE 存储订单项id

(6)商品表(商品id,商品名称,市场价,宜家价,图片,商品的描述信息,上架的时间日期,宜家灯具的二级分类)如表4-7所示:
表4-7 商品表
代码 名称 数据类型 主键 描述
pid 商品id int TRUE 存储商品id
pname 名称 varchar(255) FALSE 存储名称
market_price 市场价 double FALSE 存储市场价
shop_price 宜家价 double FALSE 存储宜家价
image 图片地址 varchar(255) FALSE 存储图片地址
pdesc 产品描述 varchar(5000) FALSE 存储产品描述
pdate 上架日期 timestamp FALSE 存储上架日期
csid 二级分类id int FALSE 存储二级分类id

(7)购物车表(购物车id,用户id,商品id,商品数目,单价,总价钱,商品名称)如下表4-8所示:
表4-8购物车表
代码 名称 数据类型 主键 描述
cartitemid Id int TRUE 存储Id
uid 用户id int FALSE 存储用户id
pid 产品id int FALSE 存储产品id
pcount 商品数目 int FALSE 存储商品数目
price 单价 double FALSE 存储单价
image 图片 varchar(255) FALSE 存储图片
ptotal 总价 double FALSE 存储总价
pname 产品名 varchar(255) FALSE 存储产品名

(8)用户表(用户id,用户名,用户密码,姓名,游戏,手机号,地址,状态)如下表4-9所示:
表4-9用户表
代码 名称 数据类型 主键 描述
uid 用户id int TRUE 存储用户id
username 账号 varchar(255) FALSE 存储账号
password 密码 varchar(255) FALSE 存储密码
name 用户真名 varchar(255) FALSE 存储用户真名
email 邮箱 varchar(255) FALSE 存储邮箱
phone 电话号码 varchar(255) FALSE 存储电话号码
addr 地址 varchar(255) FALSE 存储地址

第5章 系统的实现

本系统主要分为,前台的商城用户模块和后台管理模块实现:
5.1商城后台管理模块
因为前台商城所展示的灯具,分类,以及用户所看到的订单追踪都是由后台管理员进行管理。
5.1.1 管理员登录模块
宜家灯具商城管理人员需要从管理员后台模块登录,需要登录管理员账号,登录的管理员密码,如果账号密码校验成功,则进入管理员页面,反之登录失败。登录成功后,进入宜家灯具管理员后台页面,由Iframe标签嵌入top的网页。管理员登录页面如图5-1所示,宜家管理员匹配成功后进入的宜家管理后台如图5-2所示。
在这里插入图片描述

图5-1宜家灯具管理员登录页面

在这里插入图片描述

图5-2宜家灯具管理员页面
管理员验证账号密码的核心代码如下:
Adminuser adminuserLogin = userService.adminUser_login(username,password);
if(adminuserLogin == null){
model.addAttribute(“message”, “匹配失败”);
return “admin/index”;
}
request.getSession().setAttribute(“adminuserLogin”, adminuserLogin);
return “admin/home”;
5.1.2 后台管理用户模块
后台管理用户模块指的是管理员点击左边导航栏可以进行对用户信息的预览,查看用户的相关信息,如电话号码,地址,用户可以自行修改信息,管理员可以删除会员的信息,效果图如图5-3所示:
在这里插入图片描述
图5-3用户管理模块效果图
用户管理模块实现核心代码如下:
@RequestMapping(“/admin/admin_findAll”) //映射路径
public List SelectAllUser() throws Exception {
User user = new User();
return userMapper.selectByExample(user); //查询所有用户放入集合
}
5.1.3 后台管理商品分类
因为灯具过多,种类频繁,为了避免用户查找灯具难度过高,所以设置了两级分类,第一级分类为大纲,第二级分类为次纲,第二级分类与第一季分类过挂钩。
(1)宜家灯具一级分类模块:宜家灯具商城管理员点击左侧的一级分类管理,管理员可以在该页面中可以添加分类,编辑分类,查看分类,删除分类,因为二级分类的外键是一级分类的id,所以,绑定了二级分类的一级分类不能删除。
一级分类模块的图片如图5-4所示:
在这里插入图片描述

图5-4一级分类List图
一级分类核心代码图如下:
@RequestMapping(“/admin/admin_SelectAllCategory”) //映射路径
public List SelectAllCategory() { //查看一级分类
Category category = new Category();
List list = categoryMapper.selectByExample(category);
if(list!=null && list.size()>0){//提高代码健壮性
return list;
}
return null;
}
(2)宜家灯具二级分类模块:标题5.1.3时提到过二级分类与一级分类做挂钩,管理员点击二级分类模块时,管理员可以在该页面中可以添加分类,编辑分类,查看分类,修改二级分类所属于的一级分类。
二级分类模块的图片如图5-5所示:
在这里插入图片描述

图5-5二级分类的效果图
二级分类模块的核心代码如下:
List list = categorysecondMapper.selectAll(categorysecond);//查询
pageBean.setList(list);//分页
5.1.4 后台管理商品信息
后台管理商品信息模块是指管理员可以在该模块进行对产品的编辑,可以查看
灯具 ,新增灯具,修改灯具,删除灯具等功能。
实现重点:在该模块中,读写图片是重点,灯具一般字段都能普通的方法录入,但产品的照片回显时,需要用到io流,要实现图片的上传功能,需要把jsp上表单的传输方式改为post,然后添加enctype="multipart/form-data"这个属性,意味着它有的属性是以二进制进行传输。写io的时候,图片保存路径为服务器下的image文件夹上,但存入数据库的是相对路径,当回显页面时,用jsp中${pageContext.request.contextPath }中的语句拼接上从后台传输过去的请求域中的字段,就可以拼接成完整的路径。在使用img标签中的href属性,图片就可以回显了,另外灯具添加需要跟二级分类做挂钩,必须连接其二级表,连接字段为csid。
灯具管理功能实现效果图如图5-6:
在这里插入图片描述

图5-6灯具管理实现效果图
实现灯具管理模块的核心代码分两段:
(1)整体灯具管理模块核心:
PageBean productList = productService.SelectAllProduct(page);
model.addAttribute(“productList”, ProductList);
return “admin/product/list”;
(2)图片io流核心代码(新增图片,修改图片):
if (file != null) { //传统读写
String path = request.getServletContext().getRealPath(
“/products”);
String uploadFileName = file.getOriginalFilename();
String fileName = UUIDUtiils.getUUID()+uploadFileName;
File diskFile = new File(path + “//” + fileName);
file.transferTo(diskFile);
product.setImage(“products/” + fileName);
}
5.1.5 后台管理订单模块
后台管理订单模块是指商城管理员在点击管理页面的所有订单中可以看到全部订单,可以获取所有订单的信息,如收货人,发送的物件,收货地址等等,也可以看到哪些用户未结账,哪些用户未收货功能
实现描述:订单会有4种状态,其中后台管理员能看到4中状态,前台使用者能看到2中状态,在后台管理平台中,从生成的订单存入数据库后,回显的页面分为4个,把订单实体放入到Session中,根据不同订单属性不同进行回显,后台管理平台中,在list中根据下拉框select选择下个状态的值,把这个值传到SetState方法中,为了让业务更精准,规定了管理员只能进行本次操作的下次状态,用这个在前端页面用了Cgtib中<c:if>做了判断,其中,订单表跟商品表跟用户表呈多对多的关系,订单表跟商品表的中间表为订单详表,订单表跟用户表的中间表为订单用户表,当用户点击结账时,订单会把该用户放至在Session中的购物车对象,把购物车对象放进Map中,在foreach算出该用户的总账户total,从而生成一个订单对象。
宜家灯具订单管理模块实现效果图如图5-7所示:
在这里插入图片描述

图5-7订单模块效果图

实现核心代码如下:
PageBean ordersList = orderService.selectAllOrders(page);
model.addAttribute("ordersList ", ordersList );
return “admin/order/list”;
5.1.6 后台管理发货功能
当管理员点击订单中消费品未发货页面时,管理员根据收到用户的付款信息时,管理员只需要点下发货,就可以根据用户设定的收货 人,收货电话号码,收货地点进行发货。
实现发货效果图如5-8所示:
在这里插入图片描述

图5-8 发货功能效果图
核心代码实现如下:
orderService.updateOrderStatus(oid, 3); //更新状态为3
return “redirect:myOrder.action?page=1”;

5.1.7 后台留言管理模块
留言管理模块是管理员可以查看所有用户发送的留言,根据留言掌控舆论,为了防止恶意诽谤攻击宜家商城,用户可以查看留言,也可以删除留言。
留言管理页面效果图如图5-9所示:
在这里插入图片描述
图5-9 留言管理效果图

留言管理系统实现核心代码如下:
PageBean messageList = messageService.SelectAllMessage(message);
model.addAttribute(“MessageList”, messageList);
return “messageList”;

5.2 商城前台功能模块
5.2.1 商城首页的实现
当用户进入宜家商城时,会自动跳转到首页,在首页,可以看到宜家商城的主页概况,比如用户可以看到灯具的一级分类,灯具的二级分类,一部分灯具,用户可以在搜索栏搜索想要的灯具,但是用户需要购买时要进行登录操作才可以,登录在右上角,如果没有账号可以选择注册按钮,注册好以后就可以进行登录了。
主页效果图如图5-10所示:
在这里插入图片描述

图5-10宜家商城首页效果图
实现代码核心部分分三块:
(1)导航栏一级分类显示在主页核心代码:
ArrayList categoryList = categoryService.getCategoryList();
request.getSession().getServletContext().setAttribute("categoryList ",categoryList );
(2)左侧二级分类显示在主页核心代码:
request.getSession().getServletContext().setAttribute(“secondCategory”,(ArrayList)secondCategoryService.getSecondCategory());
(3)商品展示在主页核心代码:
ArrayList products = productService.showProduct(product);
model.addAttribute("products ", products );
5.2.2 用户注册功能实现
当宜家用户点击用户注册的按钮以后,填入相应信息,当输入用户名时,通过异步校验,当前用户名如果已经被注册,会被提示当前的用户名无法注册,当所有校验成功以后,则把数据录入到数据库中,用户可以在前台进行登录。如图5-11所示:
在这里插入图片描述

图5-11 用户注册实现图
用户注册的核心代码如下:
@RequestMapping(“/userRegist”)//用户注册时发送的请求
public String userRegist(Model model, HttpServletRequest request,
@Validated User user, BindingResult bindingResult,
@RequestParam String checkImg) throws Exception {
if (bindingResult.hasErrors()) {//注入的参数全部一起校验,只要有一个错//误就会getError
List errors =bindingResult.getAllErrors();
List list = new ArrayList<>();
for (ObjectError objectError : errors) {
list.add(str);
}
model.addAttribute(“errors”, list);
return “regist”;
}

5.2.3 用户登录功能实现
当用户需要使用到留言功能,购物功能灯功能时,需要进行登录操作,点击登录按钮,进入登录页面,输入相应的账号密码就可以了。
设计思路:当用户跳转到登录页面时,输入用户名时,当鼠标移开文本框,会触发blur()事件,此时,有一个交互事件进行了异步校验,ajax发送的请求到后台会访问数据库有没有这个用户名,如果没有则提示用户名不存在,反之提示可以成功,后续进行账号密码校验以及验证码校验,验证码是一个独立的模块,直接调用方法就可以了,当所有操作校验成功以后,把宜家用户用户名以及用户id存放在Session中。登录实现图片,登录成功后的图片如图5-12,图5-13以及代码如下:
在这里插入图片描述

图5-12用户登录页面
在这里插入图片描述

图5-13用户登录成功后
用户登录页面实现代码如下:
if (!sessionCode.equalsIgnoreCase(checkImg)) {
request.getSession().setAttribute(“message”, “请仔细看验证码”);
return “redirect:login.action”;
}
User user = userService.userLogin(user.getUsername(),
user.getPassword());
if (user == null) {
request.getSession().setAttribute(“message”, “密码错误请重新输入”);
return “redirect:login.action”;
}
5.2.4 用户留言功能实现
当用户登录以后,点击查看留言,可以看到所有用户发送给商城的留言,看看用户对商城是喜爱还是讨厌,用户也可以把自己的观点放在商城上,只要不要太过分,管理员一般都不会去删除,如果用户太过分,可能面临会员账号被移除。留言功能实现效果图如图5-14所示:
在这里插入图片描述

图5-14商城前台留言功能实现图
商城前台留言功能核心代码如下:
ms.setMessage(messageinfo);
ms.setUserid(loginUser.getUserid());
messageService.addMessage(ms);
request.getSession().setAttribute(“ms”, ms);
return “redirect:/messageshow.action?”;

5.2.5 商品展示功能实现
当用户登录以后,点击某个商品,会弹到该商品的详情页面,会获得商品是不是火热装填,商品具体描述信息,商品的价钱都会获取,还可以点击按钮把商品放入购物车中,产品信息详情如图5-15所示:
在这里插入图片描述
图5-15 产品信息详情实现图
信息详情实现核心代码如下:
Product product = prodcutService.selectProductByPid(pid);
model.addAttribute(“product”, product);

5.2.6 用户购物车功能
购物车指的是用户登录后,点击商品详情,把想要的商品放入一个临时储物箱,这个储物箱可以计算它的总价,生成的订单总价也是依据购物车的总价来计算。
设计思路:用户商城购物车是前台用户模块最重要也是实现的难点,因为它涉及到连接表的数目很多,一共用了五个表,购物车实体需要插入用户id,商品id,二级分类id,因为用户必须登录才能使用改功能,所以用户id可以直接从Seession中获取,用户未购买任何东西,本人设置了一个Map,存放了用户id,其他属性设置为NULL。当用户点击商品购买后,会把商品id存入到购物车中,选择数量,此时前台页面用了Ajax异步计算,此时会请求一个CountMoney的Mapping,它会通过这个pid查询到宜家价格,再计算刚刚所得的Count,再把所得结果通过InnerHtml( )方法插回到文本框中,最后购物车信息添加到Map,存入到Session域,用户结账后,生成订单。实现的图片效果如图5-16:
在这里插入图片描述

图5-16购物车存储效果图
购物车存储计算实现核心代码如下:
Cart cart=getCart(request);
cart.addCart(cartItem);
return “cart”;
5.2.7 用户支付功能实现
当用户选购完商品后,会生成订单,当订单结算完价钱以后,用户需要填写收货人,收货地址,电话号码或者微信号,然后点击付款结账,否则商家不会发货,支付功能效果图如5-17所示:
在这里插入图片描述

图5-17用户支付功能实现图
实现的核心代码如下:
orderService.payMoney(order);
return “redirect:UserOrder.action”;
5.2.8 用户确认收货功能
当用户登陆后,点击订单,发现订单卖家已经发货,用户自身也收到了灯具,此时诚实友好的用户需要确认收货,否则会被卖家追究刑事责任,点击以后,管理员收到通知,订单业务链完成。查看订单功能以及确认收获功能如图5-18以及5-19:
在这里插入图片描述

图5-18查看订单实现图

在这里插入图片描述

图5-19确认收货订单完成效果图
实现确认收货核心代码如下:
orderService.updateOrderStatus(oid, 3);
return “redirect:UserOrder.action”;

第6章 系统测试

6.1测试目的
因为写出来的程序难免有bug,测试的目的在于检测系统中的bug,测试是为了产品能安全在线上运行,测试是为了更好的生产,良好的测试结果注定有良好的线上产品,高压测试甚至还可以测试商城的抗压能力,处理并发的能力。测试不仅仅只是一个过程,它更是一个开发检验成果的重大体现。
6.2测试方法
分前台宜家用户模块测试以及后台商城管理人员模块测试,采用黑盒测试。
6.3测试用例
6.3.1 管理员模块测试
根据管理员模块需求分析进行测试,测试用例如表6-1所示:
表6-1管理员模块测试用例
序号 测试功能 输入 输出 结果
1 查看用户信息 选择查看用户信息 输出用户信息 通过
2 一级分类管理 对一级分类进行增删改查 新增成功,编辑成功。删除成功 通过
3 二级分类管理 对二级分类进行增删改查 新增成功,编辑成功。删除成功 通过
4 商品管理 对商品进行增删改查 新增成功,编辑成功。删除成功 通过
5 订单管理 对每个订单状态进行查询 订单显示状态 通过
6.3.2 前台用户模块测试
根据前台用户需求分析进行测试,测试用例如表6-2所示:

表6-2前台用户测试用例
序号 测试功能 输 入 输 出 结 果
1 用户注册 账号:userBuffer1
密码:edit123 输出注册成功 通过
2 查看一级分类 在导航栏查找一级分类 一级分类渲染在导航栏上 通过
3 查找二级分类 点击一级分类后查看二级分类 二级分类 通过
4 查看商品 进入主页 可以看到商品 通过
5 查看商品详情 点进商品详情 商品详情成功显示 通过
6 生成购物车 点击商品加入购物车 生成购物车成功 通过
7 结账 把购物车的订单项结账 结账成功 通过
8 查看订单 查看用户订单 查看成功过 通过
9 输入留言 输入留言信息:灯具好贵 成功输入,并显示 通过
10 确认收货 点击确认收货 订单完成 通过
11 支付 点击付款 进入发货状态 通过
12 商城主页 进入商城主页 商城信息展示成功 通过

第7章 结束语

7.1全文总结
基于SSM的宜家灯具商城的设计与实现,是我在体验淘宝商城的感想,以这种设计模式进行开发,据网上查阅,以往大部分商城没有采用动态页面,导致页面数量过高,加载量剧增,流量耗费太大了,我在实习的过程中,有幸在开发岗上担任了数据库建模以及商品增删改查的模块,学习到了原来可以把数据库回显到页面上面,以往只是单纯回显一个表单,其实这个也是回显一个表单,只不过这个表单做成了卡片,即商品的详细信息。
疫情期间,趁着身体里的一腔热血,从数据库建模,到找ui模板,花了不少时间,因为在公司开发过程中,自己往往是按照架构师搭建的框架进行代码填充,我只需要扭螺丝就好,但当自己架构时,问题就来了,前端页面搭建问了需要前端工程师,让他们给予经验,后端方面,以前事务啊,日志都不需要自己配置,现在什么都要自己从头配置,压力挺大,花费的时间多,自己也慢慢练手这种搭建,享受这种搭建的过程。
在本次开发中,我深深感受到Mybatis的方便,以及把对象教给Spring做管理,这真的太方便了,真的是体验到了用注解开发的乐趣,因为朝着架构师的方向走去,还需要更多的开发经验,也不满足此阶段的实力,还需要多看SPring的源码。由于本次开发人数过少,经验偏低,所以跟实际商城项目比较还是有很多改进的目标。
7.2展望
本次基于SSM宜家灯具商城的开发仅仅只能满足前台跟后台交互的一些最基本的需求,由于社会调研不足,以及个人水平有限跟开发时间不够长跟正在的商城功能上有很多偏差,还有待提高自身水平以及对项目的实现。
(1)系统开发还应考虑高并发,数据传输速度等问题。
(2)支付接口,系统没有实现真正的线上支付,线上支付不仅仅只是贴个二维码那么low,他需要申请调用第三方接口如微信,支付宝接口,由于本人还不具备申请第三方接口的调用资格,所以在线支付目前没有实现。
(3)需求分析能力还应更广泛调查。
参考文献
[1].朱谦,罗新. 社区电子商务网上购物模式[J]. 现代经济信息. 2008。
[2].李贤华,基于JSP技术的大型网上购物系统的设计与实现[J]. 计算机与现代化. 2008。
[3].Changjie TANG, Rynson W.H. Qing LI, Huabei YIN, Tong LI and Danny Kilis,Personalized Courseware Construction Based on Web Data Mining, Proceedings of The First International Conference On Web Information System
[4].Zoya Ali. Designing Object Oriented Software Applications within the Context of Software Frameworks[D]. Ohio State University,2011.
[5]. Rachit Mohan Garg, YaminiSood, Balaji Kottana, Pallavi Totlani. A Framework Based Approach for the Development of Web Based Applications Waknaghat[J].Jaypee University of Information Technology,2011.
[6].岑红旗,浅析网上购物在中国的现状[J]. 时代金融. 2007。
[7].江志刚. 基于SSM框架的网上题目录入答题系统设计[J]. 无线互联科技, 2017.
[8].Dubois, Paul. Mysql. MySQL. 2005.
[9].石志国,JSP网络开发详解[M]. 北京:电子工业出版社,2007。
[10].Lewis B W. rredis: “Redis” Key/Value Database Client[J]. 2015.
[11].袁绪峰. 基于Spring框架的AOP编程[J]. 计算机与现代化, 2006(1):118-120.
[12].孙永丽, 刘成新. XML技术及其应用[J]. 中国电化教育(3):71-73.
[13].Ma, Kin-Keung, Foster, Jeffrey S. Inferring aliasing and encapsulation properties for java[J]. Acm Sigplan Notices, 42(10):423.
[14].Flanagan B D. JavaScript: The Definitive Guide[M]. 2011.

致 谢

光阴似箭日月如梭,一下子就到了要跟校园说拜拜的时候,在此非常感谢自己的父母,老师,以及同学们的帮助。特别感谢我的指导老师刘老师,她一直对我不抛弃不放弃,一直在提醒我的论文进度,一直在帮我找出论文哪里不足,特别是格式上,排版上,特别特别感谢刘老师。

  • 27
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值