基于php+vue的B2C线上电子产品销售平台设计与实现python-flask-django-nodejs_基于php的购物网站的设计与实现用框架-程序员宅基地

技术标签: python  node.js  django  php  vue.js  flask  

摘 要
近几年来,网络信息技术日新月异,整个网络环境相较于前几年有了深刻的变革,这些网络信息相关的技术不仅让我们更加实质性地享受到互联网带给我们的便利、让互联网更加泛化和深化,同时也让我们和互联网相关的开发人员更加直观更加方便地去开发互联网应用。在此同时,电商网站也有了长足的发展,如今的电商已经不是只有淘宝京东几家独大,想要开网店必须去淘宝京东开店铺的局面也不复存在。技术的发展让电商网站的建立简单了起来。本文就结合当前较为主流的php Web框架thinkphp来搭建一个B2C线上电子产品销售平台的电商系统,该系统使用B/S架构和前后端分离的模式进行设计,后端使用thinkphp Rest Framework向前端提供API,前端使用国内流行的Vue框架进行数据展示。本文将从多个维度去阐述和解释系统的各个模块和各种功能,在实现电商网站的基本需求的同时,还对电子产品销售相关的内容进行优化,以及对其他附加功能的实现。本文最终将实现一个B2C的电子产品销售平台,用户可以进行注册会员、浏览商品、购买商品和管理信息等的操作,管理员可以也可以轻松地管理商品信息、用户信息等等操作。
php框架:thinkphp
项目架构:B/S架构
前端技术:Vue、Html、CSS
后端技术:PHP7、mysql、thinkphp
运行环境:wamp,phpstudy,xammp,appserv等
数据库:mysql5.7/8.0或以上版本 
目录
摘 要 I
目录 III
第一章 绪论 1
1.1 课题研究背景及意义 1
1.2 国内外研究现状 2
1.3 本文的主要工作 3
第二章 技术选型 4
2.1 php4
2.2 thinkphp 5
2.3 MySQL 6
2.5 Vue 8
第三章 系统分析 9
3.1 可行性分析 9
3.2 系统需求分析 10
3.2.1 业务需求分析 10
3.2.2 用户需求 11
3.2.3 功能需求分析 12
3.2.4 非功能需求分析 14
第四章 总体设计 16
4.1 总体功能模块设计 16
4.2 数据库设计 18
4.2.1 数据表结构 18
4.2.2 数据表字段 18
第五章 详细设计与实现 25
5.1 用户模块 25
5.2 商品模块 32
5.3 用户操作模块 41
5.4 交易模块 44
5.5 后台模块 51
5.6 其他模块 52
第六章 系统测试与部署 54
6.1 测试环境 54
6.2 系统测试 54
6.3 测试内容 55
6.4 测试结果 58
第七章 全文总结 59
参考文献 60
致谢 61
外文原文 62
中文翻译 69

