基于Android的外卖App系统设计

基于Android的外卖App系统设计

摘要

随着智能手机的快速普及,智能手机操作系统市场风生水起。为了让智能手机用户能够随时随地查询互联网所提供的服务,一种高效的办法就是将应用系统的功能拓展到手机终端上,让手机能够通过移动网以及互联网访问Web网站并处理各种各样的业务。因此,智能手机的应用软件及其需要的服务将有广阔的发展前景。

在如今这个智能手机系统群雄纷争的时候,2008年Google推出了一款名为Android的开源智能手机操作系统,它采用Linux内核,开放手机联盟(OHA)成员可以任意使用和修改SDK包,系统的开源性使其具有良好的拓展性。这款软件包括了操作系统、用户界面和应用程序,即智能手机工作所需要的全部软件。Android的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。因此,对于软件从业人员来说,Android平台具有无限的吸引力。

本文就在分析讨论Android手机软件开发技术原理的基础上,开发出能为用户提供更好的基于Android平台的外卖App系统软件。

关键字:android;外卖App系统;智能手机平台

Abstract

With the rapid proliferation of smart phones, smart phone operating system market, wind and water. In order for smart phone users to check the Internet anytime, anywhere services provided an efficient way to expand the function of the system will be applied to the mobile phone terminal, the mobile phone to Internet access via mobile networks, and variety of Web sites and process business. Therefore, the smart phone applications and the need for the service will have broad prospects for development.

In today's smart phone system when disputes warlords, 2008, Google introduced a smart phone called the Android open source operating system, which uses Linux kernel, Open Handset Alliance (OHA) members can be free to use and modify the SDK package, the system It has a good open-source nature of the expansion of. The software includes the operating system, user interface and applications that need to work smart phones all the software. Android's biggest feature is its open architecture, not only has a very good development and debugging environment, but also supports a variety of scalable user experience, including rich graphical components, multimedia support, and powerful browser. Therefore, for software professionals is, Android platform has unlimited appeal.

On the basis of analysis and discussion of the Android mobile phone software development technical principles, developed to provide users with better catering system software based on the Android platform.

Keywords:android; food systems; smart phone platform

摘要II

AbstractII

第一章绪论11

1.1 研究内容11

1.2 研究意义11

1.3研究现状和发展趋势11

第二章 系统分析33

2.1 研究目标33

2.2 需求分析33

2.3业务流程分析33

2.4数据流图44

2.5数据字典55

2.6性能分析66

第三章 系统开发环境及相关技术77

3.1开发环境77

3.2 Java SDK7

3.3 Eclipse8

3.4 ADT9

3.5 Android SDK9

3.6 Tomcat服务器1313

3.7 JSP技术1414

3.8 JSON14

3.9 Android开发平台搭建1717

第四章 程序设计1919

4.1 功能设计1919

4.2 数据库设计1919

1.概念结构设计1919

2.数据库表设计2121

第五章程序开发2323

5.1 文件结构与用途2323

5.2 系统实现2424

5.4.1登录页2424

5.4.2 后台页2424

5.4.3点菜2525

第六章 系统测试2828

6.1 软件测试的重要性2828

6.2 测试实例的研究与选择2828

6.3 测试环境与测试条件2929

6.4 系统运行情况2929

6.5 系统评价2929

第七章总结3030

参考文献3131

谢3232

第一章绪论

1.1 研究内容

随着手机的普及以及手机应用的深入人心,近几年“智能手机”成为了人们关注的话题,智能手机将成为人们获取信息的主要设备。在当今这个只能手机群雄争锋的时代,2008年Google推出了一款名为Android的开源智能手机操作系统。Android凭借其开放性和良好的人际界面,受到广大手机生产商的重视。

当今社会的生活节奏越来越快,随着硬件移动设备的越来越先进,人们对移动设备的要求也越来越高,从以前的追求技术到现在的追求视觉,因此,也逐步的提高了对系统的要求,本课题是基于Android系统的“外卖App系统”软件的设计与实现。

1.2 研究意义

当今社会是一个信息技术迅速发展的社会,人们的生活越来越离不开计算机和手机。作为一个计算机专业的学生,希望通过自己四年所学的知识编制一款基于Android平台的外卖App系统软件,方便你我方便他人。

现代社会的迅速发展使得人们的生活更加方便,人们也越来越会享受生活,催生了各种应用,好友之间通过拼车、拼房、拼游、拼购可以增进彼此的感情。同时,因为人们可以足不出户便可进行购物,娱乐,游戏等各种活动,通过这款基于Android系统的外卖App系统完善公共服务体系、改善公共服务手段、增加公共服务产品、提高公共服务质量,更好地发挥对经济社会发展的现实性作用。

1.3研究现状和发展趋势

据Gartner最新数据显示,2011年第二、三季度全球智能手机销售继续大幅增长,其中第三季度Android 的市场份额突破了 50%,达到了 52.5%,超过了 iOS 和 BlackBerry 系统,成为全球第一大智能手机系统。2011第二、三季度与去年同期相比,增度分别是15.4%及22%,增势迅猛。而塞班系统市场份额还是有 16.9%,但比起去年同期已经是跌去一半,形势非常严峻。iOS 的份额则略微有所下滑,从去年同期的 16.6% 跌到了 15%。BlackBerry OS 系统则有所下滑,而 Bada 份额则到了 2.2%。

