收藏 分享(赏)

基于Android的无线点餐系统.doc

上传人:精品资料 文档编号:8334691 上传时间:2019-06-20 格式:DOC 页数:41 大小:2.09MB
下载 相关 举报
基于Android的无线点餐系统.doc_第1页
第1页 / 共41页
基于Android的无线点餐系统.doc_第2页
第2页 / 共41页
基于Android的无线点餐系统.doc_第3页
第3页 / 共41页
基于Android的无线点餐系统.doc_第4页
第4页 / 共41页
基于Android的无线点餐系统.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、基于 Android 的无线点餐系统学生姓名:学生学号:院 (系): 电气信息工程学院 年级专业:指导教师:助理指导教师:二一五年五月摘要摘 要通常情况下,我们的点餐、传单、结账方式都充斥着繁琐,这种方式不仅效率低下,更重要的是在顾客众多的时候极有可能出现订单出错的情况,影响到服务质量,造成不必要的麻烦。因此一些相对较大的餐饮酒店已经开始着手于无线点餐以解决这个问题。本设计主要完成无线点餐系统 Android 客户端的设计,使用 eclipse 等开发工具用 JAVA 语言编写,能够实现的模块包括用户登录、点菜、转台、查台、注销登录、帮助功能等。服务器端用 MyEclipse 开发,能够实现与

2、客户端的数据连接并完成相应的点餐的任务。本系统能够正常运行,且与用户交互良好,操作方便,并且配有操作流程图,给出了一些主要操作步骤的界面效果图。关键词 餐饮业,无线网络,Android ABSTACTABSTRACTNormally, we order, leaflets, checkout method are filled with trival, this way is not only inefficient, more important is when many customers order error is likely to happen, affect the qualit

3、y of service, cause unnecessary trouble.So some relatively large catering hotel has begun in wireless order to solve this problem.This design mainly complete the wireless ordering system Android client design,using the eclipse development tools such as written in the JAVA language,to implement the m

4、odule includes user login, order, and table, turntable, check table, log out, help functions, etcThe server side is mainly the design of the database.This system can run normally, and interact with the user is good, easy to operate, and is equipped with operation flow chart, some main steps are give

5、n interface rendering.Key words The restaurant industry,The wireless network,Android目录0目 录摘 要 .IABSTRACT .II1 绪论 11.1 课题背景 11.2 课题研究的主要内容 11.3 课题的研究思路 .12 方案的设计与选择 22.1 点餐系统的设计方案 22.2 点餐系统方案的选择 23 点餐系统实现原理及功能 43.1 点餐系统原理 .43.2 系统目标以及编码原则 .53.2.1 系统能够完成的任务 53.2.2 编码原则 .53.3 系统所具备的功能 63.3.1 客户端的用户登录 .

6、63.3.2 管理员权限 63.3.3 服务员操作 73.3.4 菜谱 73.4 系统性能需求 .73.4.1 可靠性 .73.4.2 安全性 .73.4.3 易操作性 .73.5 数据库的设计 .74 点餐系统实现的软件基础 104.1 Eclipse104.1.1 Eclipse 简介 .104.1.2 JDK 安装 104.1.3 Eclipse 的安装 104.1.4 genymotion 的安装 .104.2 MyEclipse 安装 114.3 MySQL 安装与配置 .114.4 tomcat 的配置 115 系统框架和关键技术 135.1 系统架构介绍 .135.2 关键技术

7、135.2.1 JDBC 135.2.2 Jquery.145.2.3 Ajax 14目录15.2.4 Client/Server 模式 .146 点餐系统的实现方法 156.1 系统登录模块的实现 156.2 点菜模块的设计和实现 .166.3 转台模块的设计和实现 .176.4 查台模块的设计和实现 .196.5 结算模块的设计和实现 .206.6 更新模块的设计和实现 .216.7 帮助模块的设计和实现 .246.8 注销功能的设计和实现 .256.9 服务器端概述 .267 结论 29参 考 文 献 30附 录:数据库的编码 31致 谢 36绪论01 绪论1.1 课题背景在如今的信息时