第一章 绪论
1.1 课题研究背景及意义
随着互联网的不断普及,电子商务对于人们来说也越来越熟悉。相较于传统的经营模式,电子商务目前属于一种较为新型的商业运作模式,并且已经取得了巨大的发展,同时在我国电子商务也属于较为成熟的营销模式。相较于国外,我国的电子商务起步比较晚。不过这并不影响我国电子商务的迅速发展,因为目前我国电子商务拥有庞大的消费群体以及先进的互联网技术,这为电子商务的发展提供了主要基础和动力。随着移动互联网的发展,电子商务的发展更是快马加鞭。我国电商平台不仅有像淘宝、天猫、京东等这样C2C的平台,还有像小米商城、网易严选等这种B2C的平台,具体一些,还有针对特定类型商品的电商平台,像当当网这样的图书销售平台,面向女性客户的蘑菇街等。如此种类繁多的电商平台,也表明着我国电子商务产业已经趋于成熟,运作模式也较为完善。
电子商务相较于传统商务有很大的优势。首先,电子商务可以打破时空的限制,使人与人之间可以进行更为方便的沟通和交流,这样就为电子商务的核心——交易,创造了有利条件。其次,电子商务相较于传统商务无需实体店的粉饰,店面地址、仓库等硬性条件设施的要求门槛较低,可以为企业的营销大大降低成本,同时随着这些年物流行业的蓬勃发展,货物的配送也逐渐不是交易的瓶颈。最后,电子商务的受众面更为宽广,可以容纳全国,乃至全世界的顾客,增大了市场的范围和跨度,这为充分发挥市场资源的配置作用创造了绝佳的条件。同样电子商务也有一些不足,比如客户对于商品不能有像实体店一般的认知、因为技术原因导致的交易不安全或是用户信息泄露、商家对于用户的欺诈等行为难以从根本上杜绝。这些现象都是我国电子商务发展中亟待解决的问题。
如今电商网站的需求相当庞大,上至大型采购、零售企业,下至农村合作社、个人小商铺,他们对商品的销售和管理用传统的手段,充斥着大量低级而又重复的操作,这无疑在时间和空间上都会收到诸多的限制,财力和人力也有较大的开销。所以,解决这个问题,需要一套完整电商系统去经营管理我们繁多的商品,不仅会减少管理的成本,还会减少出错的概率,解决了管理上的痛点和难点。
基于上述的需求,这套B2C线上电子产品销售平台,可以进行用户的相关操作,如注册登录、修改信息等,进行商品的相关操作,如添加商品、修改商品,可以进行订单管理、支付宝支付等功能。较为全面地满足商户对于商品销售和商品管理方面的需求。
1.2 国内外研究现状
随着经济和科技的不断发展,电商系统已经被在国内外进行了广泛的研究。在国外,尤其是欧美国家,电商系统起步较早,早期的Ebay、Amazon都是电子商务中元祖级的产品,也为今后的电子商务平台奠定了基础。可以说在技术层次上,国外的相关技术发展已经十分完备,其后台使用的技术也不尽相同,老牌电子商务平台常使用技术较为完备成熟PHP、Java等技术栈,或者混合多种技术进行维护,而新兴的电商网站则经常使用Python、Ruby这些在Web开发上逐渐绽放的技术栈进行开发。但数据显示,国外电商网站的发展远没有国内活跃,一方面中外的一些差异是导致国内用户更喜欢网上购物的原因,另一方面,国外的物流产业远没有国内发达,也是限制国外电子商务产业发展的一个重要原因。
而在国内,得益于国家的快速发展和政策的扶持,电子商务在各个方面都有着不可小觑的发展。尤其是物流业的发展和近期的稳定,让电子商务变得更加便捷,足不出户就能完成商品的交易。国内在电子商务平台普遍使用PHP、Java作为其技术栈,新型的电商平台追求较为完备和稳定技术也是如此,所以,总览国内各大电商平台,采用Python、Ruby等语言作为其后台基础语言的确是为少数。
无论国内国外,在PC端,电商平台都通常使用B/S(浏览器/服务器)架构,免去了需要安装客户端的麻烦,并且可以完备地实现系统的所有功能,技术较为成熟。在移动端B/S架构与C/S(客户端/服务器)共存,但对于B/S架构的支持往往是不完善的,商家也大力地去支持使用其对应的APP,可以方便的浏览商品、进行交易。
1.3 本文的主要工作
本论文分为以下几个章节对毕业设计基于
B2C线上电子产品销售平台(太理电子商城)进行论述,每个章节的具体内容如下:
第一章 绪论。主要针对国内外电子商务网站进心分析,阐述本课题背景和研究本课题的意义所在。在本章最后,对论文的结构进心简单的归纳。
第二章 技术选型。这章主要针对本项目中使用何种技术及为什么选用这种技术进行阐述。
第三章 系统分析。这章通过可行性分析和需求分析来获得项目的具体需求,以便接下来的总体设计。
第四章 总体设计。这章从较高的层面分析了项目中电商系统的结构,同时也对数据库进行了设计。
第五章 详细设计。对总体设计中划分出个各个模块进行详细的设计。这其中包括各个模块中较为重要的核心技术的介绍和使用,以及核心功能的展示和核心代码的解析。
第六章 系统测试和部署。这一章主要是对本系统的各项功能和非功能需求进行测试,以确保系统的鲁棒性。
第七章 全文总结。

