基于Android的无线点餐系统.docx
- 文档编号:10914689
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:36
- 大小:84.10KB
基于Android的无线点餐系统.docx
《基于Android的无线点餐系统.docx》由会员分享,可在线阅读,更多相关《基于Android的无线点餐系统.docx(36页珍藏版)》请在冰豆网上搜索。
基于Android的无线点餐系统
基于Android的无线点餐系统
学生姓名:
学生学号:
院(系):
电气信息工程学院
年级专业:
指导教师:
助理指导教师:
二〇一五年五月
摘要
通常情况下,我们的点餐、传单、结账方式都充斥着繁琐,这种方式不仅效率低下,更重要的是在顾客众多的时候极有可能出现订单出错的情况,影响到服务质量,造成不必要的麻烦。
因此一些相对较大的餐饮酒店已经开始着手于无线点餐以解决这个问题。
本设计主要完成无线点餐系统Android客户端的设计,使用eclipse等开发工具用JAVA语言编写,能够实现的模块包括用户登录、点菜、转台、查台、注销登录、帮助功能等。
服务器端用MyEclipse开发,能够实现与客户端的数据连接并完成相应的点餐的任务。
本系统能够正常运行,且与用户交互良好,操作方便,并且配有操作流程图,给出了一些主要操作步骤的界面效果图。
关键词餐饮业,无线网络,Android
ABSTRACT
Normally,weorder,leaflets,checkoutmethodarefilledwithtrival,thiswayisnotonlyinefficient,moreimportantiswhenmanycustomersordererrorislikelytohappen,affectthequalityofservice,causeunnecessarytrouble.Sosomerelativelylargecateringhotelhasbeguninwirelessordertosolvethisproblem.
ThisdesignmainlycompletethewirelessorderingsystemAndroidclientdesign,usingtheeclipsedevelopmenttoolssuchaswrittenintheJAVAlanguage,toimplementthemoduleincludesuserlogin,order,andtable,turntable,checktable,logout,helpfunctions,etc..Theserversideismainlythedesignofthedatabase.
Thissystemcanrunnormally,andinteractwiththeuserisgood,easytooperate,andisequippedwithoperationflowchart,somemainstepsaregiveninterfacerendering.
KeywordsTherestaurantindustry,Thewirelessnetwork,Android
1绪论
1.1课题背景
在如今的信息时代,人们理所应当的觉得很多行业的模式都应该摒弃传统的方法,进而追寻一种现代社会的快捷与便利。
而对于与所有人都息息相关的行业中,比如餐饮业,更加应该抛开传统的慢节奏点餐方式,追求一种更加合理、更加便捷的形式。
而网络发展到如今的程度,完全可以满足这种需要,因此就在这种背景与需求下,无线点餐系统产生了,伴随着的点餐形式是人们随身携带的移动终端——手机。
采用手机与网络相结合的点餐方式,不仅能够提高餐饮行业运行的效率,使企业的利益最大化,还能够避免出现传统方式那样的错误,进而使服务更加完善,能够获得业界的一片好评。
1.2课题研究的主要内容
本课题主要是研究无线点餐系统的Android端,会配合本地服务器配置以及本地数据库服务器,实现手机端点餐的功能。
会详细介绍Android平台、myeclipse、数据库服务器MySQL的搭建。
Android端的相关功能如登陆模块、点餐、查台、并台、注销、帮助等都会进行详细描述以及界面图片,并会给出重要部分的详细代码描述。
1.3课题的研究思路
本课题分为服务端和客户端,服务端采用myeclipse进行开发。
下载jdk安装并配置环境变量,安装好软件并配置好tomcat服务器,创建好数据库文件作为后端;手机端采用集成的eclipse开发,下载AndroidSDK以及genymotion手机模拟器。
开发环境定好后,则需要拟定一个通信协议,在这里是采用的http通信协议,交互的数据的格式为json,便于对数据进行解析。
服务器端还需要进行数据库的设计,即通过MySQL对数据库应用,对用户表的一个详细设计,以及菜谱分类表、餐桌表和订单表,而服务器和客户端的数据交互也主要是这些表格数据的交互。
2方案的设计与选择
2.1点餐系统的设计方案
点餐系统的设计模式可以根据餐饮店自身实际情况来确定,既是无线点餐系统,则有多少种无线传输模式就对应着多少种设计方案。
最常见的是通过网络通信让主控制器与客户机相连实现点餐,或者是利用嵌入式技术,通过选择所依托的硬件平台实现,下面将介绍能实现点餐的几种设计方案。
方案一:
ZigBee协议的通信方案设计。
ZigBee协议是一种低功耗、低速率、近距离、的复杂度、低成本的无线网络技术。
它的协议架构分为四层,分别为应用层、网络层、媒体访问层和物理层。
相对于常见的无线通讯标准协议来说,ZigBee协议套件紧凑而简单,具体实现的要求很低,硬件只需要八位的处理器,如广泛使用的80C51系列单片机就能做到,软件需要32KB的ROM。
方案二:
以移动互联网为基础的无线通信技术。
移动互联网是将移动通信和互联网二者结合,用户通过移动终端通过网络访问互联网的过程。
移动互联网的基础协议为移动IPv6协议,适合于在总控制器(服务端)ip不变的情况下,移动手机端与其进行网络通信。
方案三:
以蓝牙为基础的无线传输技术。
蓝牙传输是一种广泛使用的近距离传输技术,成本低、功耗低成为它的最大特点。
蓝牙的两端都可以作为连接端与被连接端,因此两端的数据可以互传。
在点餐系统的设计中,也是能够实现目标的。
2.2点餐系统方案的选择
下面先对以上提供的方案选择作一次优缺点的分析。
方案一:
利用ZigBee协议进行通信,由于网络节点设备工作周期较短,收发信息功耗低,因此可避免频繁的更换电池或者充电,从而减轻了网络维护的负担。
但是其通信速率很低,而且又受到接口通信速率的限制,因此真正的数据发送量其实很低,不利于大范围的推广使用。
方案二:
利用移动互联网进行通信,可以保证数据传输速率快而且不受客户端数量的限制,而且移动手机端目前已经普遍适用,不仅方便了操作,而且节约了财力,提高了餐饮公司的运转效率,并且服务端采用数据库存储数据,方便查询点餐信息以及即时更新菜谱等,非常高效。
但是以上过程全部建立在有网络的基础上,如果没有网络连接,一切操作都将不能进行。
方案三:
利用蓝牙进行数据传输,优点是方便且成本低,适用于小型的自主型餐饮业。
但不利于大型餐饮业的使用,且传输距离受限制,不能保证数据传输的准确性,存在着数据丢失的危险。
这样来说,相对于传统的人工点餐,优势也就荡然无存。
因此通过综合性的考虑,决定使用第二种方案进行无线点餐设计。
这种方案不仅能在客户端开发的基础上进行二次开发进行改进,还能够在服务端编写jsp程序,进一步完善功能,实现用户在家能够自主订餐的过程,符合目前的发展现状,也是目前最有效的点餐方式。
3点餐系统实现原理及功能
3.1点餐系统原理
该系统是由网络服务器端作为控制核心,服务员以及结账台的Android客户端作为使用的发起点。
具体的实现方式为:
客户端手持机通过界面的按键操作与打开的服务端进行网络通信,以实现客户端的大致模块功能,如开桌点菜、查询桌台信息、结账等基本功能。
服务端数据库主要控制餐馆桌台和菜单信息的变化,以及控制登陆者的权限管理等。
通信时,两端之间通过http协议传送数据并通过json解析方式解析数据并显示,实现两端数据的同步。
该系统的启动会用到相应软件的支持,后续会有介绍。
该系统在整个大的方向上划分为两个模块,即后台的服务器模块和用户的客户端模块。
服务器端只是用来创建数据库,同时提供链接给客户端,响应数据操作;客户端是服务员用来点菜的工具,以及收银员结账的时候使用。
从服务员和管理员两个部分进行设计。
服务员要进行的操作分别是登录、更新数据库资料、查询剩余桌号、为顾客点餐、为顾客换桌、结账、注销账号等;管理员的操作有两个,分别时添加服务员帐号和添加菜谱。
功能具体介绍如下:
登录:
服务员按照自己得到的帐号登录,为顾客服务做准备;
开桌:
包括了点菜和下单等功能;
换桌:
顾客另外选择自己的位置并将之前桌台的信息转移到换桌后的桌台上;
查台:
服务员点餐之前,需要为顾客查询桌台的占有信息;
更新:
数据库的更新。
主要包括餐桌信息的更新和菜单的更新。
结账:
顾客用完餐后所进行的一步操作,所有账单信息在服务员的客户端里面一目了然,价格结算也不存在一点偏差,不用担心会出现计算错误或者心理录入错误等情况;
客户端系统大致要图如图3.1所示。
图3.1系统框架图
3.2系统目标以及编码原则
3.2.1系统能够完成的任务
点餐是面向众多的顾客,在本设计的思想上,不需要顾客自己安装app并点餐,只需要服务员用客户端记录下点餐情况即可,方便又快捷。
系统分为了两个部分,管理员和普通客户服务员。
管理员为客户服务员添加、修改或者删除信息,赋予服务员点餐的权利,除此之外,还可以添加菜单。
而服务员主要是给顾客提供服务,任务就是通过客户描述,添加相应的菜单到相应的位置,并提供点菜、查询餐桌使用情况、转换餐桌、注销、帮助系统、更新菜谱等功能。
3.2.2编码原则
为了提高编码的效率,因此必须对编写的代码做一次规范。
一般来说包含下列几点:
找出所有在程序中并未使用的代码,并且删除。
不然会使后续的维护人员困惑,降低效率。
对必要的代码添加注释。
比如一个类的开始,应该写上这个类的作用是什么,里面的关键代码和关键函数也应该添加注释,以便于后期的维护。
有一个30秒原则。
意思大概就是在一个函数或者一段代码中,如果另外的开发人员无法在30秒的时间内明白这个函数到底是拿来干什么用的,那么就说明这样的程序维护的困难性,应该提前做好修改,继续提高代码的质量;
一般情况下的函数代码是不超过一百行的,如果超过了,建议是应该对该程序进行拆分,且不改变原有的意思,也不影响正常使用;
代码的总体设计应该具有重用性。
将公共方法写在一个公共类里面,直观且清晰,需要调用的时候则直接调用接口即可,而不用在每次都书写大量且麻烦的程序;
命名上应该遵循通俗易懂的规则。
在新建一个类的时候,虽然会写上这个类的注释,但是为了让开发者更加一目了然,则需要在命名的时候写上其英文。
比如登录模块就应该写成LoginActivity.java,这样不仅节约了开发者的时间,也节约了维护者的时间,大大提高效率;
应该保证每一段代码或者每一个函数只做一件事,避免引起调用函数时产生混乱;
在运行的时候通常会有一些警告或者严重的时候会产生错误。
错误是一定要改正的,而通常也会出现一些异常,这个时候就需要知道的是,不能忽略异常。
虽然很多时候异常并不会对程序产生影响,但不排除杀死程序的可能性,因此发现异常情况要及时解决,比如空指针异常,堆栈异常等等。
变量在命名的时候也应该遵循易懂的原则,直接翻译成英文作为变量即可;
不要手动的去改变一些系统自己更改的字段。
比如R.java之类的,在定义函数或者变量的时候如果只是在本程序使用,应该定义为私有的,private;公用的应该定义为public方便其他类调用。
3.3系统所具备的功能
3.3.1客户端的用户登录
为了统一用户的对应信息,在几乎多有的有关成员信息的网络软件开发中,都存在着用户的注册登录和确认注册信息是否正确的步骤。
而在这个课题当中,由于只是针对着较小的用户客户端,因此为了简便,便没有提供用户注册这一功能,服务员只需要获取到登录的信息直接登录即可操作。
因此在这里主要是服务员的登录,通过系统分发的帐号和密码进行登录。
3.3.2管理员权限
在所有的有关软件开发的项目当中,模式都是大同小异。
这里也一样,服务端会提供一个管理员来掌管所有有关客户端的操作以及服务端本身的资料的修正操作。
后台系统可以根据需求,增加或者删除服务员信息,即增删用户。
3.3.3服务员操作
客户端的操作是根据顾客的口述直接进行操作,是最细也是最重要的一步。
当登录进入操作界面后,服务员根据查台信息安排客户入座,客户点餐后只需要记住订单号即可。
最后上菜和结账都凭借着订单号一起完成。
3.3.4菜谱
菜谱也是根据数据库对应下来的菜单,上面不仅记载了文字,而且大多都配有适时图片供顾客查验,以服务尽可能细微周到为宗旨,做到让顾客满意为止。
管理员可以根据餐店自身情况,增加或者删除菜谱信息,可以让餐馆的菜谱信息做到对应同步。
3.4系统性能需求
3.4.1可靠性
系统需要首先确定内部资料的完整性和正确性,避免出现资料出错的情况。
在用户登录的时候,也必须对身份有严格的控制,并能根据不同情况更改用户信息。
管理员在各个模块的管理方面也要恰当,对于需要修改的信息,应该事先修改好。
3.4.2安全性
为了确定数据库的一致性和唯一性,只有后台服务的管理员才能对客户端的信息进行改动,包括对数据库的修改,用户本身不能对自身信息进行修改。
因此,管理员与客户端是相辅相成的,各自共同完成自己的任务,与此同时不需要去做太多无关紧要且麻烦的事情,各司其职,使问题得到最大简化。
3.4.3易操作性
产品最终的上线的最终目的还是要在能够方便大众的同时,尽量做到简便简洁,通俗易懂,最重要的就是界面。
因此在这个课题里面,界面设置非常简便,只有一个主操作界面,再配上细小的弹出框,很方便的就能把菜品展示在顾客眼前。
再加上图片的实例化,操作一目了然,省去了大多数复杂的细节,结果更容易达到效果。
3.5数据库的设计
由于该系统是服务端和客户端的交互运行,因此数据库在这里显得非常重要。
服务端的数据库采用的是mysql,而这刚好适合一些小型的数据库,性能也相对较好。
而这个数据库表的作用就是保存菜单的信息,也包括一些基本信息。
首先应该是以服务员作为表的主键的用户的信息表,其次,在点餐系统当中也应该存在以餐桌号为主键的桌号表,保存桌号订单信息,这样顾客就可以根据自己的爱好,选择酒店中的相应位置用餐。
其具体的E-R图设计如图3.3。
图3.2实体联系图
与之相对应的用户信息表如下图所示:
表3.1用户信息表
列名
数据类型
是否允许为空值
说明
id
Int(11)
否
序列号(主键)
name
Varchar(50)
是
用户名
password
Varchar(50)
是
密码
account
Varchar(50)
是
登录名
gender
Varchar(20)
是
性别
permission
Int(11)
是
权限(0和1)
remark
Varchar(2000)
是
备注
表3.2菜谱表
列名
数据类型
是否允许为空值
说明
id
Int(11)
否
序列号(主键)
price
Int(11)
是
价格
typeID
Int(11)
是
类型
name
Varchar(50)
是
菜名
picture
Varchar(1000)
是
图片
remark
Varchar(2000)
是
备注
表3.3餐桌表
列名
数据类型
是否允许为空值
说明
id
Int(11)
否
序列号
number
Int(11)
是
订购数量
flag
Int(11)
是
标志
remark
Varchar(2000)
是
备注
4点餐系统实现的软件基础
4.1Eclipse
4.1.1Eclipse简介
Eclipse是一个以JAVA为基础的,开源且可扩展的开发平台,对于本身而言只是一个框架和服务,而通过插件使其成为了一个开发性软件平台。
因此Eclipse不仅仅是一个只能开发JAVA的软件平台,它还能通过集成其他的插件以开发其他的软件,因此适用范围很广泛,是开发者理想的工具。
最常见的支持的插件有C/C++、COBOL、PHP、Android等。
它还能用来完成与软件开发无关的其他应用程序的开发,如内容管理系统等。
而在这个课题中,主要的插件是EclipseSDK。
4.1.2JDK安装
下载jdk并默认安装在C盘中,然后需要配置添加三个变量。
点开我的电脑中的环境变量配置,选择高级,新建JAVA_HOME,将jdk安装的目录复制在对应的框格下面;然后新建CLASSPATH,在对应框中输入%JAVA_HOME%\lib以及%JAVA_HOME%\lib\tools.jar,中间用分号隔开;最后新建path,对应框填入%JAVA_HOME%\bin即可,保存退出。
最后检查jdk是否安装成功,可以打开cmd命令框输入java-version,若显示出版本信息,则表示安装成功。
4.1.3Eclipse的安装
为了方便操作过程,这里下载的是Android集成版本,直接下载adt-bundle-windows-x86放在任意路径下,里面包含两个文件夹eclipse和jdk以及一个应用程序SDKManager.exe,直接运行应用程序,可以选择安装SDK版本。
集成版本的好处是,不用配置环境变量,缺点是一些接口文档描述得并不是很准确,比起官方文档有一些差距,但是总的来说并不影响开发。
4.1.4genymotion的安装
一般情况下,eclipse中会有自带的手机模拟器,但是在实际的开发中,自带的模拟器启动时需要耗费很多时间,而且所占内存空间大,不利于开发,这个时候就需要安装一个第三方的模拟器,即genymotion。
它拥有占内存小,开机速度快等优点,而且与真实的手机功能和使用方法都大致相同,模拟的情况也与实际手机相同,不会存在着在模拟器上能使用但在实际手机上无法使用的情况,避免了开发误差,是开发的理想模拟器选择。
首先应进入genymotion官网注册帐号,激活邮箱后,用户名即为你的邮箱名,登录即可免费下载。
但由于安装genymotion需要VirtualBox的支持,因此可以直接下载自带有VirtualBox版本的模拟器,好处是不用自己手动去安装虚拟机盒子。
4.2MyEclipse安装
MyEclipse主要是用于企业的功能强大的开发软件,它是建立在eclipse的基础上的,加入了自己的插件而构成的,主要用于j2ee的开发,即后台系统的开发,庆幸的是,这个强大的软件对各种开源的产品也都非常支持。
7.0版本以前的MyEclipse都需要配置tomcat服务器,但是自从7.0版本发布后,你做的就是仅仅需要安装好MyEclipse就好了,使用上也更加方便,集成了各个模块以方便开发。
在该课题的设计中,MyEclipse是用来开发web版本的,能够模拟后台的功能,使手机端能够正常运行。
4.3MySQL安装与配置
到官方网站上根据自己的电脑系统下载安装符合自己的mysql,然后解压到本地的文件夹下面。
接着配置环境变量,右键我的电脑,选择属性->高级->环境变量,新建MYSQL_HOME,对应填上安装位置,追加PATH,将bin目录添加到其中,各个不同路径用分号隔开。
在安装MYSQL过程中,可以自定义安装,也可以默认安装,但是一定要记住自己安装过程中设置的密码,这个密码会在启动的时候用到。
安装完成后,在cmd命令里面输入netstartmysql,如果弹出启动成功的标志,则说明安装成功。
4.4tomcat的配置
Tomcat是开发者最喜欢的工具之一,不仅因为它在运行的时候内存消耗较小、有良好的扩展性,而且他自身还在不断的完善和改进当中,开发者还可以根据自己的需求添加自己所需要的新功能或者更改他的功能,是非常人性化的开发工具。
Tomcat是一个轻量级的应用服务器,在开发小型系统中经常被使用到,是开发以及调试jsp程序最常用到的。
安装Tomcat的一个基础就是安装jdk,在之前的步骤已经做好了,因此现在只需要配置Tomcat的环境变量就可以了。
仿照上面步骤,新建变量CATALINA_HOME,输入Tomcat安装路径,新建CATALINA_BASE,输入Tomcat安装路径,打开PATH,将bin目录添加到其中。
5系统框架和关键技术
5.1系统架构介绍
该课题的设计主要采用的是MVC架构模式。
MVC分别是model、view、controller的缩写,代表模型、视图和控制器。
而在实际的开发过程中,几乎所有的应用程序都采用了这种架构模式,比如.net,Java,PHP,Spring等等。
而出现这种现象的原因是因为MVC模式有着它自己独特的优势,因为它能实现代码M层和V层的分离,可以使一个应用程序有着不同的表现形式。
C层的作用是倾向一个全局的作用,当M层改变的时候,它能保证V层同步的改变,这就极大的提高了编程的效率,也使得后期代码维护的工作变得简单轻松的多了。
下面主要介绍关于Android的MVC模式。
M层代表模型层,它包含了应用程序的主体部分,所有的复杂的代码以及繁琐的逻辑代码都应该写在这个层次里面。
比如说数据库对数据的处理、网络链接的程序等,当然,对于业务计算等相关操作也必须放在这里面的。
V层代表视图层,顾名思义,这个层面包含的内容也就是关于界面的视图了。
对于Android应用程序来说,每个界面都对应一个xml文件,而这个界面就是用户能看到的内容。
因此,设计的时候,需要首先由UI设计出大致效果图,然后开发者根据效果图再逐一绘制控件到xml文件中,最后在类中应用。
这样做比较方便的是,能够随着UI界面的修改而方便的修改自己的代码,不管是开发和维护都比较方便。
C层代表控制层,而在Android中,控制层的重任都落在了activity上面。
因此不能再activity里面写代码,而要交给业务逻辑层去实现代码逻辑。
不然的话,会造成应用程序无响应,最终被回收掉。
总的来说,Android的MVC模式现在应用得还比较简单,但是即时在这样的情况下,还是能感受到如此的便捷,而且还在持续的发展中,以后一定会应用得更好,会出现一种更加便捷的开发方式。
5.2关键技术
5.2.1JDBC
JDBC定义为一种javaapi,主要用来执行sql语句,它是由一种由java编写的接口和类构成的。
它的方便之处在于,向其他的各种关系数据发送sql语句显得非常的方便。
比如说要访问Sybase数据库或者Oracle数据库,只需要调用JDBC的一个api就能访问了,而不必专门为他们而写自己的程序来进行访问,只需要写一遍程序就可以运行在任何平台上。
总的来说,JDBC做的事情有三件,分别时连接数据库、发送操作数据库的sql语句、处理结果。
5.2.2Jquery
Jquery可以理解为JS(javascript)以及query,是辅助JS开发的库。
它是轻量级的js库,兼容的浏览器很多,还能使用户方便的处理很多内容,比如HTML,AJAX交互,动画效果等等。
而且它的一个很大的优势在于特的说明文档都很全,也有很多成熟的插件供开发者选用。
Jquery是免费开源的,也是目前使用得最多的一种库,推行writeless,do
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 无线 系统