毫无疑问,智能手机即将变成整个社会的趋势了。而Android平台的智能机在手机市场中已明显的占有越来越多的比重。很多人都会选择Android手机。

第二章 系统分析

2.1 研究目标

了解Android应用程序的设计和开发过程;

使用多种组件进行基于Android 平台的外卖App系统的软件开发。

本软件是基于Eclipse的开发环境,依托Tomcat服务器上的后台数据,开发出了针对Android平台的外卖App系统。

2.2 需求分析

经过对外卖App系统的了解、以及体验了点餐的流程,总结出本系统需要的功能如下:

登录功能。使用系统之前必须登录系统,登录过程通过无线网络,在后台数据库通过用户名称和密码进行查询,注册用户方才可以使用该系统。

系统主菜单。系统登录成功后进入系统主菜单,主菜单通过图形菜单的方式来展现系统的功能,单击某个选项便进入该功能的操作界面。

点菜功能。此功能可以根据用户需要对菜单信息进行添加、修改、查询、删除。并且在添加菜单信息时可为每个菜自动生成菜编号。

菜单的查询,包括:常规菜单,餐厅特色菜式,餐厅特价菜式等。

就餐结算功能。此功能可以根据用户的需要进行点菜,并能计算出顾客的点菜数及总金额。

从上面的描述中可以基本了解软件的功能需求:

本软件是一个Android 客户端+JSP Servlet服务端应用程序,启动Android上的应用程序后可以登录、查看菜谱等。Android客户端上的信息数据是通过后台JSP Servlet服务端应用程序获取的,这个后台服务可以根据客户端发出的请求,返回信息。 图片和文字这些信息都保存在数据库中。

2.3业务流程分析

在进行业务流程分析时,需要按照原有信息流动过程,逐个地调查分析所有环节的处理业务、处理内容、处理顺序和对处理时间的要求,弄清各个环节需要的信息、信息来源、流经去向、处理方法、计算方法、提供信息的时间和信息形态(报告、报单、屏幕显示)等。

业务流程分析可以帮助开发者了解该业务处理过程,发现和处理系统调查工作中的错误和疏漏。业务流程分析是通过业务流程图来进行,即用一些规定的符号及连线来表示某个具体业务处理过程。

具体业务流程如图3.1所示。

图3.1业务流程图

2.4数据流图

数据流程是指数据在系统中产生、传输、加工处理、使用、存储的过程[6]。数据流程分析是把数据在现行系统内部的流动抽象的独立起来,舍去了具体组织机构、信息载体、处理工具、物质、材料等,单从数据流动过程来考查实际业务的数据处理模式。

数据流程与数据流程分析是今后建立数据库系统和设计功能模块处理过程的基础。描述数据流程的工具是数据流程图以及其附带的数据字典、处理逻辑等图表。其中数据流程图是描述系统逻辑模型的主要工具,它以少数几种符号综合地反映出信息在系统中的流动、存储和传递[7]。

在业务流程分析的基础上,对数据流进行了分析,从数据流动过程考察了实际业务的数据处理模式。该系统的数据流图分为顶层、一层、二层。现行的顶层数据流图如图3.2所示。

图3.2顶层数据流图

由于论文的篇幅限制不能一一列举数据流图,只给出了部分数据流图,其他的数据流图基本一致。

2.5数据字典

通过对系统数据流的分析,接下来用数据字典描述数据流图中一些主要的数据元素条目、数据流、处理过程、数据存储和外部实体[8]。

数据元素条目如表2.1所示。

表2.1数据元素

菜品信息编号

调入年份

数据元素条目

总编号:1-101

编号:101

名称:菜品信息编号 XXX

说明:菜品信息的编号

数据值类型:离散

长度:50

有关数据结构:菜品信息表如:123

数据元素条目如表2.2所示。

表2.2数据元素

注册用户信息编号

调入年份

数据元素条目

总编号:1-101

编号:101

名称:注册用户信息编号 XXX

说明:注册用户信息的编号

数据值类型:离散

长度:50

有关数据结构:注册用户信息表如:123

数据元素条目如表2.3所示。

表2.3数据元素

订单信息编号

调入年份

数据元素条目

总编号:1-101

编号:101

名称:订单信息编号 XXX

说明:订单信息的编号

数据值类型:离散

长度:50

有关数据结构:订单信息表如:123

数据元素条目如表2.4所示。

表2.4数据元素

管理员信息编号

调入年份

数据元素条目

总编号:1-101

编号:101

名称:管理员信息编号 XXX

说明:管理员信息的编号

数据值类型:离散

长度:50

有关数据结构:管理员信息表如:123

2.6性能分析

程序响应速度快、安全性高、信息处理速度快。

第三章 系统开发环境及相关技术

3.1开发环境