第二章 技术选型
在本文中,是以现阶段网络较为流行的B/S开源框架thinkphp为基础进行开发,而thinkphp是以php为基础的web框架,所以在开发过程中所使用的后台语言为php。数据库采用市面较为流行的轻量的开源数据库MySQL,项目中会有缓存问题的解决,使用内存数据库Redis对缓存进行存储。本项目在设计时,使用市面上流行的REST风格API,与thinkphp所配套的RESTful API为thinkphp REST Framework,在项目中采用此框架。由于项目使用前后端分离的开发模式,前端使用国内最为流行的Vue框架进行开发,本文主要对后端进行实现,在前端部分不会进行太多解释。
2.3 MySQL
MySQL是一个轻量级的关系数据库管理系统,MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google和Facebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。
MySQL提供两种不同的版本:开源MySQL社区服务器和专有的企业服务器,MySQL企业服务器区别于一系列作为服务器插件安装的专有扩展,但是它们共享版本编号系统,并且由相同的代码库构建。
MySQL的创始人麦克尔·维德纽斯以MySQL为基础,成立分支计划MariaDB。而原先一些使用MySQL的开源软件逐渐转向MariaDB或其它的数据库。例如维基百科已于2013年正式宣布将从MySQL迁移到MariaDB数据库。
Mysql有以下特点:使用C、C++编写,在各个平台编译,可移植性强。其使用的多线程是完全多线程,也支持多处理器。MySQL会对查询语句进行优化,在很大程度上会提高查询性能。它也支持多种协议的连接,如TCP/IP、ODBC、JDBC等,支持多国语言、支持多种存储引擎。MySQL使用标准的SQL语句进行数据库操作,上手简单。
在本次项目中,涉及的数据量、数据复杂程度都较小,使用庞大冗杂且收费的Oracle数据库实属大材小用,而在php生态中,对SqlServer的支持不是很好,而Django默认使用的SQLite则又过于简单,对于本项目中的某些功能实现起来也不是很方便,所以在本项目中使用轻量又实用的Mysql数据库是最佳选择。
在项目的开发过程中,会使用Mysql数据库进行开发,而在实际的部署中,则使用MariaDB数据库,两者在使用上基本没有太大差异,数据类型也可以互通。
第三章 系统分析
3.1 可行性分析
可行性研究的目的就是用最小的代价在尽可能短的时间里确定问题是否能解决。本章将从以下四个方面去阐述该项目的可行性。
从经济可行性的角度分析,该项目的实施不涉及物力成本,只涉及人力的成本。若该项目是市场上的某个商业项目,确定项目是否值得投资开发,即要分析在整个软件生存周期中所花费的代价和效益之间的度量。本课题属于毕业设计,不涉及成本和效益,默认可行。
 
