一、网上商城
1.1网上商城介绍
- 网上商城类似于现实世界当中的商店,差别是利用电子商务的各种手段,达成从买到卖的过程的虚拟商店,从而减少中间环节,消除 运输成本和代理中间的差价,造就对普通消费和加大市场流通带来巨大的发展空间。尽可能的还消费者以利益,带动公司发展和企业 腾飞,引导国民经济稳定快速发展,推动国内生产总值。
1.2商城类别
英文类别 | 介绍 | 典型代表 |
---|---|---|
B2B | Business To Business,商家对商家 | B2B典型代表有阿里巴巴。中国制造网,慧聪等,主要是从事批发业务; |
B2C | Business To Customer,商家对顾客销售 | B2C典型代表有当当网、京东商城、中国购、凡客诚品、稀货街等; |
C2C | Customer to Customer,客户和客户 | C2C典型代表有淘宝、鸟差、易趣、拍拍、百度有啊等。 |
020 | Online To Offline,线上线下相结合 | 020典型代表有象屿商城。 |
1.3商城常见模块
-
后台常见功能模块
- 商品管理:包括后台商品库存管理、上货、出货、编辑管理和商品分类管理、商品品牌管理等。
- 订单管理:在线订单程序,使消费者能够顺利的通过WEB在线的方式,直接生成购买订单。
- 商品促销:一般的购物系统多有商品促销功能,通过商品促销功能,能够迅速的促逬商城的消费积极性。
- 支付方式:即通过网上钱包、电子支付卡。进行网上资金流转换的业务流程;国内主流支付方式包括:支付宝、财富通、网银在线等。还有部分网上商城支持货到付款,如京东商城、第九大道、鹏程万里贸易商城。
- 配送方式:购物系统集成的物流配送方式,从而方便消费者对物流方式进行在线选择。如:EMS、顺丰等等。
- 会员模块:在购物系统中,集成会员注册是吸引会员进行二次购买和提升转换率的方式。
-
前端界面功能模块
- 模板风格自定义:即通过系统内置的模板引擎,可以方便的通过后台可视化编辑,设计出符合自身需求的风格界面。
- 商品多图展示:随着电子商务的发展商品图片成为吸引消费者的第一要素,多图展示即提供前台多张图片的展示,从而提升 消费者的购物欲望。
- 自定义广告模块:内置在系统中的广告模块,网站管理员能够顺利的通过操作就可以在前端界面中添加各种广告图片。
- 商品展示:通过前端界面,以标准的或者其他个性化的方式向用户展示商品各类信息,完成购物系统内信息流的传递。
- 购物车:用户可对想要购买的商品进行网上订购,在购物过程中,随时增删商品。
二、软件开发流程【重点】
- 软件开发流程即软件设计思路和方法的一般过程,包括对软件先进行需求分析,设计软件的功能和实现的算法和方法、?欠件的总体结 构设计和模块设计、编码和调试、程序联调和测试以及编写、提交程序等一系列操作以满足客户的需求并且解决客户的问题,如果有 更高需求,还需要对软件进行维护、升级处理,报废处理。
2.1周期和阶段
- 从管理的角度,即从业务和经济的角度来看,软件的生命周期包括四个主要阶段
- 起始阶段(Inception)–有一个好的想法:具体构想出终于产品的设想和它的业务案例,确定项目的范围
- 细化阶段(Elaboration)–计划必要的活动和所需资源,具体确定功能并设计构架。
- 构建阶段(Construction)–构建产品,发展最初的设想、构架和计划,直到一个能够交付给用户的产品(完毕后的设想)完毕。
- 移交阶段(Transition)–将产品移交用户使用,包含:交付、培训、维护。
2.2开发流程
2.2.1. 需求分析
-
产品经理向客户初步了解需求,然后用相关的工具软件列出要幵发的系统的大功能模块,每个大功能模块有哪些小功能模块,对 于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。
-
产品经理深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档 会清楚列出系统大致的大功能模块,大功能模块有哪些小功能模块,并且还列出相关的界面和界面功能。
-
产品经理向客户最终确认需求。
2.2.2. 概要设计
- 首先,开发者需要对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系 統的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础
2.2.3. 详细设计
- 在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计中,描述实现具体模块所涉及到的主要算法、数据结构、类 的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。详细设计 应当足够详细,能够根据详细设计报告进行编码。
2.2.4. 编码
- 在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程 序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。在规范化的研发流程中,编码工作 在整个项目流程里最多不会超过1/2,通常在1/3的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会极大提高,编码时 不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度,让很多程序员因此被迫停下工作等 待,这种问题在很多研发过程中都出现过。编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug永远存在,你 必须永远面对这个问题!
2.2.5.测试
- 测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能。软件测试有很多种:按照测试执行方,可以分为内部测试 和外部测试;按照测试范围,可以分为模块测试和整体联调;按照测试条件,可以分为正常操作情况测试和异常情况测试;按照测试 的输入范围,可以分为全覆盖测试和抽样测试。以上都很好理解,不再解释。总之,测试同样是项目研发中一个相当重要的步驟,对 于一个大型软件,3个月到1年的外部测试都是正常的,因为永远都会有不可预料的问题存在。完成测试后,完成验收并完成最后的一 些帮助文档,整体项目才算告一段落,当然日后少不了升级,修补等等工作,只要不是想通过一锤子买卖骗钱,就要不停的跟踪软件 的运营状况并持续修补升级,直到这个软件被彻底淘汰为止。
2.2.6.软件交付
- 在软件测试证明软件达到要求后,软件开发者应向用户提交开发的目标安装程序、数据库的数据字典、《用户安装手册》、《用户使 用指南》、需求报告、设计报告、测试报告等双方合同约定的产物。《用户安装手册》应详细介绍安装软件对运行环境的要求、安装 软件的定义和内容、在客户端、服务器端及中间件的具体安装步骤、安装后的系统配置。《用户使用指南》应包括软件各项功能的使 用流程、操作步骡、相应业务介绍、特殊提示和注意事项等方面的内容,在需要时还应举例说明。
2.2.7.验收
- 用户验收。
2.2.8.维护
- 根据用户需求的变化或环境的变化,对应用程序进行全部或部分的修改。
三、MyShop项目介绍
3.1开发环境
分类 | 名称 | 语种 |
---|---|---|
操作系统 | 无要求 | 简体中文 |
数据库平台 | Mysql5.7+ | - |
应用服务器 | tomcat 8 + | - |
Java开发工具 | eclipse/idea | |
框架 | 无 | |
项目名称 | 自定义 |
3.2主要功能
本系统的主要功能如下:
序号 | 模块名称 | 主要功能 |
---|---|---|
1 | 商品显示模坱 | 分页显示所有商品查看单个商品详细信息搜索商品 |
2 | 用户模块 | 新用户注册用户登录用户退出 |
3 | 购物车模块 | 加入商品到购物车修改所购商品数量 |
4 | 订单模块 | 提交订单并显示订单信息用户确认后生成正式订单用户查看历史订单 |
5 | 支付模坱 | 完成在线支付功能 |
6 | 收货地址 | 管理收货地址 |
7 | 后台模块 | 主要实现商品的增删改查 |
3.3项目展示
- 导入项目
- 导入数据
- 运行
- 效果展示
四、数据库设计【重点】
- 数据库设计(Database Design)是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。
4.1 PowerDesigner设计软件介绍
- Power designer是能进行数据库设计的强大的软件,是一款开发人员常用的数据库建模工具。使用它可以分别从概念数据模型 (Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进行设计。
4.1.1概念数据模型CDM
- 概念数据模型描述的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义 在CDM中用来标识实体的是属性(Attribute)。
4.1.2物理数据模型PDM
-
物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化。
-
PDM的对象:表(Table)、表中的列(Table column)、主外键(Primary、Foreign key)、参照(Reference)、索引(Index)、视图 (View)等。
-
在PDM中用来表示实体属性的是列(Column)。
4.1.3CDM 和 PDM 对比
-
CDM概念数据模型:描述要存储的实体、属性、实体关系!
-
PDM物理数据模型:对概念数据库模型进行升级,将实体转化成具有数据库特性的模型!
-
实体–》表,属性-列!更进一步的完成数据设计!
-
总结:类似抽象类和实现的关系!
4.1.4数据库设计步驟
- 设计CDM模型
- 生成PDM模型
- 生成DBMS脚本
4.2用户模块涉及表
-
用户模块主要设计到用户登录和注册功能以及地址选择功能!
-
所以!用户模块设计两张表用户表和地址表!
-
用户表
- 存储用户信息包含会员和管理员
字段 | 类型 | 主键 | 约束 | 备注 |
---|---|---|---|---|
id | int | 是 | 自增 | 序号 |
username | Varchar(20) | Not null | 用户昵称 | |
password | Varchar(64) | Not null | 密码,使用md5 | |
Varchar(50) | Not null | 邮箱,不可重复 | ||
gender | Varchar(2) | 性别 | ||
flag | int | 状态标记:0未激活1激活2无效 | ||
role | int | 角色:0管理员1会员 | ||
code | Varchar(lOO) | 激活码 |
- 收货地址表
- 存储用户的收货地址
字段 | 类型 | 主键 | 约束 | 备注 |
---|---|---|---|---|
id | int | 是 | 自增 | 序号 |
detail | varchar(200) | Not null | 详细地址 | |
name | Varchar(20) | Not null | 收件人姓名 | |
phone | Varchar(ll) | Not null | 手机号 | |
uid | int | 外键 | 用户id | |
level | int | 地址的顺序1最高 |
4.3商品模块涉及表
- 商品类别
字段 | 类型 | 主键 | 约束 | 备注 |
---|---|---|---|---|
id | int | 是 | 自增 | 序号 |
name | varchar(50) | Not null | 类型名称 | |
level | int | Not null | 类型的级别123 | |
parent | int | Not null | 上级序号,没有0 |
- 商品表
字段 | 类型 | 主键 | 约束 | 备注 |
---|---|---|---|---|
id | int | 是 | 自增 | 序号 |
name | varchar(lOO) | Not null | 名称 | |
pubdate | date | 时间 | ||
picture | varchar(255) | Not null | 商品图片 | |
price | int | 价格 | ||
star | int | 评分 | ||
info | text | 商品详情 | ||
typeid | int | 外键 | 商品类型 |
4.4购物车模块涉及表
- 购物车表
字段 | 类型 | 主键 | 约束 | 备注 |
---|---|---|---|---|
id | int | 是 | 外键 | 用户序号 |
pid | int | 是 | 外键 | 商品序号 |
num | int | 数量 | ||
money | int | 金额 |
4.5订单模块设计表
- 订单表
字段 | 类型 | 主键 | 约束 | 备注 |
---|---|---|---|---|
id | varchar(lOO) | 是 | 序号 | |
uid | int | 外键 | 用户序号 | |
money | double(8,l) | 订单总金额金额 | ||
status | int | 订单状态:0未支付、1支付失败、2支付成功、3发货、4到货、5评价 | ||
time | datetime | 订单时间 | ||
aid | int | 外键 | 收货地址序号 |
- 订单详情
字段 | 类型 | 主键 | 约束 | 备注 |
---|---|---|---|---|
id | int | 是 | 自增 | |
pid | int | 外键 | 商品序号 | |
oid | varchar(lOO) | 外键 | 订单编号 | |
num | int | 数量 | ||
money | double(8,l) | 金额 |
4.6后台管理模块
- 后台管理模块没有新表
五、项目搭建和准备工作
- 完成基础项目搭建
5.1创建项目
5.2导入工具类
5.3导入jar包
5.4导入配置文件
5.5导入页面
5.6创建BaseServlet [重点】
5.6.1创建BaseServlet必要性!
-
现在我们只要实现一个功能,我们就需要创建一个servlet!
例如:用户模坱(登录,注册,退出登录,激活,发送邮件等等功能)
也就是说,我们必须要创建一些系列的Servlet:UserLoginServlet->登录功能!UserRegisterServlet->注册功能!总之,只要你实现一个功能,你就得创建一个servlet!
-
这种情况会有两个弊端!
- 创建大量的servlet! servlet实例一>web容器(tomcat)管理!有大量的servlet实例必然会占有更大的运行内存!会间接的拖慢web容器的速度!
- servlet他的service(doget/dopost)方法是一个多线程方法!也就说理论上说! servlet:可以并发的处理请求!一个servlet能力 很强但是只对应一个功能!你不觉得浪费么?
-
BaseServlet我们想解决的问题就是!简化和优化Servlet的创建和数量!
5.6.2BaseServlet的实现思路如下:
-
为什么一个servlet只对应一个功能!
- 一个servlet被访问以后,只会有一个方法被调用,通常我们习惯一个方法中写一个套业务逻辑!
- 一个servlet对应一个方法对应一个业务功能!
-
分析Baseservlet实现的思路
- 让一个servlet对应多个方法就好了!每个方法都实现一个业务逻辑!
- 具体的实现思路
- 步骡1:在一个servlet声明多个处理业务逻辑方法!
- 步骡2:在每次访问servlet的时候在路径上添加一个标识!标识用于判断要访问具体业务逻辑方法!
- 步骤3:当每次请求到doget/dopost/service方法的时候,判断参数的标识,调用对应的业务逻辑方法即可!
5.6.3BaseServlet 的实现
-
实现基本的BaseServlet
-
优化方法调用
利用标识符的字符串和方法名相同!
我们可以利用反射的技术!调用对应的执行方法!
避免了大量的判断!
当有新的方法出现的时候!也不需要额外的添加判断方法!
service(){
1.获取标识符
2.根据标识符调用对应的逻辑方法
利用反射技术!
}
-
优化多Servlet实现
实现思路:
我们创建一个BaseServlet类,让他去继承HttpServletIBaseServlet中写service方法!
在service写 1.获取标识 2.反射调用业务逻辑 (把公共代码提取出来)
每个模块对应的Controller只需要继承BaseServlet即可!
HttpServlet —> BaseServlet —> 模块的Controller
-
优化返回值问题
每个方法都要进行响应!
响应的方式固定:转发 重定向 返回字符串 返回字节流
如果在每个方法写转发和重定向和返回字符串的语法比较繁琐!
我们可以统一在BaseServlet进行处理!
操作:
步骤1:将方法的返回值改成字符串即可!
步骤2:根据约定的内容,添加特殊的标识!(之后通过String截取来获取是转发还重定向还是其他)
例如:转发“forward:路径”
步骤3: BaseServlet集中处理
执行方法!获取返回值!进行非空判断!
截取标识!进行转发重定向或者写回字符串处理!
好处:简化方法的响应的操作!
注意:没有管返回字节文件!
返回字节文件!我们只需要将方法的返回值改成void! 只需要使用response对象自己手动操作即可!
-
处理标识符异常情况
package com.wlw.controller;
import com.wlw.utils.Constants;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Method;
/**
* BaseServlet用于集中处理方法的调用!
* 以及返回值处理!
* 以及默认页 对应方法!
*/
public class BaseServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.获取请求参数(标识符)
String methodStr = req.getParameter(Constants.TAG);
//2.如果method没有获取到值!我们就跳转到首页!(标识符异常处理)
if (methodStr == null && methodStr.equals("")) {
methodStr = Constants.INDEX;
}
//3.反射调用对应的业务逻辑方法
Class clazz = this.getClass();
try {
Method method = clazz.getMethod(methodStr, HttpServletRequest.class, HttpServletResponse.class);
Object result = method.invoke(this,req,resp);
//4.集中处理返回值响应
if (result != null) {
//转发 重定向 返回字符
String str = (String) result;
if (str.startsWith(Constants.FORWARD)) {
//转发
String path = str.substring(str.indexOf(Constants.FLAG) + 1);
req.getRequestDispatcher(path).forward(req,resp);
}else if (str.startsWith(Constants.REDIRECT)){
//重定向
String path = str.substring(str.indexOf(Constants.FLAG) + 1);
resp.sendRedirect(path);
}else{
resp.getWriter().println(str);
}
}
} catch (Exception e) {
e.printStackTrace();
//controller 和 service dao 有异常都会到此处!
req.getSession().setAttribute("msg", "程序异常!请稍后再试!");
resp.sendRedirect("/message.jsp");
}
}
/**
* 当method标识符‘没有值’ 我们默认赋 index 访问每个controller的index方法!
* 我们将方法提取到baseservlet中即可!
* 默认处理:跳转到程序的首页!
* @param req
* @param resp
* @return
* @throws IOException
* @throws ServletException
*/
public String index(HttpServletRequest req,HttpServletResponse resp) throws IOException, ServletException {
return Constants.FORWARD+"/index.jsp";
}
}
六、项目编码
- 完成项目的编码工作!以模块为单位!逐一完成!
6.1用户管理模块
- 用户模块涉及功能:注册,登录,自动登录,退出登录!
6.1.1新用户注册
需求编号 | Shopping_004 |
---|---|
功能名称 | 新用户注册 |
功能描述 | 1.用户名ajax异步认证 2.注册功能(未激活状态)3.发送激活邮件 4.账号激活 |
备注 | 账号需要激活才可以使用(邮箱验证) |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cnwaqbEc-1599113291705)(E:\BaiduNetdiskDownload\0000-java复习\笔记\截图\135会员注册.jpg)]
6.1.2用户登录
需求编号 | Shopping_005 |
---|---|
功能名称 | 用户登录 |
功能描述 | 1.点击登录项,打开用户登录页面;2.输入用户名和密码,实现用户登录功能 |
备注 | 登录成功实现两周以内自动登录效果 |
6.1.3用户退出
需求编号 | Shopping_006 |
---|---|
功能名称 | 用户退出 |
功能描述 | 点击注销,实现用户退出功能退出后返回首页 |
备注 | 本功能需要依赖用户登录功能 |
6.2商品模块
- 商品模块设计商品展示和商品详情功能
6.2.1商品展示
-
首页按类别展示!或者搜索展示商品!注意需要添加分页功能!
-
插入虚拟商品数据:
INSERT INTO TYPE (t_id,t_name,t_info) VALUES(1, '手机' ,'小米手机,为发烧而生!');
, (2,'配件', '小米手机专用配件,爱护你的手机!' );
INSERT INTO product (t_id, p_name,p_time,p_image,p_price,p_state,p_info)
VALUES(1,"红米4","1990-01-01","image/iebiao.hongmin4.jpg" , 1999, 4,"红米4手机,主打性价比1吸引年轻");
,(1,"红米4","1990-01-01","image/liebiao_hongmin4.jpg" , 1999, 4,"红米4手机,主打性价比1吸引年轻")
,(1,"红米4","1990-01-01","image/liebiao_hongmin4.jpg" , 1999, 4,"红米4手机,主打性价比1吸引年轻")
,(1,"红米4","1990-01-01","image/liebiao_hongmin4.jpg" , 1999, 4,"红米4手机,主打性价比1吸引年轻")
,(1,"红米4","1990-01-01","image/liebiao_hongmin4.jpg" , 1999, 4,"红米4手机,主打性价比1吸引年轻")
,(1,"红米4","1990-01-01","image/liebiao_hongmin4.jpg" , 1999, 4,"红米4手机,主打性价比1吸引年轻")
,(1,"红米4","1990-01-01","image/liebiao_hongmin4.jpg" , 1999, 4,"红米4手机,主打性价比1吸引年轻")
,(1,"红米4","1990-01-01","image/liebiao_hongmin4.jpg" , 1999, 4,"红米4手机,主打性价比1吸引年轻")
,(1,"红米4","1990-01-01","image/liebiao_hongmin4.jpg" , 1999, 4,"红米4手机,主打性价比1吸引年轻")
,(1,"红米4","1990-01-01","image/liebiao_hongmin4.jpg" , 1999, 4,"红米4手机,主打性价比1吸引年轻")
,(1,"红米4","1990-01-01","image/liebiao_hongmin4.jpg" , 1999, 4,"红米4手机,主打性价比1吸引年轻")
,(2,"红米4手机壳","1990-01-01","image/peijian2.jpg" ,20, 5,"红米4手机壳,用心保护你的手机")
,(2,"红米4手机壳","1990-01-01","image/peijian2.jpg" ,20, 5,"红米4手机壳,用心保护你的手机")
,(2,"红米4手机壳","1990-01-01","image/peijian2.jpg" ,20, 5,"红米4手机壳,用心保护你的手机")
,(2,"红米4手机壳","1990-01-01","image/peijian2.jpg" ,20, 5,"红米4手机壳,用心保护你的手机")
,(2,"红米4手机壳","1990-01-01","image/peijian2.jpg" ,20, 5,"红米4手机壳,用心保护你的手机")
,(2,"红米4手机壳","1990-01-01","image/peijian2.jpg" ,20, 5,"红米4手机壳,用心保护你的手机")
,(2,"红米4手机壳","1990-01-01","image/peijian2.jpg" ,20, 5,"红米4手机壳,用心保护你的手机")
,(2,"红米4手机壳","1990-01-01","image/peijian2.jpg" ,20, 5,"红米4手机壳,用心保护你的手机")
,(2,"红米4手机壳","1990-01-01","image/peijian2.jpg" ,20, 5,"红米4手机壳,用心保护你的手机")
,(2,"红米4手机壳","1990-01-01","image/peijian2.jpg" ,20, 5,"红米4手机壳,用心保护你的手机")
,(2,"红米4手机壳","1990-01-01","image/peijian2.jpg" ,20, 5,"红米4手机壳,用心保护你的手机")
,(2,"红米4手机壳","1990-01-01","image/peijian2.jpg" ,20, 5,"红米4手机壳,用心保护你的手机")
,(2,"红米4手机壳","1990-01-01","image/peijian2.jpg" ,20, 5,"红米4手机壳,用心保护你的手机");
需求编号 | Shopping_001 |
---|---|
功能名称 | 分页显示所有商品 |
功能描述 | 1.首页类别显示2.类别商品分页显示3.商品详情显示 |
备注 | 本截图中序号和商品名称未显示完整 |
6.2.2查看商品详细信息
需求编号 | Shopping_002 |
---|---|
功能名称 | 查看单个商品详细信息 |
功能描述 | 1.点击”首页’ 打开商品列表页面;2.点击一个商品的商品名称,可以查看该商品的详细信息,具体内容参看截图 |
备注 |
6.3购物车模块
6.3.1购物车
- 细化功能,添加购物车、显示、修改、清空
需求编号 | Shopping一007 |
---|---|
功能名称 | 加入商品到购物车 |
功能描述 | 1.添加购物车2.显示购物车数据3.修改购物车数据4.删除单条数据5.清空购物车 |
备注 | 商品数量可加减最少必须大于0商品可删除同时支持批量删除 |
6.4订单模块
6.4.1生成订单并显示
需求编号 | Shopping_009 |
---|---|
功能名称 | 提交订单并显示订单信息 |
功能描述 | 1.点击”购物车”,打幵购物车页面;2.点击”去结算”按钮,打开订单信息确认页面 |
备注 | 1.如果购物车为空,不能提交订单2.生成订单成功后订单状态为未支付 |
6.4.2支付
需求编号 | Shopping_010 |
---|---|
功能名称 | 支付 |
功能描述 | 3.点击”付款”,打开支付页面;4.选择支付方式完成支付功能 |
备注 | 支付成功后修改订单状态为已付款待发货等待管理员后台操作完成订单发货 |
6.4.3查看历史订单
需求编号 | Shopping_011 |
---|---|
功能名称 | 用户查看历史订单 |
功能描述 | 点击”订单”,打开历史订单列表页面,可以查看订单。 |
备注 | 1.本功能需要依赖用户登录功能;2.订单状态未支付|已支付待发货|已发货待收货|完成订单 |
6.5收货地址管理
6.5.1查看地址
需求编号 | Shopping_011 |
---|---|
功能名称 | 显示用户的收货地址 |
功能描述 | 主要实现对地址的增删改查 |
备注 | 地址为多条记录可选择一个地址为常用地址 |
6.6后台管理
- 后台使用bootstrap框架完成整体搭建
6.6.1用户登录
需求编号 | Shopping_012 |
---|---|
功能名称 | 登录 |
功能描述 | 主要实现管理员后台登录验证用户名密码是否正确如果正确登录成功错误返回登录页 |
备注 | 居中当密码框获得焦点后默认提示信息删除登录失败返回当前页面显示提示信息 |
6.6.2注销
需求编号 | Shopping_012 |
---|---|
功能名称 | 注销 |
功能描述 | 完成退出 |
备注 |
6.6.3用户管理
需求编号 | Shopping_013 |
---|---|
功能名称 | 用户管理 |
功能描述 | 主要实现管理员对所有用户的管理 |
备注 |
6.6.4添加商品
需求编号 | Shopping_014 |
---|---|
功能名称 | 添加商品 |
功能描述 | 主要实现商品的添加 |
备注 |
6.6.5编辑商品
需求编号 | Shopping_015 |
---|---|
功能名称 | 编辑商品 |
功能描述 | 主要实现商品的修改操作 |
备注 | 支持时间为日历插件支持单张图片上传功能 |
6.6.6查看商品
需求编号 | Shopping_016 |
---|---|
功能名称 | 查看商品 |
功能描述 | 主要实现查看所有商品 |
备注 | 商品可查看详细描述商品可删除商品可修改支持商品分页 |
6.6.7订单管理
需求编号 | Shopping 017 |
---|---|
功能名称 | 订单管理 |
功 能描述 | 主要实现对订单的处理按照条件查询进行筛选1.用户姓名2.订单状态未支付|已支付待发货|已发货待收货|完成订单进行条件查询 查询结果以列表形式显示可对订单进行 删除 修改[主要是修改状态]操作 |
备注 |
7、项目地址
总的来说:
1、没有使用框架
2、做了沙箱支付-支付宝
3、有前台展示系统 和 后台管理系统(功能来讲是比较完善的)