数据库(MySQL):

account(用户表;没有外键),  profile(用户侧面信息表;有两个外键:catid,username),

category(宠物总分类表--鱼;没有外键),  product(宠物小分类表--金鱼;有一个外键:catid),

item(具体宠物分类--凤尾龙睛;有一个外键:productid),  orders(订单表;没有外键),

cart(购物车表;有两个外键:itemid,orderid; 主键:itemid 和 orderid作为联合主键)

account (用户表) 和 profile (用户的辅助信息;侧面信息) 是一对一关系。

//profile里有一个外键(username) 与 account里的主键(username)相对应。account没有外键。

category (宠物总分类表)  和 profile (用户侧面信息表)  是 多对多关系。//一类宠物可以有多个买家,买家也可以买多类宠物。

//profile里有一个外键(catid) 与 category 里的主键(catid)相对应。category 没有外键。

category (宠物总分类表)  和 product(宠物小分类)  是 一对多关系。//一类宠物有多个品种。

//product里有一个外键(catid) 与 category 里的主键(catid)相对应。category 没有外键。

product(宠物小分类) 和 item(具体宠物分类) 是一对多关系。//一类品种下的一只只狗。

//item里有一个外键(productid) 与 product里的主键(productid)相对应。

cart(购物车) 和 item(具体宠物分类) 是 一对多关系。

//cart里有一个外键(itemid) 与 item里的主键(itemid)相对应。

cart(购物车) 和 orders(订单表) 是 一对一关系。

//cart里有一个外键(orderid) 与 item里的主键(orderid)相对应。

用到的技术:

Spring + SpringMVC + MyBatis + Freemarker + MySQL

实现的功能:

登录、注册(Spring校验)、查询宠物(总分类、小分类、具体分类)、购物车

业务逻辑:

orders表里有一个orderdate字段,该字段为空表示没有结账。

cart表里itemid 和 orderid作为联合主键:也就是说同一张表里不能有相同的宠物具体分类,如果想订多个,用quantity字段控制(多次买合并,quantity+1)。

最开始是index页(从control层跳转过来的)

直接点进入商店 左上角显示游客(session为空)

右上角登录 登录失败显示红字 登录成功跳转到商店页面 并显示名字

注册:在下拉框(异步的)显示所有宠物大分类.(Spring 校验)。

进入商店后,显示宠物大分类(category),点击进入后显示该大分类下的宠物小分类(product);

再点击进入宠物小分类里是具体宠物分类(item):该页面有宠物的简单信息,可以点击加入购物车直接加入购物车(并进入购物车页面),也可以点击宠物序号进入宠物详细介绍页面

宠物详细介绍页面:该页面也是显示item表里的数据,只不过信息更详细,还有宠物的图片(数据库里存的是图像名<#assign ppath=request.contextPath><img src="${ppath}/static/images/${item.product.pic}"> 这样就取出来了),该页面也可以把商品加入购物车(并进入购物车页面)。

购物车页面:

该页面显示已加入购物车内的商品,并且可以改变宠物数量的值或删除该宠物,然后点击Update Cart按钮,合计和总计会计算出相应的值。

这时虽然Orders表里已经产生一笔数据,但是它的orderdate字段为空,表示没有结账。

直到点击下面的按钮表示提交订单,orderdate字段才会添加当前时间,表示已结账并记录当前时间。

然后页面返回到刚进入商店时的宠物大分类页面

最后附上该项目的源码:

https://github.com/chenzhida666/PetStore

最新文章

  1. OpenCV,计算两幅图像的单应矩阵
  2. 使用CFURLCreateStringByAddingPercentEscapes进行URL编码
  3. 用idea写servlet文件
  4. Linux makefile教程之总述二[转]
  5. DWZ框架学习
  6. iOS 操作系统架构
  7. 截取字符串一之slice
  8. Android - DrawerLayout
  9. 201521123005 《Java程序设计》第1周学习总结
  10. Sping IOC
  11. 三方面搞定http协议之“状态码”
  12. vagrant之常用操作
  13. 登录Linux服务器显示IP和自定义备注
  14. 梯度下降与pytorch
  15. 实验三 敏捷开发与XP实践 实验报告 20135232王玥
  16. 求好用的在线手册编写工具,能编写像bootstrap在线Doc那种的,想为OpenCenter写个在线手册
  17. Highcharts网页版
  18. 优步uber司机常见问题与答案(成都地区官方)
  19. USACO 2.3.4 Money Systems 货币系统(完全背包)
  20. [Angular-Scaled Web] 6. Navigating between states with ui-router

热门文章

  1. 新建web项目时css注意事项
  2. elasticsearch索引查询,日志搜素
  3. bzoj3957: [WF2011]To Add or to Multiply
  4. 织梦CMS如何在首页调用指定的文章 idlist
  5. javaScript实现增删改查
  6. 更改NavigationView侧滑菜单文字颜色
  7. 简单的JDBC封装
  8. SocketErrorCode:10022
  9. 读取文件中的每行数据,并且存入到list中
  10. 【旧文章搬运】ZwQuerySystemInformation枚举内核模块及简单应用