bookStore商城开发文档

bookStore商城开发文档

一、项目演示

看课堂笔记。

二、需求分析

  2.1、系统体系结构

基于BS结构进行开发。(浏览器与服务器:瘦客户端)

  2.1、系统总体流程

  2.3、功能描述

对于本系统,用户一共分成三种,普通用户(游客)、注册会员(注册用户)、管理员。

用户通过访问http://www.bookStore.com页面可能访问到书城首面。

对于普通用户可以浏览商品,查找商品,也可以注册成会员。

注册成会员后的用户,不仅可以完成普通用户具有的功能,还可以添加商品到购物车,并对购物车中的商品进行操作,并可以下订单。通过会员操作页面,查看与修改会员信息,对没有支付的订单进行支付操作及取消订单操作。

    管理员可以添加查看商品,并修改商品信息,.可以查看所有订单,并对订单进行管理。并能下载销售榜单。

下面我们通过一个用例图来描述每一个角色可以具有的功能,如下图所示:

  2.4、系统界面

美工:第一版的页面可能是美工做的,用ps做的,会经过多次修改。

前端:前端开发人员做成静态网页。

后端:后端开发人员实现动态网页。

   2.4.1、前台界面

    商城首页
    注册页面
    登录页面
    图书浏览页面
    图书详细信息页面
    购物车页面
    用户管理页面
    用户信息修改页面
    订单管理页面

   2.4.2、后台页面

    后台首页
    商品操作页面
    商品添加页面
    下载榜单页面
    订单管理页面

三、概要设计

  3.1、运行环境

操作系统:Windows环境下运行

软件需求:MySql5.x

Tomcat7.x

  3.2、基本功能需求

本系统在实现上应该具有以下功能:

普通用户可以通过系统浏览商品信息 普通用户可以进行查询完成商品的查找 普通用户可以进行注册成为会员 会员可以浏览及查找商品 会员可以添加商品到购物车 会员可以查看购物车中商品并进行操作 会员可以下订单 会员可以浏览自己的商品 会员可以查看及修改个人信息 管理员可以添加商品 管理员可以下载销售榜单

   管理员可以查看并管理订单

  3.3、功能模块设计

项目一共有以下几个模块:

    用户模块

用户注册

用户登录

用户激活

用户信息修改

    商品模块

商品浏览

商品查找

商品添加

商品删除

商品修改

    订单模块

订单创建

订单查看

订单删除

    购物车模块

添加商品到购物车

购物车商品数量修改

购物车商品删除

  3.4、程序流程图

    3.4.1、用户模块

    注册流程
    登录流程
    激活流程
    用户信息修改流程

    3.4.2、商品模块

    商品浏览
    商品查找
    商品添加
    商品删除
    商品修改

    3.4.3、购物车模块

    添加商品到购物车
    购物车商品数量修改
    购物车商品删除

    3.4.4、订单模块

    订单创建 订单查看
    订单删除

  3.5、数据库设计

    3.5.1、ER图(实体关系图)

    3.5.2、表设计