Android的上层应用程序是用Java语言开发,同时还需要基于Dalvik虚拟机,所以,Google公司推荐使用主流的Java继承开发环境Eclipse。只有Eclipse还不够,因为是使用Java语言进行开发,还应该有由SUN公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。此外,Android的应用程序开发和Java开发有较大区别的,所以还需要有Google提供的Android SDK。同时,还需要在Eclipse安装ADT,为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级下载的工具。

简言之,需要以下软件,才能搭建Android开发环境,从而进行Android应用程序的开发。

(1) Java SDK

(2) Eclipse

(3) ADT

(4) Android SDK

3.2 Java SDK

JDK是sun公司java应用程序和组件的开发环境,是编译和测试工具,也是提供java程序的java虚拟机平台,是调试和运行所不可缺少的工具。

首先在安装前先要下载JDK,这可以从SUN公司的网站上下载,到http://java.sun.com/products/jdk/1.2这个页面下载JDK1.2.2-001-win.exe或JDK 1.3-win.exe,由于笔者n.exe为例。下载后,双击JDK1.2.2-001-win.exe就可以开始安装了,在安装过程中有很多选项,按个人需求正确选择,这里我们以第一次安装为例,全部选择默认配制即可,安装的默认路径为[windows所在的根目录(以下设为c:)]\jdk1.2.2,安装完毕后就可以重新启动了。

启动时要更新环境变量,在开机时要自动调用JDK系统,因此要设置一些环境变量,我们以windows2000 server版系统为例进行系统环境变量设置(在windows 9x系统中可在autoexe.txt中进行设置)。设置方法如下:

在桌面上,用鼠标右键单击[我的电脑]图标,选择[属性]按钮,弹出[系统特性]对话匡,选择[高级]选项卡,单击[环境变量]按钮,单击[环境变量]对话匡,该对话匡有两个选项组,分别为[Administrator的用户变量]和[系统变量]两个选项组。在[系统变量]选项组中找path变量,找到后单击[编辑],弹出[编辑系统变量]对话匡,在其中[变量值]文本匡中输入“(jdk所在根目录以下设为C:)\jdk1.2.2\bin",然后按“确定”就ok了,这样在运行jsp时系统就可以自动找到JDK路径进行编译了。与此同时,新建一个classpath变量,在[系统变量]选项组中,单击[新建]按钮,弹出[新建系统变量]对话匡,在[变量

名]文本匡中输入“classpath",在[变]文本框中输入:"c:\jdk1.2.2\lib\tools.jar;c:\jdk1.2.2\lib\dt.jar;c:\jsdk2.0\lib\jsdk.jar;",

然后单击[确定]扭,然后再用此方法将c:\jdk1.2.2添加到java_home环境变量中,如果在安装时没有将其安装在默认目录下,必须在此进行环境变量的设置,否则系统将无法完成编译工作。以上工作完成后回到最处的[系统特性]对话匡中,单击[应用]或按下[确定],JDK就安装配制好了。

3.3 Eclipse

Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。

虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。

这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C++、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

3.4 ADT

Eclipse ADT 是 Eclipse 平台下用来开发 Android 应用程序的插件。在企业开发中,很多程序员使用Eclipse IDE作为应用的开发环境。为了使得Android应用的创建,运行和调试更加方便快捷。Android的开发团队专门针对Eclipse IDE定制了一个插件:Android Development Tools(ADT)

下载地址:https://dl-ssl.google.com/android/eclipse/

然后安装Eclipse插件ADT

启动 Eclipse,选择 Help > Install New Software,在出现的对话框里,点击Add按钮,在对话框的name一栏输入“ADT”, 然后点击Archive...,浏览和选择已经下载的ADT插件压缩文件。

点击 OK.。返回可用软件的视图,你会看到这个插件,然后选择Developer Tools (会选中下面的“Android Developer Tools”和 “Android Editors“),点击 Next,最后重启 Eclipse。

3.5 Android SDK

SDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,Android SDK指的既是Android专属的软件开发工具包。

Android是谷歌(Google)公司推出的手机开发平台。与iPhone相似,Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台。

Android SDK包含了开发Android应用所依赖的jar文件、运行环境及相关工具。

下载地址: http://dl.google.com/android/android-sdk_r16-windows.zip

下载完SDK后,把.zip文件解压到你电脑上合适位置。启动 Eclipse,选择window->preferences,在打开的视图左边点击android,在右边的SDK Location中选择Android SDK所在位置。

刚下载下来的SDK的platforms文件夹是空的,可以通过双击SDK Setup.exe来获取具体Android版本,如果连接不上,可以勾选settings下面的force https://....source to be fetched using http://...选项,使用http方式连接

安装完成后,可以点击Available Packages查看已安装的Android版本

点击下图所示的工具栏按钮,打开虚拟设备管理器

点击New新建一台设备,然后设置好相应的值

Skin下Build-in的各个选项如下所示

点击Create AVD完成创建

然后在设备管理器界面选择一个设备,点击Start...启动设备,启动完成后,界面如下所示:

3.6 Tomcat服务器

