基于MySql和php的团购平台

ilovehim

发布日期: 2019-12-29 14:46:34 浏览量: 674
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、实现环境

1.1 前端

编程环境:Microsoft Windows 10 64bit

1.2 后端

  • 编程环境:Microsoft Windows 10 64bit

  • 服务器: Apache Server v 2.4.23 本地部署

  • 数据库:MySQL + PHPMyAdmin v 4.5.1

  • PHP 版本:PHP 5.6.24

二、系统功能结构图

2.1 系统功能需求分析

“乐购”团购平台的设计目标是:方便顾客在网上完成团购工作,享受线上折扣;为商家提供在线的商品展示、推广与销售渠道;顾客可以给购买过的商品进行评价。为此,本系统应该具有以下几个功能:

2.1.1 注册与登陆

用户在使用本网站之前需要首先进行注册,否则将不能够使用完整的购物流程。在进行注册时,用户需要输入自己注册的用户名、密码以及邮箱等信息,不能够使用同一个邮箱进行重复注册。在注册完成后,用户便可以通过登录界面进行登陆,并可以使用网站的全部购物功能。

商家在本平台进行商品销售之前需要首先进行商家注册。在进行注册时,商家需要输入自己注册的用户名、密码以及邮箱等信息,不同的商家不能够使用相同的邮箱重复注册。在注册完成之后,商家可以通过登录界面进行登陆。登陆之后的商家可以随时查看自己的信息并作出修改,还可以看到自己正在出售的商品以及销量信息。

本系统设置后台管理员,管理员可以对自己负责类别板块的所有商品进行编辑修改,还可以查看所有商家的具体信息。

从上面三点可以看出,本系统具有用户、商家和管理员三种角色。三种角色分别可以使用不同的方式进行登陆,并且分属不同的角色组,具有不同的操作权限。因而本系统具有权限管理的功能,能在一定程度上保证系统的安全性。

2.1.2 用户信息管理

用户在完成登陆之后可以查看并完善自己的个人信息,此外,个人信息将会统计该用户在本网站的总支出为多少。此外,用户在进行登陆之后还可以进行历史订单的查询,查看自己曾经购买过的商品。

2.1.3 商家后台管理功能

商家在完成登陆之后,可以选择添加新的商品。在添加商品的时候,需要提供商品的名称、价格、原价、类别、库存等信息,还可以提供商品的描述和图片。如果商品的库存不足将无法继续出售,此时商家可以选择删除该商品或者修改商品信息中的库存属性以恢复销售。此外,登陆后的商家还可以进行商户信息的修改。

2.1.4 商品检索与购买功能

用户在进行登陆之后可以进行商品的购买。购买商品需要首先进入商品界面,然后选择需要购买的数量,最后点击下单。完成下单之后,系统将会生成一个订单,订单中包含购买商品的数量以及商品的信息。用户可以在个人信息界面看到自己曾经下过的订单,并得到自己过去的总支出。

此外,本网站还支持商品检索功能。用户可以选择自己想要选择商品的信息或者输入商品的关键字,以实现商品的查询功能。

2.1.5 评价反馈功能

用户在完成商品购买之后可以进行商品评价。用户的评分将会直接展示在商品页面和商家的页面上。商品的评分由该商品的所有评价的平均值决定,商家的评分由该商家的所有商品决定。

2.2 系统功能结构设计图

三、基本表定义

根据之前的设计文档以及规范化原则,本系统采用共采用了 8 个基本表,它们分别为:管理员信息表(admin),用户信息表(users),商户信息表(shop),商品信息表(item),类别信息表(class),团购订单表(orders),订单详情表(iteminorder)和评论信息表(comment)。各基本表定义如下,其中的所有关系均已规范化到 3NF 以上。

管理员信息表(admin)

用户信息表(users)

商户信息表(shop)

商品信息表(item)

类别信息表(class)

团购订单表(orders)

评论信息表(comment)

订单详情表(iteminorder)

四、安全性设计

本系统能够满足较为基本的安全性设置,此章将从前端和后端两个方面说明本系统的安全性设计。

4.1 前端

前后端通信主要使用 POST 方法而不是 GET 方法,能有效防止其他人对网站信息的恶意截取与利用。用户使用用户名和密码登录的过程中,会首先检索用户名和密码填写的完整性,保证了在登录界面不会被渗透。

4.2 后端

后端的安全性设计主要采用了不同用户登陆的形式。商家、管理员、用户分别以三种不同的用户身份登陆到数据库中,不同角色之间的操作权限各不相同,这可以在很大程度上保证数据库的结构不被破坏。

此外,在 php 连接后台的函数中,对于特定数据类型的数据加以验证,防止了 SQL 注入所造成的危险。例如,验证某个变量是否为整型,之后再进行相应操作

  1. $type = intval($type);

或者是将需要检索的变量名使用引号括起来:

  1. $result = mysql_query("select * from users where user_email = '$name' and user_password = '$pw'",$conn);