最后从法律可行性上讲,本项目并不涉及与国家安全相关的一些信息,也不会危害社会。在项目的安全性得到保障的条件下,也不会泄露用户的个人信息。本项目属于B2C的电商网站,所出售的产品都是商家自己的产品,这也免去了很多C2C电商所产生的法律问题。在法律上,项目是可行的。
综上所述,本项目在经济可行性、技术可行性、操作可行性和法律可行性上都行得通,是值得去实施的一个项目。
3.2 系统需求分析
软件需求分析是软件开发期的第一个阶段,是软件生存周期最重要的一步,是关系到软件开发成败的关键步骤。它在问题定义和可行性研究阶段之后进行。它的基本任务是准确地回答"系统必须做什么?"这个问题。虽然在可行性研究阶段粗略了解了用户的需求,至还提出了一些可行的方案,但是可行性研究的基本目的是最小的代价在尽可能短的时间内确定问题是否存在可行的解法,因此许多细节都被忽略了,一个微小的错漏都可能导致误解或铸成系统的大错,在纠正时付出巨大的代价。因而可行性研究并不能代替需求分析,它实际上并没有准确地回答"系统必须做什么"这个关键问题。
需求分析是整个软件生命周期中非常重要的阶段,决定着软件项目的成败,在这个阶段本章将从业务需求、用户需求、功能需求和非功能需求这四个方面去阐述项目的需求问题。
3.2.1 业务需求分析
业务需求主要是面向投资人的需求,通过客户访谈的方式可以获取项目的业务需求。客户访谈是一个直接与客户交流的过程,既可以了解高层用户对软件的要求,也可以直接听取用户的呼声。
通过带入甲方角色来分析项目的业务需求。
甲方需要这样一个平台,在这个平台上,作为直接向用户出售商品商户,可以轻松地管理商品,这里面包括对商品的分类管理、首页头图投放等问题。在此之上,甲方也需要方便地管理用户和订单,若用户对于账户或订单有一些变更,作为管理者的甲方管理员可以轻松的进行管理。还有其最基本的功能,要完成一个或多个商品的交易流程,这个过程一定要是安全的。
业务需求分析是客户或机构组织层面的需求分析。由于这一些人并不是专业的技术人员,所以我们在与他们进行沟通是要注意引导和提取他们对系统业务需求。
项目的系统目标是构建一个B/S架构的电子设备线上商城,管理员可以进行用户的权限管理、信息管理,还可以进行交易管理和订单管理,也可以进行商品的添加、删除、修改等操作。用户可以注册登录商城账号,浏览商品,并对商品进行过滤筛选,完成一个完整的交易。实现以上功能即满足基本业务需求。
3.2.2 用户需求
用户需求是在软件设计和开发的过程中以用户为核心,进心调查与分析,发掘用户的具体要求。在本系统中,有以下两种重要角色,用户和管理员。作为用户,主要任务是访问网站进行商品购买和其他操作,而作为管理员,主要是对于数据库中的商品、订单、用户进行管理操作。项目中将系统划分为以下几个模块,这也是thinkphp提倡开发者这样做的,以模块的方式划分职责,将系统划分为商品模块、交易模块、用户操作模块、用户模块和后台模块。
表3-1 用户模块
模块 功能 描述
登录 注册 注册账号
登录 登录商城
退出 注销账号登录状态
验证码 验证码 发送注册验证码
信息管理 查看个人信息 查看个人信息
修改个人信息 修改个人信息
修改密码 修改密码

表3-2 商品模块
模块 功能 描述
商品展示 全部展示 展示出所有商品
商品过滤 过滤出指定商品
轮播图投放 将指定商品放入轮播图
商品管理 添加商品 添加商品
修改商品 修改商品
删除商品 删除商品
分类管理 添加分类 添加分类
删除分类 删除分类
热词展示 展示热词 展示出热门搜索关键词

表3-3 交易模块
模块 功能 描述
购物车 加入购物车 将商品加入购物车
从购物车删除 将商品从购物车删除
修改购物车 修改购物车中的商品
订单管理 列出所有订单 显示出所有订单
新增订单 新增订单
删除订单 删除订单
支付 支付宝支付 支付宝支付

表3-4 用户操作模块
模块 功能 描述
收藏 展示收藏列表 展示收藏列表
收藏商品 收藏商品
留言 展示用户留言 展示用户留言
添加留言 添加留言
删除留言 删除留言
收货地管理 获取收货地址 展示全部收货地址
添加收货地址 添加收货地址
更新收货地址 修改收货地址
删除收货地址 删除收货地址

3.2.3 功能需求分析
功能需求是把具体的用户需求,变成软件的功能要求。规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。功能需求是基于业务需求和用户需求进行需求分析的结果,为满足业务需求和用户需求提出的一组产品功能列表,功能需求构成了一个完整的产品抽象模型,是产品设计团队进行产品设计和产品研发团队进行产品研发的基础。
表3-5 后台模块功能需求
功能名称 描述
个人信息管理 管理员对用于信息的修改,包括创建新用户,修改用户邮箱、姓名、性别、出生日期等操作,删除用户
订单管理 对于用户交易所产生的订单进行管理,包括修改订单收件人姓名、手机和收货地址
商品管理 管理员可以对商品进行管理,包括添加商品、删除商品、修改商品信息、修改商品剩余库存。同时,可以将商品设置为首页轮播图投放,分类区域广告的操作。
用户操作管理 管理员对用户的收藏、留言、预存收货地址进行修改

