通过移动互联网这几年的发展,单独的开发某些APP已经到了日暮西山的地步,原因不在于单个的APP功能丰富与否,而是因为用户生态体系的问题。使用智能手机的用户经过多年的使用习惯,已经越来越不喜欢安装各种的APP,除了正常生活和工作所必须的APP,不喜欢因为喜欢某些内容而被强制安装APP软件了。最近几年,随着微信生态的布局,通过开发微信小程序接口,让广大用户可以通过微信直接访问小程序,不需要去专门安装那些APP,这一点让很多用户喜爱,基本上只要能转向微信生态的业务,许多企业都已经开始拥抱微信小程序。本课题就是研究和实现一款微信食堂线上订餐小程序。

微信食堂线上订餐小程序可以实现商品管理,商品评价管理,商家管理,公告管理,商品订单管理,在线充值等功能。该系统采用了SSM框架,Mysql数据库,Java语言等技术实现管理员后台,采用微信开发者工具来对用户小程序端进行了开发。

微信食堂线上订餐小程序让商品订单,商家信息,商品信息等相关信息集中在后台让管理员管理,让用户在小程序端订餐,管理个人订单,该系统让信息管理变得高效,也让用户订餐,查看个人订单等信息变得越来越方便。

关键词:微信食堂线上订餐小程序;Mysql数据库;Java语言

1 绪论

1.1 课题背景

目前随着智能手机的不断普及,基本上可以达到人均一台智能手机的地步,在这样的背景下,各行各业如何把自己的服务提供到手机终端上,是一个问题。智能手机的好处就是有各种各样的软件,并且交互性很好,用户使用起来方便,在智能手机刚开始的前几年,有很多行业已经开始提前布局移动终端,占领了相当大的市场,不仅提高了客户满意度,也提高了市场知名度,但是随着时代的发展,如果还一直开发移动终端的软件,会导致用户手机里面需要安装各种各样的软件,用户已经从刚开始的新奇,变成了现在的厌烦,手机内存太小,安装太多东西,或者非强制性的软件,用户都不想安装了。面对如今的用户需求情况,依然开发APP软件已经是一种战略性失败。在国内目前市场上所有的智能手机里面肯定安装得有微信,微信已经变成了智能手机通讯的代名词,而微信推出了微信小程序,不需要用户注册账号,也不需要用户安装多余的软件,只需要通过微信软件就可以访问小程序,对用户极其友善,所以很多企业都瞄准了微信小程序。本课题就是在这样的大环境下研究和实现一款微信食堂线上订餐小程序。

1.2 课题意义

首先用户可以不需要安装各种各样的APP,只需要一个微信就可以各种访问程序,用户不需要注册各种信息,微信提供了用户一键访问,并且可以在微信里面对小程序进行删除,定位,搜索,以及收藏,微信小程序是目前最火的一个开发方向。很多商家只需要开发出微信小程序,自己部署服务端,然后有任何需要推广的只需要让用户点击微信小程序访问即可,不仅仅给商家提供了一个十多亿用户的平台,也给用户减轻了安装各种APP的负担,并且微信所在的腾讯公司也能获得利润,微信小程序是一款多赢的选择。

本课题研究的微信食堂线上订餐小程序前后台分离,让商品订单,商家信息,商品信息等相关信息集中在后台让管理员管理,让用户在小程序端订餐,管理个人订单,该系统让信息管理变得高效,也让用户订餐,查看个人订单等信息变得越来越方便。

1.3 研究内容

本文对微信食堂线上订餐小程序的设计与实现分成六个章节来说明。

第1章:研究微信食堂线上订餐小程序的背景,以及开发微信食堂线上订餐小程序的意义。

第2章:对开发微信食堂线上订餐小程序的环境还有技术进行说明。

第3章:分析微信食堂线上订餐小程序的可行性,性能,流程以及功能。

第4章:设计微信食堂线上订餐小程序的功能结构,设计数据库E-R图以及对数据表的存储结构进行设计。

第5章:实现微信食堂线上订餐小程序的功能并进行功能界面展示。

