2系统关键技术
2.1微信小程序
微信小程序,简称小程序,英文名Mini Program,是一种全新的连接用户与服务的方式,可以快速访问、快速传播,并具有良好的使用体验。
小程序的主要开发语言是JavaScript,它与普通web的开发有很多相似之处。小程序和普通网页开发并不是相同的东西,是有差异的。网页开发的渲染线程和脚本线程是互斥的,而在小程序中,确实分开的,分别在不同的线程之中运行。网页开发的工作者可以运用各种浏览器暴露出来的DOM API,进行DOM选中和操作,但小程序不行,它并没有一个完整的浏览器对象,因此缺失DOM API和BOM API。这样的差别使得前端开发中经常用到的一些库是无法在小程序中运行的。另外,网页开发的工作者在开发网页时所要面对的环境是在各式各样系统上运行的各式各样的浏览器,,而小程序只,只需面对iOS和Android这两道操作系统下的微信就足够了。
小程序和传统的APP相比,有着开发成本更低,获客成本更低,开发周期更短,发展空间更大等的优点。不过,为了体现“用完即走”、“无需安装”等理念,小程序的功能、性能还有大小都受到了制约,可以说是各有利弊。
2.2微信小程序API接口
微信小程序API接口是腾讯公司为了微信小程序和微信公众号提供的接口文档,里面包含了各种需要使用的接口技术[7],例如本项目用到的获取微信用户信息(wx.getUserInfo)、蓝牙通讯传输功能、网络请求(wx.request)、定位功能等,总的来说,小程序API是满足一个程序开发的大部分接口。
2.3 JavaScript简介
JavaScript是一种在现在都极为流行极为热门的脚本语言,最早是在HTML网页上被使用,使用JavaScript,我们可以给HTML网页添加更是各样的动态功能,并且给这些功能设置好不同的触发动作,通过用户在浏览器上的各种操作进行触发。
随着时代的发展,JavaScript的用途也越来越多,例如:将动态文字嵌入到HTML页面之中,读写HTML元素、在数据被提交到服务器之前检验数据等等。而且,不同于服务器端脚本语言,JavaScript并不依赖于操作系统,无需访问数据库,只需要浏览器的支持,有效的减轻了服务器的负担。
2.4 MYSQL数据库
MySQL 是关系型数据库管理系统的代表, 因为MySQL是其免费开源的,而且MySQL的功能已经足够用对于学习和中小型企业来讲,所以开发中小型网站都会选择MySQL作为网站的数据库。[5]
MySQL具有开放性,它是一种关系型数据库管理系统,并且它的源代码可以被大众所熟知[3]。由于MySQL是开放源代码的,因此,只要经过授权就可以在自己需求的基础上对其进行修改。MySQL因为其固有的特点而备受关注,它具有很强的适应性,并且十分可靠,查询速度快。MySQL安装起来非常方便,且数据存储量大,不需要事务化处理。Sql语言拥有很多的方法,在项目中编写sql语句时使用起来是非常方便的,不会像其他语言那样需要编写更多的语句。正因为MySQL使用sql语言进行数据库管理,所以它收到了大多数程序员的热爱。
3系统分析
3.1可行性分析
在软件开发第一阶段时,就应该对整个系统进行一次可行性分析。在开发进行过程中,并不是所有的问题都能在预计的范围内解决。通过可行性分析可以提前从中发现问题,解决问题,从而避免财力、人力和物力的浪费。
3.1.1 技术可行性
本外卖小程序基于微信平台,采用微信开发者工具和MYSQL数据库进行开发设计,作为计算机专业学生,在学校期间就接触到许多关于编程方面的知识,当然也包括各种编程软件,对他们的了解度也比较系统,所以技术开发上面还是有一定把握。
3.1.2经济可行性
经济可行性主要是研究和分析系统的投入和产出的关系,非常明了问题不能产出大于投入。由于自己本身就是学生,还没有正式参加工作,金钱上面一直都处于缺乏状态。所以在开发程序过程中,我是不会花太多经济成本在上面的。针对开发软件和数据库,还有界面设计等在百度上面就可以直接下载,然后根据各种安装视频进行安装,这些资源都是免费的,程序编码阶段使用的源代码在百度上面可以轻松获得,在有网络的环境下就能下载下来,不需要支付任何费用,经济成本很低。所以系统在开发人力、财力要求不高,具有经济可行性。
3.1.3操作可行性
在设计之初,我在网上参考了许多基于微信小程序的界面布局设计,发现该系统界面展示比较简单,功能罗列齐全,操作流程简单明了,系统用户不用担心不会操作,系统各个功能模块都会有相应的提示,一看就明白,实在不知道的话,稍微指点就能上手,上手速度很快,时间不会耽误太多。
3.1.4时间可行性
从2020年11月份我们在学校就没有课程了,同学们大部分选择找工作实习了,我也是在其中。一边找工作的同时,一边忙着完成毕业设计工作。对于我本人来讲,目前的情况是白天我要上班参加实习工作,只有晚上我才有时间完成论文编写工作。论文答辩是在2021年5月份左右,将近半年时间来完成毕业设计,时间上还是很充分。
经过上面的分析,此次开发的系统从经济上、从技术上、从操作上、从时间上考虑都能过关。说明自己要开发的外卖小程序可行性是完全可行,操作简单,时间、金钱上面毫无压力,该系统开发是完全可行。
3.2系统性能分析
一个良好优秀的程序不仅仅是需要能够实现它的基本功能,还需要保证系统的性能,在开发本系统时要求达到以下几点性能方面的需求。
(1)良好的操作体验。一款优秀的软件,不仅仅是功能强大,还需要让使用者有一个良好的体验。在程序开发的过程当中开发者需要无数次的去模拟使用者可能会出现的操作,尽可能地将每一种用户操作都考虑到。从而做到简化操作,提升用户体验,避免繁杂的操作使得使用者对于应用程序产生负面印象,有时候也能提供更加智能、一键化操作提升使用者对软件的好感。
(2)创新性。更加创新和新颖的软件内容。更多新颖的应用内容能在极大程度上保留住用户,每个人都有很大的好奇心,看到一款新的应用程序,用户第一次可能会出于好奇心而下载使用,但这却无法保留住这批用户,需要应用程序不断的有更加创新的内容或更加新颖的创意才能吸引住用户持续的使用保留应用,虽然可以通过一些推广平台来推广,但是如果一款应用内有任何新意,用户也是会很快卸载掉的,所以一定需要软件能有很新的东西才行,有时候是新颖的内容,也可以是很创新的功能操作,也可以在软件内有一些活动都可以。
(3)良好的稳定性。将使用软件过程中出现的意外情况降到最低。这里的意外是指在用户体验使用程序的时候出现的问题,比如程序未响应问题、程序闪退崩溃等等问题,所以尽力要将程序多多测试几遍使得发生这种情况的概率降到最低。
3.3 系统功能分析
本外卖小程序主要满足3种用户的需求,这3种用户分别为管理员、商家以及用户,下面将对这三类用户分别进行功能需求分析方面的阐述。
(1)管理员可登录系统后台,对系统进行全面管理,管理员登录主要功能模块包括个人中心、用户管理、商家管理、菜品信息管理、菜品分类管理、系统管理以及订单管理。管理员用例如图3-1所示。
图3-1 管理员用例图
(2)商家登录后主要功能模块包括个人中心、菜品信息管理、菜品分类管理以及订单管理。商家用例如图3-2所示。
添加图片注释,不超过 140 字(可选)
图3-2 商家用例图
(3)用户通过微信客户端可进入本外卖小程序,注册登录后主要功能模块包括首页、商家、菜品信息以及我的(我的收藏管理、用户充值、购物车以及我的订单)。用户用例图如图3-3所示。
图3-3 用户用例图
3.4系统流程分析
3.4.1注册流程
未有账号的用户可进行注册操作,注册流程图如图3-4所示。
添加图片注释,不超过 140 字(可选)
图3-4 注册流程图
3.4.2登录流程
为了保证系统的安全,要使用本系统必须进行登录操作,用户登录流程图如图3-5所示。
图3-5登录流程图
3.4.3添加信息流程
在添加信息时,系统编号自动生成,系统首先判断添加的信息是否合法,合法则添加成功,反之重新输入。添加信息流程图如图3-6所示
图3-6 添加信息流程图
4系统设计
4.1系统设计要求
(1)软件功能清晰明了,简化用户操作,提升使用者体验,减少下拉菜单这种降低体验的操作。
(2)软件的功能要尽量完整,也要全面。要求能够实现查看菜品、外卖点餐等。
(3)经常的在以后版本更新完善软件,使得软件保持一个新鲜度,也可以做一些活动来促进用户使用软件。
(4)减少软件使用过程中出错,做好优化,遵循开发逻辑,降低bug的产生率以提升用户体验。
4.2系统结构设计
系统的设计和划分是系统的核心研究问题,以确定整体结构和功能模块。该系统的结构化设计的思想,是自顶向下的方式将系统分成若干个子系统,以及反过来的子系统分成模块,其被划分成子模块,层划分各计算机可执行模块可迄今用作一个单独的程序。
本外卖小程序结构图如图4-1所示。
添加图片注释,不超过 140 字(可选)
图4-1 系统功能模块图
4.3系统顺序图设计
4.3.1 登录顺序图
用户在登录时,首先进入系统登录窗口,用户需要输入用户名和密码,点击登录按钮进行登录操作,系统会以用户名和密码为参数在数据库中进行登录信息的验证,验证成功则登录成功,进入对应用户主界面。登录模块顺序图如图4-2所示。
图4-2 登录顺序图
4.3.2 注册顺序图
未有账号的用户可进入注册界面进行注册操作,在注册界面输入注册信息,点击提交按钮,系统首先判断用户名是否存在,存在则提示重新输入,不存在则验证注册信息是否正确,正确则在数据库中添加注册数据,提示注册成功。用户注册模块顺序图如图4-3所示。
图4-3 注册顺序图
4.4数据库设计
数据库技术是资源管理最好的方式。数据库设计可以创造出属于自己的良好的设计方式,建立系统。它可以使系统准确的把数据库中的信息提取出来并且加以应用来满足所有人的需要。数据库的选择要考虑多方面的因素:如用户更适合使用哪种数据库;具体的功能比较;各自的性能优劣分析;相互之间的兼容性;平台的支持应用性;相关的技术支持。本设计采用 MySQL,更加适合该系统的完成。
4.4.1数据库概念结构设计
数据库概念结构设计通俗来说就是把前面所做的需求分析报告转变为抽象的信息结构,数据库概念结构设计相比数据模型要更加稳定、抽象和独立。它的特点有方便修改、能够容易理解、转换成层次、关系等数据模型变得更加容易,对现实世界反映客观真实充分等。数据库设计这块,在描述概念模型工具的选择上通常是用E-R模型(实体-联系模型)表现出来。E-R模型这个数据建模工具它被广泛的使用在数据库设计中,它是一种针对用户的表达方式,没有任何DBMS约束。构成该模型的成分有属性、实体集及联系集。矩形框表示实体集,椭圆形表示属性,菱形框表示实体与实体的联系。下面我们展示外卖小程序的主要的实体图。
1、管理员实体属性图如图4-4所示
图4-4 管理员实体属性图
2、菜品实体属性图如图4-5所示
图4-5 菜品实体属性图
3、订单实体属性图如图4-6所示
图4-6 订单实体属性图
4、商家实体属性图如图4-7所示
图4-7 商家实体属性图
5、用户实体属性图如图4-8所示
图4-8 用户实体属性图
4.4.2数据库逻辑结构设计
数据库的逻辑结构的设计需要将前面概念设计得到的E-R图转换成关系模型。接着就是优化关系模型,逻辑结构设计的过程表现如下
图4-4 逻辑结构设计的过程
优化关系模型有许多方式,这些方式包括了对数据之间的依赖进行确定;处理关系模式间的数据依赖,一些多余的联系需要及时清理;要明白和界定各个关系模式在第几范式;关系模式的分解或合并处理也是必要的。设计中对关系模型的优化就可以按照上述提示进行操作。
本次开发的外卖小程序它的数据结构就比较清晰明了。开发出来外卖小程序的后台数据库是由许多的数据表组成的,下面我们将选取一部分数据表进行具体描述:
表4-1 users管理员信息表
字段名称 | 字段意义 | 字段类型 | 字段长度 | 是否主键 | 能否为空 |
---|---|---|---|---|---|
id | 编号 | bigint | 20 | 是 | 否 |
username | 用户名 | varchar | 100 | 否 | 是 |
password | 密码 | varchar | 100 | 否 | 是 |
role | 角色 | varchar | 100 | 否 | 是 |
addtime | 添加时间 | timestamp | 否 | 是 |
表4-2 caipinxinxi菜品信息表
字段名称 | 字段意义 | 字段类型 | 字段长度 | 是否主键 | 能否为空 |
---|---|---|---|---|---|
id | 编号 | bigint | 20 | 是 | 否 |
addtime | 添加时间 | timestamp | 否 | 是 | |
caipinmingcheng | 菜品名称 | varchar | 200 | 否 | 是 |
caipinfenlei | 菜品分类 | varchar | 200 | 否 | 是 |
tupian | 图片 | varchar | 200 | 否 | 是 |
caipinjieshao | 菜品介绍 | longtext | 否 | 是 | |
shangjiazhanghao | 商家账号 | varchar | 200 | 否 | 是 |
shangjiamingcheng | 商家名称 | varchar | 200 | 否 | 是 |
dianpuming | 店铺名 | varchar | 200 | 否 | 是 |
thumbsupnum | 赞数 | int | 11 | 否 | 是 |
crazilynum | 踩数 | int | 11 | 否 | 是 |
clicktime` | 最近点击时间 | datetime | 否 | 是 | |
clicknum | 点击次数 | int | 11 | 否 | 是 |
price` | 价格 | float | 否 | 是 |
表4-3 orders订单信息表
字段名称 | 字段意义 | 字段类型 | 字段长度 | 是否主键 | 能否为空 |
---|---|---|---|---|---|
id | 编号 | bigint | 20 | 是 | 否 |
addtime | 下单时间 | timestamp | 否 | 是 | |
orderid | 订单编号 | varchar | 200 | 否 | 是 |
tablename | 商品表名 | varchar | 200 | 否 | 是 |
userid | 用户编号 | bigint | 20 | 否 | 是 |
goodid | 商品编号 | bigint | 20 | 否 | 是 |
goodname | 商品名称 | varchar | 200 | 否 | 是 |
picture | 商品图片 | varchar | 200 | 否 | 是 |
buynumber | 购买数量 | int | 11 | 否 | 是 |
price | 价格 | float | 否 | 是 | |
discountprice | 折扣价格 | float | 否 | 是 | |
total | 总价格 | float | 否 | 是 | |
discounttotal | 折扣总价格 | float | 否 | 是 | |
type | 支付类型 | int | 11 | 否 | 是 |
status | 状态 | varchar | 200 | 否 | 是 |
address | 地址 | varchar | 200 | 否 | 是 |
表4-4 shangjia商家信息表
字段名称 | 字段意义 | 字段类型 | 字段长度 | 是否主键 | 能否为空 |
---|---|---|---|---|---|
id | 编号 | bigint | 20 | 是 | 否 |
addtime | 添加时间 | timestamp | 否 | 是 | |
shangjiazhanghao | 商家账号 | varchar | 200 | 否 | 是 |
mima | 密码 | varchar | 200 | 否 | 是 |
shangjiamingcheng | 商家名称 | bigint | 20 | 否 | 是 |
dianpuming | 店铺名 | bigint | 20 | 否 | 是 |
dianpudizhi | 店铺地址 | varchar | 200 | 否 | 是 |
lianxiren | 联系人 | varchar | 200 | 否 | 是 |
lianxifangshi | 联系方式 | varchar | 200 | 否 | 是 |
shangjiatupian | 商家图片 | varchar | 200 | 否 | 是 |
xiuxishijian | 休息时间 | varchar | 200 | 否 | 是 |
shangjiajieshao | 商家介绍 | longtext | 否 | 是 | |
money | 余额 | float | 否 | 是 |
表4-5 yonghu用户信息表
字段名称 | 字段意义 | 字段类型 | 字段长度 | 是否主键 | 能否为空 |
---|---|---|---|---|---|
id | 编号 | bigint | 20 | 是 | 否 |
addtime | 添加时间 | timestamp | 否 | 是 | |
zhanghao | 账号 | varchar | 200 | 否 | 是 |
mima | 密码 | varchar | 200 | 否 | 是 |
xingming | 姓名 | bigint | 20 | 否 | 是 |
nianling | 年龄 | bigint | 20 | 否 | 是 |
xingbie | 性别 | varchar | 200 | 否 | 是 |
shouji | 手机 | varchar | 200 | 否 | 是 |
zhaopian | 照片 | varchar | 200 | 否 | 是 |
money | 余额 | float | 否 | 是 |
5 系统的实现
5.1微信端功能模块的实现
5.1.1注册登录界面
未有账号的用户可进行注册操作,注册后可进入登录界面进行登录系统,注册登录界面展示如图5-1所示。
添加图片注释,不超过 140 字(可选)
图5-1 注册登录界面图
5.1.2首页界面
用户通过微信平台打开本外卖小程序,登录后进入了系统的首页,在首页用户可查看所有菜品,首页界面展示如图5-2所示。
图5-2 首页界面图
5.1.3商家界面
用户在商家界面可查看所有商家,并可选择查看详情,商家界面展示如图5-3所示。
图5-3 商家界面图
5.1.4菜品详情界面
用户可选择菜品查看菜品详情信息,并可进行加入购物车和立即购买操作,菜品详情界面展示如图5-4所示。
添加图片注释,不超过 140 字(可选)
图5-4 菜品详情界面图
5.1.5购物车界面
用户在购物车界面可查看购物车已有菜品信息,并可对其进行删除、修改数量或者结算操作,购物车界面如图5-5所示。
图5-5 购物车界面图
5.1.6我的订单界面
用户在我的订单界面可查看个人订单信息,我的订单界面如图5-6所示。
图5-6 我的订单界面图
5.1.7用户信息界面
用户可修改个人信息,用户信息界面如图5-7所示。
图5-7 用户信息界面图
5.2服务端功能模块的实现
5.2.1服务端登录界面
管理员和商家要想进入对于角色后台必须进行登录操作,服务端登录界面展示如图5-8所示。
图5-8 服务端登录界面图
5.2.2用户管理界面
管理员可进行查看、修改和删除用户信息,用户管理界面展示如图5-9所示。
图5-9 用户管理界面图
5.2.3商家管理界面
管理员可增删改查商家信息,商家管理界面展示如图5-10所示。添加商家界面展示如图5-11所示。
图5-10商家管理界面图
图5-11添加商家界面图
5.2.4菜品信息管理界面
商家可增删改查菜品信息,管理员可查看、修改和删除菜品信息,菜品信息管理界面展示如图5-12所示,添加菜品信息界面展示如图5-13所示。
图5-12 菜品信息管理界面图
图5-13 添加菜品信息界面图
5.2.5菜品分类管理界面
商家可增删改查菜品分类信息,管理员可查看、修改和删除菜品分类信息,菜品分类管理界面展示如图5-14所示。
图5-14 菜品分类管理界面图