看课堂笔记。
基于BS结构进行开发。(浏览器与服务器:瘦客户端)
对于本系统,用户一共分成三种,普通用户(游客)、注册会员(注册用户)、管理员。
用户通过访问http://www.bookStore.com页面可能访问到书城首面。
对于普通用户可以浏览商品,查找商品,也可以注册成会员。
注册成会员后的用户,不仅可以完成普通用户具有的功能,还可以添加商品到购物车,并对购物车中的商品进行操作,并可以下订单。通过会员操作页面,查看与修改会员信息,对没有支付的订单进行支付操作及取消订单操作。
管理员可以添加查看商品,并修改商品信息,.可以查看所有订单,并对订单进行管理。并能下载销售榜单。
下面我们通过一个用例图来描述每一个角色可以具有的功能,如下图所示:
美工:第一版的页面可能是美工做的,用ps做的,会经过多次修改。
前端:前端开发人员做成静态网页。
后端:后端开发人员实现动态网页。
操作系统:Windows环境下运行
软件需求:MySql5.x
Tomcat7.x
本系统在实现上应该具有以下功能:
普通用户可以通过系统浏览商品信息 普通用户可以进行查询完成商品的查找 普通用户可以进行注册成为会员 会员可以浏览及查找商品 会员可以添加商品到购物车 会员可以查看购物车中商品并进行操作 会员可以下订单 会员可以浏览自己的商品 会员可以查看及修改个人信息 管理员可以添加商品 管理员可以下载销售榜单
管理员可以查看并管理订单
项目一共有以下几个模块:
用户注册
用户登录
用户激活
用户信息修改
商品浏览
商品查找
商品添加
商品删除
商品修改
订单创建
订单查看
订单删除
添加商品到购物车
购物车商品数量修改
购物车商品删除
根据ER图(实体关系图),我们分析当前系统具有以下几个模块:
用户,商品,订单,购物车
用户与订单之间存在一对多关系
(一个用户可以有多个订单)
商品与订单之间存在多对多关系
(一个订单中包含多个商品,一个商品被多个订单下单)
购物车我们暂时不将信息存储到数据库中,所以不用生成表。
创建数据库 create database productstore;
使用数据库 USE productstore;
用户表
CREATE TABLE `user` (
`id` INT(11) AUTO_INCREMENT,
`username` VARCHAR(20) ,
`PASSWORD` VARCHAR(20) ,
`gender` VARCHAR(10) ,
`email` VARCHAR(50) ,
`telephone` VARCHAR(20) ,
`introduce` VARCHAR(100),
`activeCode` VARCHAR(50) ,
`state` INT(11) ,
`role` VARCHAR(10) DEFAULT '普通用户',
`registTime` TIMESTAMP ,
PRIMARY KEY (`id`)
)
商品表
CREATE TABLE `products` (
`id` VARCHAR(100) ,
`name` VARCHAR(40) ,
`price` DOUBLE ,
`category` VARCHAR(40) ,
`pnum` INT(11) ,
`imgurl` VARCHAR(100) ,
`description` VARCHAR(255) ,
PRIMARY KEY (`id`)
)
订单表
CREATE TABLE `orders` (
`id` VARCHAR(100) ,
`money` DOUBLE ,
`receiverAddress` VARCHAR(255) ,
`receiverName` VARCHAR(20) ,
`receiverPhone` VARCHAR(20) ,
`paystate` INT(11) ,
`ordertime` TIMESTAMP ,
`user_id` INT(11) ,
PRIMARY KEY (`id`),
FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
)
订单项表
CREATE TABLE `orderitem` (
`order_id` VARCHAR(100) ,
`product_id` VARCHAR(100),
`buynum` INT(11) ,
PRIMARY KEY (`order_id`,`product_id`),
FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`),
FOREIGN KEY (`product_id`) REFERENCES `products` (`id`)
)
开发本系统我们所使用的工具与技术有:
Myeclipse10
tomcat7.x
mysql5.x
jst标签库
EL表达式
jsp
servlet
javabean
Filter
Listener
javaMail
commons-dbutils
commons-fileupload
commons-beanutils
c3p0
jdk1.6
jdbc
采用javaweb开发的三层架构
Web层
Service层
Dao层
使用自定义异常来描述问题。
UserException来描述关于用户的操作问题。
ProductException来描述关于商品操作问题。
OrderException来描述关于订单操作问题。
对于普通用户(游客),不可以操作购物车、下订单。
对于会员(注册用户),不可以添加商品、下载销售榜单。
与查看全部商品信息操作步骤一样,只是需要在传递一个类别信息进行查找。
删除购物车商品,我们可以通过修改购物车中商品数量来完成,只需要将数量设置为0就可以。
对于已经支付的订单,我们在删除订单时,不需要再修改商品的数量。
修改商品信息分成两个步骤:
1. 根据id查找商品信息回显
2.修改商品信息
导入mysql驱动
导入c3p0
导入dbutils
导入beanutils
导入fileupload
导入javamail mail.jar
导入jstl jstl.jar standard.jar
cn.itcast.bookStore.dao
cn.itcast.bookStore.service
cn.itcast.bookStore.web.servlet
cn.itcast.bookStore.web.filter
cn.itcast.bookStore.web.listener
cn.itcast.bookStore.domain
cn.itcast.bookStore.util
cn.itcast.bookStore.exception
User类
private int id; // 用户编号
private String username; // 用户姓名
private String password; // 用户密码
private String gender; // 用户性别
private String email; // 用户邮箱
private String telephone; // 用户联系电话
private String introduce; // 用户介绍
private String activeCode; // 激活码
private String role; // 用户角色
private int state; // 用户状态
private Date registTime; // 注册时间
Product类
private String id; // 商品编号
private String name; // 商品名称
private double price; // 商品价格
private int pnum; // 商品数量
private String category; // 商品分类
private String description; // 商品描述
private String img_url; // 商品图片路径
Order类
private String id; // 订单编号
private double money; // 订单总价
private String receiverAddress; // 送货地址
private String receiverName; // 收货人姓名
private String receiverPhone; // 收货人电话
private int paystate; // 订单状态
private Date ordertime; // 下单时间
private User user;
private List<OrderItem> orderitems; // 表示一个order对象,对应多个orderitem
OrderItem类
private Order order; // 订单
private Product product; // 商品
private int buynum; // 购物数量
PageBean类
private int currentPage; // 当前页码
private int totalPage; // 总页码数
private int pageSize; // 每页条数
private int count; // 总条数
private List<Product> products; // 每页显示的数据
private String category; //分类