第6章:对系统测试进行阐述,以及对本系统部分功能进行检测。

2 开发环境与技术

本章节对开发微信食堂线上订餐小程序需要搭建的开发环境,还有微信食堂线上订餐小程序开发中使用的编程技术等进行阐述。

2.1 Java语言  

Java语言是当今为止依然在编程语言行业具有生命力的常青树之一。Java语言最原始的诞生,不仅仅是创造者感觉C语言在编程上面很麻烦,如果只是专注于业务逻辑的处理,会导致忽略了各种指针以及垃圾回收这些操作,导致出现问题需要解决的时间往往大于正常编程处理业务逻辑的时间,这些是非常浪费时间的。Java语言的创造者就考虑到如何避免这个问题,把指针处理和垃圾处理全部自动化,虽然这会损失一些性能,但是计算机硬件在性能上的发展速度是很快的,这些性能是可以忽略考虑的。并且C语言是针对硬件开发的语言,虽然执行效率高,但是随着硬件的变化或者操作系统的变更,就需要重新编写程序,造成重复劳动,只有解决重复性劳动的语言才算符合生存规律的语言。Java语言的创造者就针对C语言的缺点专门开发了Java语言。让Java语言不管是在什么样的环境里都是可以运行,因为在Java语言运行外面套了一个壳,也就是虚拟机,只要是Java虚拟机能安装的电脑都可以运行Java的程序。

2.2 MYSQL数据库

MySQL数据库是一种数据存放方面的专业软件,也是传统的行式数据模式,获取一些数据是先一行一行的获取,然后一行一行的显示,与列式数据库不同。行式数据库主要是处理最重要的数据逻辑部分,并且必须是有效数据,这样每一处的数据关联都是不可损坏,对数据安全要求比较严格还是用MySQL数据库比较好。列式数据库的发明仅仅是因为读取效率高,但是也就仅仅如此罢了。MySQL虽然比起Oracle或者SQL Server来讲,安装包只是几十兆甚至几百兆,有点小,但是功能并不会弱到哪里,严格遵循SQL标准语法。MySQL的数据存放形式从大向小的说是数据库最大,然后是表,每个表里面存放数据是有一定的规则的,数据存放是表格形式的,也就是说有横也有竖,横着的为行,一般表示一条数据,表与表之间还可以进行关联,进行分表操作,如果一条数据相关项目属性太多,那么可以把有效的相关联系做成关联,可以设定是否唯一。

2.3 SSM框架

开发一个业务逻辑比较简单的应用,采用这几年最广为流传的SSM框架是很合适的。SSM框架就是Spring MVC框架和Spring框架,以及持久层常用的MyBatis框架。

三个框架有三个不同的作用。普通用户一般都是操作浏览器进行浏览自己喜欢的内容,而显示或者提交,都会被Spring MVC框架进行拦截和处理,进入到更深的一个层次就是控制层,它会智能的匹配提交的路径,对不同的来源匹配不同的处理逻辑,让不同的代码进行执行,如果只是判断用户输入信息格式的问题是不用传入到后台就可以被前端框架处理的,如果需要与数据库内容进行交互,就会从Java的POJO对象通过MyBatis自动转换数据库对应字段的数据类型,具体是该增删改查还是其他操作,都会通过MyBatis进行处理,处理结果是反馈给控制层,然后通过控制层再提交给视图层,反馈到用户希望看到的结果。

2.4微信开发者工具

微信开发者工具并不是用来开发微信的一款软件,而是专门用来开发依附于微信的微信小程序和微信公众号的。现如今国内人口差不多14个亿,仅仅微信用户就12个亿之多,基本上覆盖了国内能使用智能手机的所有人群。微信功能相当丰富,可以聊天,视频,移动支付,甚至可以缴各种费用,依靠微信的庞大用户群体,不管是政府机关还是商业公司,都希望借助于微信使用者的庞大用户群体,简化各种支付或者信息推送渠道,让使用微信的人群不用太麻烦就可以完成正常生活的所有操作,极大的方便了人民群众。微信开发者工具就是在聆听到这样的呼唤声而诞生的,为了满足人们的需求,腾讯专门开发出来这个开发工具让其他公司进行使用,并且开放了很多接口以及使用方法,微信开发者工具变得越来越强大。