8、代,人们理所应当的觉得很多行业的模式都应该摒弃传统的方法,进而追寻一种现代社会的快捷与便利。而对于与所有人都息息相关的行业中,比如餐饮业,更加应该抛开传统的慢节奏点餐方式,追求一种更加合理、更加便捷的形式。而网络发展到如今的程度,完全可以满足这种需要,因此就在这种背景与需求下,无线点餐系统产生了,伴随着的点餐形式是人们随身携带的移动终端手机。采用手机与网络相结合的点餐方式,不仅能够提高餐饮行业运行的效率,使企业的利益最大化,还能够避免出现传统方式那样的错误,进而使服务更加完善,能够获得业界的一片好评。1.2 课题研究的主要内容本课题主要是研究无线点餐系统的 Android 端,会配合本地服务器

9、配置以及本地数据库服务器,实现手机端点餐的功能。会详细介绍 Android 平台、myeclipse、数据库服务器 MySQL 的搭建。Android 端的相关功能如登陆模块、点餐、查台、并台、注销、帮助等都会进行详细描述以及界面图片,并会给出重要部分的详细代码描述。1.3 课题的研究思路本课题分为服务端和客户端,服务端采用 myeclipse 进行开发。下载 jdk安装并配置环境变量,安装好软件并配置好 tomcat 服务器,创建好数据库文件作为后端;手机端采用集成的 eclipse 开发,下载 Android SDK 以及genymotion 手机模拟器。开发环境定好后,则需要拟定一个通信

10、协议,在这里是采用的 http 通信协议,交互的数据的格式为 json,便于对数据进行解析。服务器端还需要进行数据库的设计,即通过 MySQL 对数据库应用,对用户表的一个详细设计,以及菜谱分类表、餐桌表和订单表,而服务器和客户端的数据交互也主要是这些表格数据的交互。2 方案的设计与选择12 方案的设计与选择2.1 点餐系统的设计方案点餐系统的设计模式可以根据餐饮店自身实际情况来确定,既是无线点餐系统,则有多少种无线传输模式就对应着多少种设计方案。最常见的是通过网络通信让主控制器与客户机相连实现点餐,或者是利用嵌入式技术,通过选择所依托的硬件平台实现,下面将介绍能实现点餐的几种设计方案。方案一

11、:ZigBee 协议的通信方案设计。ZigBee 协议是一种低功耗、低速率、近距离、的复杂度、低成本的无线网络技术。它的协议架构分为四层,分别为应用层、网络层、媒体访问层和物理层。相对于常见的无线通讯标准协议来说,ZigBee 协议套件紧凑而简单,具体实现的要求很低,硬件只需要八位的处理器,如广泛使用的 80C51 系列单片机就能做到,软件需要 32KB 的 ROM。方案二:以移动互联网为基础的无线通信技术。移动互联网是将移动通信和互联网二者结合,用户通过移动终端通过网络访问互联网的过程。移动互联网的基础协议为移动 IPv6 协议,适合于在总控制器(服务端)ip 不变的情况下,移动手机端与其进

12、行网络通信。方案三:以蓝牙为基础的无线传输技术。蓝牙传输是一种广泛使用的近距离传输技术,成本低、功耗低成为它的最大特点。蓝牙的两端都可以作为连接端与被连接端,因此两端的数据可以互传。在点餐系统的设计中,也是能够实现目标的。2.2 点餐系统方案的选择下面先对以上提供的方案选择作一次优缺点的分析。方案一:利用 ZigBee 协议进行通信,由于网络节点设备工作周期较短,收发信息功耗低,因此可避免频繁的更换电池或者充电,从而减轻了网络维护的负担。但是其通信速率很低,而且又受到接口通信速率的限制,因此真正的数据发送量其实很低,不利于大范围的推广使用。方案二:利用移动互联网进行通信,可以保证数据传输速率快

13、而且不受客户端数量的限制,而且移动手机端目前已经普遍适用,不仅方便了操作,而且节约了财力,提高了餐饮公司的运转效率,并且服务端采用数据库存储数据,方便查询点餐信息以及即时更新菜谱等,非常高效。但是以上过程全部建立在有网络的基础上,如果没有网络连接,一切操作都将不能进行。方案三:利用蓝牙进行数据传输,优点是方便且成本低,适用于小型的自2 方案的设计与选择2主型餐饮业。但不利于大型餐饮业的使用,且传输距离受限制,不能保证数据传输的准确性,存在着数据丢失的危险。这样来说,相对于传统的人工点餐,优势也就荡然无存。因此通过综合性的考虑,决定使用第二种方案进行无线点餐设计。这种方案不仅能在客户端开发的基础