Tomcat是一个免费的开源的Servlet容器。与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。

Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。这种集成只需要修改一下Apache和Tomcat的配置文件即可。

基于Tomcat的开发其实主要是Jsp和Servlet的开发,开发Jsp和Servlet非常简单,可以用普通的文本编辑器或者IDE,然后将其打包成WAR即可。

3.7 JSP技术

JSP是Java Server Pages的简称,它是由Sun Microsystem公司于1999年6月推出,是基于Java Servlet以及整个Java体系的Web开发技术。作为J2EE体系中的重要一环,JSP为创建高度动态的Web应用提供了一个独特的开发环境。JSP能够适应市场上包括Apache WebServer、IIS4.0在内的85%的服务器产品,这足以胜任绝大多数的商业事务处理。同时JSP代码经过服务器的解释执行后会直接嵌入到HTML语言中,这样就简化了页面的输出,也保留了脚本语言易于使用的优点。SUN公司开发出这个规范来整合和平衡已经存在的规范,对JAVA编程环境进行支持的技术和工具。其结果是产生了一种新的,开发基于WEB应用程序的方法,给予使用基于组件应用逻辑的页面设计者以强大的功能支持。JSP设计目标是为了使动态页面编写更容易,更简单。JSP特点主要有以下几点:到处可执行,JSP技术完全与平台无关的设计,包含它的动态网页和底层Server元件设计,加强元件功能,更容易建立动态网页。

JDBC是Java Data Base Connectivity的简称,也就是java数据库连接。它是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。将Java语言和JDBC结合起来使程序员只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,各处运行“的特点。同时JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中。

3.8 JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是 JavaScript 很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

表示名称 / 值对

  按照最简单的形式,可以用下面这样的 JSON 表示"名称 / 值对":   { "firstName": "Brett" }   这个示例非常基本,而且实际上比等效的纯文本"名称 / 值对"占用更多的空间:   firstName=Brett   但是,当将多个"名称 / 值对"串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个"名称 / 值对"的 记录,比如:   { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }   从语法方面来看,这与"名称 / 值对"相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。

表示数组

  当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在 XML 中,需要许多开始标记和结束标记;如果使用典型的名称 / 值对(就像在本系列前面文章中看到的那种名称 / 值对),那么必须建立一种专有的数据格式,或者将键名称修改为 person1-firstName这样的形式。   如果使用 JSON,就只需将多个带花括号的记录分组在一起:   { "people": [   { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },   { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},   { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }   ]}   这不难理解。在这个示例中,只有一个名为 people的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):   { "programmers": [   { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },   { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },   { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }   ],   "authors": [   { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },   { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },   { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }   ],   "musicians": [   { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },   { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }   ] }   这里最值得注意的是,能够表示多个值,每个值进而包含多个值。但是还应该注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称 / 值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。   在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。

JSON和XML的比较   

◆可读性   

JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。   

◆可扩展性   XML天生有很好的扩展性,JSON当然也有,没有什么是XML不能扩展,而JSON却不能。不过JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。   

◆编码难度   XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有提供的工具。无工具的情况下,相信熟练的开发人员一样能很快的写出想要的xml文档和JSON字符串,不过,xml文档要多很多结构上的字符。  

◆解码难度   XML的解析方式有两种:一是通过文档模型解析,也就是通过父标签索引出一组标记。例如:xmlData.getElementsByTagName("tagName"),但是这样是要在预先知道文档结构的情况下使用,无法进行通用的封装。   

另外一种方法是遍历节点(document 以及 childNodes)。这个可以通过递归来实现,不过解析出来的数据仍旧是形式各异,往往也不能满足预先的要求。   凡是这样可扩展的结构数据解析起来一定都很困难。   

JSON也同样如此。如果预先知道JSON结构的情况下,使用JSON进行数据传递简直是太美妙了,可以写出很实用美观可读性强的代码。如果你是纯粹的前台开发人员,一定会非常喜欢JSON。但是如果你是一个应用开发人员,就不是那么喜欢了,毕竟xml才是真正的结构化标记语言,用于进行数据传递。   而如果不知道JSON的结构而去解析JSON的话,那简直是噩梦。费时费力不说,代码也会变得冗余拖沓,得到的结果也不尽人意。但是这样也不影响众多前台开发人员选择JSON。因为json.js中的toJSONString()就可以看到JSON的字符串结构。当然不是使用这个字符串,这样仍旧是噩梦。常用JSON的人看到这个字符串之后,就对JSON的结构很明了了,就更容易的操作JSON。

编码的可读性,xml有明显的优势,毕竟人类的语言更贴近这样的说明结构。json读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过json的索引.province[0].name就能够读取“黑龙江”这个值。   编码的手写难度来说,xml还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是密密麻麻的有用数据,而xml却包含很多重复的标记字符。

3.9 Android开发平台搭建

Android开发平台搭建步骤:

