基于MVC模式下的纯J2EE电子商务系统(B2C)项目需求说明书
最近一个多星期一直在搞这个项目,总算是快完成了,把项目需求说明书放上来
其实本来是想写个像淘宝一样的多种商品类型每个商品类型都有对应的不同属性的那种,但是那是真的麻烦,我就设计成了一种只卖服装的单品类商城
emmm这里面的字和图都是我一个个手打和画出来的,总共三千多字,也是慢慢的完善起来的(话说ppt画图是真的牛批)
这个项目也差不多写完了,可惜我不知道怎么部署到网页上。其实这个项目还远远不止这么点东西,还有很多很细节啊,还有没有讲到的模块
自己从头开始从网上找资料、从0开始表结构设计,大大小小改了无数次。确实是有所收获
这个项目也蒜是见证了自己的成长。啊,我也是能够写出东西的人了呀。而且说实话也没遇上啥很困难的点,可能是这个项目还不够深度把。
系统目标:
前台相关:
- 用户的登陆注册以及退出
- 首页展示商品列表、查看商品详情、分类页面、搜索结果页面的实现
- 实现购物车和订单功能,用户选择所需商品后,放到购物车
- 购物车实现:提交订单、确认订单、结算、支付
- 订单实现:我的订单、确认收货、收货成功、评价
后台相关:
- 管理员的登陆以及退出
- 分类管理:分类的增删改查、每类别中具体产品的增删改查
- 订单管理:订单查看详情、发货
- 用户管理:查
编写环境:
JDK1.8、Oracle数据库、Tomcat9服务器、编译器Spring Tool Suite
系统分析:
前端展示:
首页(大体设计如图)
登陆注册页面
产品页面
分类页面
搜索结果页面
购物车查看页
结算页
确认支付页
支付成功页
我的订单页
确认收货页
评价页(就是产品页的下面)
数据交互:
用户|管理员的注册、登陆、退出
首页大小类型的二级菜单栏动态显示
首页分类动态显示
分类页排序(按照综合、人气、新品、销量、价格…)、搜索(提交关键字到服务器。进产品表Like模糊查询一下返回匹配的产品)
商品详情页面动态获取库存数(根据商品id和规格id)
加入购物车,生成一个订单项(过滤器过滤未登录用户)
立即购买(直接跳到结算页,只有该条数据,不走购物车)
在购物车界面对订单项的删改查操作
监听用户退出或session域销毁,将session域中用户修改购物项(添加商品、删除商品或多买了几件少买了几件)之后的数据与数据库中的数据进行交叉修改保存
在结算界面提交订单(根据登陆用户、订单项信息生成订单数据)
订单页显示(根据订单项查询该订单下的所有订单项,显示图片、商品、规格、数量、价格、创建日期)
订单状态变换:关系如下图
后台:
点击大类型进入小类型,对小类型的分类管理(增删改查)
产品管理,对小类型所对应的所有产品的管理(增删改查)
产品图片管理(一个商品对应多条单个图片,一个商品对应多条详情图片)
用户查询
订单管理(查询,查看详情:这个订单由哪一些订单项构成,发货)
表结构设计:
用户表:(shop_user)
字段名 | 数据类型 | 是否为空 | 主键 | 外键 | 说明 |
user_id | number | Not null | 是 | 用户表主键 | |
user_name | varchar2(20) | Not null | 用户名 | ||
user_pwd | varchar2(20) | Not null | 密码 | ||
User_type | Number(1) | Not null | 0是普通用户,1是管理员 |
商品类型表:(shop_protype)
字段名 | 数据类型 | 是否为空 | 主键 | 外键 | 说明 |
prot_id | number | Not null | 是 | 大类型主键 | |
prot_name | varchar2(20) | Not null | 大类型名字 |
解释:大类型如衬衫、外套,小类型就是大类型所包含的,比如衬衫包含(牛津纺,水洗棉,牛仔,休闲,法兰绒),外套包含(运动户外,西服,羽绒服,夹克,大衣)
具体商品表:(shop_product)
字段名 | 数据类型 | 是否为空 | 主键 | 外键 | 说明 |
pro_id | Number | Not null | 是 | 主键 | |
prot_id | Number | Not null | 是 | 大类型id(shop_protype表) | |
pro_type | Varchar2(20) | Not null | 具体类型 | ||
pro_name | Varchar2(20) | Not null | 商品名 | ||
pro_ brand | Varchar2(20) | 品牌 | |||
pro_sex | Varchar2(2) | 男|女 | |||
pro_uad | Varchar2(4) | 上装|下装 | |||
pro_price | Number | Not null | 价格 |
商品规格表:(shop_prospe)
字段名 | 数据类型 | 是否为空 | 主键 | 外键 | 说明 |
Pros_id | Number | Not null | 是 | 主键 | |
Pro_id | number | Not null | 是 | 商品id(shop_product表) | |
pro_size | Varchar2(5) | Not null | 尺码 | ||
pro_color | Varchar2(10) | Not null | 颜色 | ||
pro_inv | Number(5) | Not null | 库存 |
商品图片表:(shop_pro_image)
字段名 | 数据类型 | 是否为空 | 主键 | 外键 | 说明 |
img_id | Number | Not null | 是 | 主键 | |
pro_id | Number | Not null | 是 | 商品表主键(shop_product表),对应某个商品 | |
img _type | Number(1) | Not null | 0为商品显示图片,1为商品详情图片 | ||
img _src | Varchar2(200) | Not null | 路径 |
商品评价表:(shop_pro_review)
字段名 | 数据类型 | 是否为空 | 主键 | 外键 | 说明 |
rev_id | Number | Not null | 是 | 主键 | |
user_id | Number | Not null | 是 | 用户表主键(shop_user表),对应某个用户 | |
pro_id | Number | Not null | 是 | 商品表主键(shop_product表),对应某个商品 | |
rev_msg | Varchar2(300) | Not null | 具体评价信息 |
订单项表:(shop_orderitem)
字段名 | 数据类型 | 是否为空 | 主键 | 外键 | 说明 |
itme_id | Number | Not null | 是 | 主键 | |
user_id | Number | Not null | 是 | 用户表主键,对应某个用户 | |
pro_id | Number | Not null | 是 | 商品表主键,对应某个商品 | |
Order_id | Number | 是 | 订单表主键,对应某个订单 | ||
Pros_id | number | Not null | 是 | 规格表主页,对应某个规格 | |
quantity | Number | Not null | 数量 |
订单表:(shop_order)
字段名 | 数据类型 | 是否为空 | 主键 | 外键 | 说明 |
Order_id | Number | Not null | 是 | 主键 | |
orderCode | Number | Not null | 订单号 | ||
address | Varchar2(100) | Not null | 收货地址 | ||
receiver | Varchar2(100) | Not null | 收货人信息 | ||
mobile | Number(11) | Not null | 手机号码 | ||
userMessage | Varchar(100) | 用户备注信息 | |||
createDate | Data | Not null | 订单创建日期 | ||
payDate | Data | 支付日期 | |||
deliveryDate | Data | 发货日期 | |||
confirmDate | Data | 确认收货日期 | |||
status | Number(1) | Not null | 订单状态 | ||
user_id | Number | Not null | 是 | 关联用户表,多对1 |
表关联关系:
用户在首页的购物流程:
项目注意事项:
1、项目工程名:DioShop
2、统一使用包名:以com.dioshop.xxx的格式,
如:com.dioshop.web.servlet | com.dioshop.pojo
3、序列名统一使用seq_表名,如商品图片表的序列应为: seq_shop_pro_image
4、所有pojo类必须实现Serializable接口
5、pojo类名与数据库表名一一对应,但是舍弃最前面的”shop”和所有的”_”下划线如:
用户表:(shop_user)所对应的pojo类名应为:User
商品评价表:(shop_pro_review)所对应的类名应为:ProReview
pojo类名注意事项:首字母必须大写,去除下划线
6、pojo类中与数据库相对应的属性名,名字必须一模一样。Pojo类中用于特殊操作的属性名自行定义。
7、所有方法严格遵守驼峰命名法,第一个单词全小写,第二个单词开始每个单词的第一个字母大写,如setName(),禁止使用意义不明的方法名
8、每个方法都必须写注释,在方法体上面使用/**+回车进行注释,详细说明该方法的实现原理以及使用方式,形参列表和返回值具体返回怎样的参数需要写清楚。@author标明实现此方法的人员姓名(我这个还没写形参具体是什么,写项目的时候最好都写上)
9、关于数据库的操作(增删改查)统一使用apache的dbutils.jar包,靠dbutil.jar实现不了的特殊功能,通过java内置的JDBC功能自个实现
10、图片命名规范:显示图片名字为:xs_商品id_数字.jpg(如xs_2_1.jpg,代表主键为2的商品的第1张显示图片)。详情图片相同,xs改为xq