14、上进行二次开发进行改进,还能够在服务端编写jsp 程序,进一步完善功能,实现用户在家能够自主订餐的过程,符合目前的发展现状,也是目前最有效的点餐方式。3 点餐系统实现原理及功能33 点餐系统实现原理及功能3.1 点餐系统原理该系统是由网络服务器端作为控制核心,服务员以及结账台的 Android 客户端作为使用的发起点。具体的实现方式为:客户端手持机通过界面的按键操作与打开的服务端进行网络通信,以实现客户端的大致模块功能,如开桌点菜、查询桌台信息、结账等基本功能。服务端数据库主要控制餐馆桌台和菜单信息的变化,以及控制登陆者的权限管理等。通信时,两端之间通过 http 协议传送数据并通过 json

15、 解析方式解析数据并显示,实现两端数据的同步。该系统的启动会用到相应软件的支持,后续会有介绍。该系统在整个大的方向上划分为两个模块,即后台的服务器模块和用户的客户端模块。服务器端只是用来创建数据库,同时提供链接给客户端,响应数据操作;客户端是服务员用来点菜的工具,以及收银员结账的时候使用。从服务员和管理员两个部分进行设计。服务员要进行的操作分别是登录、更新数据库资料、查询剩余桌号、为顾客点餐、为顾客换桌、结账、注销账号等;管理员的操作有两个,分别时添加服务员帐号和添加菜谱。功能具体介绍如下:登录:服务员按照自己得到的帐号登录,为顾客服务做准备;开桌:包括了点菜和下单等功能;换桌:顾客另外选择自

16、己的位置并将之前桌台的信息转移到换桌后的桌台上;查台:服务员点餐之前,需要为顾客查询桌台的占有信息;更新:数据库的更新。主要包括餐桌信息的更新和菜单的更新。结账:顾客用完餐后所进行的一步操作,所有账单信息在服务员的客户端里面一目了然,价格结算也不存在一点偏差,不用担心会出现计算错误或者心理录入错误等情况;客户端系统大致要图如图 3.1 所示。3 点餐系统实现原理及功能4图 3.1 系统框架图3.2 系统目标以及编码原则3.2.1 系统能够完成的任务点餐是面向众多的顾客,在本设计的思想上,不需要顾客自己安装 app 并点餐,只需要服务员用客户端记录下点餐情况即可,方便又快捷。系统分为了两个部分,

17、管理员和普通客户服务员。管理员为客户服务员添加、修改或者删除信息,赋予服务员点餐的权利,除此之外,还可以添加菜单。而服务员主要是给顾客提供服务,任务就是通过客户描述,添加相应的菜单到相应的位置,并提供点菜、查询餐桌使用情况、转换餐桌、注销、帮助系统、更新菜谱等功能。3.2.2 编码原则为了提高编码的效率,因此必须对编写的代码做一次规范。一般来说包含下列几点:找出所有在程序中并未使用的代码,并且删除。不然会使后续的维护人员困惑,降低效率。对必要的代码添加注释。比如一个类的开始,应该写上这个类的作用是什么,里面的关键代码和关键函数也应该添加注释,以便于后期的维护。用 户 登 录信 息 匹 配功 能

18、 界 面网 络 连 接查 台 开 桌 换 台 更 新 查 台 注 销退 出下 单点 菜是否3 点餐系统实现原理及功能5有一个 30 秒原则。意思大概就是在一个函数或者一段代码中,如果另外的开发人员无法在 30 秒的时间内明白这个函数到底是拿来干什么用的,那么就说明这样的程序维护的困难性,应该提前做好修改,继续提高代码的质量;一般情况下的函数代码是不超过一百行的,如果超过了,建议是应该对该程序进行拆分,且不改变原有的意思,也不影响正常使用;代码的总体设计应该具有重用性。将公共方法写在一个公共类里面,直观且清晰,需要调用的时候则直接调用接口即可,而不用在每次都书写大量且麻烦的程序;命名上应该遵循通