表3-6 用户接口功能需求
功能名称 描述
注册、登录 用户可以在注册界面注册成为网站会员,并通过账号密码登录商城,同样也可以注销登陆登录状态,也可以通过选择记住登录实现自动登录。
个人信息管理 用户可以自行修改个人信息内容。
收货地址管理 用户可以新增收货地址、删除已存在的收货地址,也可以对已有的收货地址进行修改。
订单管理 用户在交易过程中会生成交易订单,用户可以浏览自己的全部订单,对未付款的订单进行付款,也可以删除订单。
收藏管理 用户在登录状态下可以对商品进行收藏操作,也可以对已经收藏的商品取消收藏,在收藏列表可以看到用户所有收藏的商品
商品列表 用户可以查看商品的列表,也可以通过商品类别、价格区间、销量等条件进行过滤显示,也可以通过多种条件对商品列表进行排序。
商品详情 用户可以查看商品的详细信息,并在详情页进行购物车操作
支付 用户通过第三方支付工具对订单进行俯瞰
第三方登录 用户可以使用第三方账号如微博、微信、QQ进行商城登录,同时,也可以将第三方账户绑定至商城已有用户之上
3.2.4 非功能需求分析
(1) 性能需求
对于系统的响应时间作以下要求
表3-7 时间特性要求
时间特性 时间特性要求
响应时间 3秒内
更新处理时间 5秒内
数据转换与传输时间 3秒内
运行时间 全天候
4.2.2 数据表字段
(1) user_userProfile表,该表用来记录线上商城系统中用户的相关信息,包括管理员和普通会员

表 4-1 用户表
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
id int 11 否 主键 账号id 唯一
password varchar 128 否 账号密码 加密
last_login datetime 6 是 最后一次登录时间
is_superuser tinyint 1 否 是否为超级用户
username varchar 150 否 用户名
is_stuff tinyint 1 否 是否为管理员
is_active tinyint 1 否 账号是否激活
date_joined datetime 6 否 注册时间
name varchar 30 是 姓名
birthday date 是 出生日期
gender varchar 6 是 性别
mobile varchar 11 是 手机号码
email varchar 100 是 邮箱

(2) user_verifycode表,用户模块中用于用户注册的表,用来验证用户的注册验证码是否正确。
表4-2 短信验证码表
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
id int 11 否 主键 验证码编号 唯一
code varchar 10 否 验证码
mobile varchar 11 否 手机号
add_time datetime 6 否 添加时间

(3) goods_goodsCategory表,商品模块中用来表示商品类别信息,通过自连接实现类别间的一种层级关系,该表与自己关联。
(4) goods_goods表,商品模块中用来记录商品详细信息的表,通过此表,可以管理系统中的商品详细信息,该表与商品类别表相关联。

表4-3 商品类别表
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
id int 11 否 主键 类别编号 唯一
name varchar 30 否 类别名
code varchar 30 否 类别code 唯一
desc longtext 否 类别描述
category_type int 11 否 类目级别
is_tab tinyint 1 否 是否导航
add_time datetime 6 否 添加时间
parent_category_id int 11 是 外键 父类别id

表4-4 商品表
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
id int 11 否 主键 商品id 唯一
goods_sn varchar 50 否 商品唯一货号
name varchar 100 否 商品名
click_num int 11 否 点击数
sold_num int 11 否 销售量
fav_num int 11 否 收藏数
goods_num int 11 否 库存数
market_price int 11 否 市场价格
shop_price double 否 本店价格
goods_brief double 否 商品简短描述
goods_desc longtext 否 商品详细描述 富文本
ship_free longtext 1 否 是否免运费
goods_front_image varchar 100 是 封面图
is_new tinyint 1 否 是否新品
is_hot tinyint 1 否 是否热销
add_time datetime 6 否 添加时间
category_id int 11 否 外键 商品类别id
(5) goods_goodsImage表,商品模块商品展示图表,是在商品详情页对商品多张轮播图的存储位置的定位。该表与商品信息表相关联。
表4-5商品轮播图表
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
id int 11 否 主键 轮播图id 唯一
image varchar 100 是 图片位置
add_time datetime 6 否 添加事件
goods_id int 11 否 外键 对应商品id

(6) goods_banner表,商品模块中关于首页轮播图的信息的表,通过后台系统可以添加、删除、修改首页轮播图。
表4-6 首页轮播商品表
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
id int 11 否 主键 id 唯一
image varchar 100 否 图片地址
index int 11 否 轮播顺序
add_time datetime 6 否 添加时间
good_id int 11 否 外键 对应商品id

