admin 管理员组文章数量: 886992
PHP+mysql+微信小程序九龙超市外卖
摘 要
随着"互联网+"时代的到来,人们享受到了互联网带来的便利。如今网上购物的软件也有很多,人们在网上订餐以后,还会缺少水果,零食等超市中才有的商品。无论是京东还是美团外卖,都难以满足人们生活的即时需求,这就凸显了外卖超市的重要性,九龙超市外卖小程序是针对目前用户需求开发的超市外卖小程序,使大众可以足不出户即可享受送货上门的优质服务。
本系统主要是对九龙超市外卖小程序进行研究开发。主要是采用PHP语言、Thinkphp框架、Mysql数据库作为开发,系统采用B/S结构进行开发,完成一个九龙超市外卖小程序。
关键词:小程序;九龙超市外卖;Mysql数据库
PHP based takeout applet for Kowloon Supermarket
ABSTRACT
With the arrival of the "Internet plus" era, people enjoy the convenience brought by the Internet. Nowadays, there are also many softwares for online shopping. After people order food online, they will still lack fruits, snacks and other commodities that are only available in supermarkets. Neither JD nor Meituan takeout can meet the immediate needs of people's lives, which highlights the importance of the takeout supermarket. The Kowloon Supermarket takeout widget is a supermarket takeout widget developed for current user needs, so that the public can enjoy the high-quality service of delivering goods to their home without leaving home.
This system is mainly for the research and development of the takeout widget of Kowloon Supermarket. It mainly uses PHP language, Thinkphp framework and MySQL database as development tools. The system uses B/S structure to develop and complete a small takeout program for Kowloon Supermarket.
Key words:Applet; Kowloon Supermarket Takeout; Mysql database
目 录
摘 要
ABSTRACT
第1章 绪论
1.1研究背景与意义
1.2研究内容
1.3系统目标
1.4本文的结构
第2章 关键技术介绍
(一) PHP开发语言 3
(二) JavaScript脚本语言 3
(三) Mysql数据库 3
(四) AJAX技术 4
(五) Thinkphp框架介绍 4
(六) B/S体系结构介绍 4
(七)小程序框架以及目录结构介绍 4
第3章 系统分析
3.1可行性分析
3.1.1操作可行性
3.1.2技术可行性
3.1.3经济可行性
3.2功能需求分析
3.3用例分析
3.4数据流分析
3.5数据字典
第4章 系统设计
4.1结构设计
4.2功能设计
4.3数据库设计
4.3.1概念设计
4.3.2表设计
第5章 系统详细设计
5.1JavaEE连接数据库
5.2登录模块
5.3店铺地址推荐模块
5.4领券中心模块
5.5购物车模块
5.6会员用户管理模块
5.7电商热卖管理模块
5.8电商热卖订单管理模块
5.9现实的秒杀管理模块
第6章 系统测试
6.1测试目的
6.2测试用例
第7章 结论
参考文献
致 谢
- 绪论
1.1研究背景与意义
从19世纪以来,零售行业共经历了四个发展阶段"。第一阶段是百货公司的兴起;第二阶段是连锁超市、便利店等业态的出现;第三阶段是C2C 电子商务的飞速发展;第四阶段是线上线下的交互融合阶段,即新零售阶段。我们可以看到科技的发展在推动着各个行业的进步和革新,由于云计算、互联网+、大数据等技术的进步,推动着零售业的第四次革新,目前80、90后消费者作为主要的消费群体,更多的倾向于快速、便捷的消费体验、合适的消费性价比。随着超市外卖平台的出现,带给消费者一种“即时需求、即时购买、即时享受、即时服务”的即时性和便捷性服务,这也是传统电商平台无法提供的新颖体检。针对以上发展趋势分析,基于小程序的九龙超市外卖系统应运而生,为超市外卖平台的开发商、渠道商和店主提供管理多家超市设备、智能分析海量数据、同步商品库存情况、远程控制店内智能设备等功能。
为了不受时间和地点的限制,智能手机用户可以通过移动网络访问网站和处理各种业务和互联网,这是一个有效的将应用系统的功能扩展到手机终端的方法。现今各种智能手机层出不穷,各类基于手机平台的软件应运而生,其中,在众多交流软件中,微信备受人们青睐。近年来,微信发展规模越来越大,越来越多的人开始使用微信,目前随着智能手机系统的普及,人人手机上基本都有了微信。本论文开发的九龙超市外卖小程序主要牵扯到的程序,数据库与计算机技术等。覆盖知识面大,可以大大的提高系统人员工作效率。
1.2研究内容
九龙超市外卖小程序的开发及实现,所需要的工作内容:
(1)首先是确定选题,确定好所要做的系统,并对系统的背景及现在面临的一些问题等进行系统的初步确认。
(2)系统确认完成后,结合系统开发的需求进行确认系统开发所使用的技术,九龙超市外卖小程序的开发使用Thinkphp框架,数据库进行平台的搭建开发,确认好使用的技术进行技术分析,所使用的技术是否可以完成系统的实现。
(3)确定好系统使用的技术,进行在线确认系统所划分的用户角色,并且根据用户角色划分确定所要设计的功能模块,对九龙超市外卖小程序的设计主要划分别为管理员和用户角色,并所使用的功能模块也相应不同,但是系统的数据库实现的内容是交互的,用户可以随时根据自己的需求进行超市商品下单购买,对于系统工作人员可以根据自己的分管内容进行商品信息处理以及订单信息的处理及操作,管理员获取到所有用户的详细数据信息,并根据需求进行第一时间处理解决。
(4)系统的功能模块确认完成后进行程序及界面的设计,设计完成后,并且通过测试来判断程序是否完善,对于系统测试,需要不同的用户进行不同的内容编辑及提交,及使用不同的测试方式找出程序中存在的漏洞,并对程序出现的漏洞问题进行在线解决处理,如果测试系统没有任何问题时,可以将系统上传进行正式操作使用。
1.3系统目标
对于典型的数据库系统,尤其是对于像九龙超市外卖小程序这样的数据流量特别大的网络系统,必须要满足使用方便、操作灵活等要求。本系统在设计时应该满足以下几个目标
(1)采用人机对话的操作方式,界面美观、友好,信息查询灵活、方便,数据存储准确、安全可靠;
(2)全面展示所有商品,并可展示主要商品;
(3)便于顾客快捷地进行商品信息搜索;
(4)用户可以随时修改自己的基本资料;
(5)实现下单的功能;
(6)顾客可以随时查看自己的订单信息;
(7)对客户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误;
(8)系统最大限度地实现了易维护性和易操作性;
(9)系统运行稳定、安全可靠。
1.4本文的结构
本文具体内容包括:绪论、系统采用的关键技术、系统分析、系统设计、系统实现和系统测试。本文着重描述了系统的组成与结构,阐述了系统的设计方案、实现方法以及所采用的开发工具和相关技术,另外,重点剖析了部分环节的开发过程。本系统在一定的环境下对系统的重要模块进行了模拟测试,证实了系统的可用性、可靠性。
- 关键技术介绍
(一)PHP开发语言
PHP是一种面向对象的程序设计语言,类是PHP程序的基本组成单元,类中又包含了属性和方法,在类中又可以创建无数个对象。类中包含的主要成员是字段和方法,字段是指一种数据变量,方法是指对字段进行操作的集合,包括给其他变量赋值、调用方法等。PHP代码都是编写在类体中,类体中的每个数据项都可以看作是一个对象,PHP不支持类的多重继承,但可以支持接口的多重继承,并且支持类和接口的实现。由于PHP通常在网络环境中使用,所以PHP提供了一个防止代码恶意攻击的安全机制,同时,PHP具有强类型机制、自动收集垃圾和异常处理等特性,这些都是PHP语言健壮性的重要保证。
1、PHP语言具有如下特点:
(1)PHP 结合 C、Java、Perl 以及自创的新语法形成了自己独特的语法。
(2)PHP可以更快速的执行动态网页,当然这只是相对于CGI或者Perl来说,PHP可以在HTML文档中嵌入程序,而且去执行,另外PHP能够实现CGI的所有功能,因此说明PHP具有很强大的功能。
(3)大部分当下流行的数据库和操作系统PHP语言都能够支持。
(4)PHP语言的最重要特点就是可以让C、C++进行扩展
2、PHP语言具有如下优势:
(1)开放源代码:事实上PHP的所有源代码都可以得到。
(2)免费性:PHP是开源代码并且免费
(3)快捷性:PHP对于初学者来说,它不止编辑简单可以嵌入与HTML语言中,而且对于程序开发和运行也是非常快速的,并且非常容易掌握。
(4)跨平台性强:PHP是可以在服务器运行的脚本语言,所以在UNIX、Android、Mac OS、WINDOWS等操作平台上都可以运行。
(5)效率高:PHP对系统资源的消耗相当少,所以它的效率高。
(6)图像处理:PHP不止是可以使用GD2对图像进行处理,而且他还可以完成对图像的创建。
(7)面向对象:php4、php5对于PHP在面向对象上,有了许多的改进,PHP语言开发大型商业程序也是可以胜任的。
(二)JavaScript脚本语言
此作品中,其中包含了页面的搭建,以及前后台数据接口的连接等,而对于实现用户页面交互以及一些页面逻辑性判断等功能都是用JavaScript完成的[7],而JavaScript是已经被广泛用于Web应用开发,是一种属于网络的脚本语言,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能。JavaScript作为一种描述语言,作用于web前端,它基于对象(object)和事件驱动(Event Driven)并且安全性也较好。它可以有效的在客户端运行并为服务器减轻负担。
1、JavaScript具有的特点:
(1)脚本语言。JavaScript是一种脚本语言并具有解释性,在程序运行过程中,它就可以进行解释。
(2)基于对象。JavaScript可以创建对象,而且还可以使用现在存在的对象,它是基于对象的脚本语言。
(3)简单。JavaScript不对使用的数据类型有着严格的要求,应用的是弱类型的变量类型,设计是十分紧凑简单。
(4)动态性。JavaScript是可以不经过Web服务器对用户的操作做出相应,是可以采用事件驱动的脚本语言。
(5)跨平台性。JavaScript可以不依赖操作系统,但需要浏览器的支持。所以在编写JavaScript脚本后可以在任意机器上使用,但要注意的一点,使用的浏览器是支持JavaScript脚本语言,现在大多浏览器也支持JavaScript。
2、JavaScript的用途
JavaScript的用途是解决页面交互和数据交互,最终目的是丰富客户端效果以及数据的有效传递。
(1)实现页面交互,提升用户体验实现页面特效。即js操作html的dom节构或操作样式。
(2)客户端表单验证。当数据传送到服务端前,可以将用户填入并上交的信息快速有效的验证,进行了数据的交互,为服务器减轻了负担。
(三)Mysql数据库
Mysql Database,通常简称为Mysql,是一款关系型数据库的管理系统。Mysql数据库系统是目前最流行的关系型数据库管理系统之一,其系统具有良好的可移植性,功能强大且使用十分方便。Mysql支持很多系统和硬件,包括HP-UX,Linux,MicrosoftWindows,SunSolaris,AppleMac等。
Mysql系统的特点:
(1)Mysql的多线索服务器的体系结构使其只利用很少的资源就能够支持多用户的、大数据的高性能事务处理;
(2)Mysql支持大量的多媒体数据,例如声音、动画、二进制图形和多维数据结构等;
(3)Mysql提供了安全保密管理系统,具有良好的安全性、一致性和完整性;
(4)具有新的分布式数据库能力和分布处理的能力;
(5)提供了一些高级语言的接口软件,可以帮助快速开发基于客户端的应用程序,具有良好的移植性、可连结性和可兼容性。
Mysql数据库逻辑结构包含表空间(tablespace)、段(segment)、范围(extend)、数据块(datablock)、和模式对象(schemaobject) 。每一个数据库都可以逻辑划分为一个或多个表空间,每一个表空间都是由一个或多个数据文件来组成。Mysql数据库分为系统表空间和非系统表空间,每一个Mysql数据库都包含一个称作SYSTEM的系统表空间。
(四)AJAX技术
AJAX是创建交互式网页的一种开发技术,利用AJAX技术可以实现以无刷新网页的方式更新HTML元素中的内容。传统的网页如果要更新网页内容,必须重新加载整个页面,而AJAX使用异步数据传输在网页和Web服务器之前传递HTTP请求,这样可以使网页只请求少量信息,而不用刷新整个页面。
(五)Thinkphp框架介绍
ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。
ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。
ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。
作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。
(六)B/S体系结构介绍
B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Chrome、Safari、Microsoft Edge、Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server同数据库进行数据交互。
(七)小程序框架以及目录结构介绍
整个小程序框架系统分为两部分:逻辑层和视图层。小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 小程序 体验的服务。小程序在视图层与逻辑层间提供了数据传输和事件系统,提供了自己的视图层以及逻辑层框架,让开发者能够专注于数据与逻辑。框架的核心是一个响应的数据绑定系统,可以让数据与视图非常简单地保持同步。在逻辑层做数据修改,在视图层就会做相应的更新。框架提供了一套基础的组件,这些组件自带微信风格的样式以及特殊的逻辑,开发者可以通过组合基础组件,创建出强大的微信小程序 。
- 系统分析
3.1可行性分析
本系统操作简单,易理解。九龙超市外卖小程序与大部分电子商务系统的操作流程类似,避免了用户学习使用系统的时间和负担。
3.1.1操作可行性
本系统使用的是现流行的开发语言,即PHP技术。同时所有的信息都是以网页的形式展示,系统中的信息都可以在后台操作数据库达到数据更新的效果。用户只需要会计算机的基本操作或者会上网就可以使用本系统,系统管理员只需要懂得文件上传,处理文本即可操作管理后台。系统布局较简单,功能操作不复杂,完全符合现代市场需求。因此本系统具有操作可行性。
3.1.2技术可行性
本系统在Windows7开发环境下,利用Myeclipse10开发工具,并使用Mysql作为数据库管理系统来实现系统的各种功能。Mysql属于主从式的数据库服务器这也是主从式数据库服务器的特点,服务器本身重在数据的管理,为用户端应用程序提供一致的接口。可以提高系统的性能,降低它的局限性。
3.1.3经济可行性
本系统是一个在线的九龙超市外卖小程序,顾客可以直接在微信小程序上进行充值购买等,同时计算机的价格十分低廉,性能却有了长足的进步。而此系统的开发可以有效的提高工作效率,降低管理成本,节省管理费用,为企业的工作效率带来了一个质的飞跃。因此,本系统在经济上是完全具有可行性的。
3.2功能需求分析
根据条件需要,系统结构主要由二大用户组成。一是会员用户,二是管理员用户。
1会员用户登录及身份要求
验证管理员等用户的信息
2本系统销售功能需求(面向会员用户)
允许用户可以在线浏览电商热卖。
允许用户查看个人钱包信息。
允许用户查询商品的信息。
允许用户对在线进行领券。
允许用户在线进行积分兑换。
选择商品,加入购物篮,填写发货地址、联系电话等信息。
3本系统管理功能需求(面向管理员用户)
对购物券信息的管理(添加、删除,修改,查询)。
对用户钱包信息的管理(删除,修改,查询)。
对热卖电商产品信息的管理(删除,修改,查询)。
对用户兑换信息的管理(删除,修改,查询)。
3.3用例分析
1.管理员主要负责系统管理、会员用户管理、店铺地址管理、商品类型管理、电商热卖管理、限时秒杀管理、秒杀订单管理、积分兑换管理,下图所示描述管理员的用例。
图3-1管理员用例图
2.会员用户主要可以进行九龙超市中的电商热卖商品浏览以及商品购买业务,限时秒杀产品下单,积分兑换、领券购买等,下图所示为用户用例图。
图3-2会员用户用例图
3.4数据流分析
数据流图的设计主要是由于系统目前功能还没有确定,可以先描述可能要使用到的功能内容,并且向用户了解“系统从外界接受什么数据”和“系统向外界送出什么数据”等信息,根据用户所给的答复进行设计数据流图。
如下为系统的0层数据流图,系统用户分为管理员和会员用户。
图3-4系统数据流图(0层)
如下图所示为系统1层数据流图。
图3-5系统数据流图(1层)
九龙超市外卖小程序第二层数据流图主要详细反应各功能模块对应的操作与数据进行交互的原理。并且更详细的显示出各角色对功能模块操作的数据流向,让开发人员能了解该系统的开发方向,能够更准确的开发出系统模型。
将商品信息维护进行细化得到商品信息管理二层数据流程图,如下图所示。
图3-6商品管理数据流图(2层)
3.5数据字典
1.数据存储描述
下表描述了用户信息的数据流、数据来源、数据去向和数据流组成的词条。
表3-1用户信息描述
数据流 | 用户信息 |
数据流来源 | Mysql数据库中用户信息表,用户详细信息表 |
数据去向 | 系统界面,用户信息管理界面 |
数据流组成 | 用户名、用户密码、添加时间、编号 |
下表描述了商品管理的数据流、数据来源、数据去向和数据流组成的词条。
表3-2商品信息描述
数据流 | 商品信息 |
数据流来源 | Mysql数据库中商品表、商品类别表 |
数据去向 | 商品查询界面、商品详情界面、购买订单界面、商品管理界面 |
数据流组成 | 商品名、商品价格、库存数量、商品类别 |
2.数据处理描述
下表描述用户通过输入用户名和密码进行身份验证处理,验证成功后将返回的信息显示在界面上。
表3-3用户身份验证
处理逻辑名称 | 用户身份验证 |
简述 | 检查输入信息的合法性 |
输入的数据流 | 用户名+密码 |
处理过程 | 根据输入的用户名和密码,检索用户,显示查询信息 |
输出的数据流 | 用户信息、商品信息 |
下表描述用户成功登录系统后通过商品名查询商品信息,根据查询后返回的数据显示在界面上。
表3-4商品信息查询
处理逻辑名称 | 商品信息查询 |
简述 | 检查输入信息的合法性 |
输入的数据流 | 商品名或商品编号或商品类别 |
处理过程 | 登录成功的用户,通过商品名查询用户所需的商品,还可查询用户的订单及评论。 |
输出的数据流 | 用户订单信息,购买订单信息 |
- 系统设计
4.1结构设计
本系统的设计是基于PHP技术+Mysql数据库+Tomcat服务器的方式设计,以Myeclipse10为开发工具,并运用Photoshop CS6技术美化网页,辅之以CSS技术。本系统使用的角色主要有系统管理员和会员用户,系统分为前台和后台,前台主要用于商品的展示和商品下单购买,后台用于商品信息和订单信息的管理,首先以会员用户通过账号注册后登录系统前台,可以进行各种电商热卖商品信息浏览和搜索,用户可以将需要的商品添加至购物车,用户同时可以修改个人的信息资料;以管理员的身份登录系统后台可以进行多项数据信息的管理等。
系统功能结构图如下所示。
图4-1系统功能结构图
4.2功能设计
1.会员用户登录模块:确保会员用户注册信息的真实度是提高系统效率和盈利的重要因素。真实的会员用户才能带来价值,注册是保证真实会员用户使用系统主要业务的第一步,通过对会员用户注册信息的审核,可防止机器注册。使用现如今较为流行的管理员进行账号激活的验证方式,对会员用户注册信息进行过滤,未激活会员用户信息将不能使用系统主要功能。
如下图所示为会员用户登录流程图。
图4-2会员用户登录流程图
2.商品浏览模块:没有登录的用户和登录的用户都可以在系统前台进行商品浏览,用户可以查看商品的详细信息和选择相应的商品类别进行该类别下的商品查看,用户还可以通过商品名称的关键字进行搜索。
如下图所示为商品浏览流程图。
图4-3商品浏览流程图
4.商品信息管理模块
系统管理员可以对商品信息进行增、删、改、查的操作。
5.用户管理模块
系统管理员可以对会员用户信息进行增、删、改、查的操作。
6.领券中心模块
管理员对会员用户的领券信息等进行维护管理操作。
7.积分兑换管理模块
系统管理员可以对会员用户的积分兑换记录进行维护管理操作。
4.3数据库设计
4.3.1概念设计
本系统的E-R图表现了系统中各个实体之间的联系,经过分析,系统的实体有店铺地址、领券中心、电商热卖、限时秒杀、秒杀订单等。
领券中心的实体图如下图所示。
图4-6领券中心实体图
商品类别实体图如下图所示。
图4-7商品类别信息实体图
用户信息实体图如下图所示。
图4-8用户信息实体图
电商热卖的实体图如下图所示。
图4-9电商热卖实体图
4.3.2表设计
数据库表设计:经过前期的需求分析、可执行分析、数据流分析等各个流程分析,结合软件工程的高内聚、低耦合规则,并考虑到以后的程序功能扩展,设计如下几张表。
member_users表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
member_users_id | int | 11 | 是 | 是 | 会员用户ID |
member_no | varchar | 64 | 是 | 否 | 会员编号 |
member_name | varchar | 64 | 否 | 否 | 会员姓名 |
gender | varchar | 64 | 否 | 否 | 性别 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
store_address表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
store_address_id | int | 11 | 是 | 是 | 店铺地址ID |
store_name | varchar | 64 | 否 | 否 | 店铺名称 |
address | text | 0 | 否 | 否 | 地址 |
telephone | varchar | 64 | 否 | 否 | 电话 |
shop_image | varchar | 255 | 否 | 否 | 店铺图片 |
hits | int | 11 | 是 | 否 | 点击数 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
commodity_category表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
commodity_category_id | int | 11 | 是 | 是 | 商品类别ID |
commodity_category | varchar | 64 | 否 | 否 | 商品类别 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
voucher_collection_record表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
voucher_collection_record_id | int | 11 | 是 | 是 | 领券记录ID |
coupon_chart | varchar | 255 | 否 | 否 | 券图 |
voucher_name | varchar | 64 | 否 | 否 | 券名 |
certificate_no | varchar | 64 | 否 | 否 | 券号 |
scope_of_application | varchar | 64 | 否 | 否 | 适用范围 |
coupon_type | varchar | 64 | 否 | 否 | 优惠券类型 |
valid_until | varchar | 64 | 否 | 否 | 有效期至 |
instructions | varchar | 64 | 否 | 否 | 使用说明 |
member_number | int | 11 | 否 | 否 | 会员编号 |
member_name | varchar | 64 | 否 | 否 | 会员姓名 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
e_commerce_hot_sale表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
e_commerce_hot_sale_id | int | 11 | 是 | 是 | 电商热卖ID |
picture | varchar | 255 | 否 | 否 | 图片 |
article_no | varchar | 64 | 否 | 否 | 商品编号 |
trade_name | varchar | 64 | 否 | 否 | 商品名称 |
brand | varchar | 64 | 否 | 否 | 品牌 |
commodity_category | varchar | 64 | 否 | 否 | 商品类别 |
price | int | 11 | 否 | 否 | 价格 |
hits | int | 11 | 是 | 否 | 点击数 |
praise_len | int | 11 | 是 | 否 | 点赞数 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
e_commerce_hot_order表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
e_commerce_hot_order_id | int | 11 | 是 | 是 | 电商热卖订单ID |
order_no | varchar | 64 | 否 | 否 | 订单编号 |
article_no | varchar | 64 | 否 | 否 | 商品编号 |
trade_name | varchar | 64 | 否 | 否 | 商品名称 |
price | int | 11 | 否 | 否 | 价格 |
quantity | int | 11 | 否 | 否 | 数量 |
subtotal | varchar | 64 | 否 | 否 | 小计 |
picture | varchar | 255 | 否 | 否 | 图片 |
member_no | int | 11 | 否 | 否 | 会员编号 |
member_name | varchar | 64 | 否 | 否 | 会员姓名 |
self_promotion | varchar | 64 | 否 | 否 | 自提点 |
telephone | varchar | 16 | 否 | 否 | 电话 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
exchange_records表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
exchange_records_id | int | 11 | 是 | 是 | 兑换记录ID |
picture | varchar | 255 | 否 | 否 | 图片 |
article_no | varchar | 64 | 否 | 否 | 商品编号 |
trade_name | varchar | 64 | 否 | 否 | 商品名称 |
required_points | int | 11 | 否 | 否 | 所需积分 |
member_no | int | 11 | 否 | 否 | 会员编号 |
member_name | varchar | 64 | 否 | 否 | 会员姓名 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
type表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
type_id | int | 11 | 是 | 是 | 商品分类ID: |
father_id | smallint | 5 | 是 | 否 | 上级分类ID:[0,32767] |
name | varchar | 255 | 否 | 否 | 商品名称: |
desc | varchar | 255 | 否 | 否 | 描述: |
icon | varchar | 255 | 否 | 否 | 图标: |
source_table | varchar | 255 | 否 | 否 | 来源表: |
source_field | varchar | 255 | 否 | 否 | 来源字段: |
create_time | timestamp | 0 | 是 | 否 | 创建时间: |
update_time | timestamp | 0 | 是 | 否 | 更新时间: |
my_points表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
my_points_id | int | 11 | 是 | 是 | 我的积分ID |
member_no | int | 11 | 否 | 否 | 会员编号 |
member_name | varchar | 64 | 否 | 否 | 会员姓名 |
integral_fraction | int | 11 | 否 | 否 | 积分数 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
my_wallet表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
my_wallet_id | int | 11 | 是 | 是 | 我的钱包ID |
member_no | int | 11 | 否 | 否 | 会员编号 |
member_name | varchar | 64 | 否 | 否 | 会员姓名 |
balance | int | 11 | 否 | 否 | 余额 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
points_redemption表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
points_redemption_id | int | 11 | 是 | 是 | 积分兑换ID |
picture | varchar | 255 | 否 | 否 | 图片 |
article_no | varchar | 64 | 否 | 否 | 商品编号 |
trade_name | varchar | 64 | 否 | 否 | 商品名称 |
brand | varchar | 64 | 否 | 否 | 品牌 |
required_points | int | 11 | 否 | 否 | 所需积分 |
hits | int | 11 | 是 | 否 | 点击数 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
second_kill_order表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
second_kill_order_id | int | 11 | 是 | 是 | 秒杀订单ID |
order_no | varchar | 64 | 否 | 否 | 订单编号 |
item_no | varchar | 64 | 否 | 否 | 商品编号 |
trade_name | varchar | 64 | 否 | 否 | 商品名称 |
commodity_category | varchar | 64 | 否 | 否 | 商品类别 |
price_spike | int | 11 | 否 | 否 | 秒杀价 |
member_no | int | 11 | 否 | 否 | 会员编号 |
member_name | varchar | 64 | 否 | 否 | 会员姓名 |
self_promotion | varchar | 64 | 否 | 否 | 自提点 |
telephone | varchar | 16 | 否 | 否 | 电话 |
picture | varchar | 255 | 否 | 否 | 图片 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
系统详细设计
5.1登录模块
本系统主要的用户有系统管理员、会员用户,一个系统最基本的功能就是登录功能,本系统可以进行系统登录的角色有用户、管理员,用户对应前台登录界面,管理员对应后台登录界面,首先进入登录页,输入用户名和密码,然后提交至服务端进行数据库数据验证,通过PHPEE逻辑代码判断数据库是否存在用户输入的这一个记录,如果存在,则判断用户身份,如果是用户,则进入用户前台,如果是管理员用户,则进入系统主页,并把用户对象存放在session中,如果不存在这样一条记录,则返回登录界面。
会员用户登录界面如下所示。
图5-1会员用户登录界面
图5-2会员用户注册界面
登录关键代码如下:
/public function login()
{
if (Request::isPost()) {
$request = Request::param();
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
$request['password'] = md5($request['password']);
$result = $this->model->login($request, $this->table);
$data = $result;
}
} else {
$data['error'] = 30000;
$data['message'] = "field的值不能为空!";
}
return json_encode($data);
}
public function login($request=[],$table_name = ''){
$username = $request['username'];
$password = $request['password'];
$bol = $this->where(['username'=>$username])->find();
if ($bol){
$password = md5($password);
if ($request['password']==$bol['password']) {
//添加token信息
$access_token['create_time'] = date('Y-m-d H:i:s');
$access_token['update_time'] = date('Y-m-d H:i:s');
$access_token['info'] = json_encode($bol);
// $access_token['info'] = $bol;
$access_token['token'] = md5(date('Y-m-d H:i:s'));
$bol_token = Db::name('AccessToken')->insert($access_token);
if ($bol_token){
$data['obj'] = $bol;
$data['obj']['token'] = $access_token['token'];
return ['result' => $data];
}else{
return ['error' => ['code' => 5000, 'message' => '登录失败,token生成失败']];
}
} else {
return ['error' => ['code' => 5000, 'message' => '登录失败,密码不正确']];
}
}else{
return ['error' => ['code' => 5000, 'message' => '登录失败,账号不存在']];
}
}
5.3店铺地址推荐模块
系统为会员用户提供店铺地址列表的推荐,方便用户浏览店铺地址信息。在dianpudizhilist.jsp实现店铺地址推荐列表的展示,用户点击浏览,通过推荐id传递值,找到数据表的该店铺地址推荐信息。
如下图所示为店铺地址界面。
图5-3店铺地址界面
店铺地址关键代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
5.4领券中心模块
系统提供领券中心功能,在lignquanzhognxinadd.jsp实现优惠券展示功能,会员用户可以添加领券,存入数据库的领券记录表。管理员管理领券中心信息。
如下图所示为领券中心界面。
图5-4领券中心界面
领券中心关键代码如下:
public function avg_group()
{
$request = Request::param();
if (isset($request['groupby']) && isset($request['field'])) {
if (!empty($request['groupby']) && !empty($request['field'])) {
$result = $this->model->avg_group($request, $this->table, $this->table_id);
$data = $result;
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "groupby或者field的值不能为空!";
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "groupby或者field的值不能为空!";
}
return json_encode($data);
}
5.5购物车模块
会员用户在浏览商品后,登录系统前台,进行商品添加至购物车,在个人后台可以查看购物车里面的商品,确定商品之后可以生成订单支付。
如下图所示为购物车的部分界面。
图5-5购物车界面
5.6系统会员用户管理模块
过去传统的手工登记管理系统人员信息很不方便,也很容易造成数据出错,所以本系统需要一个可以管理登记人员信息的功能,管理员登入系统,可以添加新的管理员会员用户,删除现有的管理员,也可以对自己的密码和管理员会员用户的密码进行修改。修改密码是经过跟数据库的原来的密码字段的数据进行判断,如果输入两次的新密码一致,则更新密码这属性对应的一条数据。
如下图所示为系统会员用户管理的部分界面。
图5-6系统会员用户管理界面
如下图所示为个人信息界面。
5.7电商热卖管理模块
用户在系统前台浏览电商热卖,管理员登录系统后,可以对添加、删除、修改电商热卖,系统前台的电商热卖时随系统后台变化而变化的。
电商热卖管理的界面如下图所示。
图5-8电商热卖管理界面
电商热卖管理关键代码如下:
public function avg()
{
$request = Request::param();
if (isset($request['field'])) {
if (!empty($request['field'])) {
$result = $this->model->avg_field($request, $this->table, $this->table_id);
$data = $result;
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "field的值不能为空!";
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "field的值不能为空!";
}
return json_encode($data);
}
5.8电商热卖订单管理模块
管理人员可以对电商热卖订单进行审核操作,这些操作将在电商热卖订单管理界面进行。
如下图所示为电商热卖订单管理界面。
图5-9电商热卖订单管理界面
电商热卖订单管理关键代码如下:
$obj = $this->where($where)->field($field)->find();
$result = self::allowField(true)->save($request);
$result = $this->where($where)->update($request);
$result = $this->where($where)->delete();
5.9限时秒杀管理模块
管理人员可以对限时秒杀商品进行增删查改的操作,这些操作将在限时秒杀管理界面进行。
如下图为限时秒杀管理界面。
图5-10限时秒杀管理界面
限时秒杀管理关键代码如下:
public function add($request=[],$table_name = '',$table_id = ''){
$result = self::allowField(true)->save($request);
if ($result) {
return ['result' => 1];
} else {
return ['error' => ['code' => 3000, 'message' => '数据添加失败']];
}
}
- 系统测试
6.1测试目的
该系统能够完成店铺地址管理,电商热卖管理、领券中心管理、限时秒杀管理、秒杀订单管理、积分兑换管理、会员用户管理等功能,做到所开发的系统操作简单,尽量使系统操作不受用户对电脑知识水平的限制,符合系统可维护性,由于系统涉及的信息比较广,数据库中的数据需定期修改,系统可利用的空间及性能也随之下降,为了使系统更好地运转,系统可以对系统数据及一些简单的功能进行独立的维护及调整;符合系统开放性要求,该系统能够在开放的硬件体系结构中运行,并且能与其他系统顺利连接。
6.2测试用例
1.注册测试
表6-1注册测试用例
字段名称 | 描述 |
测试项 | 首页注册功能测试 |
输入数据 | 1、输入正确的邮箱、用户名、密码、确认密码、以及验证码之后点击“注册”按钮 2、输入错误的用户名或密码、邮箱、验证码等,单击“注册”按钮 3、不输入邮箱、用户名、密码、确认密码、以及验证码之后点击“注册”按钮 |
预计输出数据 | 1、用户能正确注册账号,成功插入数据库用户的账户资料,提示注册成功。 2、无法注册用户信息,注册失败。 3、无法注册用户信息,注册失败。 |
使用上述测试用例对前台首页注册界面进行测试,当在输入正确的邮箱、用户名、密码、确认密码、以及验证码之后,系统将弹出注册成功信息提示对话框。
使用上述测试用例对前台首页注册界面进行测试,当在输入错误的用户名或密码、邮箱、验证码之后,系统将提示错误。
使用上述测试用例对前台首页注册界面进行测试,当在不输入用户名、密码、邮箱、验证码之后,点击注册按钮。
2.登录界面进行测试
表6-2登录测试用例
测试项 | 首页登录功能测试 |
输入数据 | 1、输入正确的用户名和密码,单击“登录”按钮 2、输入错误的用户名和密码,单击“登录”按钮 3、不输入用户名和密码,单击“登录”按钮 |
预计输出数据 | 1、数据库中存在的用户能正确登录,。结果弹出主界面。 2、错误的或者无效用户登录,登录系统失败。 3、输入用户名或密码信息为空,登录系统失败。 |
3.商品管理进行测试
名称:用户管理测试 目的:测试商品管理界面
内容:口令的输入,合法性检查,合理性检查,界面的显示控制。
下表描述了商品表中目前所存在的记录。
表6-3商品表预存数据
商品名 | 商品类别 | 商品价格 | 商品状态 | |
A | A | 389 | 上架 | |
B | B | 249 | 上架 | |
C | C | 322 | 下架 | |
D | D | 168 | 上架 |
添加时应注意事项:
管理员添加商品时必须添加已存在的商品类别,若该商品不属于现有的所有类别,则应该先添加商品类别。
下表描述了添加商品进行测试的用例,主要是为了防止添加商品时出现异常和存在的漏洞。
表6-4添加商品测试用例
输入 | 输出 | ||
商品名 | 商品价格 | 商品图片 | |
空 | 参数错误 | ||
空 | 参数错误 | ||
空 | 请选择上传图片 | ||
A | 1 | a.jpg | 添加成功 |
- 结论
经过这几个月的设计和开发,“PHP九龙超市外卖小程序”已经完成了,其功能符合设计需求,能够完成会员用户的注册、店铺地址展示,电商热卖、领券中心、限时秒杀、秒杀订单、积分兑换管理、会员用户管理、信息维护、查询等功能。经过最后的使用,证明系统完全具有可行性与可扩充性。
在系统的分析阶段,主要是分析系统的需求,理解系统要完成的基本功能,找出系统的用例(Use Case)和角色(Actor),画出系统的用例模型图,用例模型是此后系统建模的基础。在用例的基础上分析顺序图和协作图,得到系统的所有对象,然后建立对象模型。抽象出系统的类,并将系统中联系紧密的类划分为若干个包,画出包图。有了这些基础,就可以将系统划分为小单元功能模块。
整个过程中,我必须认可UML统一建模语言,它让我很清晰的知道自己想做什么,想实现什么,对系统后面的代码编写起到决定性的帮助,同时经过本次系统的设计与实现,让我积累了很多经验,提高了编写程序的能力,为以后的学习和工作打下了坚实的基础。
由于时间有限,本系统还有待继续完善和改进,因此需要进一步进行分析和修改,以使其更加完善!
参考文献
[1]朱真真,王柯梦. php在动态网站开发中的优势与具体应用分析[C]//.广东省教师继续教育学会第六届教学研讨会论文集(一).,2023:2036-2038.
[2]李瑾,刘云鹏,邱虹.基于外卖数据的社区团购选品系统研究与应用[J].计算机应用与软件,2022,39(11):43-48+118.
[3]汪小芬,赵杨.基于互联网+时代背景下的智能外卖柜的设计与实现[J].价值工程,2022,41(27):125-128.
[4]张黎平.“互联网+”背景下PHP动态网站开发技术研究[J].无线互联科技,2022,19(16):154-156.
[5]赵婉彤.基于PHP与MySQL的动态网站设计与实现[J].电脑编程技巧与维护,2022(08):103-105+109.
[6]Xinyue Xiong,Zhanglin Liu,Li Zhao,Mei Huang,Lichun Dai,Dong Tian,Jianmei Zou,Yongmei Zeng,Jinguang Hu,Fei Shen.Tailoring biochar by PHP towards the oxygenated functional groups (OFGs)-rich surface to improve adsorption performance[J].Chinese Chemical Letters,2022,33(06):3097-3100.
[7]张俊.MySQL数据库在PHP网页中的动态应用[J].集成电路应用,2022,39(06):112-113.
[8]莫悠. 新零售背景下广州零售商业空间变化研究[D].华南理工大学,2020.
[9]牟彦霖. “互联网+”背景下高校学生生活区配套服务空间设计研究[D].华南理工大学,2020.
[10]孔燕. 新零售背景下美团“快驴进货”生鲜B2B商业模式创新研究[D].广西大学,2020.
[11]洪冲. 连锁超市配送订单分配与路径优化研究[D].浙江工业大学,2020.
[12]田舒平. 新零售背景下S超市到家电商发展策略研究[D].中南财经政法大学,2020.
[13]张凡,严张凌.基于安卓的零食超市APP基本功能实现[J].数码世界,2019(10):59..
致 谢
时间过得真快,眨眼之间,大学四年的学习生活即将结束,无论是在学习还是生活的这四年,老师们给了我很多帮助,让我终身受益匪浅。老师们不仅帮我树立了正确的人生观和价值观,还帮我养成了很多好习惯,树立了终身学习的意识。在此,我要对我的所有老师表示衷心的感谢。与此同时,我还要感谢陪伴我在这四年里一起成长的伙伴们。他们给了我无私的帮助和关怀,让我在人生最好的四年中获得许多真诚的友谊。
毕业设计是大学四年的最后一个答卷,我们正忙着这四年的美好结束。在毕业项目主题选择的早期阶段,我很紧张担心自己选择的主题很复杂,难以理解,觉得不能这样做会影响我的毕业。是指导老师给我们提供了毕业设计的主题和具体要求,让我们对毕业设计不要太模糊,如果对主题有任何异议,要及时跟他沟通,并且还帮我们介绍他带过的优秀学哥学姐,对我们进行指导,这样再设计上遇到的问题就可以及时得到解决,对我们完成毕业设计提供好的指导条件。
对于毕业设计项目主要是对我在大学所学的专业知识进行一次综合的考验,让我们通过所学的技术知识可以真正的运用到实际动手开发中,通过项目的开发让我意识到自己很多地方的不足,所学知识的不扎实,不能很好的将自己所学的知识运用到系统实际开发上。后来通过自己在图书馆查阅大量书籍,完成系统的设计大纲,阅读笔记和翻译,毕业设计不仅要考验我们的个人能力,还要测验我们的学习态度,做到细节的事情。对于指导老师的帮助,我的毕业设计才可以顺利的完成,我非常感谢。
最后要感谢我的同学们,是你们不断的帮助、鼓励、熬夜、保持调试,测试程序,最终完成网约车管理系统的运行。我们在交流,谈论时间,将是我们未来的财富,我要深深地感谢你。
毕业在即,在今后的工作和生活中,我会铭记师长们的教诲、同学们的帮助,继续不懈努力和追求,来报答所有支持和帮助过我的人!
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~
本文标签: PHPmysql微信小程序九龙超市外卖
版权声明:本文标题:PHP+mysql+微信小程序九龙超市外卖 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732353763h1533846.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论