①首先到http://www.eclipse.org/downloads/下载Eclipse集成开发环境并且解压,这里推荐下载Java Classic 集成版本,可以为平台的搭建省下不少工作。接着再去http://java.sun.com/javase/downloads/index.jsp 站点下载SDK后安装,下载http://dl.google.com/android/android-sdk-windows-1.5_r1.zip,Android SDK1.5后解压。第一步下载工序就结束了。

②双击Eclipse解压后目录中的eclipse.exe然后启动,选择Eclipse菜单中的Help-> Install New Software-> 选项卡上的Available Software,点击右侧的“Add”输入http://dl-ssl.google.com/android/eclipse/后确定,然后在“Work with”下拉菜单中选择刚才输入的网址。过一会就会出现一个Developer Tools选项,勾上以后点击Next以后Eclipse会自动网上查找Android 开发工具插件,然后找到Android DDMS和Android Development Tools,选中这两个点击Finish,Eclipse就会自动下载并安装Android插件了,最后会提示重启Eclipse。

③重启后选择Eclipse菜单中的Windows-> Preferences 在左侧的Android项目中SDK Location中填入Android SDK解压后的目录,然后点击Apply。

④在WindowsXP的系统变量中的path变量中添加一个值,该值指向解压后的Android SDK目录下的tools文件夹。

第四章 程序设计

4.1 功能设计

从系统设计是一个把软件需求转换成用软件系统表示的过程。通过对目标系统的分析和研究,做出了外卖App系统的总体规划,这是全面开发系统的重要基础。在对外卖App系统全面分析调查的基础上,制定出外卖App系统的总体规划。系统设计包括系统总体设计、系统详细设计、系统数据库设计、系统开发工具、开发技术和开发模式等。

从数据流图出发,对数据流图进行分析,得出的层次化的模块结构图.

外卖App系统功能模块图如图4.1所示:

图4.1 外卖App系统功能模块图

4.2 数据库设计

数据库是本系统的核心和基础。它设计的好坏直接影响着整个系统的质量。数据是一切系统设计的基础,通俗地说,数据库设计就像高楼大厦的根基一样,如果设计的不合理、不完善,将在系统开发过程中,甚至到后期的系统维护、功能变更和功能扩充时,引起较多问题,严重时甚至要重新设计,重做大量已完成工作。

1.概念结构设计

从数据需求分析中得出系统的实体属性图。

管理员实体属性图如图4.3所示:

图4.3管理员实体属性图

菜品实体属性图如图4.4所示:

图4.4菜品实体属性图

订单信息实体属性图如图4.5所示:

图4.5订单信息实体属性图

E-R模型的组成元素有:实体、属性、联系。E-R模型用E-R图表示。实体是用户工作环境中所涉及的事务,属性是对实体特征的描述。

模型中的实体相当于实体集、一个表,而不是单个实体或表中的一行。实体用矩形框表示,实体名称标注在矩形框内。用菱形表示实体间的联系,菱形框内写上联系名,用无向边把菱形分别与有关实体相连接,在无向边旁标上联系的类型。

属性是实体的性质。用椭圆框表示,与实体之间用一条线相连表的主码是关键属性,关键属性项加下划线。

各子系统模块中主键相同的字段之间存在着相互关联的关系。

在程序中实现对他们的完整性和一致性控制。

从数据需求分析中得出系统的实体属性图,遵循三范式原则,对实体之间的依赖关系进行了整合,得出系统E-R图。

2.数据库表设计

本软件中有数据需要存储数据。因此选择Mysql数据库作为存储数据的方法,建立数据库b_food,并且建立表。

表4-1 管理员的数据库表admin的结构

属性

数据类型

长度

说明

id

int

11

主键id自增

name

varchar

20

登录名

password

varchar

20

密码

Screen_name

varchar

20

昵称

Type

varchar

1

类型

表4-2 菜品的数据库表food_info的结构

属性

数据类型

长度

说明

food_id

int

11

主键id自增

food_name

varchar

32

名称

food_pic

varchar

255

图片

food_description

varchar

16

描述

food_price

Float

价格

food_discount_price

Float

折扣价

food_flag

Int

11

类型

表4-3订单信息的数据库表orders的结构

属性

数据类型

长度

说明

id

int

11

主键id自增

food_id

Int

11

菜品id

seat

varchar

16

桌号

description

varchar

32

描述

order_date

varchar

32

下单日期

Beizhu

varchar

255

备注

Price

varchar

32

总价格

state

varchar

32

结账状态

表4-4商家信息的数据库表shangjia的结构

属性

数据类型

长度

说明

id

int

11

主键id自增

yonghuming

varchar

200

登陆名

mima

varchar

200

密码

mingcheng

varchar

200

商家名称

dianhua

varchar

200

电话

dizhi

varchar

200

地址

第五章程序开发

5.1 文件结构与用途

在程序开发阶段,首先确定“基于Android平台外卖App系统”的工程名为b_food,据程序模块设计的内容,建立b_food工程。工程源代码的结构如图5.1所示。

图5.1 b_food工程的源代码文件

为了使源代码文件的结构更加清晰,b_food工程设置了多个命名空间,分别用来保存用户界面、数据库、后台服务和工具实体的源代码文件,源代码文件的名称以及说明如表5.1所示。