3 系统分析

本文作者在确定了研究的课题之后,从各大数字图书馆下载文献来阅读,并了解同类型的网站具备的大致功能,然后具体事务具体分析,得出本系统要研究的具体功能与性能。虽然分析系统这一阶段性工作主要是确定功能,但它却影响着后面系统开发环节的进展,系统分析这个环节是不能少的。

3.1 可行性分析

从三个不同的角度来分析,确保开发成功的前提是有可行性分析,只有进行提前分析,符合程序开发流程才不至于开发过程的中断。

3.1.1 技术可行性

在技术实现层次,分析了好几种技术实现方法,并且都有对应的成功案例,也有很多开源模块可以进行参考,所以从技术可行性分析来讲,实现微信食堂线上订餐小程序是没有问题的。

3.1.2 经济可行性

对于身为学生的开发者而言,在经济资源上面可用者很少,为了开发微信食堂线上订餐小程序,通过开发软件对硬件的要求,发现自己的电脑是完全能用来开发的,并且学校机房的配置也可以达到要求。最重要的是选择的技术都可以在网上找到不花钱的教程以及资料,因为不花钱,所以经济方面是具有可行性的。

3.1.3 操作可行性

微信食堂线上订餐小程序的具体实现,本身参考人类的正常操作逻辑,把常用的操作习惯当做主要的导航实现,可以让使用者更快速的理解并且上手操作,实现符合逻辑的操作流程是操作可行性的具体体现。

以上就是从不同的角度来分析,确保了微信食堂线上订餐小程序的正常开展。

3.2 性能需求

需求分析少不了对项目用到的硬件设备进行分析,这样才符合正常的分析流程。只谈功能需求不谈性能需求,是一件很严重的事情,可能会导致一些不可控的问题出现。

以下从这几个角度来分析系统性能。

(1)系统数据的容量:从数据角度来分析,每个表和每个数据库,达到的数据量到一定的程度,是否需要分表或者是分库,超过了数据的设定限度,可能会导致数据反映迟钝,容错量增加。

(2)数据精度的要求:需要对需求分析里面数据设定环节,考虑相应的数据精度问题,需要发现数据是常用的精度还是非常用的精度,进而设定不同的数值。

(3)时间响应要求:从用户提交操作,到页面反映,中间有个数据处理的问题,需要考虑预测数据量的大小,提前预案分库分表的设计,数据量再大就要考虑增加列式数据库的问题,这些都不是一拍脑门就能决定的,都需要经验和同行业的数据分析研判,才能符合用户的要求,毕竟响应时间太久操作起来也不舒服。

(4)普适性问题:用户使用应该不需要感知服务端的数据量问题或者响应问题,只需要任意一台电脑,不需要更多的操作,打开浏览器就能用,太多的设置以及操作,不符合普适性操作。

(5)页面设计问题:功能符合要求之后,肯定是要丰富页面的。页面设计才是用户长时间面对的问题,首先考虑数据的整洁性,让页面看起来更加的清爽。颜色与数据方面,该不同颜色就不同颜色,降低用户长时间使用出现的视觉疲劳,让用户使用起来心情不至于太差。

(6)系统的稳定性:正常用户操作系统页面,必须是该提交提交,正常输入符合逻辑,不能随随便便的就出各种问题,导致用户操作疲惫,并且输入的数据和回显的数据符合用户的要求。如果正常操作都会出现问题,那设计就是不稳定的,这一点肯定不行。只要是与数据进行交互的系统,都必须稳定。系统稳定从开发部署角度上来分析,可以考虑数据的冗余备份功能,自动值守功能,机房数据同步,机房分开的功能,这些都可以让系统的稳定性得到提升。

系统的性能需求需要对业务很熟练的情况下判断然后分析,再从系统性能需求来逐条实现,可以让设计的系统有使用价值。

3.3 功能需求

微信食堂线上订餐小程序根据使用权限的角度进行功能分析,并运用用例图来展示各个权限需要操作的功能。

