1、职场大变样社区():下载毕业设计成品全套资料,全部 50 元以下毕 业 设 计题目:基于移动端的网上订餐系统的设计和实现摘 要随着智能手机的快速普及,智能手机操作系统市场风生水起。为了让智能手机能够随时随地地查询互联网所提供的服务,一种高效的方法就是将应用系统的功能拓展到手机终端上,让手机能够通过移动网络以及互联网访问相关资源信息。因此 ,智能手机应用软件及其需要的服务将有广阔的发展前景。本课题为其设计一个基于 Android 点餐系统,为用户提供一个方便日常操作的便捷点餐系统,它满足了广大用户的需要,为需求双方提供了一个共赢的平台。本论文首先介绍系统的开发背景和意义,接着详细介绍系统设计以及
2、实现的过程,最后介绍了系统测试和本软件的测试用例以及总结了本次毕业设计整个过程。关键词: Android 、智能系统、在线点餐、手机软件ABSTRACTWith the rapid proliferation of smart phones, smart phone operating system market burgeoned. In order to make smart phones can check the Internet anytime, anywhere service provided, an efficient method is to expand the appli
3、cation system functions to the mobile terminal, allowing the phone to access information via the mobile network resources and the Internet. Therefore, smart phone applications and services they need to have broad prospects for development. The topics to design an Android-based ordering system, to pr
4、ovide users with an easy and convenient ordering system daily operations, it meets the needs of customers, demand for the two sides to provide a win-win platform. This paper introduces the background and significance of the development of the system, followed by detailed system design and implementa
5、tion process, and finally introduced the system testing and test this software and summarizes the whole process of this graduation project. Keywords: Android, intelligent systems, online ordering, mobile phone software目 录摘 要 .2ABSTRACT 3目 录 .11 绪 论 .11.1 课题研究背景和意义 11.2 课题可行性分析 .21.3 论文框架安排 .32 开发语言说
6、明 .42.1 开发工具及环境简介 .42.2 Android 系统 52.2.1 Android Features 特性 52.2.2 Android 系统的四大组件 63 点餐系统分析 .83.1 概述 83.1.1 系统分析的原则 83.1.2 系统分析的方法 83.2 系统需求分析 93.3 系统流程分析 94 点餐系统详细设计 .114.1 系统设计原则 .114.2 系统设计目标 .124.3 系统总体结构设计 124.4 服务端数据库设计 135 系统实现与测试 155.1 搭建 Android 开发环境 .155.2 系统实现 175.2.1 登录模块实现 .175.2.2 菜
7、谱大全模块实现 .185.2.3 在线选择座位模块 .215.2.4 我的订单模块 .255.2.5 服务端模块模块 .275.3 系统测试 .285.3.1 软件测试 .285.3.2 测试用例 .295.3.3 测试总结 .296 总结 .31致 谢 .32参考文献 .33附录 .341 绪 论1.1 课题研究背景和意义现在智能手机可谓是爆发式增长,传统手机在不断地消失,诺基亚就是在这样的环境中受到了极大的困扰,现在主要有三个使用率最高,关注度最高的手机平台,分别是:Android,ios 和 windows phone 平台,这三个平台中 Android 的占有率最高,但是设备种类非常复
8、杂,碎片化严重,而 ios 设备由于 apple 公司的独特管理理念,得到了一个完整的生态系统,管理得井井有条,几乎没有碎片化的现象和趋势,但是这也导致了其设备种类不多,无法满足所有用户的缺点,还有 windows phone 虽然现在炒作得很火热,但是其用户量相对其他的两个平台来说几乎是可以或忽略不计,所以在这里不做讨论。Android平台是一个面向大众的系统,分布在低端,中端和高端市场中,在各个阶段的是市场中都有很受欢迎的机型,并且Android是开源的,开发者随时都可以查看系统源代码,并且使用时下最流行的java作为其主要的开发语言。由于这些特点,使得Android成为现在市场占有量最大
9、的软件平台,在这样的平台上面开发一款独特的日常生活软件尤为必要的。 Android一词的本义指“机器人”。同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称 该平台由操作系统、中间件、用户界面和应用软件组成 号称是首个为移动终端打造的真正开放和完整的移动软件。 Android是基于Linux内核的软件平台和操作系统 早期由Google开发 在华注册商标名为“安致”,后由开放手机联盟、Open Handset Alliance开发。它采用了软件堆层,software stack,又名以软件叠层的架构主要分为三部分。低层以Linux内核工作为基础,只提供基本
10、功能,其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外 ,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟。Android在未公开之前常被传闻为Google电话或gPhone。大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。到了2010年1月,Google开始发表自家品牌手机电话的Nexus One。目前最新SDK版本为Android 4.4.0。1.2 课题可行性分析可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。系统的可行性分析主要包括经济上的可行性,技术上的可行性,操作上的可行性和法律上的可行性。经
11、济可行性目标系统开发经济需求的比较低,加上具有成熟的 Android 平台以及十分普及手机设备,所以在软硬件的支出上十分有限。而且,目标系统并是十分的复杂,开发的周期较短,人员经济支出有限。当系统开发成后,通过测试和、试运行和实际应用后,将很大程度上提高手机管理软件系统的科学性和高效性,在为人们带来便利的同时,也为系统的进一步推广、创新创造了条件,这带来的经济回报将远超过支出,并且最重要的一点是通过该系统的开发,可以使我们进一步理解软件工程思想和软件开发流程,为从事软件开发工作打下很好的基础,从长远利益来考虑,本课题的设计开发还是具有相当大的经济可行性的。技术可行性本系统使用 Android
12、技术进行开发,发展到现在,Android 已经算是一个较成熟的平台了,现在有越来越多的企业及技术人员选择它作为开发平台。因此,在技术上是完全可以胜任这个平台的开发。Android 开发平台是由谷歌与开放手机联盟合作开发的一个开放、自由的移动终端平台,它由操作系统、中间件、应用软件三部分组成。该平台备有完善的程序开发环境,包括模拟器、除错工具、程序执行所耗用存储器、性能评介等功能。操作可行性本系统用户只要有一台 Android 手机,就可以使用了,系统是由的操作都是用户熟悉的选择框或者按钮等等。所有的操作通过手机就可以完成, ,用户不需培训,只要稍微提示一下即可。因此,在操作使用上,本系统简单、
13、方便,易于使用户接受,因而是十分可行的 3。法律可行性由于本系统是在相关法律法规下实施完成的,所以不存在任何法律问题,在法律上是完全可行的。综合考虑经济、技术、操作和法律等方面的因素,该手机软件管理系统可以立即开始进行。1.3 论文框架安排本文详细介绍了基于 Android 点餐系统的设计实现全过程。从开始到程序设计的实现,将在一下的几章中予以介绍:第 1 章 绪论,这一章主要是对本次毕业设计所开发的系统进行问题的定义,通过问题的定义明白需要做些什么,并且对开发内容简单的介绍了一下;同时本章还对课题的研究背景与研究意义进行分析,对开发本系统的可行性分析还有对论文各章内容的简要介绍。第 2 章
14、开发语言说明,对涉及到的理论知识和用到的开发工具做相关阐述。第 3 章 点餐系统分析,主要分析了本系统开发的可行性还有需求分析等等。第 4 章 点餐系统设计,主要介绍了本系统的整个设计过程、设计思路以及设计中应该注意的问题。第 5 章 系统实现与测试,主要介绍了本设计的实现环境和实现,同时也介绍了测试在软件开发环节中的重要性和给出本系统的测试过程与结论。第 6 章 总结与展望,总结了近两三个月的做毕业设计过程中的一些心得和体会, 最后做了展望。最后:致谢、参考文献。2 开发语言说明2.1 开发工具及环境简介a. Eclipse Classic 3.7.2Eclipse 是一个开放源代码的、基于
15、 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Kit,JDK) 。 Eclipse 是著名的跨平台的自由集成开发环境(IDE) 。最初主要用来 Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如 C+和Python 的开发工具。Eclipse 的本身只是一个框架平台,但是众多插件的支持使得 Eclipse 拥有其他功能相对固定的 IDE 软件很难具有的灵活性。许多软件开发商以 Eclipse 为框架开发自己的 IDE
16、。Eclipse 最初由 OTI 和 IBM 两家公司的 IDE 产品开发组创建,起始于 1999 年 4 月。IBM 提供了最初的 Eclipse 代码基础,包括 Platform、JDT 和 PDE。目前由 IBM 牵头,围绕着 Eclipse 项目已经发展成为了一个庞大的 Eclipse 联盟,有 150 多家软件公司参与到Eclipse 项目中,其中包括 Borland、Rational Software、Red Hat 及 Sybase等。Eclipse 是一个开发源码项目,它其实是 Visual Age for Java 的替代品,其界面跟先前的 Visual Age for Ja
17、va 差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括 Oracle 在内的许多大公司也纷纷加入了该项目,并宣称 Eclipse将来能成为可进行任何语言开发的 IDE 集大成者,使用者只需下载各种语言的插件即可。b. SQLite3SQLite3 是一款轻型的数据库,是遵守 ACID 的关联式数据库管理系统。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,占用资源非常的低,在嵌入式设备中,可能只需要几百 K 的内存就够了。它能够支持Windows/Linux/Unix 等等主流的操作系统,同时能够跟很多程序语言相
18、结合,比如 Tcl、C#、PHP、Java 等,还有 ODBC 接口,同样比起 Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite 第一个 Alpha 版本诞生于 2000 年 5 月. 至今已经有 10 个年头,SQLite也迎来了一个版本 SQLite 3 已经发布。c. ADT目前 Android 开发所用的开发工具是 Eclipse,在 Eclipse 编译 IDE 环境中,安装 ADT,为 Android 开发提供开发工具的升级或者变更,简单理解为在Eclipse 下开发工具的升级下载工具。d. Android SDKSDK:
19、(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,Android SDK 指的既是 Android 专属的软件开发工具包。2.2 Android 系统Android 一词的本义指“机器人” 同时也是 Google 于 2007 年 11 月 5日宣布的基于 Linux 平台的开源手机操作系统的名称 该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。 Android 是基于 Linux 内核的软件平台和操作系统 早期由 Goo
20、gle 开发 在华注册商标名为“安致”,后由开放手机联盟 Open Handset Alliance 开发。它采用了软件堆层 software stack,又名以软件叠层的架构,主要分为三部分。低层以 Linux 内核工作为基础,只提供基本功能,其他的应用软件则由各公司自行开发,以 Java 作为编写程序的一部分。另外为了推广此技术,Google 和其它几十个手机公司建立了开放手机联盟。Android 在未公开之前常被传闻为 Google 电话或 gPhone。大多传闻认为 Google 开发的是自己的手机电话产品,而不是一套软件平台。到了 2010 年 1 月,Google 开始发表自家品牌
21、手机电话的 Nexus One,目前最新 SDK 版本为 Android 4.0.3。 2.2.1 Android Features 特性 Android 系统有如下的几大特性 1 应用程序框架 支持组件的重用与替换 Dalvik 虚拟机 专门为移动设备做了优化 内部集成浏览器 该浏览器基于开源的 WebKit 引擎 优化的图形库 包括 2D 和 3D 图形库 3D 图形库基于 OpenGL ES SQLite 用作结构化的数据存储 多媒体支持 包括常见的音频、视频和静态印象文件格式 如 MPEG4, MP3, AAC, AMR, JPG, PNG GSM 电话 依赖于硬件 蓝牙 Blueto
22、oth, EDGE, 3G, and WiFi 依赖于硬件 照相机 GPS 指南针 和加速度计 依赖于硬件 丰富的开发环境 包括设备模拟器、调试工具、内存及性能分析图表;2.2.2 Android 系统的四大组件 在 Android 系统中 为我们提供了四大基本组件 每个组件是一个视图 但是有些是可见的 有些是不可见的视图 像 Activity ContentProvider 是可见的视图 Service 和 BroadcastReceiver 是不可见的 它们只在系统的后台运行。下面分别介绍四大组件3 1 Activity 简介 在 Android 系统中 Activity 提供可视化的用户
23、界面,一个 Android 应用通常由多个Activity 组成。多个 Activity 组成了 Activity 栈 Stack,当前活动的 Activity 处于栈顶。Activity 有自己的生命周期,由 Android 系统来控制。 2 Service 简介 顾名思义 Service 就是运行在后台的一种服务程序 一般很少和用户交互 因此没有可视化界面定义一个 Service 类比较简单,只要继承 Service 类,实现其生命周期中的方法就可以了。一个定义好的 Service 必须在AndroidManifest.xml 配置文件注册 通过元素声明才能使用.Service有自己的生命
24、周期 我们可以调用 startService()启动一个 Service 或者 bindService()方法来绑定一个存在的 Service 3 Broadcast Receiver 简介 Broadcast Receiver 顾名思义广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的。例如某个按钮的单击事件而广播事件处理机制是系统级别的。到目前为止我们可以使用 Intent 来启动一个程序组件,我们还可以通过使用 sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。我们可以在你的应用程序中实现 Broadcast Receiver 来监听和响应这些广
25、播的Intent ; 4 ContentProvider 简介 Content Provider 用来保存和检索数据 并且使应用程序之间相互访问数据成为可能。它是跨应用程序共享数据的唯一方法。 Android 为常用的数据类型 如 音视频、图片和联系方式等提供了大量的 Content Provider。它们被定义在 android.provider 包下面。通过这样定义好ContentProvider 我们可以方便的进行数据操作。当然我们必须拥有适当的权限。我们也可以自己来定 ContentProvider 共享我们的数据 方便用户的访问。3 点餐系统分析本章首先介绍了基于 Android 点
26、餐系统的可行性,确立了开发基础,直接详细阐述了系统各个模块的详细需求分析,接着分析了系统的研究路线和系统的流程设计,最后对系统的运作流程做了分析。3.1 概述系统分析是在总体规划的指导下,对某个或若干个子系统进行深入仔细地调查研究,确定新系统逻辑功能的过程。这一阶段的主要任务是由系统分析员了解每个业务流程,工作流程,广大用户的需求,运用系统开发理论、开发方法和开发技术设计出一个智能化的软件系统。3.1.1 系统分析的原则在系统分析中存在很多困难,为了克服困难,做好分析工作,在进行系统分析时应遵循系统分析的原则,这样才能保证分析工作能够顺利进行,系统分析的原则有:1.逻辑设计与物理设计分开的原则
27、2.面向用户的原则3.结构化分析的原则通过实际调查并与相关用户交流后,分析基于 Android 点餐系统的具体的要求,确定本系统的逻辑功能,以满足用户的各项要求,完成相应的各项功能,提高网站的实用水平。在近期目标完成后,该系统应该有很强的扩充性,便于在此基础上进行扩充式开发,为以后的发展及扩充打好基础。 3.1.2 系统分析的方法该系统采用以抽象和分解为手段,并且采用结构化分析方法进行系统分析,根据实际调查研究,对系统进行自顶向下的逐层分解,逐步细分,逐步求精,建立新系统的逻辑模型,这个逻辑模型将尽可能避免使用计算机术语,让其尽可能的简单化、通俗化,便于设计者和浏览者的沟通与交流经验。结构化分
28、析方法的基本思想是该系统采用结构化分析方法,以抽象和分解为手段,对系统进行自顶向下的逐层分解,逐步细分,逐步求精,从而达到易于理解的目的。3.2 系统需求分析客户端功能需求分析:登录、注册:用户使用系统时需要先登录,如果没有账号可以通过注册模块注册一个账号;菜谱查询:查询菜谱列表信息,支持用户关键字搜索;详情查询:可以查询一个菜的详细信息,包括价格、介绍和数量;在线点餐:支持用户在线下单点餐;选择座位:支持用户在手机上选择座位;我的订单:用户可以查看自己已经下单的信息,可以删除掉自己的订单;服务端功能分析:登录模块:管理员登录使用系统;菜谱管理:管理员可以查看当前系统的菜谱信息,可以添加、修改
29、或者删除一个菜谱信息;用户管理:管理员可以查看到当前系统已经注册的用户信息,可以删除掉一个用户信息;类型管理:管理员可以查看当前系统的菜谱类型信息,可以添加、修改或者删除一个菜谱类型信息;订单管理:管理员可以查看到当前的所有订单信息,可以修改订单状态,例如把一个进行中的订单修改为已经完成;3.3 系统流程分析在系统分析和开发系统过程中,采用了一些相对比较成熟、安全性较高、运行比较稳定的技术。这些技术贯穿了整个系统的设计与开发过程,是设计和实现各个模块的基础技术,只有运用先进的设计模式和开发技术,才能保证开发工作顺利地进行,才能保证系统设计的合理性和灵活性,才能保证各个功能模块的稳定性。首先本系
30、统用户在使用系统前都必须经过用户登录验证,只有验证通过的用户才能进入系统, 整个系统的流程图如图 3.1 所示。图 3.1 系统流程图4 点餐系统详细设计4.1 系统设计原则系统设计是确定系统如何建立的过程。良好的软件系统来源于良好的系统设计。系统设计应该提供完整、准确、规范的系统设计文档。在系统设计中,首先应该注意的是设计的统一和准确。设计统一即将系统视为一个有机整体,要求设计具有统一的设计规范和标准。设计准确即设计描述应该力求避免模糊或二义性。此外,在进行系统设计过程中,还应该遵循的主要原则如下。1、适用性原则系统总的目的是保证系统功能目标的实现,即满足客户的需求,是所有应用软件最基本的原
31、则。在满足系统需求的前提下,应该从系统用户角度考虑,使设计的系统操作简单化,易用化。应该以降低系统的成本为目标,避免一味追求技术上的先进而不考察应用效益。没有市场和应用前景的软件项目开发是失败的。2、可靠性安全性原则可靠性和安全性是系统重要的需求之一,也是系统设计质量的重要指标。点餐系统工作在网络环境中,对于现在大量存在于网络的病毒、黑客攻击等安全威胁,应该具有一定的防御能力,对于网络带宽和访问量等外界运行环境的变化,应该具有较强的适应能力。只有安全可靠的系统才能发挥其应有的功能。3、可扩展性原则系统的设计应该提供可扩展能力,以满足未来外语系工作需求的发展和变化。主要可以采用分布式设计、系统结
32、构模块化设计等技术手段,把系统设计为多个功能相对独立的模块,降低系统的祸合度,提高系统的可扩展性。希望通过 Android 技术和服务端 Servlet 的支持,设计出一个基于Android 点餐系统,设计过程中希望能够从效能、逻辑和稳定性等多方面进行综合考虑,力求最后产品界面能够一目了然,让用户容易上手并且不容易出错。4.2 系统设计目标在系统分析的基础上,设计出能满足预定目标的系统的过程。系统设计内容主要包括:确定设计方针和方法,将系统分解为若干子系统,确定各子系统的目标、功能及其相互关系,决定对子系统的管理体制和控制方式,对各子系统进行技术设计和评价,对全系统进行技术设计和评价等。本系统
33、是设计目标是建立一个基于 Android 点餐系统,可以满足用户对日常文档的管理和交流工作。用户界面友好、操作简单,每一步骤的操作都经过精心的设计,将复杂的统计运算过程隐藏于简单的操作之下,系统的设计能降低使用前的培训、实施和使用中的维护时间。通过合理而先进的网络设计及软、硬件的优化选型,足可保证系统的可靠性与容错性。系统以用户需求为目标,以方便用户为原则,处处为使用者着想。4.3 系统总体结构设计在设计一款软件时一般都会把它分成几个模块,在模块的基础上还会再分小模块,这样就达到了软件模块化设计的要求,然后再对各个小模块进行详细设计和编写,采用模块化的管理方式可以使软件结构更清晰,也使得软件的
34、管理更有秩序,使别人容易理解和阅读,但是这些模块也要根据别的模块来设计和约束,不能随便设计脱离框架,设计完成后需要把每个设计完成的模块根据总体框架结合起来。整个程序分为客户端和服务端两部分,客户端基于 Android 系统,服务端采用 Servlet 提供服务,后台使用 MySQL 数据库。在整个系统中,客户端负责采集数据和显示的工作,对于客户的输入,输入端会将信息发送至服务端的 Servlet 上, Servlet 接收信息之后,会对数据库进行相关的操作,并将结果发送回客户端,客户端再进行处理,从中得到结果。4.4 服务端数据库设计本系统需要一个服务端来为客户端提供数据接口服务,服务端采用M
35、ySQL 数据库来存放数据, MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。本系统共用到 5 个数据库表,每个表的详细设计结构:表名:admins序号 列名 数据类型 长度 标识 主键 允许空 说明1 id int 11 是 是 否 auto_increment2 loginid varchar 255 是3 passwords varchar 255 是表名:dishes序号 列名 数据类型 长度 标识 主键 允许空 说明1 id int 11 是 是 否 auto_increment2 title
36、text 是 标题3 typeid int 11 是 类型 ID4 typename text 是 类型名称5 intro text 是 详细介绍6 img_url varchar 255 是 图片7 price double 11 是 价格8 amount double 11 是 数量表名:orders序号 列名 数据类型 标识 主键 允许空 说明1 id int 是 是 否 auto_increment2 userid int 是3 username text 是4 seat text 是5 status int 是6 dishesid int 是7 price double 是8 amo
37、unt double 是9 createtime varchar 是表名:seats序号 列名 数据类型 长度 标识 主键 允许空 说明1 id int 11 是 是 否 auto_increment2 no int 11 是3 state int 11 是 座位表名:types序号 列名 数据类型 长度 标识 主键 允许空 说明1 id int 11 是 是 否 auto_increment2 typename text 是 类型名称表名:users序号 列名 数据类型 长度 标识 主键 允许空 说明1 id int 11 是 是 否 auto_increment2 loginid varc
38、har 255 是 登录账号3 name text 是 姓名4 passwords varchar 255 是 密码5 系统实现与测试5.1 搭建 Android 开发环境任何事物要运行,都要有它的环境,Android 也有它的环境才能够运行,下面介绍 Android 的开发环境配置。搭建开发环境需要的软件:1) 操作系统:window XP 或 linux2) 软件包:Android SDK(Software Development kit Java Development kit) 、ADT(Android Develoopment Tool)3) IDE 环境: Eclipse IDE+
39、ADT Eclipse3.3 以上4) JDK:Java Runtime Environment 虚拟机 、(JDK)Java Development kit安装步骤如下:第一步:安装 Java 虚拟机 sun-java6-jdk 版本。第二步:安装 Eclipse3.5 工具,到官网 http:/www.eclipse.org/downloads/,选择版本下载后进行安装。 (如图 2.2)Eclipse 工具的版本如图 5.1 所示:图 5.1 Eclipse 工具的版本图第三步:安装 Android SDK:首先要下载 SDK,可以在这个网址下载Http:/developer.A ,选择
40、相应的系统进行安装。sdk 下载的地址图如图 5.2 所示:图 5.2sdk 下载的地址图第四步:安装 Android ADT 插件。运行 Eclipse,选择 help-install new software 选择 add,将会弹出一个【Add Site】对话框。【Add Site】对话框如图 5.3:图 5.3 【Add Site 】对话框图点击 OK,选择要安装的软件,占 next,然后选择接受协议,直到安装成功,重启 Eclipse 软件,设置 Android SDK Home, Window-refrence。设置 Android SDK Home 界面如图 5.4 所示:图 5.
41、4 设置 Android SDK Home 界面图在 SDK location 中输入 SDK Tools 路 D:AndroidsoftwareAndroid-sdk-windows 点击 OK,这样 Android 环境就已经搭建成功了。5.2 系统实现5.2.1 登录模块实现本系统使用前用户需要登录验证,在登录界面中,通过继承一个 Activity来实现,界面上的控件用到了 EditText、Button 和 CheckBox 等等组件, EditText 主要用来实现用户帐号和密码的输入。登录时用户需要提供账号和密码,然后通过点击登录按钮来发送登录请求,请求发出后,系统会通过 HTTP
42、 的方式把帐号和密码发送到服务器端验证,并返回服务端的验证结果,假如验证通过则提示用户登录成功并且自动跳转进入主界面,否则提示用户登录失败。该界面提供记住密码成功,假如用户在登录时勾选了“记住密码”复选框,则下次再进入到本界面用户将不需要再次输入密码,而只需要点击登录按钮即可实现登录操作,记住密码的过程是通过 Android 平台提供的SharedPreferences 来实现的。当然如果用户还没有登录账号,则可以通过“注册”按钮链接到用户注册界面,从而注册一个新的账号;具体的实现效果如图 5.1 所示:图 5-1 登录界面5.2.2 菜谱大全模块实现用户成功登陆进入系统之后可以查看到当前系统
43、所有菜谱信息,包括菜谱的图片、名称、单价和详细介绍信息,系统用了一个 ListView 组件来显示系统的菜谱信息,同时用户也可以通过界面左上角的搜索按钮来搜索菜谱信息,用户点击一条信息之后可以查看一个菜谱的详细介绍。同时,用户也可以通过该界面左上角的搜索按钮来打开搜索界面,在搜索界面中,用户可以输入自己想搜索的标题来进行搜索,搜索到的菜谱信息将会被显示在列表中。弹出的搜索框可以通过 AlertDialog.Builder 来实现;实现的核心代码:private class loadAsyncTask extends AsyncTask Overrideprotected void onPreE
44、xecute() dialog = ProgressDialog.show(DishesListActivity.this, “提示“, “获取中 “);Overrideprotected String doInBackground(String. params) String json = null;serverUrl = AppConstant.getUrl(getApplicationContext() + “ServletService?Action=getdisheslistjson = httpHelper.HttpRequest(serverUrl);return json;Ov
45、errideprotected void onPostExecute(String result) super.onPostExecute(result);dialog.dismiss();list = new ArrayList();if (result != null for (int i = 0; i Overrideprotected void onPreExecute() dialog = ProgressDialog.show(PlaceOrderActivity.this, “提示“, “获取中 ,请稍后“);Overrideprotected String doInBackgr
46、ound(String. params) String urlString = AppConstant.getUrl(getApplicationContext() + “ServletService?Action=getOneRow“;urlString = urlString + “String json = httpHelper.HttpRequest(urlString);return json;Overrideprotected void onPostExecute(String result) super.onPostExecute(result);dialog.dismiss()
47、;if (result.trim().length() 0) try jsonArray = new JSONArray(result);LinearLayout ll = null;for (int i = 0; i jsonArray.length(); i+) jsonObject = jsonArray.getJSONObject(i);if (i % 6 = 0) ll = new LinearLayout(PlaceOrderActivity.this);ll.setOrientation(LinearLayout.HORIZONTAL);ll.setGravity(Gravity
48、.CENTER);final ImageView imageView = new ImageView(PlaceOrderActivity.this);imageView.setPadding(5, 5, 5, 5);imageView.setTag(jsonObject.getInt(“id“) + “,“ + jsonObject.getInt(“state“) + “,0“);if (jsonObject.getInt(“state“) = 0) imageView.setImageResource(R.drawable.seat_unavailable); else imageView
49、.setImageResource(R.drawable.seat_sel);imageView.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) String tag = v.getTag().toString();String id = tag.split(“,“)0;String state = tag.split(“,“)1;/ 是否被选择String sel = tag.split(“,“)2;/ 是否选中if (“1“.equals(state) toastUtil.show(“该座位已被选“ ); else if (“1“.equals(sel) imageView.setImageResource(R.drawable.seat_unavailable);imageView.setTag(id + “,“ + state + “,“ + “0“);hashMap.r