(7) goods_goodsbrand表,商品模块中记录着品牌信息的表。
表4-7 品牌表
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
id int 11 否 主键 id 唯一
name varchar 30 否 品牌名
desc longtext 否 品牌描述
image varchar 200 否 图片地址
add_time datetime 6 否 添加时间
category_id int 11 是 外键 商品类目id
(8) goods_indexad表,商品模块中,与类别广告投放相关的表,首页中会按照类别分成多个区块,每个区块有一个广告区域,这个表负责管理这个区域。
表4-8 类别广告表
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
id int 11 否 主键 id 唯一
category_id int 11 否 外键 商品类目id
goods_id int 11 否 外键 商品id

(9) trade_shoppingcart表,交易模块中用来记录用户购物车信息的表,用来管理用户单个商品购买数量。
表4-9 购物车表
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
id int 11 否 主键 id 唯一
nums int 11 否 购买数量
add_time datetime 6 否 添加时间
goods_id int 11 否 外键 购买商品
user_id int 11 否 外键 购买用户

(10) trade_orderinfo表,交易模块中保存订单信息的表,用户购买商品生成订单,创建记录,第三方支付回调会修改订单状态。该表与用户信息表相关联。
表4-10 订单表
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
id int 11 否 主键 id 唯一
order_sn varchar 30 是 订单号
trade_no varchar 100 是 交易号
pay_status varchar 30 否 订单状态
post_script varchar 200 否 订单留言
order_mount double 否 订单金额
pay_time datetime 6 是 支付时间
address varchar 100 否 收货地址
续表4-10
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
signer_name varchar 20 否 签收人姓名
signer_mobile varchar 11 否 签收人手机
add_time datetime 6 否 添加时间
user_id int 11 否 外键 对应用户

(11) trade_ordergoods表,交易模块中记录订单中具体有哪些商品和商品数量的表,管理员可以修改订单详情以满足客户的需求。该表与商品信息表、订单表相关联。
表4-11 订单详情表
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
id int 11 否 主键 id 唯一
goods_num int 11 否 商品数量
add_time datetime 6 否 添加时间
goods_id int 11 否 外键 对应商品
order_id int 11 否 外键 对应订单

(12) user_operation_userfav表,用户操作模块记录用户收藏商品的表,用户可以在自己的收藏管理中管理自己已经收藏的商品,也可以在对应的商品详情页将商品添加至收藏中或从收藏中删除,以上操作主要是对这张表的操作。该表与商品表、用户信息表相关联。
表4-12 用户收藏表
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
id int 11 否 主键 id 唯一
add_time datetime 6 否 添加时间
goods_id int 11 否 对应商品
user_id int 11 否 对应用户

(13) user_operation_userleavingmessage表,用户操作模块中与用户留言相关的表,用户在个人管理页面可以对管理员进行留言。
表4-13用户留言表
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
id int 11 否 主键 id 唯一
message_type int 11 否 留言类型
subject varchar 100 否 主题 1 留言,2 投诉, 3 询问,4 售后,5 求购
message longtext 否 留言内容
file varchar 100 否 上传的文件地址
add_time datetime 6 否 添加时间
user_id int 11 否 外键 对应用户

(14) user_operation_useraddress表,用户操作模块中管理用户配货地址的表,用户可以在个人中心添加、删除、修改配送地址,在提交订单时,选择合适的配送地址。
表4-14用户收货地址表
字段名 数据类型 长度 可否为空 键引用 字段含义 备注
id int 11 否 主键 id 唯一
privince varchar 100 否 省份
city varchar 100 否 城市
district varchar 100 否 区域
address varchar 100 否 详细地址
signer_name varchar 100 否 签收人
signer_mobile varchar 11 否 电话
add_time datetime 6 否 添加时间
user_id int 11 否 外键 对应用户

第五章 详细设计与实现
详细设计是继概要设计后的一个独立软件研制阶段,借助合适的图表等方式配合语言描述,对软件单元进行详细的过程描述,从而在实现阶段可以直接翻译成用某种程序设计语言书写的程序。
本章讲详细地对上一章节中划分出的模块进行设计。
 5.1 用户模块