五、存储过程、触发器和函数

5.1 存储过程

本平台后端共采用了三个存储过程,下面我将分别对其进行介绍。

5.1.1 商品数量设置存储过程(setrest)

过程输入:商品 id id,需要设置的商品数量 itemnum

过程输出:操作成功返回 0,否则返回 1

作用:将对应 id 的商品库存数量设置为 itemnum。由于商品的库存不可能为负值,因此首先判断 itemnum 是否大于等于 0,如果是,那么进行赋值操作,输出 0;否则操作不合法,返回 1

实现代码

5.1.2 商品评价统计存储过程(itemcomment)

过程输入:商品 id itemid

过程输出:1 星评价的占比 n1 , 2 星评价的占比 n2,3 星评价的占比 n3,4 星评价的占比 n4,5星评价的占比 n5,该商品的评价总数 total

作用:统计 itemid 对应商品的所有评价的数量,并得到各等级评价所占的比例,以方便前端建立报表图形。

实现代码

5.1.3 订单管理存储过程(orderManage)

过程输入:用户名 username, 商品 id iid, 购买数量 num

过程输出:运行结果 res 0 为执行成功,否则为 1

作用:在用户进行购物操作的时候,根据不同的场景进行不同的订单操作。如果该用户不存在未结算的订单,那么系统将会为此用户新创建一个未结算的订单,之后将用户购买的操作插入到该订单的订单详情之中;如果该用户名下存在未结算的订单,那么系统将会直接在此订单的详情中插入用户现在购买的商品的信息

实现代码

5.2 触发器

5.2.1 商品评分更新触发器(item_star_update)

作用对象:商品信息表(item)

触发条件:comment 表插入操作后

功能:在 comment 表中插入了一条新的评论之后,也就是用户对某商品进行评价之后,根据此评价重新计算该商品的评分(item_stars)

实现代码

5.2.2 商家评分更新触发器(shop_star_update)

作用对象:商家信息表(shop)

触发条件:商品新表做出修改后

功能:根据商品评分的修改更新商品的评分

实现代码

5.2.3 用户年龄检查触发器(check_user_age)

作用对象:用户信息表(users)

触发条件:在用户表进行更新之前

功能:首先判断输入的年龄是否合法,如果合法,更新用户年龄,否则终止操作

实现代码

5.2.4 商品详情检查触发器(check_item_num)

作用对象:订单详情表(iteminorder)

触发条件:在订单详情表进行更新之前

功能:判断用户购买的商品数量是否合法,如果合法,更新订单详情,否则终止操作

实现代码

5.2.5 订单价格更新触发器(order_price_update)

作用对象:订单详情表(iteminorder)

触发条件:在订单详情表插入新条目之后

功能:根据更新的商品的 id 和数量更新当前商品的价格

实现代码

5.2.6 用户支出统计触发器(user_outcome_adapter)

作用对象:订单信息表(orders)

触发条件:订单信息表进行更新之后

作用:根据更新订单的用户名,更新该用户的总支出情况

实现代码

六、实现技术

6.1 前端技术

整个前端使用了很少 bootstrap 的 css 和 js 样式,基本的样式都是通过 html + css + javascript 手工实现,也运用了少许的 jquery 内容。前后端通信通过 ajax 进行,传递信息格式是 json。

6.2 后端技术

后端未使用现有的成熟框架,采用 PHP + MySQL 手工搭建。每当前端发来请求的时候,后端会首先解析前端所发来的 JSON 数据,之后进行相应的数据库查询,最终将查询的结果重新打包成 json格式返还给前端。大致的实现流程如下:

七、运行实例

7.1 主页页面

主页页面采用 HTML + CSS + JS 实现动态加载,各个分栏中的内容都来源于数据库,可以跟随数据库的变化而变化。未进行登陆以及登陆后的页面会有所不同。

7.2 登陆界面

在主页点击登陆按钮之后将会弹出对应的登陆弹窗,在弹窗内输入注册邮箱和密码,然后点击立刻登陆。此时前端将会连接后端的服务器,进行身份校验,在确定输入的密码和登陆的用户一致后方能完成登陆操作。

登陆后的主页右上角将会显示用户的用户名或者商家的商家 ID。

7.3 商品页面

商品页面可以通过点击主页的商品图片或者通过点击搜索后的结果到达,展示了商品的各个属性和评价。用户可以在此购买商品,也可以对商品进行评价。

如下图所示,页面最上方显示商品的名称和描述,左侧有商品的配图,右侧有商品的优惠价、原价以及库存等信息。下方显示此商品的消费评价等信息,用户也可以通过点击提交评价按钮进行评价的提交。提交后的评价将会显示在页面的最下方。

7.4 商家管理页面

商家登陆后即可进入到商品管理页面,商家可以在这里修改自身的信息,也可以在此对商品做出添加,删除,修改操作。

7.5 搜索页面

