第1章 绪 论
1.1研究背景
网上购物重新定义了传统的流通模式,减少的客户直接去店里面的这里环节。利用B2B模式,使得生成者和和消费者的直接交易模式成为可能,从而很大程度上改变了整个社会的经济运行方式。另一方面呢,网上购物如同它的名字一样,很容易受到网路的波动而影响其销量与其稳定。在交易安全,交易管理等问题仍有很大的问题需要改善。但是随着近几年来中国网络的高速发展,其他国家用一百多年的时间来进行网络的改进,而我国在几十年短暂时间的发展,网上的活跃用户已经破亿。人们的生活水平提高了,对于居住的环境也逐渐好起来,家庭的居住条件也更加的要求多彩。进而对家居的购物需
1.2研究现状
企业信息化和网上购物的研究范畴演进
“信息化”(informatization)已经是家喻户晓的一个流行语术。对于信息化的概念,还是有日报学者在20实际60年代首先提出的,主要是“推进与使用信息技术”,随着大数据的浪潮来临,各种信息接踵而来。目前全球5000万的互联网网站中,有60%以上使用PHP技术,国内80%以上的动态网站都是使用PHP开发的。基于以上,星家家居购物网站设计孕育而来,有了硬件的基础加持下,设计出来更加得心应手。
用户化需求化和网上购物的研究范畴演进
网上购物相对于其他传统的销售渠道,能够让厂家直接面对广大消费者,很大一部分加快了物流,资金流和信息流,这三大流的速度。并且能够随时随地与更多潜在的消费着进行通信。
1.3研究内容及意义
1.3.1意义
随着电子科技的不断进步,现在购物不在是单一的线下购物形式,如外国的最大电商网站亚马逊(amazon),在世界的各个地方都有它的足迹。慢慢的在中国每一天的购物商品也在网上购物形成了一种固定的消费习惯。而家具是每一个家庭或者说是每一个人都或多或少需要的准必需品。不管你是租房的,抑或是买房的。都需要家具来添点家的气息。而这里的家具设计网站主要以家具为主体,包含各类的配件,以及后面的领域的逐步覆盖。众所周知,网上商店具有高效,快捷,信息畅通的特点,还可以很大程度上降低商家的销售成本。(很大一部分原因是我国的5G网络的普及,以及高铁等各个交通的覆盖)
1.3.2内容
星家家居网站设计主要实现电子商务的购物车模块,方便顾客浏览后想购买的欲望。以及前端的其他个人页面的展示,添加收藏,加入购物,用户登录和注册,在线与客服聊天,查看商品状态,评价商品,管理商品等功能。
0 1.4 用户消费观念的个人看法
相信马云被四大部门约谈的消息可谓是一石激起千层浪,整个经济领域对此猜测不断,随后蚂蚁集团暂缓上市。然而,这与用户的消费习惯有什么关系呢?别急,请往下听。蚂蚁旗下的花呗这一功能服务
主要业务是“借钱”。然后和商家绑定消费者的模式进行消费。俗称用未来的钱还现在的债。强调用户提前消费。这一观点我并不否认。但是提前消费要有个度,或者更 直白一点就是消费在哪里,比如家居必须品这一块。在此不是为了打广告,而是真真切切的希望消费者们把未来的钱花到该用的地方上,以此谨记。
1.5本文主要结构
通过对本课题研究和分析确定本文的结构。分为七个部分:
第一部分:绪论,介绍论文的选题背景及来源、研究现状、本文结构。
第二部分:介绍相关开发技术,以及包括一些技术背景资料。
第三部分:系统需求分析介绍,包括系统模块需求分析以及系统性能需求分析。
第四部分:介绍数据库的特点和数据库逻辑设计。
第五部分:系统详细设计与实现,介绍各用户视图的设计与实现。
第六部分:系统测试,包括测试环境及过程,性能测试。
第七部分:总结与展望。
第2章 数据库设计和相关软件概述
2.1数据库分析
前提提要
数据库分析采用的软件
Navicat,word,幕布,precession on画图软件。
2.1-1 数据表图
星嘉家居网站设计数据表分类,细分为发布,商品,图片地址,订单,订单项目,购物车,用户,浏览人,地址,管理员,类别,聊天,收藏,评论。
2.2数据库UML设计
户和管理员用例图:
2.2-1图
用户登录模块
地址UML
聊天(chat)UML
评论(comment)UML
产品id(goodid)UML
图片路径(imagepath)UML
订单项目(orderitem)UML
用户(user)UML
订购(indent)UML
2.3 数据库逻辑设计
逻辑结构就像我们生活中的具体对象,有属性等附加值。在实际应用中,一般的数据库环境已经给出。就想所用到的mysql一样。我们把设计每一个属性转换成关系模型,然后根据具体的数据库的特点和限制转换成特定的数据库支持的数据模型,最后进行优化。(优化:可以是代码功能模块的,也可以是前端的)
设计步骤:
- 将概念结构转换为一般的逻辑,层次模型。最好是我们可以直观的看出的
- 将转换的关系,层次模型向mysql支持的数据模型转换(相应的字段不同)
- 对数据模型进行优化处理
而我设计的数据库名称为myshop,相关的表可以看下图结构
- 活动信息表,相关的字段有活动名称,活动名字,打折,等。看下图
下面是创建activity表的sql语句:
DROP TABLE IF EXISTS activity
;
CREATE TABLE activity
(activityId
int(12) NOT NULL AUTO_INCREMENT,activityName
varchar(50) NOT NULL,activityDes
varchar(500) NOT NULL,discount
float DEFAULT ‘1’,fullPrice
int(12) DEFAULT NULL,reducePrice
int(12) DEFAULT NULL,fullNum
int(12) DEFAULT NULL,reduceNum
int(12) DEFAULT NULL,
PRIMARY KEY (activityId
)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
2. 地址信息表,是关于用户个人的地址信息,方便商家及时联系,发货的步骤,字段有,地址id,用户id,省份等。
下面是创建adress表的sql语句:
DROP TABLE IF EXISTS address
;
CREATE TABLE address
(addressID
int(12) NOT NULL AUTO_INCREMENT,userId
int(12) NOT NULL,province
varchar(50) NOT NULL,city
varchar(50) NOT NULL,county
varchar(50) NOT NULL,detailAddr
varchar(50) NOT NULL,conName
varchar(50) NOT NULL,conTel
varchar(50) NOT NULL,
PRIMARY KEY (addressID
),
KEY addressID
(addressID
),
KEY userId
(userId
),
CONSTRAINT address_ibfk_1
FOREIGN KEY (userId
) REFERENCES user
(userId
) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
3. 管理员信息表,里面内容很少,但是很重要,主要用管理id,管理名字,密码。
下面是创建admin表的sql语句:
DROP TABLE IF EXISTS admin
;
CREATE TABLE admin
(adminId
int(12) NOT NULL AUTO_INCREMENT,adminName
varchar(50) NOT NULL,password
varchar(50) NOT NULL,
PRIMARY KEY (adminId
)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
4. 种类信息表,字段有种类id,种类的名字。
下面是创建category表的sql语句:
DROP TABLE IF EXISTS category
;
CREATE TABLE category
(cateId
int(12) NOT NULL AUTO_INCREMENT,cateName
varchar(50) NOT NULL,
PRIMARY KEY (cateId
)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
5. 聊天信息表,这是客服和用户沟通的桥梁,字段有消息内容,消息发送时间,发送者,接收者等
下面是创建chat表的sql语句:
DROP TABLE IF EXISTS chat
;
CREATE TABLE chat
(chatId
int(20) NOT NULL AUTO_INCREMENT,sendUser
int(12) NOT NULL,receiveUser
int(12) NOT NULL DEFAULT ‘0’,MsgContent
varchar(255) NOT NULL,MsgTime
datetime NOT NULL,
PRIMARY KEY (chatId
),
KEY sendUser
(sendUser
),
KEY receiveUser
(receiveUser
)
) ENGINE=InnoDB AUTO_INCREMENT=73 DEFAULT CHARSET=utf8;
6. 收藏信息表,喜欢就点呗。字段用户id,产品id,收藏时间。
下面是创建collection表的sql语句:
DROP TABLE IF EXISTS collection
;
CREATE TABLE collection
(userId
int(12) NOT NULL,goodsId
int(12) NOT NULL,collectTime
datetime NOT NULL,
PRIMARY KEY (userId
,goodsId
),
KEY collection_ibfk_2
(goodsId
),
CONSTRAINT collection_ibfk_1
FOREIGN KEY (userId
) REFERENCES user
(userId
) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT collection_ibfk_2
FOREIGN KEY (goodsId
) REFERENCES goods
(goodsId
) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7.评论信息表,字段用评论id,用户id,产品id等。
下面是创建comment表的sql语句:
DROP TABLE IF EXISTS comment
;
CREATE TABLE comment
(commentId
int(12) NOT NULL AUTO_INCREMENT,userId
int(12) NOT NULL,goodsId
int(12) NOT NULL,point
int(8) NOT NULL,content
varchar(255) NOT NULL,commentTime
datetime NOT NULL,
PRIMARY KEY (commentId
),
KEY userId
(userId
),
KEY goodsId
(goodsId
),
CONSTRAINT comment_ibfk_1
FOREIGN KEY (userId
) REFERENCES user
(userId
) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT comment_ibfk_2
FOREIGN KEY (goodsId
) REFERENCES goods
(goodsId
) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
8.传输信息表,字段有传输id,订单id,发送id
下面是创建deliver表的sql语句:
DROP TABLE IF EXISTS deliver
;
CREATE TABLE deliver
(deliverId
int(12) NOT NULL AUTO_INCREMENT,orderId
int(12) NOT NULL,sendId
int(12) NOT NULL,
PRIMARY KEY (deliverId
),
KEY orderId
(orderId
),
CONSTRAINT deliver_ibfk_1
FOREIGN KEY (orderId
) REFERENCES indent
(orderId
) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
9.产品信息表,字段产品id,产品名字,价格,数量,创建时间,种类,细节描述等。
下面是创建goods表的sql语句:
DROP TABLE IF EXISTS goods
;
CREATE TABLE goods
(goodsId
int(12) NOT NULL AUTO_INCREMENT,goodsName
varchar(50) NOT NULL,price
int(12) NOT NULL,num
int(12) NOT NULL,upTime
datetime NOT NULL,category
int(12) NOT NULL,detailCate
varchar(50) NOT NULL,description
text NOT NULL,activityId
int(12) NOT NULL DEFAULT ‘1’,
PRIMARY KEY (goodsId
),
KEY activityId
(activityId
),
KEY category
(category
),
CONSTRAINT goods_ibfk_1
FOREIGN KEY (activityId
) REFERENCES activity
(activityId
) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT goods_ibfk_2
FOREIGN KEY (category
) REFERENCES category
(cateId
) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=utf8;
10.图片信息表,字段有路径id,产品id,具体路径。
下面是创建imagepath表的sql语句:
DROP TABLE IF EXISTS imagepath
;
CREATE TABLE imagepath
(pathId
int(12) NOT NULL AUTO_INCREMENT,goodId
int(12) NOT NULL,path
varchar(255) NOT NULL,
PRIMARY KEY (pathId
),
KEY goodid
(goodId
),
CONSTRAINT imagepath_ibfk_1
FOREIGN KEY (goodId
) REFERENCES goods
(goodsId
) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=149 DEFAULT CHARSET=utf8;
11.订购信息表,字段有订单id,用户id,订单的时间等。
下面是创建indent表的sql语句:
DROP TABLE IF EXISTS indent
;
CREATE TABLE indent
(orderId
int(12) NOT NULL AUTO_INCREMENT,userId
int(12) NOT NULL,orderTime
datetime NOT NULL,oldPrice
float NOT NULL,newPrice
float NOT NULL,isPay
tinyint(1) NOT NULL,isSend
tinyint(1) NOT NULL,isReceive
tinyint(1) NOT NULL,isComplete
tinyint(1) NOT NULL,addressId
int(12) NOT NULL,
PRIMARY KEY (orderId
),
KEY userId
(userId
),
KEY orderGoods
(orderTime
),
KEY addressId
(addressId
),
CONSTRAINT indent_ibfk_1
FOREIGN KEY (userId
) REFERENCES user
(userId
) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT indent_ibfk_2
FOREIGN KEY (addressId
) REFERENCES address
(addressID
) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
12.订单项目表,字段有项目id,订单id,货物id,数量。
下面是创建orderitem表的sql语句:
DROP TABLE IF EXISTS orderitem
;
CREATE TABLE orderitem
(itemId
int(12) NOT NULL AUTO_INCREMENT,orderId
int(12) NOT NULL,goodsId
int(12) NOT NULL,num
int(12) NOT NULL,
PRIMARY KEY (itemId
),
KEY orderId
(orderId
),
KEY goodsId
(goodsId
),
CONSTRAINT orderitem_ibfk_1
FOREIGN KEY (orderId
) REFERENCES indent
(orderId
) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT orderitem_ibfk_2
FOREIGN KEY (goodsId
) REFERENCES goods
(goodsId
) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;
13.购物卡片信息表,字段有用户id,产品id等。
下面是创建shopcart表的sql语句:
DROP TABLE IF EXISTS shopcart
;
CREATE TABLE shopcart
(userId
int(12) NOT NULL,goodsid
int(12) NOT NULL,cateDate
datetime NOT NULL,goodsNum
int(12) NOT NULL,
PRIMARY KEY (userId
,goodsid
),
KEY userId
(userId
),
KEY goodsid
(goodsid
),
CONSTRAINT shopcart_ibfk_1
FOREIGN KEY (userId
) REFERENCES user
(userId
) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT shopcart_ibfk_2
FOREIGN KEY (goodsid
) REFERENCES goods
(goodsId
) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
14.用户信息表,字段有用户id,用户名字,密码等。
下面是创建user表的sql语句:
DROP TABLE IF EXISTS user
;
CREATE TABLE user
(userId
int(12) NOT NULL AUTO_INCREMENT,username
varchar(50) NOT NULL,password
varchar(50) NOT NULL,regTime
datetime NOT NULL,email
varchar(50) NOT NULL,telephone
varchar(50) NOT NULL,
PRIMARY KEY (userId
),
KEY userId
(userId
)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
2.3.2相关技术介绍
spring mvc
spring mvc 角色划分清晰,分工明确,在网上都有很多关于它的教程,在这里只是做了一个很简单的介绍。
概念:
M代表 模型(model)
模型是什么? 模型就是代码设计里面的包dao,bean类,就是数据。
V 代表 视图(view)
视图时什么呢?就是我们平常看的手机呀,电脑网页,用来展示模型中的数据的。
C 代表 控制器(controller)
控制器是什么呢?控制器就是包不同数据模型,显示在不同的视图上,也就是我们俗称的组织领导,做着整合的工作。Servlet就是扮演的这么一个角色。
下面是spring mvc的架构图:
图3-1 spring mvc 架构图
Mybatis
Mybatis 架构及原理分析
Mybatis 时支持制定化的sql,存储过程一起高级隐射的持久层框架,主要是:
- 封装jdbc操作
- 利用反射打通java类与sql语句的相互转换
Mybatis的主要设计目的是让我们对执行sql语句时对输入输出的数据管理更加的方便,所以更加方便的写出sql和获取sql执行结果才是mybatis的核心竞争力。
下面是mybatis的架构图:
图3-2 mybatis 架构图
Bootstrap
Bootstrap,来自外国的twitter,类似于中国的微博,是目前最受欢迎的前端框架。是基于HTML,CSS,javascript。
目的:简介灵活,把我们平常用到的布局之类的封装起来,使得web的开发更加的快捷。
Bootstrap实质:用于前端开发的开源工具包。
下面是bootsrap的架构图:
图3-3bootstrap 架构图
Jquery
概念:Jquery是目前最流行的javascript程序库,是对javascript对象和函数的封装
设计思想:写更少的代码,做更多的事。
其实,jquery说白了就是javascript库的高度压缩库
特点:
体积小,压缩只有100kb左右
强大的选择器
出色的dom封装
可靠的事件处理机制
下面是jquery的架构图:
图3-4 jquery 结构图
Activemq(消息中间件)
概念:activemq 是apache提供的一个开源的消息系统,完全采用java来实现的,它能够很好地支持java消息服务规范。提供消息的创建,发送,读取等一系列服务。类似于我们平时的qq,微信,微博等发布订阅的消息中间件。
Activemq发布订阅模型图片
图3-5activemq 发布订阅图
下面是active 发布消息过程:
图3-6activemq 发送消息过程
Mysql(数据库)
概念:mysql是一个关系型数据库管理系统。目前是apche的一种开源免费的数据库产品。Mysql数据库是一种c/s模型(即客户端和服务端模型),客户端通过账号,密码来登录才可以进行数据库的操作,如增删改查等。
本质:管理数据的系统。
下面是mysql的存储过程图:
图3-7mysql存储过程
第3 章 系统设计
2.3系统分析
系统分析目的:
本阶段主要在系统规划的基础上进异步的对系统进行分析和需求调查,然后得到系统的数据流程以及处理的过程,为下一阶段做好铺垫工作。
系统运作基本环节以及体系结构
用户环节
- 登录环节:登录采用的是验证码登录这一步骤,主要是用户登录购买东西时候验证用户信息,方便下一步操作。
- 主页面环境:在此页面,用户可以收藏自己喜爱的物品,也可以直接购买,还包括修改自己的收货地址,个人信息等
- 当用户想要购买自己心仪的产品时候,如果没有账号的化,就要进行注册。
管理员环节 - 用户管理:可以进行用户的添加,和删除用户。
- 商品管理:添加商品到自己的主页上面,同时还可以进行商品的打折销售,活动等。
- 订单管理:对以下单的的产品进行统筹管理。
- 客服管理:和用户聊天的窗口。
系统的体系结构:
3.2系统业务流程
星嘉网站的业务流程:
用户通过网页来登录激活,将此操作通过servlet传到后台,登录成功后,就可以看到用户的主页面。在主页面上可以看到个人信息。
选择自己喜欢的产品加入购物车,确认订单给后台。
如果提交就不成功,返回到个人信息,添加地址,修改地址后在提交,等到管理员确定后成功(即使响应)提交。
星嘉家居网站业务流程图:
第4 章星嘉家居网站的设计实现
4.1系统实现阶段
系统简述
系统设计过程也可以分为两大阶段:高层设计阶段和详细设计阶段。具体的我们可以看下图:
网站的设计是此项目最重要的环节,本系统主要的语言是用的java,主要的开发工具是intellij idea 数据库采用的是mysql5.7,服务器则用到的是apache tomcat9.0,前端页面是用的bootstrap,jquery
聊天的中间件是active mq(第二章有介绍)。整个项目是基于SSM
框架。
第5章 系统测试
5.1 测试目的
5.2 测试方法
5.3测试环境
5.4测试用例
第6章 总结与展望
6.1 总结
6.2 展望