文档介绍:第16单元网上购物系统
单元描述:本单元主要探讨基于JavaEE的Web应用系统的开发,将通过网上购物系统讲述使用JavaEE框架技术开发Web系统的过程。在描述该系统时,引入软件工程的概念,采用项目开发的顺序,一步一步展开。使学生在按照该案例进行操作的同时,提前体验以后软件开发岗位的工作。该系统采用B/S模式的四层开发模型进行设计,其数据库层由MySQL实现,表示层由JavaEE的Struts 2框架实现,业务逻辑层由Spring框架实现,数据持久化层由Hibernate框架实现。
单元目标:
l 掌握系统开发的主要步骤;
l 能够完成系统的需求分析和功能解析;
l 了解系统数据库设计的过程;
l 掌握数据库层、数据持久化层、业务逻辑层、表示层的开发步骤。
步骤1 网上购物系统需求分析
根据网上购物的基本特点,网上购物系统应具有如下基本功能:
(1)用户管理,即用户登录、注册、注销操作;
(2)商品浏览,即按照商品类别进行商品分类查询和浏览;
(3)购物车管理,即将用户选购的商品加入购物车,实现购物车的查询和更新;
(4)订单管理,即对用户选购的商品生成订单。
根据上述系统功能分析,设计网上购物系统的功能模块图如图16-1所示。
图16-1 网上购物系统功能模块图
用户管理
商品浏览
购物车管理
订单管理
按照商品分类查询
主界面
注销
注册
登录
查询
更新
添加
生成订单信息
步骤2 网上购物系统数据库设计
网上购物系统应包含用户、商品、商品分类信息,因此该系统的E-R图如图16-2所示。
图16-2 网上购物系统的E-R图
用户名
密码
性别
年龄
商品
用户
订购
m
n
购买数量
价格
库存量
折扣
图片
商品分类
属于
n
1
类别名称
商品名称
(1)用户:代表一个用户实体,主要包括用户信息,如用户名、密码、性别、年龄等。
(2)商品分类:代表网上购物系统中已有商品的分类信息,如精品图书、数码产品等。
(3)商品信息:代表具体商品的详细信息,如商品名称、价格、折扣、图片等。
各个实体之间存在的对应关系如下。
(1)商品分类与商品的关系:一种商品属于一种商品分类,一种商品分类包含多种商品,因此该关系是一对多的关系。
(2)用户与商品的关系:一个用户可以订购多种商品,一种商品可以被多个用户订购,因此该关系是多对多的关系。
图16-3 数据库中各表的关系图
当用户购买商品时,系统要将购买信息记载入购物车中,产生临时购买信息,并记载下需要购买的数量;当用户确定要对自己所选择的商品下订单时,将产生对应的订单信息。因此该系统需要5张表,分别为用户表、商品信息表、商品分类表、购物车表以及订单表。各表之间的关系图如图16-3所示。
其中,用户表(user)、商品分类表(productsort)、商品信息表(productinfo)以及购物车表(cart)已经在前面的章节中已经讲述过了,请读者参考。为了记录商品的图片信息,需要在商品信息表中添加一个picture字段,该字段的定义如表16-1所示。此处不再给出创建productinfo表以及向该表插入记录的SQL语句,请读者参考第10、11单元的内容自行修改,其余数据表的结构保持不变。
表16-1 “productinfo”表“picture”字段的结构
列名
数据类型
长度
是否允许为空
说明
picture
varchar
30
允许为空
记载图片名称
当用户确定要购买自己放在购物车中的商品时,便产生了订单,该系统的订单表(orders)的表结构如表16-2所示。
表16-2 “orders”表的表结构
列名
数据类型
长度
是否允许为空
说明
id
int
4
主键
订单编号
userId
int
4
不允许为空(外键)
用户编号
productId
int
4
不允许为空(外键)
商品编号
address
varchar
50
不允许为空
用户地址
telNum
varchar
15
允许为空
用户电话
e_Mail
varchar
50
不允许为空
用户邮箱地址
创建订单表(orders)的SQL代码如下:
create table if not exists orders
(id int primary key auto_increment,
userId int not null,
productId int not null,
address varchar(50) not null,
telNum