图3.5即为管理员用例图,管理员权限操作的功能包括对用户注册信息,对商家信息,商品信息,公告信息等进行管理。

图3.5 管理员用例图

图3.6即为商家用例图,商家权限操作的功能包括管理商品,管理并回复商品评价,管理商品订单,查看公告等。

图3.6 商家用例图

图3.7即为用户用例图,用户权限操作的功能包括购买商品,查看商家资料,查看公告,查看商品评价,管理商品订单,进行账户充值等。

图3.7 用户用例图

4 系统设计

用户对着浏览器操作,肯定会出现某些不可预料的问题,但是不代表着系统对于用户在浏览器上的操作不进行处理,所以说,要提前考虑可能会出现的问题。

4.1 系统设计思想

系统设计,肯定要把设计的思想进行统一,只有统一的思想才能指导程序的开发,并且可以让众多的程序开发人员更快速的进入状态,提高开发速度。根据当前系统的既定需求,下面将进行本系统设计思想的阐述。

(1)扩展性:开发任何一个系统的时候不可避免要考虑这个问题。软件版本的更迭是一种常识,任何一个软件都不会一次性开发就成永恒,软件是一个不断成长的东西。所以考虑问题的时候需要对当前问题进行数据上的扩大化,然后进行归纳整理,最终形成具有一定扩展性的程序。程序的可扩展性必然会影响开发进度,所以最终需要综合评估程序的可扩展程度,进而有的放矢,循序开发。

(2)实用性:程序设计是一个先高屋建瓴式的设想,然后再具体化,实用性就是具体化的第一个步骤,要充分考虑使用者是不懂程序设计的这一点,使用者只是懂得常规性的上网操作步骤,并不需要对程序进行理解,所以一定要让使用者感觉到便利,感觉到实用性的存在,如果使用者使用程序过程中没发现使用程序的好处,那么程序设计的实用性将大大降低。

(3)安全性:当使用者使用的过程中,会产生大量的相关数据,这些数据必须有安全性的保证,否则当使用者发现数据出现问题的原因是程序设计问题的时候,将会对程序开发者失去信任,甚至可能会产生大量的费用赔偿问题,这是一个不可避免的问题。所以安全性关系开发与使用者双方的经济利益,程序的安全性是一定要保证的。

(4)先进性:程序设计的先进性是开发者进行考虑的,必须要在满足系统功能的前提下,必须要选择好当下最合适的技术。最合适的技术要从开发成本,使用成本以及维护成本里面综合分析,经过综合分析后要让技术实现最优解,保持先进的技术生产力。

(5)维护性:程序开发之初就要考虑以后的维护问题。维护是在程序开发完毕,已经上线可以运作,进入生产试用过程和使用过程中才会发现需要维护的必要。要通过各方面降低维护成本,不是说维护的越少就代表程序开发的越完美,程序既然是人类进行设计制造的,肯定有很多不可避免的问题产生,那么如何维护好程序的正常运作也是一门很重要的学问。

4.2 功能结构设计

图4.1即为设计的管理员功能结构,管理员权限操作的功能包括对用户注册信息,对商家信息,商品信息,公告信息等进行管理。

图4.1 管理员功能结构

图4.2即为设计的商家功能结构,商家权限操作的功能包括管理商品,管理并回复商品评价,管理商品订单,查看公告等。

图4.2 商家功能结构

图4.3即为设计的用户功能结构,用户权限操作的功能包括购买商品,查看商家资料,查看公告,查看商品评价,管理商品订单,进行账户充值等。

图4.3 用户功能结构

4.3 数据库设计

微信食堂线上订餐小程序运行中产生的数据需要按照提前设置的存储规则进行保存,设计出一个符合项目的最优数据存储格式,因为它能减少用户的等待时间,还可以对系统的请求在最短时间内进行响应。所以,对数据库设计时,需要对功能需求进行详细的拆分,以及对业务状态的细分,然后设计具体的存储规则,保证数据库能正常运作,缩短数据处理时间,并在一定程度上降低数据冗余,节省存储空间。

