1、基于PHP的微信商城的设计与实现【实用文档】doc文档可直接使用可编辑,欢迎下载年月日目录摘 要ABTRACII1 绪论11.1 研究的背景、目的和意义11 国内外文献综述1。 研究的主要内容22 需求分析与可行性研究42.1 市场定位分析42。2可行性分析42 需求目标2。 概述42。3。2 商城整体说明53系统解决方案63。1 设计方案的论证6.1 设计方案的选择63.12 工具的选择63。 设计方案的说明7.2。1 系统总体描述73。 系统角色类型3.2。3 系统规划3。2。4 预期目的9 技术要求9 系统详细设计1041系统模块架构10。2系统功能说明104。2。 系统登录模块104.
2、2。2 盒子设置模块423 盒子内容更改模块12.2。 盒子管理员模块134。5 基本商城功能模块43数据字典155 系统实现18。1 模块实现的理论基础85.2系统登录模块的实现185。 设置学校信息模块的实现185。 盒子选货模块的实现225。.1 选货模块22542 选货后编辑及提交模块25.5 管理员审核模块276人人商城到盒子模块的跳转295。7 双支付接入296 系统测试306。1 概述3.2 系统测试用例306。3 测试总结37 结束语参考文献4致 谢35摘 要随着电商的不断发展和新老电商品牌的更新换代,电商行业似乎已经进入一个饱和的阶段,另一方面,其以淘宝京东为大的垄断性质也越
3、发明显。传统电商的模式现在很难再发展出来新兴门户了,但是,电商现在的覆盖面还不是百分百的,有很多有待开发的“蓝海”正亟待接入互联网,所以在传统电商的基础上,开发出一套新的商业模式,避开当下电商“领头羊”的锋芒,是一种比较好的创业方法。而商城盒子就是这样一种模式,它是先消费后付款的,所以可以达到传统电子商城不可能达到的时效性和便捷性.其发展前景是巨大的,完全可以发展成一个集粉丝活跃度和用户消费量于一身的平台。本设计课题的任务就是基于传统商城的模式给商城盒子定制开发出来一套专用的电子商城模式,让用户的体验更好,商家的入驻和管理也更方便.采用了PH作为后台开发语言,HTML+S+CS作为前端开发语言
4、,遵守微信的开发规范,完成了零食盒子的基本功能,系统运行流畅,可以正常使用。关键词:电商;P;微信ATRACitthe continuosevlmnt of eletrityad nwand o elecri busnsbnd plcnt, electicy ndustry seem t haentered saturted sae, ontetr han,ts Taob ingdon rge mnopo nareisre nd or bius Theraditon eletric business melisno ffiultt delp ou of the new prtal, bu te
5、 elctrictbinesssont 10coverage,the are manyt b eveod le Ocen surgenly to aces thernet, thbasis ofthe trdionaeectricty bsines On te deveopme f a nw busns odl,toavod the curent leder in the ede of electricity,is btr ato start.Tllbi scha mdel, usn te ir payment fte thepantmol, to acheve he traonaleml c
6、n ot achie te tmeliness andconveniec.Its develope rps are hue, can develped into a set offan ivityand ser nsupi n a pltm。he askof desi task based on the tradiol mall del to t mal oustoze the eelopmen f a set f dedcat eal model,sotausers eerencebeter, businesmesetle and mangment is als more coneiet。
7、Usig PHPs bacgundevelomentlanuag,HTM + JS + CSS s a fot-nd deveopment language,t colyiht develomento WeChatnors, te copletonf th baic ctio o t ack ox, th sytem rusmoothly, can be usdnrmll。Kwords: eleticit busns,PP,eCht1 绪论。1 研究的背景、目的和意义当代,互联网发展迅速,基于互联网而产生的应用正在改变人们的生活1,电子商务作为一种新的消费形式,以各种出众的开发语言为动力2,正
8、在以其势如破竹之势,迅速改变的人们的生活。互联网继续只用于做信息的话,显然是大材小用了,互联网应该为人们带来更多的便利。在信息化发达的国家,一些商家门户,如沃尔玛等都利用先进的开发框架3纷纷开展了自己的网上业务.本世纪初的一份调查就早早表明:网上购物从诞生之初就已经被现代家庭接受并且慢慢成为现代家庭的习惯,而P作为开发电子商城的主要开发语言,其开发框架也在不断增加4.有资料表明:001年,越来越多的商家开始在网上销售自己的商品5,中国网民中的1。6都在网上买过商品,大约有0人,在当时这个比例已经很接近发达国家.203年全年,我国的网上商城上交易额比2 年上升了0%,而近期的发展速度更是令人咂舌
9、,从淘宝网里程碑式的双十一开始,每一年,网上购物都在刷新交易金额记录,016年底,淘宝网更是拿出了日交易额127亿的骇人成绩。由此可见,短短的几十年,发展是如此迅速,“网上创业”已经从当初的山野小径变成了当今的商业发展高速大道。在国内,大规模网上销售平台都已成形并且不断有新兴事物的出现,而移动端代替了电脑端之后,变化更大6。互联网在中国已经改变了人民的生活和工作方式。而当前,网上商城看似已经被几大巨头所垄断,但是其待发掘资源还是有很多的,比如京东的逆境存亡就是一个很好的例子。我们应该在新形式下抓住机遇,随着用户的习惯来发掘和优化技术,让网络可以更好的造福人民。全球经济一体化是个大趋势,大力发展
10、网络,是全球经济一体化最有效的推动力。发展与创新是并存的,只有不断有创新的发展,才是良性的,所以开发一个有针对性的新形式的网上商城是很值得一试的.。 国内外文献综述虽然业内对电子商务的研究非常多,但是其针对性和深度都多少有点欠缺或者不太吻合本次研究,因此本节将对此进行总结和深入研究。Abraham曾经对印度1家企业进行过专门的研究,很明显,接入了网上营销的公司的绩效要比没有接入的好的多。ichelle和ariell利用波特的竞争优势框架模型,针对电子商务对旅游业的影响做了深入研究,发现其对旅游业带来的效益也是巨大的.而Ccla(200)也对运营成本和电子商务进行了深入研究,结果是电子商务的作用
11、是积极的。LeebveLoiA对B2和中小企业收益进行了研究之后,认为中小企业也非常适合接入电子商务.。Feud和D.Weinod的研究项目是电子商务对国际贸易的影响,他们研究了个国家得出了最终结论:电子商务刚出现的前两年,对国际贸易影响甚微,但是平均从第三年开始,国际总贸易流将会因为电子商务发生显着变化。董佳(011)在国际贸易与电子商务一文中指出,电子商务在国际贸易组成中是重要的一部分。她的结论是电子商务的快速发展是国际贸易快速发展的重要推动力,跟上电子商务的发展步伐,既是机遇也是挑战。1. 研究的主要内容零食盒子是一种新的消费模式,采用线上线下结合的消费模式,线下消费,线上付款。对于线下
12、,其形式是:放一个盒子到学生宿舍,这个盒子归宿舍的人所共享,盒子运营商放固定数量的商品进盒子,用户消费的时候,直接拿盒子里的东西,然后往盒子里丢钱,自己找零,盒子运营商定期去维护盒子里的商品,是一种只适用于大学校园的高自觉、高素质人群的消费模式.而这次我的开发任务是,将这个模式转移到线上,对用户而言,在用户端盒子模块就相当于自己的一个“收藏夹”,用户可以定义这个“收藏夹”里放什么东西,后台商家收到用户的自定义信息之后,将会上门把客户选择的商品放进盒子里,这个过程是免费的,因为用户还没有产生真正的消费。在线下,实体纸箱盒子就是用户可以随时消费的“寝室超市”,其消费流程很简单,从盒子里拿东西,在“
13、收藏夹”(线上盒子模块)快速找到商品进行线上付款,一切基于诚信。微信已经通过它的大数据改变了当下的广告营销市场7,而且因为它的轻量化和跨平台化,所以没有选择APP开发,避开了开发攻坚,安卓IOS双平台同步,软件推广三大难题,在电子商务发展的过程中,微信是一个很好的营销平台8。整个商城是基于微擎版人人商城的二次开发,我的开发任务就是对人人商城进行数据库和代码逻辑分析,然后完成零食盒子的功能开发以及盒子数据库和人人商城数据库的融合,相当于在一块打了地基的土地上盖房子,用成熟的底层写自己的逻辑模块。2 需求分析与可行性研究.1 市场定位分析主打线上零食盒子的微信商城的构建初始目标是在校大学生,针对于
14、在校大学生的消费能力,微信商城在具有自己特色的同时应当适应大学生的消费需求。因此,以零食作为切入点,加上日用品,文具办公用品,以及各类生活服务,可以很快的占领大部分学生市场。同时,商品的保质保量,以及别的电子商城无法比拟的配送速度,会让粉丝的粘性大大增加。2.2可行性分析商城的建设需要有服务器资源,公司资质(用来申请、认证微信服务号),商品仓库,配送员开销。这些开销加在一起,与实体店的前期投入相比,大约只是实体店的十分之一。所以其在经济上是完全可行的。商城不牵扯到侵权,其在法律上是可行的.对于网页开发来说,PHP是比较流行的开发语言,而且网上有着海量的PHP开源程序,其中不乏优质源代码,所以,
15、没有必要从头开始写底层功能,只需要拿成熟技术做底层,然后自己做定制二次开发就可以了,所以,其在技术上是完全可行的.由于人人商城的操作以及后续我所做的定制开发的操作都是基于浏览器的网页操作,简单明了,对于经常网购的大学生群体来说,是操作是完全没问题的,而对于后台管理人员来说,也有专门的可视化管理页面,所以管理员也无需具备专业知识,只需要对一些数据进行简单的输入、修改、删除和日常的维护就够了.2。需求目标23。1 概述该商城的目的是开发一个带盒子功能(相当于个人收藏夹,不过还是有很大区别)的微信商城,在用户端要实现的基本主要功能有:(1)商品选购(可按分类方式查找商品,也可模糊全局搜索)(2)购物
16、车功能(3) 查看商品详细情况(4)用户自动登录(5) 查看用户的订单信息(6)查看用户的订单信息(7) 修改用户信息后台管理部分有:()商店商品管理:添加、修改、删除、查看(2) 用户信息管理:查看、修改(3)订单信息管理:查看订单清单,更新订单状态(4) 盒子管理:查看盒子申请,更新盒子状态2.3。2 商城整体说明微信商城的主要参与者是顾客和商家以及管理员,顾客端是一个完整的消费体验,商家只需负责线下的服务,而管理员负责后台的运行、管理,以及信息的审核。网上商店的操作流程都类似,操作步骤说明如下:(1)顾客在公众号点击特定按钮进入微信商城(2)后台调用微信接口,拉取用户oend完成静默登录
17、(3) 用户设置学校信息(4) 用户设置盒子内容,提交申请(5) 后台管理员审核申请,点击通过(6) 用户在“我的盒子”里点击商品完成购买(7) 后台自动收集信息(8) 晚上6点,导出一整天的订单信息,排版分类,开始补货3 系统解决方案3.1 设计方案的论证1.1设计方案的选择所谓BS,是指“Brows/erver(浏览器/服务器)”应用模式,客户端/服务器模式(Clien/Seer)架构的发展,这种设计模式的好处是,用户不需要下载任何软件(或者只需下载一些基本的功能插件),就可以利用浏览器完成一些业务逻辑,和平常上网的过程没有区别。这种模式最大的优势是广域网下的业务处理,即使是拨号上网的用户
18、也不会感觉很慢。另外,无需繁杂的软件安装和后期维护方便也是其优势之一。其工作原理是,在客户端浏览器对服务器发送HTP请求,WEP服务器通过PH文件进行数据库操作和业务逻辑处理,并将操作结果以静态HTL页面的形式返回给前端浏览器9。如图1:图1 B/S工作流程图.。工具的选择工欲善其事必先利其器,开发工具的选择对于程序开发来说是个很重要的过程,它关乎开发的效率和最终的代码质量,所以选择合适的开发工具,是一个好的开始。(1)前台开发技术的选择:AdobeDramwaver,中文名称 ”梦想编织者,是美国MACOMEDIA公司开发的一款优秀网页设计软件,Adobe reamweae是第一套针对网页设
19、计师开发的视觉化设计工具.它的代码提示和纠错机制非常好用,可以让HP编程的过程非常高效,而且大大减少了语法错误,格式错误出现的几率,提升了编码效率。(2)后台数据库管理工具的选择:vict premium是一款数据库管理工具.因为Mysql本身提供的网页式数据库管理工具不是很好用,所以利用aviat Premium这一款第三方P端数据库管理工具进行可视化操作来提高效率。而且avicat prim还提供了一些类似于数据库查询结果导出成xls等非常好用的小功能。() FT文件管理工具的选择:FileZilla是一个免费开源的FTP软件,其简洁的界面给人印象良好,而且其功能也不弱,具有FT软件所有应
20、该具备的功能,对于文件的上传下载,其多窗口的操作模式,将效率提升了好几倍。3。2 设计方案的说明3。2。系统总体描述因为电子商城架构过于庞大,凭一个人的力量,短期内不可能完成全部功能的开发。所以本系统采用微擎版的人人商城,进行二次开发,完成一些定制性的功能,人人商城的兼容性很强,可以把自己想要的功能做成插件,一些需要特殊权限的功能(例如微信付款),只需要将数据写回人人商城,剩下的业务逻辑它就会帮我的系统完成。因为选择了微信端,所以用人人商城等同于用自己的模板引擎把微信接口再次封装了一下,让开发的目的性更强。2。2 系统角色类型该系统有三类用户,分别是人人商城管理员,盒子模块管理员,普通用户.如
21、图所示:图2 用户类别总图人人商城管理员信息储存在人人商城原版数据库里,是已经建好的一张表,这个系统用户的权限是最高的,他可以接入微信公众号,配置服务器资源信息,查看其他用户信息,上下架商品,查看订单,发货退货等等.如图3所示:图3 人人商城管理员权限用例图盒子模块管理员:其基本功能和普通用户是一样的,比普通用户多了个审核盒子申请的功能。普通用户:权限最低,可浏览网页,商品,下单,提交盒子申请等等。如图4所示:图4用户权限用例图3.2.3 系统规划对于数据库系统,前期的规划和设计工作是非常有必要的,因为数据库是整个系统的核心和最大的兼容性限制,如果最初的设计是不合理的,对后期设计的影响将会是毁
22、灭性的。系统采用支持事务的Mysql11。而盒子模块的主要系统功能规划如下:设计不同用户的操作权限和登陆方法对所有用户开放的页面查看、商品查看以及下单 根据下单情况对数据库进行操作根据退款情况对数据库进行操作根据关注、跑路情况对数据库进行操作维护用户、商品、订单以及管理员信息3。.4 预期目的提高盒子维护的工作效率 通过全面简洁的信息查询、删除和修改方式,提高订单配送的工作效率通过使用本系统,能达到全面高效的提高系统的管理水平、降低人力资源消耗、提高工作效率的目的3.25 技术要求数据库设计满足功能要求数据库冗余度小,尽量满足三范式要求绘制数据库各数据表之间的关系图建立数据库访问接口类,实现对
23、数据库的访问完成功能模块中的一个较小的功能,以测试数据库接口的正确性 系统详细设计41系统模块架构系统模块架构图如图5所示:图5 系统模块架构图.2系统功能说明4。2。1 系统登录模块(1) 功能说明这个模块是用的微信opend,一个用户在一个公众号上的opend是唯一的12,以此为用户账号,同时无需密码,不用用户手动填写登录信息,达到“静默登录”的效果.(2) 功能特性普通用户静默登录。(3)输入、输出输入:用户penid输出:登录反馈(4) 前提条件用户关注服务号.4。.盒子设置模块盒子设置模块的流程图如图所示。图 盒子设置流程图(1) 功能说明此模块为用户使用盒子功能的关键模块,主要完成
24、盒子内容的设置和使用宿舍的创建以及加入。(2) 功能特性普通用户基本操作.() 输入、输出格式输入:微信接口提供的信息用户填写信息商品信息输出:提示信息操作反馈(4) 前提条件用户关注服务号。4.2。3 盒子内容更改模块盒子内容更改模块的流程图如图7所示。(1) 功能说明此模块为用户使用盒子功能的关键模块,主要完成盒子内容的日常更改。(2) 功能特性普通用户基本操作。(3)输入、输出格式输入:微信接口提供的信息用户填写信息商品信息输出:提示信息操作反馈图7 更改盒子内容流程图(4) 前提条件用户关注服务号。4.4 盒子管理员模块盒子管理员模块的流程图如图8所示。(1) 功能说明此模块为管理员审
25、核盒子申请的关键模块,主要完成商家盒子内容把控的主动性。(2)功能特性管理员特殊操作。() 输入、输出格式输入:用户提交的申请信息商品信息输出:审核结果图8 盒子管理员流程图() 前提条件操作人有管理员权限.。5 基本商城功能模块商城基本功能模块流程图如图所示。图9 商城基本功能模块流程图()功能说明此模块人人商城的基础功能模块。(2) 功能特性面向全网所有用户。(3) 输入、输出格式输入:用户提交的各种行为信息商品信息输出:商城信息反馈() 前提条件商城正常运行即可。4。3 数据字典本系统模块一共有九张表,分别是:存储盒子管理员信息的盒子管理员表tl_admin,存储盒子内容信息的盒子表bl
26、_box,存储地址信息的学校表b_scol,宿舍楼表tbl_blding,宿舍号表bdom,学校宿舍号表b_chol_orm,存储申请的申请表tblsbit,存储修改时间的时间表tbm,存储用户信息的用户表tl_uer.盒子管理员表见表1.表1盒子管理员信息表名类型长度是否主键能否为空备注di1是否主键oeiarchar8否能管理员peniamevarchar1否能管理员姓名盒子信息表见表2。表2盒子信息表名类型长度是否主键能否为空备注dint1是否主键chool_dom_dInt20否否宿舍idgoods_Idint1否否商品idboont否否是否存在nnt11否否商品数量noUeInt1否
27、否是否在使用,代表编辑状态,1正常使用状态,2代表中间状态学校表,楼栋表,以及宿舍表分别见表3,4,5。表3学校表名类型长度是否主键能否为空备注Idin11是否主键hoolNmevarchar50否否学校名字表宿舍楼栋表名类型长度是否主键能否为空备注int11是否主键chooIIt11否否学校Idrmvrchar50否否宿舍楼栋名表宿舍号表名类型长度是否主键能否为空备注Idnt11是否主键chool_buidn_IdIn11否否宿舍楼IDdomuvarhr50否否宿舍号学校宿舍表见表6.表6学校宿舍表名类型长度是否主键能否为空备注Iin1是否主键scoolNamevrhar50否否学校名字di
28、oryovrcha50否否宿舍楼号rmNoarhr5否否宿舍号creditValInt1否能信用值ineIn11否否累计更改盒子次数申请表见表7。表申请表名类型长度是否主键能否为空备注Idin20是否主键scool_buidng_IInt1否否宿舍楼IDopenidarhar80否否申请人imatetime否否申请时间时间表见表8。表时间表名类型长度是否主键能否为空备注Idnt1是否主键chool_IdI1否否学校IDstTmdteime否否修改时间用户表见表9。表9用户信息表名类型长度是否主键能否为空备注dn1是否主键coo_Idnt1否否学校IDopenidVarc80否能用户opnidn
29、merhar2否能用户姓名Phnevarhar0否能用户手机号5系统实现5.1模块实现的理论基础这次选用的数据库是Mysql,利用HTML+JCSS技术完成前端页面的设计开发,用PHP+AJ技术完成后台逻辑功能的实现13.系统一共有五大模块,其详细实现方法见以下各小节。2 系统登录模块的实现系统登录模块的逻辑是静默登录,采用微信接口拉取用户信息,因为人人商城又对这个接口做了封装,所以本系统选择在人人商城里AAX传值到我的页面,完成opend的传值,具体代码如下:5。3 设置学校信息模块的实现首先通过用户的ond获取用户的名字以及头像信息,如图0所示,然后用户填写信息,(其间有输入验证,如图1所
30、示)。填写完成后,点击提交,完成信息的填写,仅可填写一次,再次进入就只可以查看信息,如图12所示。此模块分别和两个页面有关系,一个是填写信息页面,一个是选择学校宿舍页面。图10 信息页面图图11 输入验证示意图图12 填写完成示意图其关键逻辑有三个,第一是信息的拉取以及显示,关键代码如下:?php echo ?php $rs=mysql_query(select * from tbl_school);/显示所有学校信息 while($rows=mysql_fetch_assoc($rs)echo .$rowsschoolName.;?第二个是信息输入的验证控制模块,关键代码如下: $(#sub
31、mit).click(function()load_re2();var deal=true;if($.cookie(school)=null)deal=false;$(#w_school).css(display:);if($.cookie(building)=null)deal=false;$(#w_building).css(display:);if($.cookie(dorm)=null)deal=false;$(#w_dorm).css(display:);if($(#name).val()=)deal=false;$(#w_name).css(display:);if($(#phon
32、e).val()=)deal=false;$(#w_phone).css(display:);第三个是提交信息后的数据库操作,关键代码如下:0)/ echo 有学校;/说明已经有学校了 else echo 没学校; ?5.4 盒子选货模块的实现5.4。1 选货模块用户在商品的罗列页以及详情页都有一个“添加”的按钮,点击这个按钮,将通过Ajax把值传到一个后台处理的P文件,完成数据库盒子表记录的插入和修改操作。如图3所示。其实现方式主要分为两部分,第一部分是在人人商城添加点击事件。具体代码如下:$goodstitle 添加到盒子var xhr = new XMLHttpRequest(); /a
33、jax事件设置,以便接收返回的信息 xhr.onreadystatechange = function() if(xhr.readyState=4) alert(xhr.responseText); xhr.open(get, xhr.send(null);xhr.onreadystatechange = function()if(xhr.readyState=4)alert(xhr.responseText); xhr.open(get, xhr.send(null);图13 盒子选货图5。4 选货后编辑及提交模块选货之后,进入“盒子设置页面,就可以看到已经选择的商品,在这个页面上可以修改商
34、品的梳理,左滑出现删除按钮,点击可以删除商品,左侧有选中按钮,选中后下方有个实时的数值计算,点击提交按钮就可以提交。如图1所示.图14 盒子设置编辑演示图此模块的关键有四部分,第一部分是商品罗列,其代码如下所示:if(mysql_num_rows($rs_dorm)0)/预留判定条件 $rows_dorm=mysql_fetch_assoc($rs_dorm); $rs_goods=mysql_query(select goods_Id,num from tbl_box where nowUse=0 and school_dorm_Id=.(int)$rows_dormschool_dorm_
35、Id);/根据组名选出所有商品while($rows_goods=mysql_fetch_assoc($rs_goods)/依次获取这个宿舍下的每个商品的商品id $nm=$rows_goodsnum; $goodsId=$rows_goodsgoods_Id;/存的是这个宿舍里的所有的商品id $rs_detail=mysql_query(select title,thumb,marketprice from ims_ewei_shop_goods where id=.(int)$goodsId);/从老表里获取每个商品的详情 $str=$str.$goodsId.:.$nm.,; $rows_detail=mysql_fetch_assoc($rs_detail); $title=$rows_detailtitle;$IMG=$price=$rows_detailmarketprice; echo ; echo 删除 ; echo ;/在这里用数组写购物车 echo ; echo .$title.; echo ¥.$price.; echo ; ech