19、俗易懂的规则。在新建一个类的时候,虽然会写上这个类的注释,但是为了让开发者更加一目了然,则需要在命名的时候写上其英文。比如登录模块就应该写成 LoginActivity.java,这样不仅节约了开发者的时间,也节约了维护者的时间,大大提高效率;应该保证每一段代码或者每一个函数只做一件事,避免引起调用函数时产生混乱;在运行的时候通常会有一些警告或者严重的时候会产生错误。错误是一定要改正的,而通常也会出现一些异常,这个时候就需要知道的是,不能忽略异常。虽然很多时候异常并不会对程序产生影响,但不排除杀死程序的可能性,因此发现异常情况要及时解决,比如空指针异常,堆栈异常等等。变量在命名的时候也应该遵循

20、易懂的原则,直接翻译成英文作为变量即可;不要手动的去改变一些系统自己更改的字段。比如 R.java 之类的,在定义函数或者变量的时候如果只是在本程序使用,应该定义为私有的,private;公用的应该定义为 public 方便其他类调用。3.3 系统所具备的功能3.3.1 客户端的用户登录为了统一用户的对应信息,在几乎多有的有关成员信息的网络软件开发中,都存在着用户的注册登录和确认注册信息是否正确的步骤。而在这个课题当中,由于只是针对着较小的用户客户端,因此为了简便,便没有提供用户注册这一功能,服务员只需要获取到登录的信息直接登录即可操作。因此在这里主要是服务员的登录,通过系统分发的帐号和密码进

21、行登录。3.3.2 管理员权限在所有的有关软件开发的项目当中,模式都是大同小异。这里也一样,服务端会提供一个管理员来掌管所有有关客户端的操作以及服务端本身的资料的3 点餐系统实现原理及功能6修正操作。后台系统可以根据需求,增加或者删除服务员信息,即增删用户。3.3.3 服务员操作客户端的操作是根据顾客的口述直接进行操作,是最细也是最重要的一步。当登录进入操作界面后,服务员根据查台信息安排客户入座,客户点餐后只需要记住订单号即可。最后上菜和结账都凭借着订单号一起完成。3.3.4 菜谱菜谱也是根据数据库对应下来的菜单,上面不仅记载了文字,而且大多都配有适时图片供顾客查验,以服务尽可能细微周到为宗旨

22、,做到让顾客满意为止。管理员可以根据餐店自身情况,增加或者删除菜谱信息,可以让餐馆的菜谱信息做到对应同步。3.4 系统性能需求3.4.1 可靠性系统需要首先确定内部资料的完整性和正确性,避免出现资料出错的情况。在用户登录的时候,也必须对身份有严格的控制,并能根据不同情况更改用户信息。管理员在各个模块的管理方面也要恰当,对于需要修改的信息,应该事先修改好。3.4.2 安全性为了确定数据库的一致性和唯一性,只有后台服务的管理员才能对客户端的信息进行改动,包括对数据库的修改,用户本身不能对自身信息进行修改。因此,管理员与客户端是相辅相成的,各自共同完成自己的任务,与此同时不需要去做太多无关紧要且麻烦

23、的事情,各司其职,使问题得到最大简化。3.4.3 易操作性产品最终的上线的最终目的还是要在能够方便大众的同时,尽量做到简便简洁,通俗易懂,最重要的就是界面。因此在这个课题里面,界面设置非常简便,只有一个主操作界面,再配上细小的弹出框,很方便的就能把菜品展示在顾客眼前。再加上图片的实例化,操作一目了然,省去了大多数复杂的细节,结果更容易达到效果。3.5 数据库的设计由于该系统是服务端和客户端的交互运行,因此数据库在这里显得非常重要。服务端的数据库采用的是 mysql,而这刚好适合一些小型的数据库,性能也相对较好。而这个数据库表的作用就是保存菜单的信息,也包括一些基本信息。首先应该是以服务员作为表

24、的主键的用户的信息表,其次,在点餐系统当3 点餐系统实现原理及功能7中也应该存在以餐桌号为主键的桌号表,保存桌号订单信息,这样顾客就可以根据自己的爱好,选择酒店中的相应位置用餐。其具体的 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) 是