4.3.1 数据库概念设计

实体-联系图还有一个名称即E-R图,是Entity Relationship Diagram各英文单词首字母的缩写,它这种概念模型通常用于对现实世界进行描述。同时它还是一种能够直观表达数据中实体,联系,属性的有效手段。绘制E-R图能够选择的工具也有很多,但是Office Visio 这款软件在E-R图的绘制上一般都是作为首选工具,因为它是基于可视化处理,使用它创建E-R图非常简单。使用基本的E-R图构成元素,比如椭圆,菱形,矩形,还有实线段来表达对应的信息,椭圆代表属性,即实体的特征,矩形代表实体,即数据库中的一个具体数据表,菱形代表实体中相互关系,实线段主要是完成椭圆,矩形,菱形的连接。

(1)图4.4即为商品这个实体所拥有的属性值。

图4.4 商品实体属性图

(2)图4.5即为商品订单这个实体所拥有的属性值。

图4.5 商品订单实体属性图

(3)图4.6即为用户这个实体所拥有的属性值。

图4.6 用户实体属性图

  1. 图4.7即为商家这个实体所拥有的属性值。

图4.7 商家实体属性图

  1. 图4.8即为上面介绍的实体中存在的联系。

图4.8 实体间关系E-R图

4.3.2 数据库物理设计

本小节主要任务即是根据上述内容进行数据存储结构的设计,实体的属性就用来表示字段名称,不同的字段表示的数据类型以及取值都不相同,以及该表各个字段是否能够保持空等进行说明,设计完成一张数据表的结构之后,在保存时同样要命名,尽量选择英文名称进行命名并保存,还不容易导致系统出错。接下来就对设计的表进行简单说明。

表4.1 收货地址表

字段

注释

类型

id (主键)

主键

int(20)

yonghu_id

创建用户

int(20)

address_name

收货人

varchar(200)

address_phone

电话

varchar(200)

address_dizhi

地址

varchar(200)

isdefault_types

是否默认地址

int(11)

insert_time

添加时间

timestamp

update_time

修改时间

timestamp

create_time

创建时间

timestamp

表4.2 商品表

字段

注释

类型

id (主键)

主键

int(11)

shangjia_id

商家

int(11)

caipin_name

商品名称

varchar(200)

caipin_photo

商品照片

varchar(200)

caipin_types

商品类型

int(11)

caipin_kucun_number

商品库存

int(11)

caipin_price

购买获得积分

int(11)

caipin_old_money

商品原价

decimal(10,2)

caipin_new_money

现价

decimal(10,2)

caipin_clicknum

点击次数

int(11)

shangxia_types

是否上架

int(11)

caipin_delete

逻辑删除

int(11)

caipin_content

商品简介

text

create_time

创建时间

timestamp

表4.3 商品评价表

字段

注释

类型

id (主键)

主键

int(11)

caipin_id

商品

int(11)

yonghu_id

用户

int(11)

caipin_commentback_text

评价内容

text

reply_text

回复内容

text

insert_time

评价时间

timestamp

update_time

回复时间

timestamp

create_time

创建时间

timestamp

表4.4 商品订单表

字段

注释

类型

id (主键)

主键

int(11)

caipin_order_uuid_number

订单号

varchar(200)

address_id

收货地址

int(11)

caipin_id

商品

int(11)

yonghu_id

用户

int(11)

buy_number

购买数量

int(11)

caipin_order_true_price

实付价格

decimal(10,2)

caipin_order_types

订单类型

int(11)

caipin_order_payment_types

支付类型

int(11)

insert_time

订单创建时间

timestamp

create_time

创建时间

timestamp

表4.5 购物车表

字段

注释

类型

id (主键)

主键

int(11)

yonghu_id

所属用户

int(11)

caipin_id

商品

int(11)

buy_number

购买数量

int(11)

create_time

添加时间

timestamp

update_time

更新时间

timestamp

insert_time

创建时间

timestamp

表4.6 公告信息表

字段

注释

类型

id (主键)

主键

int(11)

news_name

公告标题

varchar(200)