表5.1 b_food工程的文件用途说明

包 名 称

说 明

备 注

Com.bb

项目的Activity

Com.bb.pojo

POJO对象封装了数据库表

Com.bb.util

项目公共服务类

Android的资源文件保存在/res的子目录中。其中、/res/anim目录中保存的是产生动画效果的XML文件,/res/drawable/目录中保存的是图像文件,/res/values目录中保存的是用来自定义字符串和颜色的文件,/res/xml目录中保存的是XML格式的数据文件。所有在程序开发阶段可以被调用的资源都保存在这些目录中,具体每个资源文件的用途可以参考表5.2:

表5.2 资源文件名称与用途

资源目录

文 件

说 明

drawable

*.png

这个文件夹里是工程里所用的图片,此处不赘述。

layout

*.xml

页面的布局文件

values

color.xml

保存颜色的XML文件

strings.xml

保存字符串的XML的文件

5.2 系统实现

5.4.1登录页

打开应用后,即来到了外卖App系统的登录页面。如下图所示:

5.4.2 首页

点击登陆页右下角的登陆按钮,即来到了外卖App系统的首页界面。如下图所示:

5.4.3点菜

登陆后,即来到了外卖App系统菜品信息的显示界面。如下图所示:

点击列表中的一条信息,进入详细列表界面。如下图所示:

点击“添加到购物车”后,在菜品界面点击menu,点击“购物车”,进入下订单界面。如下图所示:


第六章 系统测试

测试是开发时期最后一个阶段,是保证软件质量的重要手段。软件测试就是在受控制的条件下对系统或应用程序进行操作并评价操作结果的过程,所谓控制条件应包括正常条件与非正常条件。软件测试过程中应该故意地去促使错误的发生,也就是事情在不该出现的时候出现或者在应该出现的时候没有出现。从本质上说,软件测试是"探测",在“探测”中发现软件的毛病。

6.1 软件测试的重要性

软件测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。

事实上,对于软件来讲,不论采用什么技术和什么方法,软件中仍然会有错。采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误密度也需要测试来进行估计。测试是所有工程学科的基本组成单元,是软件开发的重要部分。自有程序设计的那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上。而在软件开发的总成本中,用在测试上的开销要占30%到50%。如果把维护阶段也考虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有许多测试工作。

6.2 测试实例的研究与选择

程序测试的主要方法分为两大类,白盒测试和黑盒测试。

白盒测试:一种是以程序的内部逻辑结构为依据而设计测试用例的方法,因而又称结构测试或玻璃盒测试,将软件看成一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查它与设计是否相符[17]。白盒测试就是要选取足够的测试用例,对源代码实行比较充分的覆盖,以便尽可能多地发现程序中的错误。主要有两种方法:一种称为逻辑覆盖法,另一种称为路径覆盖法。

黑盒测试:也称功能测试,数据驱动测试等,它将待测对象堪称是一个黑盒子,在完全不考虑程序的内部结构和特性的情况下,只依据规格说明书检查程序的功能是否能正常使用。

黑盒测试主要是根据输入条件和输出条件的确定测试数据,来检查程序是否能产生正确的输出。进行黑盒测试主要有下面几种方法:等价分类法、边界值分析法、猜错法、因果图法。

本系统的测试综合了白盒测试、黑盒测试两种方法,但主要使用的是黑盒测试方法。在测试当中遵循了“尽早地和不断进行测试”,“保证测试用例的完整性和有效性”原则。通过测试达到以下测试目的:

1.功能检查:检查功能是否争取,是否遗漏或实现不了应该实现的功能等。

2接口检查:检查能否正确地接受信息或输出信息。

3数据检查:检查数据结构或外部信息是否有(如数据文件)访问错误。

4性能检查:检查性能需求能否得到满足。

5初始化、终止检查:检查是否能进行正确地初始化或终止。

6.3 测试环境与测试条件

处理器:Inter(R) Core (TM)2 Duo T5750

内存:2GB

硬盘:160G

操作系统:Windows XP

Android虚拟机版本:2.3

6.4 系统运行情况

通过对系统的全面测试,所有测试条目都已经通过,实现了基本要求,系统可以正常运行。

6.5 系统评价

系统评价是指系统在正式运行了一段时间之后,对它在功能上、技术上和经济上所进行的审核评价。针对本系统的评价如下:

(1)系统功能评价

根据本系统开发前所订的目标,在系统完成后经过测试运行,该系统达到了预定的开发目标,在实际使用中的功能可以满足用户需求。

(2)系统技术评价

本系统设计合理,功能达到了预期目标,且系统运行后稳定可靠,安全性高,具有实用性,大大提高了办公效率。

(3)系统经济评价

在规定时间内,该系统完成了系统分析时所确定的系统开发目标,达到了设计要求,投入使用后为用户节省了大量人力物力财力,提高了科学管理水平。

总结

经过数个月的努力,Android平台外卖App系统软件终于完成了。由于对JAVA浓厚的兴趣引发了我对Android的好奇心,从一开始什么都不懂一直摸索着运用了很多高级技术完成了这个软件。