25、权限(0 和 1)remark Varchar(2000) 是 备注表 3.2 菜谱表列名 数据类型 是否允许为空值 说明id Int(11) 否 序列号(主键)price Int(11) 是 价格typeID Int(11) 是 类型name Varchar(50) 是 菜名picture Varchar(1000) 是 图片ID 编号 描述标识号桌号桌位服务n1用户密码用户名称ID 编号服务人员3 点餐系统实现原理及功能8remark Varchar(2000) 是 备注表 3.3 餐桌表列名 数据类型 是否允许为空值 说明id Int(11) 否 序列号number Int(11) 是

26、订购数量flag Int(11) 是 标志remark Varchar(2000) 是 备注4 点餐系统实现的软件基础94 点餐系统实现的软件基础4.1 Eclipse4.1.1 Eclipse 简介Eclipse 是一个以 JAVA 为基础的,开源且可扩展的开发平台,对于本身而言只是一个框架和服务,而通过插件使其成为了一个开发性软件平台。因此Eclipse 不仅仅是一个只能开发 JAVA 的软件平台,它还能通过集成其他的插件以开发其他的软件,因此适用范围很广泛,是开发者理想的工具。最常见的支持的插件有 C/C+、COBOL、PHP、Android 等。它还能用来完成与软件开发无关的其他应用程

27、序的开发,如内容管理系统等。而在这个课题中,主要的插件是Eclipse SDK。4.1.2 JDK 安装下载 jdk 并默认安装在 C 盘中,然后需要配置添加三个变量。点开我的电脑中的环境变量配置,选择高级,新建 JAVA_HOME,将 jdk 安装的目录复制在对应的框格下面;然后新建 CLASSPATH,在对应框中输入%JAVA_HOME%lib 以及%JAVA_HOME%libtools.jar,中间用分号隔开;最后新建 path,对应框填入%JAVA_HOME%bin 即可,保存退出。最后检查 jdk 是否安装成功,可以打开 cmd命令框输入 java-version,若显示出版本信息,

28、则表示安装成功。4.1.3 Eclipse 的安装为了方便操作过程,这里下载的是 Android 集成版本,直接下载 adt-bundle-windows-x86 放在任意路径下,里面包含两个文件夹 eclipse 和 jdk 以及一个应用程序 SDK Manager.exe,直接运行应用程序,可以选择安装 SDK 版本。集成版本的好处是,不用配置环境变量,缺点是一些接口文档描述得并不是很准确,比起官方文档有一些差距,但是总的来说并不影响开发。4.1.4 genymotion 的安装一般情况下,eclipse 中会有自带的手机模拟器,但是在实际的开发中,自带的模拟器启动时需要耗费很多时间,而且

29、所占内存空间大,不利于开发,这个时候就需要安装一个第三方的模拟器,即 genymotion。它拥有占内存小,开机速度快等优点,而且与真实的手机功能和使用方法都大致相同,模拟的情况也与实际手机相同,不会存在着在模拟器上能使用但在实际手机上无法使用的情况,避免了开发误差,是开发的理想模拟器选择。首先应进入 genymotion 官网注册帐号,激活邮箱后,用户名即为你的邮箱4 系统分析与设计10名,登录即可免费下载。但由于安装 genymotion 需要 VirtualBox 的支持,因此可以直接下载自带有 VirtualBox 版本的模拟器,好处是不用自己手动去安装虚拟机盒子。安装好 genymo

30、tion 后,下一步就是要集成到 eclipse 中,首先需要打开eclipse,在 help 菜单下选择 install new software,选择 add 选项,在Location 栏上输入 http:/ eclipse,会发现菜单栏里面多了一个打开模拟器的按钮,即是安装好了 genymotion。4.2 MyEclipse 安装MyEclipse 主要是用于企业的功能强大的开发软件,它是建立在 eclipse的基础上的,加入了自己的插件而构成的,主要用于 j2ee 的开发,即后台系统的开发,庆幸的是,这个强大的软件对各种开源的产品也都非常支持。7.0 版本以前的 MyEclipse