搜索功能分为按类别搜索以及按照关键字搜索两类,点击页面上方的页面即可跳转到商品的类别搜索界面

7.6 购物订单

购物订单上半部分显示未支付的商品,按下显示金额的按钮可以进行支付,一次支付的所有内容算作一个订单。下半部分显示已支付的订单,每个订单用一圈黑色包裹,里面展示了订单具体内容。

7.7 管理员登陆及管理接口

八、源程序简要说明

8.1 前端程序

前端内容基本以 html 的格式放在根目录下,而每个 html 文件另配备一个 javascript 文件来实现动态加载以及通信。因为 css 优先级的问题,所以大部分 css 样式都嵌在 html 内部来重写 bootstrap代码。

  • index.html:主页面,顶端摆放大型横幅,来宣传推广商品。下面左侧有个移动导航条,分类导航到各个栏目的商品,栏目共分五类:美食、酒店、电影、KTV、生活服务。每类各展示几个商品,点击更多会跳转到类别目录下

  • mer.html:商品信息界面,上半部分展示商品具体信息,用户提交订单。下半部分展示商品评价并且用户可以自己填写评价

  • merchant.html:列出商户具体信息,提供按钮进行编辑

  • merchantEdit.html:商户编辑信息界面,可编辑名称、邮箱、电话、地址

  • merEdit.html:商品信息编辑界面,可编辑名称、描述、原价、价格、图片、库存、类型

  • user.html:用户个人信息界面,显示用户年龄、邮箱、电话、地址、头像、总支出

  • userEdit.html:用户个人信息编辑界面,可编辑用户年龄、邮箱、电话、地址、头像

  • register.html:登录界面

  • result.html:顶部搜索结果界面,同时也是分类显示界面,界面每一排显示一个符合结果的商品

  • paylist.html:订单界面,上面是未支付的订单,按下方按钮可以进行支付。下面是已支付订单,每一个订单会展示在一起。每个订单可以有多个不同的商品

8.2 后端程序

后端连接数据库所用的函数全部保存在 htdocs/php 文件夹下面,各文件的具体功能如下:

  • addComment.php:创建商品评价的函数

  • addItem.php:供商户添加商品所用的函数

  • adminlogin.php:管理员登陆功能的函数

  • createorder.php:创建用户清单的函数

  • deleteitem.php:删除物品的函数

  • itemcommnet.php:显示某商品评价的函数

  • loadindex.php:加载主页内容的函数

  • loadinfo.php:读取个人信息的函数

  • loadmer.php:mer 页面的动态填写函数

  • loadshop.php:读取商家信息的函数

  • login.php:用户/商家登陆用函数

  • mysql.php:连接数据库所用的函数

  • pay.php:处理订单结算的函数

  • register.php:实现登陆功能的函数

  • search.php:实现搜索功能的函数

  • shopitem.php:实现商户页面商品填充的函数

  • test.php:单纯的测试用函数

  • updateitem.php:更新商品信息的函数

  • updateshop.php:更新商户信息的函数

  • updateuser.php:更新用户信息的函数

  • userorder.php:读取用户所有订单的函数

九、总结

通过这次数据库课设的实践,我们对于课上所讲授的数据库知识有了更进一步的了解。不仅亲手从模型开始进行了完整的数据库设计流程,还亲自实现了事务处理、触发器、索引、存储过程等机制,对于课上学习的内容进行了进一步的巩固和加强,同时也深刻地体会到了“实践”对于计算机科学这个学科的重要性。纸上得来终觉浅,绝知此事要躬行。由于刘瑞老师课上讲授的 SQL 语句多为 T-SQL,而且之前的题目大多都是用笔写 SQL,这导致我们的数据库编程经验时期是非常短缺的。对于手写 SQL 语句中的小错误,我们常常会归结于自己的马虎,但是等真正敲起代码来的时候,一个小小的错误都会导致 SQL 语句无法执行。不能熟练使用的结果就是提笔就报错,然后进入漫长的 debug 阶段,在经过比较漫长的熟悉过程之后,开发的效率才慢慢提高了起来。在数据库编程面前,细心,才是保证开发效率的唯一捷径。

上传的附件 cloud_download 基于MySql和php的团购平台.7z ( 5.43mb, 13次下载 )
error_outline 下载需要15点积分

keyboard_arrow_left上一篇 : 基于SQL语言的酒店管理系统 基于JAVA和MYSQL的医院简易挂号管理系统 : 下一篇keyboard_arrow_right



ilovehim
2019-12-29 14:44:14
基于MySql和php的团购平台
斯特瑞克
2019-12-30 22:54:41
基于MySql和php的团购平台
he_zai
2020-05-10 15:16:32
基于MySql和php的团购平台
shen
2020-05-12 11:01:42
基于MySql和php的团购平台
PRIVATE!
2020-07-13 10:11:18
这个数据库如何连接呀?我连不上数据库,

发送私信

岁月极美,在于它必然的流逝

13
文章数
12
评论数
最近文章
eject