用户模块是线上电子销售系统极为重要的模块,好的设计能极大地提高用户体验,同时用户模块对于安全性地要求也比较高,否则会造成用户信息泄露甚至密码泄露等风险。
用户模块是对不同用户的不同权限的划分,在本系统中存在以下4中角色一是超级管理员,拥有所有权限,只在系统开发调试时使用,正常情况下不开启,二是普通管理员,普通管理员根据不同管理员的身份,其权限也有不同的划分,三是普通用户,可以对个人信息进行管理,进行商品交易,最后是游客用户,这类用户无需登录,只可以进行浏览商品列表、商品详情等无需登录的操作。
用户模块中,注册登录功能是以后其他功能的基石,很多功能要基于用户的登录状态。对用超级管理员和普通管理员来讲,其注册登录入口与普通用户不同,
这种用户只能通过拥有创建用户权限的管理员在后台创建,而且他们也有自己独立的登录入口和管理界面。可以说项目中使用的后台系统是一套和线上商城系统共享同一数据库的独立系统,在本项目中作为一个模块使用。
(1) 用户注册功能
 图5-2 用户注册流程图
在这其中,用户提交内容的表单验证在前端和后端都会进行,前端进行一次过滤,前端通过的表单将会在后端进行再次验证,这样做是为了防止在前端有人恶意修改代码,保证了系统的安全性,这种解决方案也是效率较高的一种实现。
用于注册可以使用手机注册,手机注册可以由第三方服务提供的API来实现,这里可以使用云片网提供的验证码发送功能来实现注册的功能,在实际部署上线的时候会接入云片网短信发送。
用户注册还有另外一种实现方案,使用邮箱注册。使用邮箱注册实现起来也很方便,在用户注册的时候,会向用户注册所使用的邮箱发送一封邮件,邮件中包含验证码,同时数据库中也保存着这个验证码。通过这样方式实现的注册,在成本上要比手机注册小,手机注册使用第三方服务需要付费,而邮箱注册只需开发者使用邮箱的SMTP服务或者自己搭建邮箱服务器去实现即可。
 第六章 系统测试与部署
软件测试是软件在正式投入使用或者交付前,必须要经过软件生命周期的阶段。具体来讲软件的系统测试需要根据软件需求文档、软件规格说明书、软件详细设计文档,对软件进行多轮测试,以期检查软件开发结果是否符合当初的设计和需求,同时软件测试工作也是对程序开发人员工作的验收。测试做的主要目标是找出实际运行的系统与需求的系统之间存在何种差异,帮助程序开发人员优化系统结构,提升代码质量,真正的提高软件产品的稳定性、安全性、可用性、易用性。
6.1 测试环境
使用以下环境进心测试:
服务端操作系统:Ubuntu 14.04 32位(阿里云)
客户端操作系统:Windows 10
数据库:MySQL 5.7
浏览器:Firefox 56.0b9 (64位)
网络:全部可以连通外部网络
6.2 系统测试
系统测试通常有两种主要的测试方法,它们分别是白盒测试和黑盒测试。本文所采用的测试方法也是这两种主流的软件测试。
白盒测试,也叫结构测试,它是一种面向程序的测试方法。主要的测试思路是:将程序看成一个透明的盒子,可以看见程序的运行流程和数据流方向。这种测试方式是需要测试者按照程序流程设计数据,使用断点调试的手段,查看数据流是否正确,验证返回值是否正确。
黑盒测试,也叫功能测试,它是面向用户的一种测试方法。主要的测试思路是:将程序看成一个看不见内部的沙盒,用户只能查看输入数据和输出数据。这种测试方法往往被用来测试软件程序是否实现了软件设计说明书上的特定功能,而且输入和输出的结果是否和设计规范里面一致。
本文采用白盒测试方法根据每个功能的实现选取设计测试用例,采用黑盒测试方法根据程序功能模块的划分选取测试用例。
6.3 测试内容
以下是需要完成的测试内容。
6.3.1 用户模块是否可以正常使用
(1) 用户注册的测试
(2) 用户登录的测试
(3) 用户修改个人信息的测试
(4) 用户登录状态保持的测试
表6-1 用户模块测试用例
序号 测试内容 输入内容 期望结果 备注
1 注册 13566668888
testpasswd 注册成功 账号首次注册
2 注册 13566668888
Testpasswd2 用户已存在 账号已被注册
3 注册 test
test 输入错误
4 登录 13566668888
testpasswd 登陆成功
5 登录 13566668888
testpass 密码错误 账号密码不匹配
6 修改个人信息 修改信息后提交 信息被修改