在这个过程中,我学会了很多知识,比如Android环境的搭建、Intent、Activity等,但我学会的最重要的一点是,利用现有的资源去解决问题,在图书馆、在网络上寻找答案。

虽然,这个软件目前运行良好,但是我认为代码的健壮行还很差,在整个工程的构思方面也不足,用户操作界面还不够灵活,这些问题还需要今后逐一解决。与此同时,这个软件还可以进一步扩展,例如“新闻资讯”等,是功能更加强大,带给用户更好的体验与生活的便捷。

参考文献

[1] http://developer.android. com

[2]Google Buys Android for Its Mobile Arsenal.Businessweek.com.2005.08

[3]Lynnette Luna. Android now dominates mobile OS market and it may lean in malware too.fiercemobileit.com. 2011.03

[4] Day 74 Sales: Apple iPhone vs. Google Nexus One vs. Motorola Droid.

[5]Barra, Hugo (10 May 2011). "Android: momentum, mobile and more at Google I/O". The Official Google Blog. Retrieved 10 May 2011

[6]杨丰盛. Android应用开发揭秘[M] 第一版.北京:机械工业出版社. 2010年

[7]靳岩,姚尚朗. Android 入门开发与实践[M] 第一版. .北京:人民邮件出版社. 2009.

[8] http://www.apkbus.com

[9]朱桂英. Android开发应用从入门到精通[M]. 第1版. 中国铁道出版社, 2011.

[10] 扶松柏,于秀青. Android开发从入门到精通[M]. 第1版. 北京希望电子出版社, 2012.

[11]yizhi237. Android开发从入门到精通学习文档[EB/OL]. [2013-3-8]. http://wenku.baidu.com/view/ef571e135f0e7cd18425364f.html.

[12] ShaneConder. Android移动应用开发从入门到精通[M]. 第1版. 人民邮电出版社, 2010.

[13] 埃克尔. Thinking in java[M]. 1. 机械工业出版社, 2007.

[14] Cadenhead R. Java入门经典[M]. 第1版. 人民邮电出版社, 2012

2

致 谢

本课题的设计和论文撰写过程中,我的指导老师给予了极大的帮助,为我提供了大量的相关资料。在完成课题设计的过程中,老师在总体设计思想上给予了许多重要的实际指导,拓展了我的思路,使得我得以完成了任务。在此,我对老师的指导表示衷心的感谢。

同时,我也衷心的感谢大学四年来对我的精心栽培,良好的校园环境、精良的师资队伍、浓厚的校园文化都让我深深怀念,都为我进入社会提供了莫大的帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/49895.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OLLVM环境搭建-Ubuntu20.04

OLLVM环境搭建-Ubuntu20.04 注:这里没有使用配置NDK环境 什么是混淆和OLLVM? 关于OLLVM介绍这里极力推荐直接看这个Deobfuscation: recovering an OLLVM-protected program 早在1997年,学术界就开始了代码混淆的研究。目前使用最广泛的混…

Android音乐播放器的设计与实现

课程设计报告 实习名称 课程设计2 设计题目 Android音乐播放器的设计与实现 目录 摘要11 1 引言22 2 可行性分析22 2.1 技术可行性22 2.2 经济可行性33 2.3 管理可行性33 2.4 可行性分析结论33 3 系统需求分析44 3.1 功能分析44 3.2 数据流程分析44 4 系统功能设计66 4.1 播放器…

A Survey on Multimodal Large Language Models

本文是LLM系列的文章之一,主要是讲解多模态的LLM。针对《A Survey on Multimodal Large Language Models》的翻译。 多模态大语言模型的综述 摘要1 引言2 概述3 方法3.1 多模态指令调整3.1.1 引言3.1.2 前言3.1.3 模态对齐3.1.4 数据3.1.5 模态桥接3.1.6 评估 3.2 …

云存储,为 AI 创新提速

当下,如火如荼的 AI 大模型对算力和数据存储提出了更高的要求。在 6 月 1 日结束的“阿里云峰会粤港澳大湾区”上,阿里云智能资深产品专家彭亚雄在 AI 新范式与商业创新论坛上做了《云存储,为 AI 创新提速》的主题分享。彭亚雄认为&#xff0…

聊聊 AI 平台存储方案和选型

最近火爆全网的 ChatGPT 再次带来一股 AI 热潮。 过去的五年,AI 快速发展并应用到很多领域中。作为一家存储企业,我们也感受到了 AI 行业的活力,和我们交流团队中,AI 企业越来越多,有自动驾驶、蛋白质结构预测、量化投…

详解 Redisson 分布式限流的实现原理

本文分享自华为云社区《详解 Redisson 分布式限流的实现原理》,作者: xindoo。 我们目前在工作中遇到一个性能问题,我们有个定时任务需要处理大量的数据,为了提升吞吐量,所以部署了很多台机器,但这个任务在…

AI日报|哈佛“AI教授”即将上线;首个生成式AI技能专业证书来了;电话推销员很烦?AI帮你“制裁”他