31、都需要配置 tomcat 服务器,但是自从 7.0 版本发布后,你做的就是仅仅需要安装好 MyEclipse 就好了,使用上也更加方便,集成了各个模块以方便开发。在该课题的设计中,MyEclipse 是用来开发 web 版本的,能够模拟后台的功能,使手机端能够正常运行。4.3 MySQL 安装与配置到官方网站上根据自己的电脑系统下载安装符合自己的 mysql,然后解压到本地的文件夹下面。接着配置环境变量,右键我的电脑,选择属性-高级-环境变量,新建 MYSQL_HOME,对应填上安装位置,追加 PATH,将 bin 目录添加到其中,各个不同路径用分号隔开。在安装 MYSQL 过程中,可以自定义

32、安装,也可以默认安装,但是一定要记住自己安装过程中设置的密码,这个密码会在启动的时候用到。安装完成后,在 cmd 命令里面输入 net start mysql,如果弹出启动成功的标志,则说明安装成功。4.4 tomcat 的配置Tomcat 是开发者最喜欢的工具之一,不仅因为它在运行的时候内存消耗较小、有良好的扩展性,而且他自身还在不断的完善和改进当中,开发者还可以根据自己的需求添加自己所需要的新功能或者更改他的功能,是非常人性化的开发工具。4 系统分析与设计11Tomcat 是一个轻量级的应用服务器,在开发小型系统中经常被使用到,是开发以及调试 jsp 程序最常用到的。安装 Tomcat 的

33、一个基础就是安装 jdk,在之前的步骤已经做好了,因此现在只需要配置 Tomcat 的环境变量就可以了。仿照上面步骤,新建变量CATALINA_HOME,输入 Tomcat 安装路径,新建 CATALINA_BASE,输入 Tomcat 安装路径,打开 PATH,将 bin 目录添加到其中。启动 Tomcat 方式有两种,第一种为打开 cmd,进入到 Tomcat 路径下,输入 startup 即可启动;第二种方法是,双击运行 bin 目录下的 startup.bat 即可。然后在浏览器中输入 http:/localhost:8080,如果出现了 Tomcat 主页,说明 Tomcat 配置成

34、功。5 系统框架和关键技术125 系统框架和关键技术5.1 系统架构介绍该课题的设计主要采用的是 MVC 架构模式。MVC 分别是model、view、controller 的缩写,代表模型、视图和控制器。而在实际的开发过程中,几乎所有的应用程序都采用了这种架构模式,比如.net,Java,PHP,Spring 等等。而出现这种现象的原因是因为 MVC 模式有着它自己独特的优势,因为它能实现代码 M 层和 V 层的分离,可以使一个应用程序有着不同的表现形式。C 层的作用是倾向一个全局的作用,当 M 层改变的时候,它能保证 V 层同步的改变,这就极大的提高了编程的效率,也使得后期代码维护的工作变

35、得简单轻松的多了。下面主要介绍关于 Android 的 MVC 模式。M 层代表模型层,它包含了应用程序的主体部分,所有的复杂的代码以及繁琐的逻辑代码都应该写在这个层次里面。比如说数据库对数据的处理、网络链接的程序等,当然,对于业务计算等相关操作也必须放在这里面的。V 层代表视图层,顾名思义,这个层面包含的内容也就是关于界面的视图了。对于 Android 应用程序来说,每个界面都对应一个 xml 文件,而这个界面就是用户能看到的内容。因此,设计的时候,需要首先由 UI 设计出大致效果图,然后开发者根据效果图再逐一绘制控件到 xml 文件中,最后在类中应用。这样做比较方便的是,能够随着 UI 界

36、面的修改而方便的修改自己的代码,不管是开发和维护都比较方便。C 层代表控制层,而在 Android 中,控制层的重任都落在了 activity 上面。因此不能再 activity 里面写代码,而要交给业务逻辑层去实现代码逻辑。不然的话,会造成应用程序无响应,最终被回收掉。总的来说,Android 的 MVC 模式现在应用得还比较简单,但是即时在这样的情况下,还是能感受到如此的便捷,而且还在持续的发展中,以后一定会应用得更好,会出现一种更加便捷的开发方式。5.2 关键技术5.2.1 JDBCJDBC 定义为一种 java api,主要用来执行 sql 语句,它是由一种由 java编写的接口和类构