根据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`)
        )

四、系统设计

  4.1、开发环境

    开发本系统我们所使用的工具与技术有:

Myeclipse10

tomcat7.x

mysql5.x  

jst标签库 

EL表达式 

jsp 

servlet 

javabean

Filter 

Listener 

javaMail 

commons-dbutils

commons-fileupload 

commons-beanutils 

c3p0 

jdk1.6  

jdbc

  4.2、架构设计

    采用javaweb开发的三层架构

Web层

Service层

Dao层

五、详细设计

  5.1、问题处理机制

  5.1.1、功能问题

使用自定义异常来描述问题。

UserException来描述关于用户的操作问题。

ProductException来描述关于商品操作问题。

OrderException来描述关于订单操作问题。

  5.1.2、权限问题

对于普通用户(游客),不可以操作购物车、下订单。

对于会员(注册用户),不可以添加商品、下载销售榜单。

  5.2、前台功能

  5.2.1、用户操作:

    用户注册
    用户激活
    用户登录
    用户信息修改

  5.2.2、商品操作

    查看全部商品(分页)
    根据分类查看商品(分页)

与查看全部商品信息操作步骤一样,只是需要在传递一个类别信息进行查找。

    搜索商品
    查看商品详细信息

  5.2.3、购物车操作

    添加商品到购物车
    查看购物车中商品
    修改购物车中商品数量
   删除购物车中商品

删除购物车商品,我们可以通过修改购物车中商品数量来完成,只需要将数量设置为0就可以。

  5.2.4、订单操作

    生成订单
    查看订单
    删除订单(未支付订单)
    删除订单(已支付订单)

对于已经支付的订单,我们在删除订单时,不需要再修改商品的数量。

    订单的在线支付

  5.3、后台功能

    5.3.1、商品操作

    查看商品列表
    商品添加
    修改商品信息

    修改商品信息分成两个步骤:

1. 根据id查找商品信息回显

2.修改商品信息

    多条件商品查找
    商品删除
    下载销售榜单

  5.3.2、订单操作

    查看订单列表(查看所有订单)
    订单查询(多条件查询)
    订单详细信息查看
    订单的删除(只能删除支付后的订单)

六、编码实现

  6.1、环境搭建

    导入jar包 

导入mysql驱动 

导入c3p0 

导入dbutils

导入beanutils

导入fileupload 

导入javamail mail.jar

导入jstl jstl.jar standard.jar

    建立package结构 按照JavaEE 三层结构

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

    domain类编写 

        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; //分类

  6.2、功能实现

    用户注册

    用户激活

    用户登录

    商品添加

    商品显示

    商品修改

    商品删除

    添加商品到购物车

    购物车商品数量修改

    购物车商品删除

    生成订单

    订单查看

    订单删除

    下载榜单

    权限控制

    系统重构

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

走向云端:Oracle SQL Developer Web 即将上线!

引言:Oracle SQL Developer 是一款免费的桌面应用,是数据库的图形用户界面,它具有 DBA 的全部功能,能够对 PL/SQL 进行开发,还有命...

15220
来自专栏企鹅号快讯

mysql分表的3种方法

推荐阅读 微服务:springboot系列教程学习 源码:Javaweb练手项目源码下载 调优:十五篇好文回顾 面试笔试:面试笔试整理系列 一,先说一下为什么要...

284100
来自专栏后端技术探索

MySQL 数据库优化(运维角度)

一个成熟的数据库架构并不是一开始设计就具备高可用、高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善。这篇博文主要谈MySQL数据库发展周期中所面临的问题...

32720
来自专栏MYSQL轻松学

MySQL高可用性解决方案—Percona XtraDB Cluster

MySQL的历史演变: 1985 年,瑞典的几位志同道合小伙子成立了一家公司,这就是MySQL AB 的前身 1996年年初,MySQL 1.0发布 1996年...

89350
来自专栏IT技术精选文摘

58同城数据库架构设计思路

(1)可用性设计 解决思路:复制+冗余 副作用:复制+冗余一定会引发一致性问题 保证“读”高可用的方法:复制从库,冗余数据,如下图 ? 带来的问题:主从不一致 ...

25270
来自专栏Java架构沉思录

数据库分库分表如何避免“过度设计”和“过早优化”

关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引...

26020
来自专栏程序你好

MySQL 8支持文档存储,并带来性能和安全方面的改进

18210
来自专栏实用工具入门教程

如何部署 MediaWiki

MediaWiki是一个流行的免费wiki软件包。它与维基百科使用的软件相同,是完全动态的,可以在LAMP堆栈上运行,利用PHP语言和MySQL数据库后端。通过...

43120
来自专栏数据库

Github推荐:MySQL DBA不可错过的五大开源管理工具!

对于数据库管理员(DBA)来说,保持数据库运行在最佳状态需要具备敏捷,专注,快速反应的能力以及一颗冷静的头脑。数据库几乎是所有应用程序成功运行的核心,由于DBA...

779100
来自专栏数据和云

不以规矩 不成方圆

我在多年以前写下的DBA四大守则,其中的一条是“不以规矩,不成方圆”。任何一个企业的运维环境,都需要基本的规矩和准则,有所遵守、有所规范,才能保持长治久安,不出...

30030

扫码关注云+社区

领取腾讯云代金券