news_photo

公告图片

varchar(200)

news_types

公告类型

int(11)

yonghu_id

用户

int(11)

news_content

公告详情

text

create_time

创建时间

timestamp

表4.7 商家表

字段

注释

类型

id (主键)

主键

int(11)

username

账户

varchar(200)

password

密码

varchar(200)

shangjia_name

商家名称

varchar(200)

shangjia_phone

联系方式

varchar(200)

shangjia_email

邮箱

varchar(200)

shangjia_photo

营业执照展示

varchar(200)

shangjia_xingji_types

商家星级类型

int(11)

new_money

现有余额

decimal(10,2)

shangjia_content

商家简介

text

shangjia_delete

逻辑删除

int(11)

create_time

创建时间

timestamp

表4.8 管理员表

字段

注释

类型

id (主键)

主键

bigint(20)

username

用户名

varchar(100)

password

密码

varchar(100)

role

角色

varchar(100)

addtime

新增时间

timestamp

表4.9 用户表

字段

注释

类型

id (主键)

主键

int(11)

username

账户

varchar(200)

password

密码

varchar(200)

yonghu_name

用户姓名

varchar(200)

yonghu_phone

用户手机号

varchar(200)

yonghu_id_number

用户身份证号

varchar(200)

yonghu_photo

用户头像

varchar(200)

sex_types

性别

int(11)

yonghu_email

电子邮箱

varchar(200)

yonghu_sum_jifen

总积分

decimal(10,2)

huiyuandengji_types

会员等级

int(11)

new_money

余额

decimal(10,2)

create_time

创建时间

timestamp

5 系统实现

编程人员在搭建的开发环境中,会让各种编程技术一起呈现出最终效果。本节就展示关键部分的页面效果。

5.1 管理员功能实现

5.1.1 公告信息管理

图5.1 即为编码实现的公告信息管理界面,管理员在公告信息管理界面中具备更改公告图片,标题,公告类型等信息,以及添加公告,删除公告等权限。

图5.1 公告信息管理界面

5.1.2 商家管理

图5.2 即为编码实现的商家管理界面,管理员在商家管理界面中具备更改商家营业执照,商家星级类型以及商家联系方式等信息,以及删除,添加商家等权限。

图5.2 商家管理界面

5.1.3 用户管理

图5.3 即为编码实现的用户管理界面,管理员在用户管理界面为用户的账号进行密码重置,更改用户的基础信息,删除需要删除的用户资料等。

图5.3 用户管理界面

5.2 商家功能实现

5.2.1 商品管理

图5.4 即为编码实现的商品管理界面,商家在商品管理界面中具备增加商品库存,减少商品库存,为商品进行下架,更改商品信息,添加商品等权限。

图5.4 商品管理界面

5.2.2 商品评价管理

图5.5 即为编码实现的商品评价管理界面,商家在商品评价管理界面中查看用户对订单商品的评价,商家需要回复评价信息。

图5.5 商品评价管理界面

5.2.3 商品订单管理

图5.6 即为编码实现的商品订单管理界面,商家在商品订单管理界面中除了对商品订单的详情信息进行查看之外,还可以对用户的订单商品进行出餐。

图5.6 商品订单管理界面

5.3 用户功能实现

5.3.1 商品信息

图5.7 即为编码实现的商品信息界面,用户在商品信息界面中购买商品,或点击加入购物车按钮把商品保存在购物车里面。

图5.7 商品信息界面

5.3.2 订单确认

图5.8 即为编码实现的订单确认界面,用户在订单确认界面中需要确认购买的商品以及收货的地址信息,在余额充足的情况下就可以成功支付订单。

图5.8 订单确认界面

5.3.3 我的商品订单

图5.9 即为编码实现的我的商品订单界面,用户在我的商品订单界面中可以取餐,可以退款,可以评价订单。

图5.9 我的商品订单界面

5.3.4 商家信息

图5.10 即为编码实现的商家信息界面,用户在商家信息界面中查看商家详细介绍,包括商家的星级,商家的营业执照等信息。

图5.10 商家信息界面

更多推荐