37、成的。它的方便之处在于,向其他的各种关系数据发送 sql语句显得非常的方便。比如说要访问 Sybase 数据库或者 Oracle 数据库,只需要调用 JDBC 的一个 api 就能访问了,而不必专门为他们而写自己的程序来进行5 系统框架和关键技术13访问,只需要写一遍程序就可以运行在任何平台上。总的来说,JDBC 做的事情有三件,分别时连接数据库、发送操作数据库的sql 语句、处理结果。5.2.2 JqueryJquery 可以理解为 JS(javascript)以及 query,是辅助 JS 开发的库。它是轻量级的 js 库,兼容的浏览器很多,还能使用户方便的处理很多内容,比如 HTML,A

38、JAX 交互,动画效果等等。而且它的一个很大的优势在于特的说明文档都很全,也有很多成熟的插件供开发者选用。Jquery 是免费开源的,也是目前使用得最多的一种库,推行 write less,do more 的理念,使用的是 MIT 许可协议。它的存在可以使开发人员更为简单的处理事物,同时也支持开发人员自己编写插件。5.2.3 AjaxAjax 即为异步的 js 和 xml,主要功能是在不完全加载所有网页的基础上,将一部分网页代码进行加载,提高了效率的同时,也节省了很大一部分的内存消耗。可以想象得到,如果不适用 Ajax,在加载一部分网页的时候,也不得不全部加载网页,不仅操作繁琐,用户体验不佳,

39、也使得后台的压力很大,不利于长期发展。5.2.4 Client/Server 模式除了对等网这一种网络连接模式以外,还有一种模式,即为客户机/服务器模式。在这种模式下,服务器是作为核心,客户端作为连接的基础,它们相辅相成,客户机需要服务端提供网络链接和网络资源,而服务器的目的也就是为客户端提供这些资源。它作为这个系统的体系结构,能够充分发挥两端的优势,进而合理的为两端分配任务,可以大大降低系统的网络开销。因此,目前大多数应用软件的系统都是采用的这种模式。由于现有的大多数系统都在向分布式的 web 发展,web 和这种模式都可以处理相同的业务,用的是不同的共享的逻辑组件。所以,用户可以访问现有的

40、或者新有的系统,通过现有的可以拓展出新有的,这就是目前的应用系统的发展方向。6 点餐系统的实现方法146 点餐系统的实现方法6.1 系统登录模块的实现当启动应用程序时弹出的第一个界面即为登陆界面,界面简单而清晰,用户只需要根据提示填入相应的注册和登录信息即可跳转到下一个界面去。由于这个登录过程是一个需要连接网络的过程,是比较耗时的,如果直接在主程序中添加代码进行登录的话,会引起界面失去焦点,从而不能进行别的操作。因此需要将这个过程放在一个新的线程当中去。客户端这边将用户输入的用户名和密码通过 http 的 post 协议发送到服务端去,如果用户输入的用户名或者密码其中有一个或者全部为空值的话,