6.3.2 商品模块是否可以正常使用
(1) 商品浏览的测试
(2) 商品搜索的测试
(3) 商品排序的测试
(4) 商品过滤的测试
表6-2 商品模块测试用例
序号 测试内容 输入内容 期望结果
1 浏览商品 点击商品分类 显示出类别商品列表
2 商品过滤 点击价格区间 显示相应价格区间商品
3 商品排序 点击按价格排序 商品列表按价格排序
4 商品搜索 搜索框输入“华为” 显示所有名称包含华为的商品

6.3.3 用户操作模块是否可以正常使用
(1) 用户添加收货地址的测试
(2) 用户修改收货地址的测试
(3) 用户删除收货地址的测试
(4) 用户添加收藏的测试
(5) 用户取消收藏的测试
(6) 用户添加留言的测试
表6-3 用户操作模块模块测试用例
序号 测试内容 输入内容 期望结果
1 添加收货地址 输入信息后点击添加按钮 新地址被添加
2 修改收货地址 修改已有的收货地址点击确定 地址被修改
3 删除收货地址 点击已有收货地址删除按钮 地被删除
4 收藏 点击收藏 按钮变为已收藏,个人中心中记录对应商品
5 取消收藏 点击已收藏 按钮变为收藏,个人中心删除对应商品
6 添加留言 输入留言后点击提交 后台查看到该留言

6.3.4 交易模块是否可以正常使用
(1) 加入购物车的测试
(2) 从购物车删除的测试
(3) 修改购物车中商品数量的测试
(4) 创建订单的测试
(5) 删除订单的测试
(6) 浏览全部订单的测试
(7) 支付成功的测试
(8) 未完成支付的测试
表6-4 交易模块测试用例
序号 测试内容 输入内容 期望结果
1 加入购物车 点击加入购物车 购物车中加入该商品
2 从购物车删除 点击单品后的红叉 购物车中该商品被删除
3 创建订单 点击去结算 转入支付页面,订单创建
4 删除订单 点击订单后的删除 订单被删除
5 浏览订单 点击订单详情 显示全部订单
6 支付成功 进行付款 订单状态变为已完成
7 支付失败 不进行支付 订单状态为待支付

6.3.5 后台模块是否可以正常使用
(1) 管理员添加管理员的测试
(2) 管理员修改用户信息的测试
(3) 管理员删除用户的测试
(4) 管理员添加商品的测试
(5) 管理员修改商品信息的测试
(6) 管理员删除商品的测试
(7) 管理员通过过滤器过滤商品的测试
(8) 管理员对增加商品类别的测试
(9) 管理员查看用户留言的测试
表6-5 后台模块测试用例
序号 测试内容 输入内容 期望结果
1 添加商品 输入信息,点击添加 商品被添加并显示在列表
2 查看留言 点击留言面板 显示全部留言
3 增加商品类别 输入类别信息,点击添加 类别信息被添加
4 删除用户 点击用户后的删除按钮 用户被删除
6.4 测试结果
  项目的一些不完善的地方进行补充。
 致谢
转眼,大学本科的生活就要结束了,这四年来的学习和生活让我受益良多,经过将近半年的努力,我的大学本科毕业论文终于将要完成。这半年来,我获得了很多人的无私关怀与帮助。对此,我想向他们表示我诚挚的谢意。
首先,我要感谢我的论文负责老师相洁老师和范烨老师,范烨老师治学态度严谨求实,特别敬业。相洁老师在收集资料、论文选题,亦或是系统实现、论文撰写阶段,他都给予我莫大的关注和鼓励,给予了我系统框架方面的指导和系统设计实现技术方面的帮助。
其次,我还要感谢一直关心我和支持我的家人和朋友,没有他们在背后默默支持,我也无法顺利完成学业。特别是我的家人,给予了我很大的物质支持和精神支持,我在这里再一次向他们表示感谢。
最后我还要感谢我同组的同学,在我遇到有不懂的难题时,我的同门师兄弟及时的给予了我莫大的帮助。他们的鼓励和支持是我不断挑战自己,不断进步的动力,在这里我表示再一次的感谢。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/QQ511008285/article/details/137375743

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签