电子点菜系统客户端子系统设计毕业论文.doc_第1页
电子点菜系统客户端子系统设计毕业论文.doc_第2页
电子点菜系统客户端子系统设计毕业论文.doc_第3页
电子点菜系统客户端子系统设计毕业论文.doc_第4页
电子点菜系统客户端子系统设计毕业论文.doc_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华北水利水电学院毕业设计电子点菜系统客户端子系统设计毕业论文目 录North China University of Water Resources and Electric Power1摘 要4Abstract5第1章 引言61.1 课题背景61.2 android无线点菜系统开发的目的和意义71.3 开发环境71.3.1 硬件环境71.3.2 软件环境及语言71.4 本章小节8第2章 系统的关键技术及介绍82.1 android技术概况92.2 android的优势102.3利用MySQL来建立数据库112.4 Client/Server模式122.5 JDBC122.6 Android的MVC132.7 本章小节14第3章需求分析153.1系统需要解决的主要问题153.2 系统应具备的基本功能153.3 系统性能需求163.4 本章小结16第4章 项目总览174.1 总体设计174.2 系统流程图184.3系统功能184.4数据库设计194.4.1数据库需求分析194.4.2数据库表格设计214.4 本章小结23第5章 系统详细设计235.1 系统登陆模块设计与实现235.1.1 LoginActivity235.1.2 客户端登录界面的设计245.2 点菜模块的设计与实现255.2.1 客户端开桌模块的实现265.2.2 客户端点菜下单模块的设计与实现265.3 查台模块设计与实现275.3.1 客户端查台模块实现285.4 并台模块的设计与实现285.4.1 客户端并台模块的设计与实现295.5 转台模块的设计与实现295.5.1 客户端转台模块的设计与实现305.6 更新模块的设计与实现305.6.1 客户端更新模块的设计与实现305.7 结台模块的设计与实现315.7.1 客户端结台模块的设计与实现325.8 注销模块的设计与实现32第6章 总结和展望346.1 总结346.2 展望34致 谢36参考文献37附录1: 外文原文38What Is Android?38附录2:外文译文43什么是 Android?43附录3:任务书48附录4:开题报告III附录5:主要程序11.1 课题背景我们生活在一个到处都充斥着数字技术的世界里,随着无线通信技术的突飞猛进,移动生活、移动办公已经从一种空中楼阁的幻想中转变成大众生活中随手可及的实用技术。而传统的劳动密集型、低科技含量的餐饮业,也在潜移默化中折服着无线网络,悄然发生着技术革命,而其中最为突出的应用就是无线点菜技术。在大多数的餐饮场所中点菜、查看菜谱等工作都是人工完成的。这需要通过大量的手工劳动完成,速度慢,耗费人力多,而且非常易出错,进而导致其工作效率低,造成人力物力的极大浪费。为了节省人力和时间,避免不必要的错误,我们通过对此作认真细致的调查研究后,决定开发本系统。在现行餐饮管理的基础上,建立科学的计算机餐饮管理系统数据库,用计算机工作代替以往大量的人工劳动,提高工作效率,促进餐饮自动化,适应当今科学技术飞速发展的需要。1.2 android无线点菜系统开发的目的和意义 如今移动终端的发展非常迅速,手机功能也日益强大,移动互联网更是被业界认为必然趋势。智能手机的兴起使得人们可以通过手机终端来完成许多事情。而本系统通过手机定位,查询,订餐更是非常实用,尤其是在上班吃午饭时使用,能节省大量的等待时间。而且也可以帮助餐厅利用互联网拓展业务。现在android的发展迅速,在中国市场的占有率为15%左右。未来几年肯定是会迅速上升。移动互联网的迅速发展已经改变了人们的许多习惯,而基于android的电子点菜技术更是给餐厅和客人带来了大量的便利,使人们在吃饭的同时能够享受到高科技带来的乐趣,同时也能促使android技术的广泛传播,更能深入到普通用户的心中,总之android无线点菜技术的出现具有划时代的意义。1.3 开发环境1.3.1 硬件环境计算机: Intel 或兼容机; Pentium 166 MHz 或更高内存(RAM):64M以上 监视器 VGA或更高分辨率1.3.2 软件环境及语言软件环境:Microsoft Windows Me、Windows 98、Windows NT Workstation 4.0、Windows 2000 Professional、Microsoft Windows NT Server 4.0、Windows 2000 Server 和所有更高级的 Windows 操作系统。技术与语言:mysql、eclipse、myeclipse、tomcat6.0,Java,Android1.4 本章小节首先介绍了课题研究的背景,其次简述了在此背景下开发Android电子点菜系统的目的和意义,最后介绍了开发本系统所需的软硬件环境。第2章 系统的关键技术及介绍在基于Android的电子点菜系统设计过程中,主要考虑了以下几个方面的问题:(1) android技术(2) 选择系统的开发模式,C/S模式(3) MVC+DAO对象模型(4) 系统数据库设计(5) 建立数据库,使用MYSQL来建立2.1 android技术概况2.1.1 android的历史背景Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。 早期由原名为Android的公司开发,谷歌在2005年收购Android.Inc后,继续进行对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。 2.1.2 android的发展过程以及优势2007年11月5日,Google发布了基于Linux平台的开源移动手机平台 -Android。该平台由操作系统、中间件、用户界面和应用软件等组成,号称是首个为移动终端打造的真正的开放的移动开发平台。2008年9月22日,美国运营商T-Mobile USA在纽约正式发布第一款Google手机 - T-Mobile G1。该款手机为中国台湾宏达电代工制造,是世界上第一部使用Android操作系统的手机,支持WCDMA/HSPA网络,理论下载速率为7.2Mbit/s,并支持Wi-Fi无限局域网络。Google与开放手机联盟(Open Handset Alliance)合作开发了Android移动开发平台,这个联盟由摩托罗拉、高通、宏达电和T-Moblie、中国移动等在内的30多家移动通讯领域的领军企业组成。Google与运营商、设备制造商、开发商和其他第三方结成了深层次的合作伙伴关系,希望通过建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。Android作为Google企业战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。全球为数众多的移动电话用户从未使用过任何基于Android的移动通讯设备,Google的目标是让移动通讯不依赖于设备甚至平台。处于这个目的,Android将补充而不会代替Google长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发即有用又有吸引力的移动服务,并推广这些产品。 Android系统在国内的发展主要在于针对Android系统的二次开发上,目前以Android系统源码为基础,再深度定制改版而成的操作系统主要有创新工场投资的点心公司开发的点心操作系统、中国移动的Ophone、联想的乐Phone、阿里云手机操作系统及雷军的小米科技开发的MIUI。2.1.3 android系统的特点安卓系统的最大特点在于“开源(open source)”它的源代码是开放的,任何人都可以在此基础上进行操作、修改,自主地开发应用程序;在优势方面,Android平台首先就是其开放性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。 由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。 Android使用工具链(Toolchain)为Google自制的Bionic Libc。 Android硬件抽像层是能以封闭源码形式提供硬件驱动模块。 Android的编程语言是运行于 Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份。这样做是为了保留常数、数据结构与宏。Android的用户界面更美观、 更快更直观的文字输入、 一键文字选择和复制/粘帖、 进一步提升运行速度 、提升多媒体能力、 增加官方进程管理、 改善电源管、改进的虚拟键盘。Android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻挠,可想而知,会有多少新颖别致的软件会诞生。 2.2 android的优势2.2.1 开放性在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,随大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。2.2.2 挣脱运营商的束缚 在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从iPhone上市,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈,当你可以通过手机IM软件方便地进行即时聊天时,再回想不久前天价的彩信和图铃下载业务,是不是像噩梦一样?互联网巨头Google推动的Android终端天生就有网络特色,将让用户离互联网更近。2.2.3 丰富的硬件选择 这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移,是不是非常方便呢?2.2.4 不受任何限制的开发商 Android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如可控制正是留给Android难题之一。2.2.5、无缝结合的Google应用如今叱诧互联网的Google已经走过10年度历史。从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。 2.3利用MySQL来建立数据库MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。2.4 Client/Server模式在网络连接模式中,除对等网外,还有另一种形式的网络,即客户机/服务器网,Client/Server。在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源。这里客户和服务器都是指通信中所涉及的两个应用进程(软件)。使用计算机的人是计算机的“用户”(user)而不是“客户”(client)。但在许多国外文献中,也经常把运行客户程序的机器称为client(这种情况下也可把client译为“客户机”),把运行服务器程序的机器称为server。所以有时要根据上下文判断client与server是指软件还是硬件。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。 2.5 JDBCJDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库。企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。2.6 Android的MVCMVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器。一个逻辑模型可以对于多种视图模型,比如一批统计数据你可以分别用柱状图、饼图来表示。一种视图模型也可以对于多种逻辑模型。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,而C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新,这与设计模式中的观察者模式是完全一样。 MVC好处:从用户的角度出发,用户可以根据自己的需求,选择自己合适的浏览数据的方式。比如说,对于一篇在线文档,用户可以选择以HTML网页的方式阅读,也可以选择以pdf的方式阅读。从开发者的角度,MVC把应用程序的逻辑层与界面是完全分开的,最大的好处是:界面设计人员可以直接参与到界面开发,程序员就可以把精力放在逻辑层上。而不是像以前那样,设计人员把所有的材料交给开发人员,由开发人员来实现界面。在Eclipes工具中开发Android采用了更加简单的方法,设计人员在DroidDraw中设计界面,以XML方式保存,在Eclipes中直接打开就可以看到设计人员设计的界面。 Android中界面部分也采用了当前比较流行的MVC框架,在Android中:1)视图层(View):一般采用XML文件进行界面的描述,使用的时候可以非常方便的引入。当然,如何你对Android了解的比较的多了话,就一定可以想到在Android中也可以使用JavaScript+HTML等的方式作为View层,当然这里需要进行Java和JavaScript之间的通信,幸运的是,Android提供了它们之间非常方便的通信实现。 2)控制层(Controller):Android的控制层的重任通常落在了众多的Acitvity的肩上,这句话也就暗含了不要在Acitivity中写代码,要通过Activity交割Model业务逻辑层处理,这样做的另外一个原因是Android中的Acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。3)模型层(Model):对数据库的操作、对网络等的操作都应该在Model里面处理,当然对业务计算等操作也是必须放在的该层的。就是应用程序中二进制的数据。 在Android SDK中的数据绑定,也都是采用了与MVC框架类似的方法来显示数据。在控制层上将数据按照视图模型的要求(也就是Android SDK中的Adapter)封装就可以直接在视图模型上显示了,从而实现了数据绑定。比如显示Cursor中所有数据的ListActivity,其视图层就是一个ListView,将数据封装为ListAdapter,并传递给ListView,数据就在ListView中现实。2.7 本章小节本章首先总体介绍了设计涉及的关键核技术:android技术、选择系统的开发模式、C/S模式、DAO对象模型、系统数据库设计、建立数据库,使用MYSQL来建立。然后分别对各部分的关键部分进行介绍。第3章需求分析目前随着科技的进一步发展,手工点菜已经越来越不能满足人们的需求了,而Android系统的出现则进一步改善了这个局面,而Android电子点菜系统则是Android技术的其中的一个代表,让我们看到了科技所带来的影响,以及科技的重要性。3.1系统需要解决的主要问题因为点菜是面向特定的使用者的,因此需要对于用户的身份进行判断,本系统分为两个部分,一个是管理员:负责对添加修改删除服务员,以及添加菜单等等;而服务员则是提供给客户服务的,有开桌、点菜、下单、转台、换台、更新、查台、注销等。3.2 系统应具备的基本功能(1) 服务员登录:用户通过账号和密码及验证码进行登录。(2) 服务员信息的管理:管理员可以增删用户(3) 服务员可以按照顾客的要求进行开桌、点菜、下单、转台、换台、更新、查台等功能(4)菜单的增加:管理员可以添加删除修改菜单。 3.3 系统性能需求 本系统性能需达到的要求: (1) 可靠性。 系统要有严格的判错能力,在登录时要严格进行身份验证,各个模块的权限管理要恰当,对不需要修改的信息要在内部预先控制。 (2) 安全性 只有管理员才能对服务员信息进行修改,保证数据库的安全,以及添加菜单。(3) 易操作性。本系统设置了易用的操作界面,使用户看到界面很快即能理解其意思,方便用户的操作。3.4 本章小结本章主要对系统从功能及性能及系统主要解决的问题进行了简单的分析介绍。为下步设计论述打下基础。第4章 项目总览4.1 总体设计该系统主要包括下面几个部分:服务员:1.登录系统2.查台3.服务器上的数据库和本地数据库的实时更新4.开桌5.换台6.转台7.并台8.结台9.注销;管理员:1.添加服务员2.添加菜单,如图4.1电子点菜系统 服务员管理员帐号管理退出菜单管理注销结台查台更新设置转台并台点菜图4.1 总体设计4.2 系统流程图如图4.2用户登录网络连接否是各功能模块退出图4.2 系统流程图4.3系统功能如图4-3电子点菜系统管理员服务员菜单管理退出帐号管理注销结台查台更新设置转台并台点菜修改删除增加修改删除增加查询结账点菜开桌菜谱管理餐桌管理图4-3 系统功能图4.4数据库设计该系统的主要实现客户端与服务端的交互,所以数据库起着很重要的作用在本程序中。数据库设计的好坏直接决定了该系统设计成功与否。本系统采用mysql作为后台数据库,客户端采用SQLite数据库。MySQL是一个小型关系型数据库管理系统,主要实习一些小型数据库的设计。4.4.1数据库需求分析通过系统功能分析,数据库设计如下:用户信息表如图4.4.1-1:包含用户id,用户账户,密码,姓名,性别。 图4.4.1-1 用户信息表设计菜谱表如图4.4.1-2:包含菜的id,菜名,价格,菜的图片路径,菜单描述。 图4.4.1-2 菜谱表设计餐桌表如图4-4-1-3:包含桌子id,桌子编号,桌子状态,餐桌的信息描述。 图4.4.1-3 餐桌表设计订单表如图4.4.1-4:包含订单号,下单时间,用户id,桌子编号,就餐人数,是否支付。 图4.4.1-4 订单表设计订单详细表如图4.4.1-5:包含订单号,菜谱id,数量和顾客的要求。 图4.4.1-5 订单详细表设计4.4.2数据库表格设计E-R图的设计是为了把给用户的数据要求清楚,准确的描述出来,通常建立一个概念性的数据模型。概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型,它描述了从用户的角度看到的数据,它反映了用户的实现环境。在数据模型中包含3中相互关联的信息:数据对象,数据对象的属性及数据对象彼此间相互连接的关系。该数据库的设计包含四张表格,对应了E-R图,其具体的设计如下:用户信息账号密码客户姓名性别 图4.4.2-1用户名信息E-R图餐桌信息餐桌id餐桌编号餐桌状态餐桌描述 图4.4.2-2 餐桌信息E-R图菜谱表菜的类型菜名价格菜图片路径菜的介绍 图4.4.2-3 菜谱信息E-R图订单表订单号下单时间用户id餐桌编号就餐人数是否支付 图4.2.2-4 订单表信息E-R图订单详细表订单id菜谱id菜的个数对菜的备注图4.2.2-5 订单详细表信息E-R图4.4 本章小结本章主要对项目进行大概的介绍,使读都对系统有个大概框架的认识。然后对主要数据库表进行展示,明白本系统用涉及的数据表及其结构。第5章 系统详细设计5.1 系统登陆模块设计与实现 在项目开发中以类的形式来组织,封装一些常用的方法和事件,不仅可以提高代码的重用率,也大方便了代码的管理。本系统中创建了一个公共类HttpUtil.java.主要用来客户端和服务端进行交互。5.1.1 LoginActivity 首先进入欢迎界面 LogoActivity,画面运行两秒之后会进入登陆界面,在这个过程中欢迎界面的alpha值由0.0-1.0转变,用到了android里面的补间动画,设置了它的持续时间为2s,这个里面用到了AlphaAnimation,这个类可以控制alpha的透明度的改变,setDuration()可以设置动画的持续时间,startAnimation()可以启动动画,然后在给动画设计监听方法setAnimationListener(),当该动画播放结束的时候会回调该方法。然后通过intent跳转到LoginActivity中,onCreate()方法用于初始化一些操作。由于该登陆过程是一个耗时性操作,因此需要启动一个线程,把这些耗时性操作放在里面进行执行,然后根据输入的账户和密码通过请求LoginServlet.java服务器进行判断,首先输入的账号和密码不能为空,如果为空的话,系统将弹出一个Toast进行提示不能为空,然后你可以重新输入,输入之后再通过账号和密码进行查询,Login():就是对登陆进行判断:1.网络超时2.登陆成功3.密码错误,当你登陆成功的时候还要把用户的信息以键值对的形式保存在SharePreference中,登陆的过程中还要根据permission进行判断,当permission得值为1的时候为管理员,然后跳转到管理员界面,为0的时候跳转到服务员界面,这里采用Handler,Handler在Android里负责发送和处理消息.它的主要用途有:(1) 按计划发送消息或执行某个Runnable(使用post方法);(2) 从其他线程中发送来的消息放入消息队列中,避免线程冲突,主要用于更新UI线程。默认情况下,Handler接受的是当前线程下的消息循环实例,Handler主要用来处理一些耗时的操作。5.1.2 客户端登录界面的设计为了提高系统的安全性,要想使用该系统必须进行登陆,首先需要在reslayout目录下,创建一个名为login.xml的文件,用于显示界面,进行界面布局,用到的空间有2个TextView和2个Button以及2个EditText,Editext用于让用户输入账号和密码,当为空的时候弹出一个对话框提示账号或密码不能为空,输入完整之后需要通过服务器查询,登陆成功之后再进行判断,当permission为1时为管理员登陆,跳转到管理员界面,当permission为0时 服务员登陆,跳转到服务员界面登陆界面如图5.1所示: 图5.1 系统登录界面5.2 点菜模块的设计与实现用户登陆之后,如果是服务员,则进入主界面,如下图5.2.1所示,然后点击点菜按钮,进入点菜界面如图5.2.2图5.2.1 系统主菜单界面 图5.2.2 点菜模块5.2.1 客户端开桌模块的实现点击点菜按钮之后进入点菜界面,它的过程分为开桌和点菜。开桌的过程要求操作员输入桌号和人数,该界面包含一个spinner,通过sqlite数据库动态加载桌号,然后显示在spinner中,开桌过程中要求操作员输入桌号和人数,将点餐时间、服务员编号、桌号和人数保存到服务器端的OrderTbl表中。点餐时间去服务器当前时间由程序自动完成,操作员编号由登陆过程中保存咋SharedPrefrences中的登陆用户信息,桌号引用TableTbl表中的数据,这里为了程序的运行效率,在客户端使用sqlite将服务器端数据保存下来,点餐过程所使用的桌号从客户端数据库去,程序提供了客户端数据和服务端数据同步的功能,人数有服务员输入,默认值为1. DianCaiHome类用于开桌模块的开发,onCreate()用于初始化数据,setTableAdapter()通过adapter对spinner里面的内容进行设置,查询spinner里面的桌号,该桌号是放在本地数据库中,通过contentProvider的uri进行操作,updateSQLite()用于更新同步到手机数据库,桌子开桌后状态要设置为有人。开桌按钮的监听:在该监听中把所以的信息进行获取,包括服务员的id,从登陆成功后保存在手机端的xml(SharedPreference)中读取出来,使用HttpUtil.queryStringForPost(request)把封装好的信息发送到服务器端后,根据传过来的结果即为订单号。5.2.2 客户端点菜下单模块的设计与实现开桌之后,点击点菜按钮,会出现一个listview,里面动态的加载菜单的图片已经信息,并且里面有一个增加按钮,点击这个按钮之后会弹出一个对话框,里面需要填写顾客需要的份数以及顾客的需求点击确定即可如图5.2.2,当没有开桌的时候点击点菜按钮的时候会提示你没有开桌。 图5.2.2 点菜模块 DianCaiActivity类,该类中通过listview把本地数据库中的菜谱信息显示在listview控件中,获取本地数据库中的菜谱信息是通过ContentProvider来实现,它可以让自己的数据达到共享,方便别的程序对他调用。AsyncImageLoader类用于listview菜单图片的异步加载。下单的过程是将顾客点餐信息保存到后台数据库中,也是通过servlet进行请求。5.3 查台模块设计与实现查台的目的是根据当前餐桌的状态(有人或空位),来安排顾客就餐。程序的实现过程是:查询数据库餐桌表信息,根据查询结果将餐桌状态以图形化的方式显示出来,如图5.3。 图5.3 查台模块5.3.1 客户端查台模块实现首先建立一个查台的类ChaTai,该类主要用于实现查台的一系列功能,然后建立一个chatai.xml文件进行布局。getTableList()用于获得当前餐桌信息列表,信息包括桌号和状态,TableAdapter继承自BaseAdapter类,作用是为GridView绑定数据,该类的getView()方法返回的View类是自定义的一个LinearLayout类。本模块的难点在于给GridView添加数据,也就是要继承BaseApapter类,实现里面的getView()方法,然后再用LayoutInflater,也就是布局泵显示GridView上面的内容,也就是ImageView和TextView,ImageView也就是当flag=0的时候显示空桌那张图片,flag=1的时候切换到另一张图片即显示有人的那张图片。5.4 并台模块的设计与实现并台模块实现的是:当两桌顾客下单之后,在就餐过程中提出一起就餐,这一过程需要将保存在数据库中的数据做统一更新。内容有:删除被合并桌位的订单、将被合并桌位客人数加到合并桌位、更新订单详细列表信息、更新桌位状态等,如图5.4: 图5.4 并台模块5.4.1 客户端并台模块的设计与实现 并台是通过弹出对话框的方式来提示服务员的,所以需要在对话框中添加自定义视图,提示用户选择要更换的桌位。 unionTable()定义了一个对话框提示用户选择合并桌号,在对话框中添加了自定义的视图,使用LayoutInflater(布局泵)进行自定义视图,访问服务器获得桌位信息并绑定到spinner,然后在确定方法中提交合并请求。5.5 转台模块的设计与实现转台模块要做的是顾客开桌或下单后要求更换桌位的过程,如图5.5。 图5.5 转台模块5.5.1 客户端转台模块的设计与实现 转台模块主要根据订单编号进行换桌,更换的桌号必须是空位才能更换,然后更新保存在数据库中的数据,主要是OrderTbl表中该订单对应的桌号以及更换桌位的转台,该界面也是用弹出对话框的方式进行显示,采用自定义布局。Spinner里面的桌号也是实时更新的,只有当桌号是空的时候才显示在spinner里面。5.6 更新模块的设计与实现更新模块主要包括两个内容一个是更新菜谱表和更新餐桌表,点击更新之后进入更新模块,该视图包含一个listview,如图5.6。 图5.6 更新模块5.6.1 客户端更新模块的设计与实现 更新模块主要是为了提高程序的运行效率,然后将一些频繁使用的数据库表保存到客户端SQLite数据库中,当服务器数据库中的数据发生变化时,将数据即使同步到客户端。实现的功能是:将数据库服务器表中的数据封装成xml格式的数据发送到客户端,客户端通过DOM的方式解析XML文件,将其内容保存到客户端SQLite数据库中。UpdateActivity类主要操作更新模块,updateTable()更新桌子,请求服务器,然后对返回的数据采用dom解析得到数据,然后删除本地数据库,再把数据插入到对应的表里。updateMenu()更新菜单,功能和updateTable()类似。该模块主要难点是DOM的解析:首先解析器读入整个文档,构建一个驻留内存的树结构,然后使用DOM API来访问树形结构,并获取结构。基本步骤是:1创建xml文件加载器工程;2获得文件加载器;3文件加载器加载文件,并形成树形结构,返回值是形成树状文件;4有文档对象获得根节点;5获得当前根节点,获得其相应的子节点;6遍历每一个子节点;7获得当前的子节点;8获得当前子节点的字节点;9获得当前的子子节点。还有就是该模块的视图,采用自定义的视图方式CornerListView继承自ListView,该方式可以实现更好的显示效果,可以根据自己想要的结果进行显示,比如实现ListView的圆角显示,设置点击之后的效果,设置手势效果onInterceptTouchEvent() 该函数根据相应的事件显示不同的效果。另外由于本系统需要实现客户端与服务端的数据同步功能,所以需要在客户端建立一个数据库,并且创建两个表格分别是菜谱表和餐桌表,创建数据库的时候需要继承SQLiteOpenHelper类,这个类可以辅助建立、更新、打开数据库,为了更好的操作数据库,本系统使用到了ContentProvider类,该类是在应用程序间共享数据的一种接口机制,提供了更为高级的数据共享方法,应用程序可以制定需要共享的数据,而其他程序可以在不知道数据来源、路径的情况下对共享数据进行查询、添加、删除和更新等操作,调用的时候需要用到ContentResolver对象,通过URI间接调用ContentProvider,URI是通用资源标识符,用来定位任何远程或本地的可用资源。5.7 结台模块的设计与实现结台模块主要根据订单编号查询订单的详细信息,将详细信息通过一个WebView来显示,这个是一个查询的过程,服务器返回html格式的信息,通过WebView来显示。当客户确认点菜信息,操作员可以点击结算按钮,查看消费情况,然后客户结账后点击结账按钮即可,如图5.7。 图5.7 查台模块5.7.1 客户端结台模块的设计与实现 服务员点击结账按钮之后,将数据库服务器中OrderTbl表中的isPay列数据更新为“1”,表示已经结算(默认值为0表示未结算)。 PayActivity类是结台模块的主要实现类,里面主要是通过EditText写入的编号查询,然后以html的形式通过WebView进行显示,结账时通过编号查看ordertbl表,并且把表中isPay的值改为1即可,成功时用Toast进行提示。5.8 注销模块的设计与实现注销模块主要实现该系统的顺利退出,当用户点击注销按钮时会弹出一个确认对话框,当点击确定时会退出该系统。如图5.8。 图5.8 注销模块 第6章 总结和展望6.1 总结近来移动互联网的发展十分迅速,而且被大家一致看好。而Android和IPhone是手机操作系统的两大巨头,IPhone因其手机产品而获得众多消费者的青睐。而Android由于其开源和免费,获得了各个手机厂商的青睐,发展尤为迅速。Android还运用于平板电脑,电视等,具有广阔的发展方向。 本系统客户端设计采用了MVC设计模式便于我们对代码进行维护和修改,服务端采用了MVCDAO的设计模式,对数据库连接对象进行了很好的封装。另外,虽然本系统较小,但是却具有很好的适用价值,能满足用户的基本要求。具有很好的适用价值。6.2 展望该电子点菜系统在设计的过程中充分考虑了系统的可扩展性,为以后的添加新功能做了很好的铺垫,比如比如在服务员模块中设置一个每日推荐模块,在这个模块可以对菜进行分类,如凉菜和热菜,进而满足不同用户的需求,另外菜的图片的上传,可以采用手机拍照的方式进行上传,也可以直接从手机读取,当然这个最好用jsp做成一个后台管理页面,进而方便管理员对菜的价格进行修改,或者添加新的菜,因为时间的紧迫这个功能咱暂时还没有完成,只是在手机端做了一个管理员的界面进行了代替,简单的实现了服务员帐号的增删改功能以及菜的增删改。该系统采用C-S架构完成,客户端采用MVC设计模式,服务端采用MVC+DAO,便于系统的维护。本系统的难点在于对一些控件比如GridView和ListView,在使用时用adapter进行界面的显示以及显示时的系统的优化问题,以及远程操作数据库,从服务器端封装数据(xml和json)时遇到的一些问题,最后就是使用wifi和蓝牙进行通讯,由于时间紧迫我们在本机上建立服务器,然后采用http协议进行通讯,这些功能在以后都可以进行扩展。致 谢本系统是我和同组成员在几个月的共同努力下一起完成的,除了我们的共同努力外还与老师们的密切支持和帮助分不开的,特别是张老师,给了我们很多建议和帮助,我们在张老师的指导下从零开始到最后完成花费了很多的精力,当我们遇到难题的时候老师总是鼓励我们让我们不要放弃,并给与了我们很多建设性的意见,然后催促着我们开始做毕业设计,并且指导我们写论文,对我们严格要求。 最后还要感谢我们班的同学,同学们给我提了不少建议关于系统的设计方面,还要感谢张玉华老师和其他老师的帮助,特别是张玉华老师,由于原来没有写过这么大的论文因此张老师一点一点的帮我们看自己的论文,然后打上批注,便于我们修改自己的不准确的地方,发现了好多错误,对于我们的毕业设计起到了关键的作用。 参考文献1陈洁零基础学JAVA.北京:机械工业出版社,20102张海藩软件工程(第二版)M北京:人民邮电出版社,20063吴越胜,李新磊Eclipse3.0程序开发技术详解.北京:清华大学出版社,20104李刚.疯狂Android讲义电子工业出版社,20105佘志龙.Google Android SDK开发范例大全(第3版)人民有点出版社,20116杨丰盛Android应用开发揭秘机械工业出版社,20107吴亚峰,苏亚光Android应用案例开发大全人民邮电出版社,2011.8王家林大话企业级Android应用开发实战电子工业出版社,2011.9吴亚峰.Android核心技术与实例详解.电子工业出版社,2010.10潘凯华MySql快速入门清华大学出版社,2012.11李兴华,王月清.Java web开发实战经典基础篇.清华大学出版社,2010.12李兴华Java开发实战经典清华大学出版社,200913孙卫琴Tomcat与Java Web开发技术详解(第2版)电子工业出版社,200914MLDN编程宝典:Java从入门到精通人民邮电出版社,201015李代平. 软件工程. 清华大学出版社,2010.附录1: 外文原文What Is Android?It can be said that,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论