版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1绪论
1.1问题的提出及研究意义
随着网络科技的发展与日益广泛的应用,传统线下购物方式已经面临改革,而网
上购物就是未来发展的一个趋势。现在商品的宣传早已经不局限与电视与报纸等传统
媒体,网络也是一个商家主要的平台。网上购物网站为我们提供了繁多的商品,通过
网络我们就可以轻松的买到我们想要的商品,网上购物系统是未来发展方向[1]。
对主顾而言,网上购物的长处大于它的错误谬误。在大数据的时期,主顾可以或
许更快的获得到他们想要的购物信息,而且可以通过网站的搜索功能对心仪商品的范
例、价钱进行选择,还可以经由商品的评价、销售量来进行判定。这些都能让顾客有
更好购物体验,也能避免额外的时间开销。
对于商家而言,在网上开店意味着耗费的资源更少,不需要为商品的频繁的上下
架而操心,也不需要花额外的时间去记录商品的数量利润等。因为这些繁琐的事务都
让平台的管理系统帮你完成好了。还有重要的一点是,你的网店可以面向更广阔的区
域,而不是局限于传统模式下的固定区域。
现如今线上购物在每行每业都占据着重要的地位,成为顾客、商家不可或缺的一
部分。商品的宣传已不局限于电视报纸等传统媒体行业,网络成为商家宣传的另一个
舞台。
1.2国内外研究现状及发展趋势
1995年,亚马逊和ebay在美国成立后,这种以互联网为依托的进行商品和服务交
易的新兴的经济活动,迅速的在全世界普及,不断的提高着经济质量与效率,改良了
人类现如今的生活方式,接踵而来的科技进步和产业的变化融和孕育着电子商务。近
几年,全世界的电商市场规模已超过25万亿美元,成为了现如今世界经济的新闪光点
[3]o
1998年,阿里巴巴等B2B电子商务企业成立。2003年,淘宝网、京东等B2c电
商平台开始发展,中国的电商开始了急速发展的年限。2016年,我国电商交易额已相
当于国民生产总值的36%,2011年至2017年,交易额8.1万亿元增长至26.1万亿元,
年增长率35%。网络零售交易额从1.31万亿元增长至5.16万亿元,年增长率40%[4]。
2016年电商产生消费增量带动生产制造、物流、批发等产生税收超过2000亿元(图
1.2)o
L3系统开发目标与意义
我国的电子商务起源于前十几年,以淘宝网为首的交易平台的出现对早期用户的
购物习惯有着非常大的影响。电商发展早期,由于市场的信任机制和管理机制的不完
善,线下实体厂都是以某一个区域为中心,网购卖家主要以小型代理商或者个人店铺
为主。随着电商市场的不断发展完善,商品质量与购买舒适度成为影响顾客下单的重
要因素。本系统就是在淘宝、京东已经建立好的基础上不断完善,给目标客户提供方
便、实用的信息服务,为了实现网站商务功能最大化的目标。使之在页面上更美观、
突出科技感.本系统的最终目的是为了方便顾客与商家,保证两者之间的利益同时,
更能为他们带来使用上的便捷。
1.4论文的主要内容及结构
本论文的主要内容和结构分为以下六部分:
绪论:说明了本系统的研究意义、发展趋势、开发目标。
系统相关技术简介:介绍了系统需要的技术。
需求分析:主要说明了系统总体的需求分析及可行性。
系统总体设计:主要说明了系统的架构设计及数据库表设计。
系统的实现:主要说明了本系统的功能模块的实现。
系统测试:主要说明本系统如何进行测试。
2
2需求分析
2.1市场可行性分析
目前,实体店由于日常处理信息量大,耗费时间长,所投入的前期成本及人力都
是巨大的,而且店铺的生意好坏与商家的管理息息相关。从商家的角度出发,可能会
因为管理的不善而导致经济损失。而本系统正是可以解决这些问题,让商家更好地预
测市场,在激烈的市场竞争中把握主动。从顾客角度出发,网上购物省时省力,还能
货比三家不吃亏。
2.2技术可行性分析
从技术可行性上来讲,本系统采用Java开发,现在Java语言功能强大,有良好的
生态圈,性能及开发效率都是无可比拟的。Java里面的SSM架构也可以让开发效率更
上一层楼。1仙且我们采用HTML+CSS也可以做出让客户满意的界面。
2.3经济可行性分析
本系统只要一次开发就可以一直使用,你只需要在前期投入相应的开发成本,及
后期少量的维护成本,并且此系统可以不断升级改造,吸引更多用户。我们只需要做
好前期的宣传,让用户浏览网站,让商家入驻就可以立即看到经济效益。
2.4功能需求分析
首先,你需要知道这个需求是一个功能,还是一个相对独立的产品。如果是系统
中的一个功能,则需要考虑怎么兼容己有的系统。如果是一个相对独立的产品,那么
可以直接开始。
2.4.1功能需求划分
本系统的开发目的就是为顾客商家提供一个方便快捷的网购环境。所以本系统划
分为两个部分:面向顾客:顾客可以不需要登录在我们网站上进行商品的浏览搜索,
看到想要的商品也可以加入购物车,当需要购买时就必须要登录注册才能进行下单。
面向商家:商家可以进入管理后台,进行商品的增删查改,也可以对商品的规格分类
进行管理。
242功能业务流程图
通过对系统功能的大概划分我们可以做出如下流程图(图2.1):
3
内存:8Go
操作系统:Windows10。
运行环境、服务器:JDK1.7、Tomcat8.0o
开发工具:IDEA2018.3。
数据库:MysqL
5
3系统开发相关技术简介
3.1Java语言概述
Java是面向对象的语言,它的特性很像C与C十十,但摒弃了它们中的一些缺点。
采用Java编写的程序具有良好的移植性,因为它与平台无关,只要有JVM,就可以在
不同的平台运行而不需要编译。
3.2Spring概述
Spring设计的初衷是解决企业开发的复杂性,它能让开发者编写出低耦合,更易
管理测试的代码。这些都依赖与它的控制反转和面向切面的特性。现在大部分的代码
都开始支持spring管理。
3.3SpringMVC概述
SpringMVC对JAVAWEB开发提供了支持,能让开发者灵活的开发出MVC架构,
让系统各个模块之间分离,降低耦合性。因为它也是spring公司开发的,所以它和spring
能够完美的结合。
3.4MyBatis概述
MyBatis是一个优秀的ORM(对象关系映射)框架,它去除了JDBC繁琐的代码
和参数配置,采用了基于XML和注解的方式进行SQL开发。
3.5Redis概述
Redis是一个开源,基于键值对的非关系型数据库。Redis虽然是单线程,可是它
性能极高。Redis也提供了丰富的数据结构,如list、set^hash。
3.6Solr概述
Solr是一个基于Lucene的企业级搜索服务器。它能够提供全文搜索功能,且能够
完全独立运行,通过Solr我们可以快速的搭建出一个企业级的搜索引擎。
6
4系统总体设计
4.1系统结构设计
考虑到单个服务器的处理能力已经无法承受大量的请求,并且硬件的提升(内存、
磁盘、CPU)已经成本巨大,系统也很难进行更好的优化,所以本系统采用分布式架
构:把系统按照模块拆分成多个子系统。分布式有如下优点:
把不同功能拆分开,通过接口来进行通信,降低模块之间的耦合度。
如果你需要再加某个功能,只需要在父项目下建立一个模板。
每一个子项目部署在不同服务器上,互不影响。
我们在子系统的设计上可以采用三层架构,三层架构就是将整个项目划分为:界
面层、业务逻辑层、数据访问层。
1、数据访问层:与数据库相关,主要对用户数据进行操作。
2、业务逻辑层:与系统业务相关。接收用户的指令,提交给数据访问层做处理,
同时负责处理结果返回给用户。
3、界面层:与用户交互的界面。主要用于接收用户提交的数据和返回用户需要的
页面及数据。
经过细致的划分,我把系统分为以下几个部分(图4.1):
后台管理系统:管理商品、商品规格属性、以及内容发布等功能。
前台系统:用户可以在前台系统中进行注册、登录、浏览商品、查看商品详情、
首页、下单等操作。
订单系统:用户可以下单、查询订单。
搜索系统:搜索商品。
单点登录系统:为多个不在同一域名下的系统之间,提供用户登录凭证以及查询
登录用户的信息。
缓存系统:为商品提供缓存,减少数据库压力。
7
图4.1系统功能模块
4.2数据库设计
表4.1用户表(jd_user)
字段名称字段说明类型主键长度是否为空
idIDbigint是20否
username用户名varchar否50否
password密码varchar否50否
phone手机号varchar否20是
email邮箱varchar否50是
created创建时间datetime否50是
updated更新时间datetime否50是
表4.2首页内容表(jd_contenl)
字段名称字段说明类型主键长度是否为空
idIDbiginl是20否
catcgory_id内容类别bigint否20否
ID
title内容标题varchar否200否
sub_title子标题varchar否20是
title_desc标题描述varchar否500是
url链接varchar否500是
pic图片链接varchar否500是
pic2图片链接varchar否500是
content内容varchar否500是
8
created创建时间datetime否5()是
updated更新时间datetime否50是
表4.3首页内容类别表(jd_contenl_category)
字段名称字段说明类型主键长度是否为空
idIDbigint是20否
parcnt_id内容类别IDbigint否20否
name内容标题vaichar否50否
status状态int否1是
sort_order排列序号int否4是
is_parent是否为父类int否1是
目
created创建时间datetime否50是
updated更新时间datetime否50是
表4.4商晶表(jd_item)
字段名称字段说明类型主键长度是否为空
idIDbigint是20否
title商品标题varchar否100否
sell_point商品卖点varchar否500是
price价格bigint否20是
num库存数int否10是
image图片链接varchar否50()是
cid所属类目bigint否10是
status状态int否1是
created创建时间datetime否50是
updated更新时间datetime否5()是
表4.5商品类别表(jd_item_catcgory)
字段名称字段说明类型主键长度是否为空
idIDbigint是20否
parent_id商品类别IDbigint否20否
name类别名称varchar否50否
status状态int否1是
sort_ordcr排列序号int否4是
is_parent是否为父类int否1是
目
created创建时间datetime否50是
9
updated更新时间datetime否5()是
表4.6商品描述表(jd_item_desc)
字段名称字段说明类型主键长度是否为空
item_id商品IDbigint是20否
item_desc商品描述varchar否1000否
name类别名称varchar否50否
created创建时间datetime否50是
updated更新时间datetime否50是
表4.7商品规格参数表(jd_item_param)
字段名称字段说明类型主键长度是否为空
idIDbigint是20否
item_cat_id商品类目IDbigint否20否
param_data参数数据varchar否1000否
created创建时间datetime否50是
updated更新时间datetime否50是
表4.8商品规格与商品关系表(jd_item_param_item)
字段名称字段说明类型主键长度是否为空
idIDbigint是20否
item_id商品IDbigint否20否
param_data参数数据varchar否1000否
created创建时间datetime否50是
updated更新时间datetime否50是
表4.9订单表(jd_order)
字段名称字段说明类型主键长度是否为空
order_id订单IDbigint是20否
payment实付金额varchar否50是
payment_type支付类型int否1是
post_fee邮费varchar否50是
status状态int否2是
create_time订单创建时datetime否5()是
间
updatc_timc订单更籽时datetime否50是
间
payment_time付款时间datetime否50是
consign_time发货时间datetime否50是
1()
end_time交易完成时datetime否5()是
间
shipping_code物流单号varchar否20是
user_id用户idbigint否20否
表4.10订单详情表(jd_order_item)
字段名称字段说明类型主键长度是否为空
idIDbigint是20否
itemjd商品idvarchar否50是
ordcr_id订单idvarchar否50是
num商品购买数int否5是
量
price商品单价bigint否20是
total_fee商品总金额bigint否20是
pic_path商品图片地varchar否200是
址
I
••r一—4
vreeted
■•rt_«rd«r
till*v<i
“i«•bi«
图4.2各表关系图
ii
5系统的实现
5.1系统页面的实现
页面的设计量由于比较大,所以我采用前端框架的设计方式来节约时间。我采用
的是EasyUI,它是一组基于jQuery的UI插件集合体,它主要帮助后台开发更轻松的打
造出功能复杂并且美观的界面。它不需要编写复杂的JS,也不需要对css样式有深入
的了解,并且只需要了解的一些简单的html标签。它给我们提供了用于创建跨浏览器
网页的完整的组件集合,包括为网页开发提供了一堆的常用UI组件,菜单、对话框、
布局、窗帘、表格、表单等等组件。像很多数据表格的设计、我们只需要返回EasyUI
规定的格式,它就能帮我们把数据渲染好,生成带有css样式的表格,这样就大大节约
了我们设计的时间,也让不懂前端的人可以更好的把重心放在后台模块的设计上。
5.2系统功能模块的实现
由于我们采用的分布式系统,所以在划分好每一个子系统之后就可以开始进行开
发了。
子系统的的开发是可以独立进行的,各个子系统互不相干。因为我们的架构是
SSM,所以在这里我们需要配置好他们之间的关系文件。Spring整合mybatis主要是让
spring来管理
mybatis的sqlsessionfactory(图5.1)。
spring整合springmvc最主要的是开启注解扫描和视图解析器,还有资源映射,后
期我们可能会用到文件上传,所以我们在这里也配置好文件上传解析器
MultipartResolvero
由于配置文件是通用的,所以其他系统也可以使用已经配好的文件。
<beaiiid=nsqlSessioiiFactory'*class=uorg.mybatis.spring.SqlSessionFactoryBeann>
<propeitynaine="configLocation"value="classpath:mybatis/SqlMapCoufig.xiiir'/>
<propeityname="dataSource'1ref="dataSource'r/>
</bean>
<!-配置扫描包.加载mapper代理对象一>
<beaiiclass="org.niybatis.spriug.mapper.MapperScaiuiei'Coiifigurei',>
<propertynanie="basePackage"vahie="coni.taotao.mapper”/>
</beaii>
图5.1spring整合mybatis
5.2.1后台管理系统的实现
后台系统的数据库涉及到jd_content、jd_contcnt_catcgory>jd_itcm、
12
jd_item_category>jd_item_descsjd_item_paramo在这里我们实现需要创建好这些表对
于的bean,因为手动创建太过繁琐,所以我们可以使用官方的nipper自动生成工具
mybatis-generator来生成po类和mapper映射文件。后面我们就可以开始后台系统的架
构,这里我们采用的三层架构,
dao-service-controller([?|5.2)。
▼taotao-manager
>■src
taotao-manager-mapper
>taotao-manager-pojo
taotao-manager-service
taotao-manager-web
图5.2后台管理系统架构
后台管理需要商品的添加、查询商品、增加规格参数等功能。
商品的添加页面(图5.3)已经设计好,功能的主要难点是商品的类别、还有图片
的上传。商品类别我们使用的是EasyUi的树形菜单,我们只需要返回规定的json数据
就可以。
to[{"id":l,"name":"qM}],我们需要查询出父节点与name就可以。而图片我打算使
用FTP服务器,图片上传到服务器中,然后在数据库中存储图片路径就可以了。
书品受目:选择臭目
百品标&
我国卖点:
周员价悟:
库存敷■:
条形附
一图片:上怕网片
kJl-0AAA三三引
HI•夕・〃•A,A・R/U。谯2囱"。4v
音晶嫡江:
提交
图53商品添加页面
查询商品最主要的是分页,Easyui中datagrid控件要求的数据格式为:{total:"
10",rows:[{“id”:“1“,“name“,“1"},{“id”:“2“,“name“,”2"}]}o在这里
13
我们可以使用mybatis中的pagehelper,你只需要返回当前页数与一页的数量,它就会自
动帮你分好页。
5.2.2前台系统的实现
本系统的主界面(图5.4)
♦Yk”VMJ9MIVMI•rum
ffin.on.m¥nvjAA**
*用电«|〃月
HUft.2■家居家照
iM陵
狂欢继续购M*ATWMOC4Vlt*”季・,RW
«JW1acasMAN«ta>
人,网M低至9.9
4HQ□曲
H'••c
o
・m内衣
家电通讯
.•mew
±Ama
■itwma
▼也<3OWV•MDL-5OW(12Q「W・,
tlLCO42M«S.42tfV*,wit*nrwR®f.
,3•X
蜿帅沐柏
rXxJfel.tn・*・
FHfi2>^n=n<RiiwQ
必K-KAEHMSUMMTMS
■899.00B5188.0011499.0•9900.OO
图5.4前台页面
系统的页面分为三大部分:头部、中部、底部。头部有一个搜索框,用户可以搜
索他们想要的商品。在中部-left,我们可以看见所有商品的分类,这一部分是通过遍历
数据库jd_item_category表来实现的。中部-middle是有一个大的轮播图,这里是通过
读取FTP服务器上面的地址来进行加载。中部其他部分都是一些美化效果。底部的图
片展示也是通过随机获取数据库的jd」tcm表来展示,数据库只是存储了图片地址,真
正的源头还是在FTP服务器上面。
5.2.3订单系统的实现
订单系统的功能分析如下:
1、用户不登陆网站的时候也能加入购物车,这时我们就可以把购物车列表放入
cookieo
2、把商品信息,存放进对象,然后通过工具转成json存入cookie中。
3、取商品信息可以从cookie中把json数据取出来,然后转成实体。
4、购物车分为四种动作
(1)添加|荀品;
(2)修改商品数量;
(3)删除购物车中的商品;
(4)展示购物车商品列表;
有了这些功能需求之后就可以直接开发,首先从cookie中取出购物车信息,转换
成一个个商品实体,再从requesl域中取到用户信息,点击下单时我们就可以把这些信
14
息写入数据库。
5.2.4搜索系统的实现
搜索系统由于需要进行全表搜索,对数据库的压力极大,这里我们使用Solr。
首页安装Solr,我们把它部署在Linux上,通过zookcepcr来进行管理。
Solr其实也是一个web项目,我们需要把它部署到tomcat下面启动。
把中文分词器IK分词包,复制到Solr服务中的lib目录中,找到配置文件
suheiiia.xiiil,添加中文分词器的配置。
访问Soh*主页,进行测试。
把数据库中的商品信息导入索引库,所有商品的id、名称、卖点、价格、图片、
分类名称等。这里我们使用的基于Java的SolrJo通过SolrlnputDocument把从数据库
查询的信息导入Solr中。
搜索服务需要使用到SoIrQuery(图5.5),我们设置好需要分页的条件,需要搜索的
域,从前台获取到的搜索条件,以及需要高亮的词语。然后把SoIrQuery代入至SolrSever
中获取到QueryResponse通过它我们最后能得到SolrDocumentList,通过遍历它就能获
取到搜索结果(图5.6)。
〃创建查询对象
SoIrQueryqueiy=newSoIrQuery。;
〃设置查询条件
query.setQuery(queryString):
〃设置分页
queiy.setStait((1)*rows);
queiy.setRows(rows);
〃设置默认搜素域
query.setC'df1,"item_keyurordsn);
〃设置高亮显示
query.setHighlight(trae);
query.addHighlightFieldC4temtitle");
queiy.setHiglili2htSiniplePre(,'<einstyle=\"cok)i:ied\">");
query.setHighlightSimplePost(,,</em>n);
〃执行查询
SearchResultsearchResult=searchDao.seaich(queiy):
图5.5SoIrQuery
15
•电政,■雷总好!我国聋利T;矍!阻术H兔费;主嫌]我的,!单含员一任外国手机南国,客户修舞,用旃航
外的用图▼VJ去g梅与继・
加泗棒:联四之星
±21«>>16.
1234下一页,小页ft*1B<8(定
MX4亥&l<ii4Gtf(10GROM)H*MM灰色”外4G蝴166ROM)蛀残MX4铮m除劭4G匹(16GR0M)蛀*MX4闲减后日U・4Gff(l6GR0
M)
X1868.00¥1868.00¥1969.00“1869.00
由心国女转由由心友田由由段发猪由海舟矍田
WwwwwWwWWW*****WWW**
图5.6搜索结果展示
5.2.5单点登录系统系统的实现
首先得介绍一下什么是单点登录:在同一个公司不同域名下,同一个用户登录后,
就可以不要在本公司其他系统中再次登录,也就是用户登录一次之后获得所有其他系
统的信任。下面是它的实现:
1、登录页面提交用户名密码。
2、登录成功后生成token。它就相当于cookie中的jsessionid。
3、把用户对象的信息保存到redis+□Key为token,value为用户对象转换成的json。
4、使用String类型保存Session信息(图5.7)。
5、还需要设置key的过期时间。
6、把token写入cookie中。
7^若有多个系统,Cookie需要跨域。例如\\,
我们可以使用Spring带的跨域类。
8、Cookie的有效期。关闭浏览器失效。
9、登录成功。
Shingjson=jedisClient.get(REDIS_USER_SESSION_KEY+n:"+token);
if(StringUtils.isEmpty(json)){
returnTaotaoResuIt.build(400,MJtsession己经过期,请重新登录");
}
jedisClient.expiie(REDIS_USER_SESSION_KEY+M:-+tokeii.SSO_SESSION_EXPIRE);
returnTaotaoResult.ok(JsonUtils.jsonToPojo(json.TbUser.class));
图
5.7查看redis中是否有token
16
5.2.6缓存系统系统的实现
缓存系统我们使用的redis,有了这一层缓存,我们可以极大的减轻数据库的压力。
首先需要安装好redis,这里我们把它部署到redis中。
我们采用的是Jcdis,通过spring来管理,使用是只需要注入jcdisClicnt。
访问商品时首先需要在redis中查看是否有相关的缓存,有则取,没有则把商品信
息序列化成json写入,key为商品id,value则为json数据(图5.8)。
〃把商品信息写入缓存
jedisClient.set(REDISJTEMKEY+":"+itemld+”:base”,JsonUtils.objectToJson(itein));
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年沈阳市皇姑区政务服务中心(窗口人员)招聘考试试题及答案详解
- 2026年石家庄市裕华区工会人员招聘考试模拟试题及答案详解
- 2026年焦作市山阳区政务服务中心(窗口人员)招聘笔试备考题库及答案详解
- 2026年护理技术操作试题及答案
- 2026年广西壮族自治区柳州市工会人员招聘考试备考试题及答案详解
- 2025年宁夏回族自治区吴忠市政务服务中心(窗口人员)招聘笔试试题及答案详解
- 2026年马鞍山市金家庄区医疗系统事业编人员招聘笔试参考试题及答案详解
- 集宁区就业市场调研报告
- GB 44023-2024 燃气用具连接内用橡胶复合软管标准立项发展报告
- 生活普法试题及答案
- 四川水电站安全管理办法
- 与建设单位的协调沟通机制及配合措施
- HY/T 0465-2024红树林修复与利用地埋管网系统技术指南
- T/CTRA 01-2020废轮胎/橡胶再生油
- T/CECS 10237-2022绿色建材评价供暖空调输配系统用风机、风管、水泵
- 铁路信号设计与施工铁道信号自动控制专业教学17课件
- 教研员考试试题及答案
- 呼吸衰竭的抢救和护理
- DL∕T 5344-2018 电力光纤通信工程验收规范
- DL∕T 1342-2014 电气接地工程用材料及连接件
- 个人宾馆转让合同
评论
0/150
提交评论