今日值得关注的人工智能新动态: 将GPT-4用在课程设计中 哈佛大学“AI教授”即将上线 微软推出首个生成式AI技能专业证书 纽约州议会:伤害或羞辱他人的deepfake是非法的 阿诺德施瓦辛格:《终结者》中的AI已成现实 AI诊断“老年痴呆”&…

甜品网站界面

最开始就是logo部分和导航栏部分 logo部分就是用的div里面写img然后给浮动就可以了 第二个是导航栏部分 用的也是无序标签 代码如下: 轮播图部分 没做出来效果 甜蜜约会品牌简介 红色框框以外的我用的是 div img 和 p标签做的 这些很简单 就不展示代码了 红色边…

教你简单学会用Python画长草颜团子

相信大家都知道可爱的长草颜团子,它应该在很多人的表情包中占有一席之地,那么就今天我们试着用Python的turtle模板来画一个长草颜团子吧! 这么可爱的团子谁不想要试着自己画出来呢哈哈哈 源码如下: #8X_I import turtle as t t.…

鱼香肉丝(集锦)

1: 鱼香肉丝的简单制作 2 :鱼香肉丝的来历与制作 3: 鱼香肉丝制作 4:鱼香肉丝 1 鱼香肉丝的简单制作 作者: 时间: 2006-1-17 10:17:00 摘自:http://www.517sc.com/food/xyz/17_54_51330.html 材…

用 Python 画如此漂亮的插图 ,So easy

人生苦短,快学Python! 今天我们进行一次实战案例分享,以全球预期寿命与人均 GPD数据为例,写一篇 Python 中漂亮散点图的快速指南。除了正常的数据清洗/处理、还会进行简单的统计分析,实现数据处理-统计分析-可视化一条…

做个合格的吃货~Python爬取全国火锅店,并利用地图可视化展示~

导语:天越来越冷啦~ 前段时间又刮起了入冬四件套(烤红薯、热奶茶、糖炒栗子、糖霜山楂)的热风~ 小编也紧跟着潮流下班兴冲冲的跑去买~(附近店面的排队的人实在是太多了~风还大😷😷) 一到手…

美食杰项目(七)菜谱大全

本文目录 前言:1.具体样式2.实现的具体功能和代码思路3.element ui具体样式的网址4.相关代码5.总结: 前言: 本文给大家讲的是美食杰项目中菜谱大全项目的具体样式,代码思路和具体代码,希望能帮助到你 1.具体样式 2.实…

鱼香肉丝里到底有没有鱼?

鱼香肉丝,算是我最爱的一道菜了,无论饭店大小,他都是我首先就要找的菜,可谓痴迷,但是鱼香肉丝里到底有没有鱼?这是个千古之谜,这篇来自三个料理人的文章《千古之谜,鱼香肉丝里到底有…

Python爬虫:简单爬取粤菜菜谱

项目场景: 简单爬取粤菜菜谱。 实现思路: 访问主页,获取每个菜品的菜名、图片、详情页面网址。 访问上一步中获得的所有详情页面,获取工艺、口味、时间、主料、辅料信息。 清洗所获得的数据。 保存至本地文件。 实现过程&a…

文心一言的魔性作图,我头都笑掉了...

这几天看到网友们用文心一言作的图,看了后我都愣住了。。。 AI 作画 -- 三得利乌龙茶 AI 作画 -- 娃娃菜 AI 作画 -- 车水马龙 AI 作画 -- 驴肉2火烧 AI 作画 -- 唐伯虎点秋香 AI 作画 -- 鱼香肉丝 AI 作画 -- 胸有成竹 AI 作画 -- 夫妻肺片 AI 作画 -- 红烧狮子头 …

使用chrome浏览器插件postman模拟post、get请求

使用chrome浏览器插件postman模拟post、get请求 postman为chrome浏览器的一个插件,用来模拟post请求,get请求等。可以在chrome浏览器里安装插件(前提是你得访问了Google应用商店)。 如果不能访问Google,那个下载一个p…

chrome浏览器无法开启同步功能 request cancel

找了很多亲测最新100版本可用!!! 步骤 1、从下面链接提取google插件【Chrome-Sync-Helper】 链接: https://pan.baidu.com/s/1FTxrQ-IRjRmYdW5HcNateA 提取码: htga (如链接失效,请留言反馈!) …

Chrome 添加【微信 / QQ】内置浏览器(解决 “请在微信客户端打开链接” 提示)

前言 有些链接,是需要在微信客户端内才能打开的,那么想在 PC 端的浏览器上打开,怎么办呢? UA 不明白的话先不用管,继续往下看。 【安卓QQ内置浏览器UA】 Mozilla/5.0 (Linux; Android 5.0; SM-N9100 Build/LRX21V…

chrome浏览器控制台发送post请求

谷歌浏览器,点击F12,在控制台中输入下面代码,直接回车即可:(需要修改一下Admin-Token的值即可) 设置访问的Controller路径,“http://127.0.0.1:8090/api/dwStandard/superUploadBigFile” met…