41、将不会执行链接服务端的操作代码,因此客户端需要一个判断的验证。通过验证后,服务端通过 LoginServlet.java 里面对应的函数处理进行判断,通过验证回馈客户端“1”,没通过则回复“0”,然后客户端会通过 sharepreferances 保存用户登录的信息,方便下次直接登录而不用填写相关登录信息。登录的关键代码如下:loginBtn.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v) if(validate()if(login()Intent intent = new Intent(t

42、his,MainMenuActivity.class);startActivity(intent);elseshowDialog(“用户名称或者密码错误,请重新输人“););在以上的代码中,函数 validate 的作用是判断用户输入的登录信息是否合法;函数 login 是用来发送登录消息到服务端并获取返回结果;函数showDialog 是用来显示弹出框的消息的。登录的界面如图 6.1.6 点餐系统的实现方法15图 6.1 系统登录界面图登陆后的系统主界面如图 6.2 所示。图 6.2 点餐系统主界面图6.2 点菜模块的设计和实现当顾客需要点餐的时候,服务员即可选中界面上的“点菜”按钮,这时系

43、统会弹出一个对话框,用户根据提示为顾客选定桌号,输入用餐人数。然后此时可以点餐,也可以先开桌,然后再进入点餐模式。若是开桌,则顾客需记住订单号,方便上菜效率。启动点餐的关键代码如下:OnClickListener jiesuanlistener=new OnClickListener()Overridepublic void onClick(View v)Intent intent = new Intent();intent.setClass(MainMenuActivity.this, PayActivity.class);startActivity(intent);6 点餐系统的实现方法1

44、6;点餐界面如图 6.2 所示。图 6.2 点餐界面图与此同时,服务器会记住所选桌号和生成的订单号。若是此后有服务员输入相同的桌号,则会提示开桌失败,这样就避免了发生订单错误。OrderActivity 类是通过用一个 listview 控件把数据库中的菜谱信息显示在上面,而获取数据库当中的数据信息是通过内容提供者 ContentProvider 来实现的,它可以设置为进程内部或者进程间的数据共享,可以方便其他程序对它的调用。点餐过程中所用到的图片也是通过与服务器端连接异步加载下来的,能够实现图片和数据的实时更新,非常便捷与高效。6.3 转台模块的设计和实现这个模块的设计主要是为了用来方便用户

45、点餐后的后续服务,是为了将餐厅以及酒店的整体服务水平提高,形成良好的用户体验,以便在后来的发展中以及在和同行的竞争中取得优势。其具体的操作也很简单,只需要选中转台,然后在弹出框中做出相应选择即可。首先根据提示输入订单编号,然后输入需要换到的位置,点击确认按钮,服务器会自动处理。具体的代码思路为:根据信息得到相应的订单号、桌号、参数以及链接服务端的 url,在网络连通的基础上,获取到的返回值显示在手机界面上,通常为返回成功。主要函数为:public static String queryStringForPost(String url)6 点餐系统的实现方法17HttpPost request

46、= HttpUtil.getHttpPost(url);String result = null;try HttpResponse response = HttpUtil.getHttpResponse(request);if(response.getStatusLine().getStatusCode()=200)result = EntityUtils.toString(response.getEntity();return result; catch (ClientProtocolException e)e.printStackTrace();result = “404“;return

47、result;catch (IOException e)e.printStackTrace();result = “404“;return result;return null;该函数的主要功能是向服务端发送 post 请求。函数当中的参数代表要当问的服务端 url,这个 url 是根据用户名以及订单号而自动生成的,确保了唯一性,在转台过程中不会发生混乱;response 是 HttpResponse 的一个对象,顾名思义,其目的就是一个服务端的答复,紧接着的变量 result 是在判断获取到了数据之后的确切数据,即一个返回结果,再将返回结果的关键部分提取出来,进行网络判断,再确定本次的结果是

48、否会成功。在这里的返回判断中,返回标志位可以根据自己定的协议自己设定。在这个程序中,和服务端商议的返回结果也是统一的。比如没有连接到服务器或者服务器根本没有开启,则返回值必为 null。而连接到了服务端,却由于各种缘由比如网络太差等,没有获取到数据,则服务端会返回字符串“404”来表示。因此不能自己单方面定义返回值判断,不然程序将无法运行。6 点餐系统的实现方法18转台界面如图 6.3 所示。图 6.3 转台界面图6.4 查台模块的设计和实现首先应当创建一个查台的类 CheckTableActivity,是为了实现一个关于查看桌台的同意功能,然后在对应的 xml 文件中布局,即 check_t

49、able.xml 文件。此时需要点击执行一个 getTableList()函数,它会根据一个 url 来访问到服务端,并将结果返回,我们需要做的就是将返回结果进行拆分,用到 Android 封装好的一个函数 splite()。再添加一个内部累实现以列表形式展示桌台的信息,命名为 ImageAdapter,继承了“万能”的适配器 BaseAdapter,重写BaseAdapter 中的四个函数,其中最重要的两个函数为 GetCount 和 GetView 函数,前者返回的是桌台的数量,后者则是直接返回可视的 view,这个 view 可以自定义里面的形状,在这里是自定义的一个 xml 文件check_table_view.xml。在这个模块当中,虽然看似简单,却隐藏着一个难点,就是在 getview 函数的返回问题上。因为从服务器端返回的数据众多,getview 正是要把这些返回的数据都一个个拼接在手机界面上并且显示出来,而拼接最大的问题就是可能会发生错位,或者根据服务端返回的键值对的数据问题,可能出现空指针,在 Android 应用程序里面,自要出现了空指针,程序会

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报