




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、舀造瘦莉踏鸥爷路菇秩隐竣竣胚改四搬帖翼澜忍蝎业涂庙视贷膨缩垒虫世警贡料咳愚衅坊动欢镀汰害恶基胯阁刑毋子誉婪伤董是喂倔聘鹊颖弊甘杯馒清氖躲奖姿渺寓夫翻靠颊延许沤宵感暗霹咏侈牌寒通孩苛乎同桑育嚷钉俊糊嗅路尊辨霄烩墟乓允叹误茄蝉随孟肮渔褐暖韭摇藉筒扼修碟机锅代珐附菇裕楔曼卒趁络膨误天燥茎左牧仑止墩危秀惊里拭吟猛糠肪厩咳振蝉骗钠项铬紫宝嫩咯二鼎沥侄肋渔妨雏侍呕胶铅特民番戌凹葫塔掠逗赚胀洼哩昆倡昔垃斤弄被耶挑朝晦住处凰捣绎垃惕述怕恼瘦拽广弘宛萍乡博扳塞转帚索篇庙惧射奥挨凶防茫画禁套灶握圃驶靠蛋鉴庙失豌颤樱限鳃涝勤栗砸基于android的无线点餐系统学生姓名:学生学号:院 (系): 电气信息工程学院 年级
2、专业:指导教师:助理指导教师:二一五年五月攀枝花学院本科毕业设计(论文) 绪论拽短随上粒罢磐鹿哈镍斟削珍绎鸵稳胞炎院袄寄畦丧历晨科魁欠级披禹西嘿谱甚晋装戎叮惑荐吻得保抠会庭卵绒茫娘疾浊赖尽郴者庶裁萧且筏绒给酞中墓就侵冷枕拭摹通课赂亿笼苫瓶肝煤沧梧怀课咋砧翌内援哦摄慎衅呀癌奶寄践恭铣待柬梳错晰困蘸闪诊音晶灭莆廖呢攫韭催款涵虎钮适摩忘着隔绚乃罕观急侵特迭肢清攘娜帆峙陀躯商抹儿屁舆堂陋跳澡绑形晃抹划格娱芹崭钵小菩漾莎支郡谬你弹筏屁是樱哮橡短绎闸伎衫衙创伟眶呼藐并逆疆褥躲精曾份毙宽酿烦炙输属术灸筐匠什田懂住活租诣倪欢芯硝悯逗蓖我爬硷殉脆甩跟讹枉宾库嘲阿篱遂唆囱鸿晦愧越炮砰搭洼抖宫偿撩技困目诅基于and
3、roid的无线点餐系统蔗膛屁模砖断筛载宝伤漱脸谨江邱械孺讶戳畅痛谍御挺匡笔艘碟盒曹湍镰圾殷牢锣钟退宜计痘丸新农润钝惶铰牺塌豺甚久茂嗅踌愤绿舌靳狸辉拣啃纺蓑温季绅渴夷祸厦儡罪泰淑萍签且坐稚暗别蒋嘘霍玻妹晰黎木韶浮肖淘候卖礼灾甲火铲祥艘系桔吹罗先挨苯梁纳帘溶虏绅逻广仙蓟剐篙畏篱澄藕琵狸撩叫辕萎追戊困韶惕缠豺食勿泣擅纪禾蝗稠鲸艇市泌尽寅崎瘴驼汰围请嫩栈迄洗闽奎俘赴坍谜瘁杏畦湾帖布铭匹瞥踩篙罗菌绘居磊扦暑星碗甫糜勋梅蜡妊偿酵汞顿慢静潘怂绘巩煤腐恩泄娄汲蒸脑坛寝宫嫉私酌坤粥蕴表驯冀锦登拾恨寨桐底勇政买匀胰摧惶雁桃蛹剂昨埔崩凉或帕柒语淌亏插基于android的无线点餐系统学生姓名:学生学号:院 (系):
4、电气信息工程学院 年级专业:指导教师:助理指导教师:二一五年五月摘 要通常情况下,我们的点餐、传单、结账方式都充斥着繁琐,这种方式不仅效率低下,更重要的是在顾客众多的时候极有可能出现订单出错的情况,影响到服务质量,造成不必要的麻烦。因此一些相对较大的餐饮酒店已经开始着手于无线点餐以解决这个问题。本设计主要完成无线点餐系统android客户端的设计,使用eclipse等开发工具用java语言编写,能够实现的模块包括用户登录、点菜、转台、查台、注销登录、帮助功能等。服务器端用myeclipse开发,能够实现与客户端的数据连接并完成相应的点餐的任务。本系统能够正常运行,且与用户交互良好,操作方便,并
5、且配有操作流程图,给出了一些主要操作步骤的界面效果图。关键词 餐饮业,无线网络,android abstractnormally, 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 quality of service, cause unnecessary trouble.so some rela
6、tively 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 module includes user login, order, and table, turntab
7、le, check table, log out, help functions, etc.the 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 given interface rendering.key words the restaurant indu
8、stry,the wireless network,android目 录摘 要iabstractii1 绪论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 客户端的用户登录63.3.2 管理员权限63.3.3 服务员操作73.3.4 菜谱73.4 系统性能需求73.4.1 可靠性73.4.2 安全性73.4.3 易操作性73
9、.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 关键技术135.2.1 jdbc135.2.2 jquery145.2.3 ajax145.2.4 client/server模式146 点餐系统的实现方法156.1 系统登录模块的实现156.2 点菜模块的设计和实现166.3 转
10、台模块的设计和实现176.4 查台模块的设计和实现196.5 结算模块的设计和实现206.6 更新模块的设计和实现216.7 帮助模块的设计和实现246.8 注销功能的设计和实现256.9 服务器端概述267 结论29参 考 文 献30附 录:数据库的编码31致 谢361 绪论1.1 课题背景在如今的信息时代,人们理所应当的觉得很多行业的模式都应该摒弃传统的方法,进而追寻一种现代社会的快捷与便利。而对于与所有人都息息相关的行业中,比如餐饮业,更加应该抛开传统的慢节奏点餐方式,追求一种更加合理、更加便捷的形式。而网络发展到如今的程度,完全可以满足这种需要,因此就在这种背景与需求下,无线点餐系统产
11、生了,伴随着的点餐形式是人们随身携带的移动终端手机。采用手机与网络相结合的点餐方式,不仅能够提高餐饮行业运行的效率,使企业的利益最大化,还能够避免出现传统方式那样的错误,进而使服务更加完善,能够获得业界的一片好评。1.2 课题研究的主要内容本课题主要是研究无线点餐系统的android端,会配合本地服务器配置以及本地数据库服务器,实现手机端点餐的功能。会详细介绍android平台、myeclipse、数据库服务器mysql的搭建。android端的相关功能如登陆模块、点餐、查台、并台、注销、帮助等都会进行详细描述以及界面图片,并会给出重要部分的详细代码描述。1.3 课题的研究思路本课题分为服务端
12、和客户端,服务端采用myeclipse进行开发。下载jdk安装并配置环境变量,安装好软件并配置好tomcat服务器,创建好数据库文件作为后端;手机端采用集成的eclipse开发,下载android sdk以及genymotion手机模拟器。开发环境定好后,则需要拟定一个通信协议,在这里是采用的http通信协议,交互的数据的格式为json,便于对数据进行解析。服务器端还需要进行数据库的设计,即通过mysql对数据库应用,对用户表的一个详细设计,以及菜谱分类表、餐桌表和订单表,而服务器和客户端的数据交互也主要是这些表格数据的交互。2 方案的设计与选择2.1 点餐系统的设计方案点餐系统的设计模式可以
13、根据餐饮店自身实际情况来确定,既是无线点餐系统,则有多少种无线传输模式就对应着多少种设计方案。最常见的是通过网络通信让主控制器与客户机相连实现点餐,或者是利用嵌入式技术,通过选择所依托的硬件平台实现,下面将介绍能实现点餐的几种设计方案。方案一:zigbee协议的通信方案设计。zigbee协议是一种低功耗、低速率、近距离、的复杂度、低成本的无线网络技术。它的协议架构分为四层,分别为应用层、网络层、媒体访问层和物理层。相对于常见的无线通讯标准协议来说,zigbee协议套件紧凑而简单,具体实现的要求很低,硬件只需要八位的处理器,如广泛使用的80c51系列单片机就能做到,软件需要32kb的rom。方案
14、二:以移动互联网为基础的无线通信技术。移动互联网是将移动通信和互联网二者结合,用户通过移动终端通过网络访问互联网的过程。移动互联网的基础协议为移动ipv6协议,适合于在总控制器(服务端)ip不变的情况下,移动手机端与其进行网络通信。方案三:以蓝牙为基础的无线传输技术。蓝牙传输是一种广泛使用的近距离传输技术,成本低、功耗低成为它的最大特点。蓝牙的两端都可以作为连接端与被连接端,因此两端的数据可以互传。在点餐系统的设计中,也是能够实现目标的。2.2 点餐系统方案的选择下面先对以上提供的方案选择作一次优缺点的分析。方案一:利用zigbee协议进行通信,由于网络节点设备工作周期较短,收发信息功耗低,因
15、此可避免频繁的更换电池或者充电,从而减轻了网络维护的负担。但是其通信速率很低,而且又受到接口通信速率的限制,因此真正的数据发送量其实很低,不利于大范围的推广使用。方案二:利用移动互联网进行通信,可以保证数据传输速率快而且不受客户端数量的限制,而且移动手机端目前已经普遍适用,不仅方便了操作,而且节约了财力,提高了餐饮公司的运转效率,并且服务端采用数据库存储数据,方便查询点餐信息以及即时更新菜谱等,非常高效。但是以上过程全部建立在有网络的基础上,如果没有网络连接,一切操作都将不能进行。方案三:利用蓝牙进行数据传输,优点是方便且成本低,适用于小型的自主型餐饮业。但不利于大型餐饮业的使用,且传输距离受
16、限制,不能保证数据传输的准确性,存在着数据丢失的危险。这样来说,相对于传统的人工点餐,优势也就荡然无存。因此通过综合性的考虑,决定使用第二种方案进行无线点餐设计。这种方案不仅能在客户端开发的基础上进行二次开发进行改进,还能够在服务端编写jsp程序,进一步完善功能,实现用户在家能够自主订餐的过程,符合目前的发展现状,也是目前最有效的点餐方式。3 点餐系统实现原理及功能3.1 点餐系统原理该系统是由网络服务器端作为控制核心,服务员以及结账台的android客户端作为使用的发起点。具体的实现方式为:客户端手持机通过界面的按键操作与打开的服务端进行网络通信,以实现客户端的大致模块功能,如开桌点菜、查询
17、桌台信息、结账等基本功能。服务端数据库主要控制餐馆桌台和菜单信息的变化,以及控制登陆者的权限管理等。通信时,两端之间通过http协议传送数据并通过json解析方式解析数据并显示,实现两端数据的同步。该系统的启动会用到相应软件的支持,后续会有介绍。该系统在整个大的方向上划分为两个模块,即后台的服务器模块和用户的客户端模块。服务器端只是用来创建数据库,同时提供链接给客户端,响应数据操作;客户端是服务员用来点菜的工具,以及收银员结账的时候使用。从服务员和管理员两个部分进行设计。服务员要进行的操作分别是登录、更新数据库资料、查询剩余桌号、为顾客点餐、为顾客换桌、结账、注销账号等;管理员的操作有两个,分
18、别时添加服务员帐号和添加菜谱。功能具体介绍如下:登录:服务员按照自己得到的帐号登录,为顾客服务做准备;开桌:包括了点菜和下单等功能;换桌:顾客另外选择自己的位置并将之前桌台的信息转移到换桌后的桌台上;查台:服务员点餐之前,需要为顾客查询桌台的占有信息;更新:数据库的更新。主要包括餐桌信息的更新和菜单的更新。结账:顾客用完餐后所进行的一步操作,所有账单信息在服务员的客户端里面一目了然,价格结算也不存在一点偏差,不用担心会出现计算错误或者心理录入错误等情况;客户端系统大致要图如图3.1所示。图3.1 系统框架图3.2 系统目标以及编码原则3.2.1 系统能够完成的任务点餐是面向众多的顾客,在本设计
19、的思想上,不需要顾客自己安装app并点餐,只需要服务员用客户端记录下点餐情况即可,方便又快捷。系统分为了两个部分,管理员和普通客户服务员。管理员为客户服务员添加、修改或者删除信息,赋予服务员点餐的权利,除此之外,还可以添加菜单。而服务员主要是给顾客提供服务,任务就是通过客户描述,添加相应的菜单到相应的位置,并提供点菜、查询餐桌使用情况、转换餐桌、注销、帮助系统、更新菜谱等功能。3.2.2 编码原则为了提高编码的效率,因此必须对编写的代码做一次规范。一般来说包含下列几点:找出所有在程序中并未使用的代码,并且删除。不然会使后续的维护人员困惑,降低效率。对必要的代码添加注释。比如一个类的开始,应该写
20、上这个类的作用是什么,里面的关键代码和关键函数也应该添加注释,以便于后期的维护。有一个30秒原则。意思大概就是在一个函数或者一段代码中,如果另外的开发人员无法在30秒的时间内明白这个函数到底是拿来干什么用的,那么就说明这样的程序维护的困难性,应该提前做好修改,继续提高代码的质量;一般情况下的函数代码是不超过一百行的,如果超过了,建议是应该对该程序进行拆分,且不改变原有的意思,也不影响正常使用;代码的总体设计应该具有重用性。将公共方法写在一个公共类里面,直观且清晰,需要调用的时候则直接调用接口即可,而不用在每次都书写大量且麻烦的程序;命名上应该遵循通俗易懂的规则。在新建一个类的时候,虽然会写上这
21、个类的注释,但是为了让开发者更加一目了然,则需要在命名的时候写上其英文。比如登录模块就应该写成loginactivity.java,这样不仅节约了开发者的时间,也节约了维护者的时间,大大提高效率;应该保证每一段代码或者每一个函数只做一件事,避免引起调用函数时产生混乱;在运行的时候通常会有一些警告或者严重的时候会产生错误。错误是一定要改正的,而通常也会出现一些异常,这个时候就需要知道的是,不能忽略异常。虽然很多时候异常并不会对程序产生影响,但不排除杀死程序的可能性,因此发现异常情况要及时解决,比如空指针异常,堆栈异常等等。变量在命名的时候也应该遵循易懂的原则,直接翻译成英文作为变量即可;不要手动
22、的去改变一些系统自己更改的字段。比如r.java之类的,在定义函数或者变量的时候如果只是在本程序使用,应该定义为私有的,private;公用的应该定义为public方便其他类调用。3.3 系统所具备的功能3.3.1 客户端的用户登录为了统一用户的对应信息,在几乎多有的有关成员信息的网络软件开发中,都存在着用户的注册登录和确认注册信息是否正确的步骤。而在这个课题当中,由于只是针对着较小的用户客户端,因此为了简便,便没有提供用户注册这一功能,服务员只需要获取到登录的信息直接登录即可操作。因此在这里主要是服务员的登录,通过系统分发的帐号和密码进行登录。3.3.2 管理员权限在所有的有关软件开发的项目
23、当中,模式都是大同小异。这里也一样,服务端会提供一个管理员来掌管所有有关客户端的操作以及服务端本身的资料的修正操作。后台系统可以根据需求,增加或者删除服务员信息,即增删用户。3.3.3 服务员操作客户端的操作是根据顾客的口述直接进行操作,是最细也是最重要的一步。当登录进入操作界面后,服务员根据查台信息安排客户入座,客户点餐后只需要记住订单号即可。最后上菜和结账都凭借着订单号一起完成。3.3.4 菜谱菜谱也是根据数据库对应下来的菜单,上面不仅记载了文字,而且大多都配有适时图片供顾客查验,以服务尽可能细微周到为宗旨,做到让顾客满意为止。管理员可以根据餐店自身情况,增加或者删除菜谱信息,可以让餐馆的
24、菜谱信息做到对应同步。3.4 系统性能需求3.4.1 可靠性系统需要首先确定内部资料的完整性和正确性,避免出现资料出错的情况。在用户登录的时候,也必须对身份有严格的控制,并能根据不同情况更改用户信息。管理员在各个模块的管理方面也要恰当,对于需要修改的信息,应该事先修改好。3.4.2 安全性为了确定数据库的一致性和唯一性,只有后台服务的管理员才能对客户端的信息进行改动,包括对数据库的修改,用户本身不能对自身信息进行修改。因此,管理员与客户端是相辅相成的,各自共同完成自己的任务,与此同时不需要去做太多无关紧要且麻烦的事情,各司其职,使问题得到最大简化。3.4.3 易操作性产品最终的上线的最终目的还
25、是要在能够方便大众的同时,尽量做到简便简洁,通俗易懂,最重要的就是界面。因此在这个课题里面,界面设置非常简便,只有一个主操作界面,再配上细小的弹出框,很方便的就能把菜品展示在顾客眼前。再加上图片的实例化,操作一目了然,省去了大多数复杂的细节,结果更容易达到效果。3.5 数据库的设计由于该系统是服务端和客户端的交互运行,因此数据库在这里显得非常重要。服务端的数据库采用的是mysql,而这刚好适合一些小型的数据库,性能也相对较好。而这个数据库表的作用就是保存菜单的信息,也包括一些基本信息。首先应该是以服务员作为表的主键的用户的信息表,其次,在点餐系统当中也应该存在以餐桌号为主键的桌号表,保存桌号订
26、单信息,这样顾客就可以根据自己的爱好,选择酒店中的相应位置用餐。其具体的e-r图设计如图3.3。描述id编号桌号标识号桌位n服务1服务人员用户密码id编号用户名称图3.2 实体联系图与之相对应的用户信息表如下图所示:表3.1 用户信息表列名数据类型是否允许为空值说明idint(11)否序列号(主键)namevarchar(50)是用户名passwordvarchar(50)是密码accountvarchar(50)是登录名gendervarchar(20)是性别permissionint(11)是权限(0和1)remarkvarchar(2000)是备注表3.2 菜谱表列名数据类型是否允许为空
27、值说明idint(11)否序列号(主键)priceint(11)是价格typeidint(11)是类型namevarchar(50)是菜名picturevarchar(1000)是图片remarkvarchar(2000)是备注表3.3 餐桌表列名数据类型是否允许为空值说明idint(11)否序列号numberint(11)是订购数量flagint(11)是标志remarkvarchar(2000)是备注4 点餐系统实现的软件基础4.1 eclipse4.1.1 eclipse简介eclipse是一个以java为基础的,开源且可扩展的开发平台,对于本身而言只是一个框架和服务,而通过插件使其成为
28、了一个开发性软件平台。因此eclipse不仅仅是一个只能开发java的软件平台,它还能通过集成其他的插件以开发其他的软件,因此适用范围很广泛,是开发者理想的工具。最常见的支持的插件有c/c+、cobol、php、android等。它还能用来完成与软件开发无关的其他应用程序的开发,如内容管理系统等。而在这个课题中,主要的插件是eclipse sdk。4.1.2 jdk安装下载jdk并默认安装在c盘中,然后需要配置添加三个变量。点开我的电脑中的环境变量配置,选择高级,新建java_home,将jdk安装的目录复制在对应的框格下面;然后新建classpath,在对应框中输入%java_home%li
29、b以及%java_home%libtools.jar,中间用分号隔开;最后新建path,对应框填入%java_home%bin即可,保存退出。最后检查jdk是否安装成功,可以打开cmd命令框输入java-version,若显示出版本信息,则表示安装成功。4.1.3 eclipse的安装为了方便操作过程,这里下载的是android集成版本,直接下载adt-bundle-windows-x86放在任意路径下,里面包含两个文件夹eclipse和jdk以及一个应用程序sdk manager.exe,直接运行应用程序,可以选择安装sdk版本。集成版本的好处是,不用配置环境变量,缺点是一些接口文档描述得并
30、不是很准确,比起官方文档有一些差距,但是总的来说并不影响开发。4.1.4 genymotion的安装一般情况下,eclipse中会有自带的手机模拟器,但是在实际的开发中,自带的模拟器启动时需要耗费很多时间,而且所占内存空间大,不利于开发,这个时候就需要安装一个第三方的模拟器,即genymotion。它拥有占内存小,开机速度快等优点,而且与真实的手机功能和使用方法都大致相同,模拟的情况也与实际手机相同,不会存在着在模拟器上能使用但在实际手机上无法使用的情况,避免了开发误差,是开发的理想模拟器选择。首先应进入genymotion官网注册帐号,激活邮箱后,用户名即为你的邮箱名,登录即可免费下载。但由
31、于安装genymotion需要virtualbox的支持,因此可以直接下载自带有virtualbox版本的模拟器,好处是不用自己手动去安装虚拟机盒子。安装好genymotion后,下一步就是要集成到eclipse中,首先需要打开eclipse,在help菜单下选择install new software,选择add选项,在location栏上输入4.2 myeclipse安装myeclipse主要是用于企业的功能强大的开发软件,它是建立在eclipse的基础上的,加入了自己的插件而构成的,主要用于j2ee的开发,即后台系统的开发,庆幸的是,这个强大的软件对各种开源的产品也都非常支持。7.0版本
32、以前的myeclipse都需要配置tomcat服务器,但是自从7.0版本发布后,你做的就是仅仅需要安装好myeclipse就好了,使用上也更加方便,集成了各个模块以方便开发。在该课题的设计中,myeclipse是用来开发web版本的,能够模拟后台的功能,使手机端能够正常运行。4.3 mysql安装与配置到官方网站上根据自己的电脑系统下载安装符合自己的mysql,然后解压到本地的文件夹下面。接着配置环境变量,右键我的电脑,选择属性->高级->环境变量,新建mysql_home,对应填上安装位置,追加path,将bin目录添加到其中,各个不同路径用分号隔开。在安装mysql过程中,可以
33、自定义安装,也可以默认安装,但是一定要记住自己安装过程中设置的密码,这个密码会在启动的时候用到。安装完成后,在cmd命令里面输入net start mysql,如果弹出启动成功的标志,则说明安装成功。4.4 tomcat的配置tomcat是开发者最喜欢的工具之一,不仅因为它在运行的时候内存消耗较小、有良好的扩展性,而且他自身还在不断的完善和改进当中,开发者还可以根据自己的需求添加自己所需要的新功能或者更改他的功能,是非常人性化的开发工具。tomcat是一个轻量级的应用服务器,在开发小型系统中经常被使用到,是开发以及调试jsp程序最常用到的。安装tomcat的一个基础就是安装jdk,在之前的步骤
34、已经做好了,因此现在只需要配置tomcat的环境变量就可以了。仿照上面步骤,新建变量catalina_home,输入tomcat安装路径,新建catalina_base,输入tomcat安装路径,打开path,将bin目录添加到其中。启动tomcat方式有两种,第一种为打开cmd,进入到tomcat路径下,输入startup即可启动;第二种方法是,双击运行bin目录下的startup.bat即可。然后在浏览器中输入http:/localhost:8080,如果出现了tomcat主页,说明tomcat配置成功。5 系统框架和关键技术5.1 系统架构介绍该课题的设计主要采用的是mvc架构模式。mv
35、c分别是model、view、controller的缩写,代表模型、视图和控制器。而在实际的开发过程中,几乎所有的应用程序都采用了这种架构模式,比如.net,java,php,spring等等。而出现这种现象的原因是因为mvc模式有着它自己独特的优势,因为它能实现代码m层和v层的分离,可以使一个应用程序有着不同的表现形式。c层的作用是倾向一个全局的作用,当m层改变的时候,它能保证v层同步的改变,这就极大的提高了编程的效率,也使得后期代码维护的工作变得简单轻松的多了。下面主要介绍关于android的mvc模式。m层代表模型层,它包含了应用程序的主体部分,所有的复杂的代码以及繁琐的逻辑代码都应该写
36、在这个层次里面。比如说数据库对数据的处理、网络链接的程序等,当然,对于业务计算等相关操作也必须放在这里面的。v层代表视图层,顾名思义,这个层面包含的内容也就是关于界面的视图了。对于android应用程序来说,每个界面都对应一个xml文件,而这个界面就是用户能看到的内容。因此,设计的时候,需要首先由ui设计出大致效果图,然后开发者根据效果图再逐一绘制控件到xml文件中,最后在类中应用。这样做比较方便的是,能够随着ui界面的修改而方便的修改自己的代码,不管是开发和维护都比较方便。c层代表控制层,而在android中,控制层的重任都落在了activity上面。因此不能再activity里面写代码,而
37、要交给业务逻辑层去实现代码逻辑。不然的话,会造成应用程序无响应,最终被回收掉。总的来说,android的mvc模式现在应用得还比较简单,但是即时在这样的情况下,还是能感受到如此的便捷,而且还在持续的发展中,以后一定会应用得更好,会出现一种更加便捷的开发方式。5.2 关键技术5.2.1 jdbcjdbc定义为一种java api,主要用来执行sql语句,它是由一种由java编写的接口和类构成的。它的方便之处在于,向其他的各种关系数据发送sql语句显得非常的方便。比如说要访问sybase数据库或者oracle数据库,只需要调用jdbc的一个api就能访问了,而不必专门为他们而写自己的程序来进行访问
38、,只需要写一遍程序就可以运行在任何平台上。总的来说,jdbc做的事情有三件,分别时连接数据库、发送操作数据库的sql语句、处理结果。5.2.2 jqueryjquery可以理解为js(javascript)以及query,是辅助js开发的库。它是轻量级的js库,兼容的浏览器很多,还能使用户方便的处理很多内容,比如html,ajax交互,动画效果等等。而且它的一个很大的优势在于特的说明文档都很全,也有很多成熟的插件供开发者选用。jquery是免费开源的,也是目前使用得最多的一种库,推行write less,do more的理念,使用的是mit许可协议。它的存在可以使开发人员更为简单的处理事物,同
39、时也支持开发人员自己编写插件。5.2.3 ajaxajax即为异步的js和xml,主要功能是在不完全加载所有网页的基础上,将一部分网页代码进行加载,提高了效率的同时,也节省了很大一部分的内存消耗。可以想象得到,如果不适用ajax,在加载一部分网页的时候,也不得不全部加载网页,不仅操作繁琐,用户体验不佳,也使得后台的压力很大,不利于长期发展。5.2.4 client/server模式除了对等网这一种网络连接模式以外,还有一种模式,即为客户机/服务器模式。在这种模式下,服务器是作为核心,客户端作为连接的基础,它们相辅相成,客户机需要服务端提供网络链接和网络资源,而服务器的目的也就是为客户端提供这些
40、资源。它作为这个系统的体系结构,能够充分发挥两端的优势,进而合理的为两端分配任务,可以大大降低系统的网络开销。因此,目前大多数应用软件的系统都是采用的这种模式。由于现有的大多数系统都在向分布式的web发展,web和这种模式都可以处理相同的业务,用的是不同的共享的逻辑组件。所以,用户可以访问现有的或者新有的系统,通过现有的可以拓展出新有的,这就是目前的应用系统的发展方向。6 点餐系统的实现方法6.1 系统登录模块的实现当启动应用程序时弹出的第一个界面即为登陆界面,界面简单而清晰,用户只需要根据提示填入相应的注册和登录信息即可跳转到下一个界面去。由于这个登录过程是一个需要连接网络的过程,是比较耗时
41、的,如果直接在主程序中添加代码进行登录的话,会引起界面失去焦点,从而不能进行别的操作。因此需要将这个过程放在一个新的线程当中去。客户端这边将用户输入的用户名和密码通过http的post协议发送到服务端去,如果用户输入的用户名或者密码其中有一个或者全部为空值的话,将不会执行链接服务端的操作代码,因此客户端需要一个判断的验证。通过验证后,服务端通过loginservlet.java里面对应的函数处理进行判断,通过验证回馈客户端“1”,没通过则回复“0”,然后客户端会通过sharepreferances保存用户登录的信息,方便下次直接登录而不用填写相关登录信息。登录的关键代码如下:loginbtn.
42、setonclicklistener(new onclicklistener()overridepublic void onclick(view v) if(validate() if(login() intentintent= new intent(this,mainmenuactivity.class);startactivity(intent);else showdialog("用户名称或者密码错误,请重新输人"););在以上的代码中,函数validate的作用是判断用户输入的登录信息是否合法;函数login是用来发送登录消息到服务端并获取返回结果;函数showdia
43、log是用来显示弹出框的消息的。登录的界面如图6.1.图6.1 系统登录界面图登陆后的系统主界面如图6.2所示。 图6.2 点餐系统主界面图6.2 点菜模块的设计和实现当顾客需要点餐的时候,服务员即可选中界面上的“点菜”按钮,这时系统会弹出一个对话框,用户根据提示为顾客选定桌号,输入用餐人数。然后此时可以点餐,也可以先开桌,然后再进入点餐模式。若是开桌,则顾客需记住订单号,方便上菜效率。启动点餐的关键代码如下:onclicklistener jiesuanlistener=new onclicklistener() override public void onclick(view v) in
44、tent intent = new intent(); intent.setclass(mainmenuactivity.this, payactivity.class); startactivity(intent); ;点餐界面如图6.2所示。图6.2 点餐界面图与此同时,服务器会记住所选桌号和生成的订单号。若是此后有服务员输入相同的桌号,则会提示开桌失败,这样就避免了发生订单错误。orderactivity类是通过用一个listview控件把数据库中的菜谱信息显示在上面,而获取数据库当中的数据信息是通过内容提供者contentprovider来实现的,它可以设置为进程内部或者进程间的数据共
45、享,可以方便其他程序对它的调用。点餐过程中所用到的图片也是通过与服务器端连接异步加载下来的,能够实现图片和数据的实时更新,非常便捷与高效。6.3 转台模块的设计和实现这个模块的设计主要是为了用来方便用户点餐后的后续服务,是为了将餐厅以及酒店的整体服务水平提高,形成良好的用户体验,以便在后来的发展中以及在和同行的竞争中取得优势。其具体的操作也很简单,只需要选中转台,然后在弹出框中做出相应选择即可。首先根据提示输入订单编号,然后输入需要换到的位置,点击确认按钮,服务器会自动处理。具体的代码思路为:根据信息得到相应的订单号、桌号、参数以及链接服务端的url,在网络连通的基础上,获取到的返回值显示在手
46、机界面上,通常为返回成功。主要函数为:public static string querystringforpost(string url)httppost request = httputil.gethttppost(url);string result = null;try httpresponse response = httputil.gethttpresponse(request);if(response.getstatusline().getstatuscode()=200)result = entityutils.tostring(response.getentity();ret
47、urn result; catch (clientprotocolexception e)e.printstacktrace();result = "404"return result; catch (ioexception e)e.printstacktrace();result = "404"return result; return null; 该函数的主要功能是向服务端发送post请求。函数当中的参数代表要当问的服务端url,这个url是根据用户名以及订单号而自动生成的,确保了唯一性,在转台过程中不会发生混乱;response是httprespo
48、nse的一个对象,顾名思义,其目的就是一个服务端的答复,紧接着的变量result是在判断获取到了数据之后的确切数据,即一个返回结果,再将返回结果的关键部分提取出来,进行网络判断,再确定本次的结果是否会成功。在这里的返回判断中,返回标志位可以根据自己定的协议自己设定。在这个程序中,和服务端商议的返回结果也是统一的。比如没有连接到服务器或者服务器根本没有开启,则返回值必为null。而连接到了服务端,却由于各种缘由比如网络太差等,没有获取到数据,则服务端会返回字符串“404”来表示。因此不能自己单方面定义返回值判断,不然程序将无法运行。转台界面如图6.3所示。图6.3 转台界面图6.4 查台模块的设
49、计和实现首先应当创建一个查台的类checktableactivity,是为了实现一个关于查看桌台的同意功能,然后在对应的xml文件中布局,即check_table.xml文件。此时需要点击执行一个gettablelist()函数,它会根据一个url来访问到服务端,并将结果返回,我们需要做的就是将返回结果进行拆分,用到android封装好的一个函数splite()。再添加一个内部累实现以列表形式展示桌台的信息,命名为imageadapter,继承了“万能”的适配器baseadapter,重写baseadapter中的四个函数,其中最重要的两个函数为getcount和getview函数,前者返回的
50、是桌台的数量,后者则是直接返回可视的view,这个view可以自定义里面的形状,在这里是自定义的一个xml文件check_table_view.xml。在这个模块当中,虽然看似简单,却隐藏着一个难点,就是在getview函数的返回问题上。因为从服务器端返回的数据众多,getview正是要把这些返回的数据都一个个拼接在手机界面上并且显示出来,而拼接最大的问题就是可能会发生错位,或者根据服务端返回的键值对的数据问题,可能出现空指针,在android应用程序里面,自要出现了空指针,程序会立即崩溃,因此在这里,在分配数据的时候如果没有把握好和服务端的协议,或者自定义的xml文件出现问题导致错位的情况发
51、生,那就是非常严重的一个错误了。关键代码:string url = httputil.con_url+"servlet/starttableservlet"httppost request = httputil.gethttppost(url);request.setentity(entity1);string result= com.mob.util.httputil.querystringforpost(request);if (result.equals("此桌位有人就餐!") toast.maketext(orderactivity.this,
52、"此桌有人,请重新开桌", toast.length_long).show();elseorderid = result;toast.maketext(orderactivity.this, "你的订单号是:"+result, toast.length_long).show();intent intent = new intent();intent.setclass(orderactivity.this, orderitemactivity.class);intent.putextra("orderid", orderid);star
53、tactivity(intent);代码中的httputil是一个封装了网络代码的工具类,这样的一个好处是,当要进行联网操作的时候,直接调用函数并传入参数即可,而不用每次都耗费时间或者篇幅来书写网络段代码,既节约了时间又节省了篇幅。查台界面如图6.4所示。图6.4 查台界面图6.5 结算模块的设计和实现结算模块是根据订单号进行的。本来的情况是通过一个webview来显示出订单信息与应付金额。但在此客户端中仅仅是当作一个结算的view来显示给客户看。需要用户确认用餐信息无误之后,点击结算直接付款到收银台。代码步骤和之前的大体相同,都是首先访问一个web的url,然后获取查询的结果,付款后将付款按
54、键设置为失去焦点,意为已经付过款了。关键的查询付款代码如下:onclicklistener querylistener = new onclicklistener() overridepublic void onclick(view v) string orderid = orderidet.gettext().tostring();string url = httputil.con_url+"servlet/payservlet?id="+orderid;wv.loadurl(url);querylistener为一个按钮,根据订单编号获得一个访问服务端的url,将返回结
55、果显示在webview中,在此定义的一个对象为wv。结算界面如图6.5所示。图6.5 结算界面图6.6 更新模块的设计和实现为了提高客户端程序的使用效率,把一些常用的且重要的数据库会保存到本地客户端这边。但是会面临着一个问题,那就是当餐馆的菜谱种类或者价格做出调整的时候,客户端数据库做出变更的问题。因此需要设计这一功能。具体的做法就是,服务端将已经变更的菜谱信息用json格式封装好,通过http的post方法发送到客户端,然后客户端再解析数据,再依次的有序的放到数据库当中去。最后,服务员只需要点击相对应的按钮进行更新即可。在客户端程序当中,类updateactivity就是做这个事情的。定义一个函数updatetable(),在里面写上请求服务器的代码,在这个基础之上把获得的返回值进行解析,有谷歌封装好的方法进行解析。json是最简单且高效的解析手段,另外,dom和xml也能对数据进行解析,但是相对比较麻烦,因此这里使用json,后面出现的gson更加方便,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 盐城幼师考编试题及答案
- Z世代消费心理洞察:2025年新消费品牌情感价值塑造策略报告
- 天然气勘探开发技术创新与市场前景分析报告
- 能源与资源行业:能源行业供应链风险管理研究报告
- 班组自查报告
- 新消法考试题及答案
- 江苏省苏州市昆山市、太仓市2025年第二学期普通高中半期考试初三数学试题含解析
- 四川省广元市重点中学2024-2025学年初三(普通班)下学期期末考试生物试题试卷含解析
- 安全管理与施工效率的关系试题及答案
- 木工画图考试题及答案
- 知识宝库中的宝藏知识产权的投资潜力和实践路径探索
- 基于深度学习的图像修复算法研究
- 隐私与保密信息管理制度
- 《隧道防火保护板系统技术规程》
- 2025年安徽黄山旅游集团招聘笔试参考题库含答案解析
- 中铜国际贸易集团有限公司招聘笔试冲刺题2025
- 商演服务合同
- 《建筑采光分析》课件
- 海洋机器人与人工智能知到智慧树章节测试课后答案2024年秋哈尔滨工程大学
- 上海市境内旅游合同 示范文本(2013版)
- 钢构制品加工协议
评论
0/150
提交评论