毕业论文-基于Android系统的投票软件.doc_第1页
毕业论文-基于Android系统的投票软件.doc_第2页
毕业论文-基于Android系统的投票软件.doc_第3页
毕业论文-基于Android系统的投票软件.doc_第4页
毕业论文-基于Android系统的投票软件.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

毕毕 业业 论论 文文第 1 页 共 27 页 目目 录录 1 绪论.1 1.1 研究背景及研究意义.1 1.2 Android 应用的发展趋势.2 1.3 研究内容.2 1.4 论文结构.2 2 系统开发工具与相关技术介绍.3 2.1 框架概述.3 2.2 SQLite(SQLite 数据库).3 2.3 Eclipse .4 2.4 Android SDK.5 2.5 Java 语言.6 3 ANDROID 程序结构.7 3. 1 Android 的 API .7 3. 2 Android 应用程序结构.8 4 需求分析.12 4.1 总体需求分析.12 4.2 资料调研分析.12 4.2 市场需求分析.12 4.3 可行性分析.13 4.4 手机软件开发平台的选择.13 4.5 各个模块功能需求分析.14 5 系统详细设计.20 5.1 本系统测试实施.20 5.2 测试结果.21 毕毕 业业 论论 文文第 2 页 共 27 页 结 论.36 致 谢.37 参 考 文 献.38 1 绪论绪论 近年来,随着移动互联网的迅速发展为人们面临的选择也多了起来。本课题拟设 一个网上投票的应用,用户可以通过发起一个投票让自己的好友、陌生人或是“上帝” 来帮你选择,正所谓,当局者迷,旁观者清,此应用对于总是纠结二选一或多选地的 业主具有一定的推广应用价值。Android 是一种以 Linux 为基础的开放源码操作系统, 主要使用于便携设备。目前尚未有统一中文名称,中国内陆地区较多的人使用安卓(非 官方)或安致(官方)。Android 在 2005 年的时候由 Google 公司收购注资, 2010 年的年 末得出的数据显示,仅仅正式推出两年的 Android 操作的系统的已经超越了称霸了世 界十年的诺基亚的 Symbian 操作系统,一跃成为全球最受欢迎的智能的手机平台之一。 Android 中的 UI 框架设计有些类似于网站开发的 MVC 框架1,它具有标准化编程,容易 修改等一些特点,非常容易上手,操作,非常的方便,同时也非常的符合现阶段的流行的背 景。因此,本系统采用的 Android 系统提供的 UI 布局进行框架设计。在 UI 的基础上 进行各种程序和各种功能的编写,面向用户,让用户有更加舒适的体验。 1.1 研究背景及研究意义研究背景及研究意义 据 2013 年市场研究公司 IDC 公司研究报告显示出 Google 的 Android 操作系统和 苹果公司的 IOS 操作系统已经占据全球智能手机市场大概 91.1%,而其中,使用 Android 操作系统的手机占据市场的 70.1%,远远领先排名第二的 IOS。本系统描述的 是在日常的生活中,人们面临问题时而不知从何下手或是不知从选择哪个结果,与此 同时仅仅正式推出两年的 Android 操作系统的已经超越称霸十年的诺基亚的 Symbian 系统一跃全球最受欢迎的智能手机平台之一。而如今社会条件水平的提高人们面临的 选择也多了起来。由此一来,人们便可以通过本应用向自己的好友发起一个投票,来 确认最终的答案。 1.2 Android 应用的发展趋势应用的发展趋势 随着 3G 移动互联网应用的不断的开发推广,用户会越来越需要更加的个性化、优 毕毕 业业 论论 文文第 3 页 共 27 页 质化的多媒体信息的数据服务,用户们都希望能够随时、随地无缝地利用 3G 网络来进 行办公、网上交易、游戏娱乐、欣赏电影电视节目、收听广播和下载音乐等。根据系 统的调查,在不久的以后,移动手机终端一定会在以下的很多方面具有创新性的发展3。 在安全性上也将会更加出色,能够十分有效帮助用户对获取到的内容进行管理, 可以保护用户隐私和基于手机的内部金融活动。例如电子钱包、在线支付、支付宝、 在线贸易等部分功能的安全,成为我们的生活中不可缺少的一大部分。 1.3 研究内容研究内容 该软件主要针对自己拿不定主意的人。比如说面对一个问题自己有了 A、B、C. 多个选项,而自己又只能有一个选择却不知从哪下手选哪一个。而这款软件就是可以 帮你选择,你发起一个投票,让你的好友,或是陌生人,或是上帝来帮你选择,如果 你方便说出来,你也可以匿名来向你的好友投票。 1.4 论文结构论文结构 本文第 2 章对实现系统所有的技术和工具进行了介绍;第 3 章对系统关键技术 Android 程序结构进行了简单的介绍;第 4 章对系统需求进行了详细的分析以及所遇到 的关键问题及解决方案做了阐述;第 5 章对系统进行了测试。 2 系统开发工具与相关技术介绍系统开发工具与相关技术介绍 2.1 框架概述框架概述 本设计主要讲述了发起一个投票到列表展示,基于 Android 平台的软件开发,数 据库的设计方法,设计最终达到了发起投票、列表展示、投票分类、投票收藏的基本 毕毕 业业 论论 文文第 4 页 共 27 页 功能,并且系统能够正常的运行,各个页面的交互性比较好。在整个设计中基本运用 是基础的 Android 开发语言进行编程。同时也运用了一些 UI 控件进行人机交互,来完 成投票类别的筛选功能,通过 SQLitedatase 语言进行与数据库的链接,详细的展示了 系统的各个功能模块,并给出了主要运行界面图,该系统目前已经有比较完善的管理 与使用功能。 2.2 SQLite(SQLite 数据库)数据库) SQLite 提供结构化的数据存取。SQLite 是一款轻型的数据库,它的设计最初目标 是嵌入式的,目前已经在很多嵌入式产品使用了它,它占用的资源非常低。它能够支 持例如 Windows/Linux/Unix 等主流的操作系统,同时能够跟很多程序语言相结合,比 如 PHP,Java 等,SQLite 是无数据类型的数据库。虽然在生成表结构的时候,要声明 每个域的数据类型是按照开发人员的需求进行设计,但 SQLite 并不做任何检查。开发 人员要靠自己的程序控制输入与读出数据的类型是正确的。这里有一个例外,就是当 主键为整型值时,如果要插入一个非整型值时会产生异常。另外,虽然在插入或读出 数据的时候是不区分类型的,但在比较的时候,不同数据类型是有区别的。SQLite 实 现了完备的、可嵌入的、零配置的 SQL 数据库引擎。它的特点包括: 1)事务处理是原 子的、一致的、独立的和持久的(ACID),即使在系统崩溃和掉电以后。 2)零配置, 即不需要设置和管理。3)实现了绝大部分的 SQL92 标准。 4)一个单独的跨平台的磁盘 文件存储一个完整的数据库。 5)支持数据库文件大小至 2TB,支持 G 级别的串和二进 制大对象。 6)代码量小,即小于 30K 的 C 代码行和小于 250K 的代码空间(Gcc 在 i486 上)7)对于绝大多数普通操作来说,比流行的 C/S 模式的数据库引擎运行速度快。 8)API 简单、易用。9)数据库文件在机器之间可自由共享。 10)自包含:没有外部依 赖性。11)字符串和 BLOG 的大小只受限于可用存储器容量;数据库用 SQLite expert personal 打开 如图 2.1 所示: 毕毕 业业 论论 文文第 5 页 共 27 页 图 2.1 SQLite expert personal 2.3 Eclipse 本系统使用 Eclipse4.3 开普勒来开发。 Eclipse 是一个源代码开放的、基于 Java 的 可扩展的开发平台如图 2.2 所示。就其本身而言,它只是一个框架和一组服务,用于通 过插件和组件来构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 的开发工具(Java Development Kit,JDK)7。 Eclipse 是使用 Java 语言开发的,但是它的用途并不限仅于 Java 语言;例如, 支持诸如 C/C+ 、COBOL 等编程语言的插件都已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的开发的其他应用程序类型的基础,比如内容管理 系统8。 毕毕 业业 论论 文文第 6 页 共 27 页 图 2.2 Eclipse 开发工具 2.4 Android SDK 使用 Eclipse 开发 Android 应用需要下载 Android SDK (Software development kit, 软件开发工具包)下载好 Android SDK 后,开始安装,Android SDK 采用了 Java 语言, 所以需要先安装 JDK 5.0 及以上版本。直接下载 JDK 安装文件安装最为方便。Android SDK 的使用不用安装,下载后,直接解压即可,将下载后的 SDK 的压缩包解压到适当 的位置,就是这么简单。使用 Eclipse 进行 Android 应用开发需要给 Eclipse 装 ADT 插 件,这样 Eclipse 就可以和 Android SDK 建立好连接,然后就可以在 Eclipse 中启动 Android 虚拟机进行程序调试等 ADT 插件安装这里不再累赘,直接下载 ADT 的 zip 包 安装安装完插件后,只需要做一些简单的配置:在 Eclipse 中,选择 Window 菜单在下 拉菜单中选择 Preference;从左侧的菜单中,选择 Android 项;设置 SDK Location,点 Browse 选择 SDK 的安装根目录如图 2.3 所示;完成,开始进行 Android 应用开发。 毕毕 业业 论论 文文第 7 页 共 27 页 图 2.3 为 Eclipse 添加 SDK 2.5 Java 语言语言 Java 是一种简单的,跨平台的,面向对象编程(Object Oriented Programming,OOP)的,分布式的,解释型的,健壮的安全的,结构的中立的,可移 植的,性能很优异的多线程的,动态的学院派语言。当 1995 年 SUN 推出 Java 语言之 后,全世界的目光都被这个神奇的语言所吸引。Java 语言具有七大特性:1)平台无关 性是指 Java 能运行于不同的平台。Java 引进虚拟机 原理,并运行于虚拟机,实现不 同平台的 Java 接口之间。使用 Java 编写的程序能在世界范围内共享。Java 的数据类型 与 机器无关,Java 虚拟机(Java Virtual Machine)是建立在硬件和操作系统之上,实 现 Java 二进制代码的解释执行功能, 提供于不同平台的接口的。2)安全性 Java 的编 程类似 C+,学习过 C+的读者将很快掌握 Java 的精髓。Java 对程序提供了安全管理 器,防止程序的非法访问。3)面向对象 Java 吸取了 C+面向对象的概念,将数据封装 于类中,利用类的优点,实现了程序的简洁性和便于维护性 4)分布式 Java 建立在扩展 TCP/IP 网络平台上。5)健壮性 Java 致力于检查程序在编译和运行时的错误。6)解释型 Java 是把程序编译成称为自字节码的一种“中间代码”。字节码是很接近机器码的文件, 可以在提供了 java 虚拟机(Java Virtual Machine,JVM)的任何系统上被解释执行.7) 毕毕 业业 论论 文文第 8 页 共 27 页 动态 java 程序的基本组成单元就是类9。 3 Android 程序结构程序结构 本段从 Android 的 API、应用程序、intent、Android Activity 的生命周期及 Fragment 的生命周期对 Android 应用程序结构进行了介绍。 3. 1 Android 的的 API Android 的 API 主要包括下面几部分: 3.1.1 注册清单 AndroidManifest.xml 是系统的控制文件,是 Android 控件和组建进行注册和配置的 位置它告诉系统如何处理所创建的所有应用组件(尤其是 (Activity),服务(Service), Intent(Intent Receiver)和内容提供者(Content Provider)。 3.1.2 活动 Activity 就是一个有生命周期的对象。一个 Activity 就是完成某些工作的代码块, 这部分工作还可能包括对用户 UI 界面的显示。 3.1.3 视图 视图可以将其自身绘制到屏幕上。Android 的用户界面由一系列的视图树构成。接 口都是由一组以树的形式出现的视图组成的。开发者可以通过创建一个新的视图的方 法来使用自定义的图形处理技术(比如开发游戏,或者是使用了不常用的用户图形窗口 界面。 3.1.4 意图 Intent 是一个简单的消息对象,它表示程序想做某事的“意图”。比如应用程序想要 显示一个网页,那么它可以通过创建一个 Intent 实例并将其传递给系统来表示 Intent 浏 览这个 URI。系统将定位到能处理这一 Intent 的代码(在当前情况下就是浏览器),并运 行之。Intent 也可以用于广播系统范围内的有效事件(例如通知事件)。 3.1.5 服务 Service 是运行在后台的一段代码。它可以运行于它自己的进程,也可以运行在其 他应用程序的进程里,这取决于自身的需要.。其它的组件可以绑定到一个服务上来, 通过远程过程调用(AIDL)来调用这个方法10。 3.1.6 通知 毕毕 业业 论论 文文第 9 页 共 27 页 通知将以小图标的形式呈现在状态栏里,用户通过与图标的交互来接收消息。最 常见的通知包括短信息、通话记录和语音邮件,但是应用程序也可以创建它们自己的 通知事件。 3.1.7 内容提供者 Content Provider 是用来提供对设备上数据进行访问。典型的例子就是使用 Content Provider 来访问联系人列表。应用程序也可以使用其它程序通过 Content Provider 提供 的数据,同时也可以定义自己的 Content Provider 来向其它应用提供数据访问服务。 3. 2 Android 应用程序结构应用程序结构 通常由以下五个组件来构建一个完整的 Android 应用程序: 1)Activity 2)Intent 3)Service 4)Content Provider 5)BroadcastReceiver 然而,并不是所有的 Android 应用程序都必须具备上面的四个组件,可以由上面 的一个或几个来组建。当决定使用以上哪些组件来构建 Android 应用程序时,需要将 它们在 AndroidManifest.xml 清单配置文件中注册,这是一个 XML 配置文件,在这个 文件中可以声明应用程序组件以及它们的特性和要求。这个清单配置文件是每个 Android 应用程序都必不可少的。 3.2.1 Activity Activity 是以上四个组件中最常用的一个。每个 Activity 都是 Activity 的子类,并 实现了一些独有的功能,如管理 UI 显示和 UI 的反馈事件。一个 Activity 就相当于应 用程序的一个用户界面,由事件响应以及视图等组成。大多数的应用程序通常包括多 个界面。例如:一个文本聊天应用程序,至少应该包含一个联系人列表界面、一个聊天 界面、一个设置界面、一个聊天记录查询界面等等。每个界面其实都可看作是一个 Activity。显示一个新界面就相当于生成一个对应的 Activity 对象。Activity 生命周期: Activity 一生中有七种不同的状态。生命周期分为创建、启动、开始、霸屏、暂停、停 止、销毁。是进行 Android 程序开发的重要一环,不了解 Activity 的生命周期就不知 道在每一个部分的内容该怎么写,哪一部分的代码写到哪里,所以设备的主屏是大多 毕毕 业业 论论 文文第 10 页 共 27 页 数任务的启动位置,当用户触摸一个应用程序启动器图标(或者 app 快捷图标),应 用程序的任务就会在前台显示。如果相关应用程序的任务不存在,那么就会有一个新 的任务被创建,并且应用程序打开的“主”Activity 会作为任务中的根 Activity。Activity 的生命周期如图 3.1 所示: 图 3.1 Activity 的生命周期 Android 的四种启动模式: 1)standard:(standard 是系统默认的启动模式)标准启动模式,每次激活 Activity 时都会创建 Activity,并放入任务栈中。如果启动此 Activity 的 Intent 中没有设置 FLAG_ACTIVITY_NEW_TASK 标志, 则这个 Activity 与启动他的 Activity 在同一个 Task 中,如果设置了 Activity 请参考上面 FLAG_ACTIVITY_NEW_TASK 的详细说明, launchMode设置为standard的 Activity 可以被实例化多次, 可以在 Task 中的任何位 置, 对于一个新的 Intent 请求就会实例化一次11。 2)singleTop:如果在任务的栈顶正好存在该 Activity 的实例, 就重用该实例,而 不会创建新的 Activity 对象,不过它会调用 onNewIntent 方法。如果栈顶部不存在就会 创建新的实例并放入栈顶(即使栈中已经存在该 Activity 实例,只要不在栈顶,都会创 建实例)。如果启动此 Activity 的 Intent 中没有设置 FLAG_ACTIVITY_NEW_TASK 标 毕毕 业业 论论 文文第 11 页 共 27 页 志, 则这个 Activity 与启动他的 Activity 在同一个 Task 中,如果设置了 Activity 请参考上 面 FLAG_ACTIVITY_NEW_TASK 的详细说明,launchMode设置为singleTopActivity 可以被实例化多次, 可以在 Task 中的任何位置, 对于一个新的 Intent 请求如果在 Task 栈顶, 则会用栈顶的 Activity 响影 Intent 请求,而不会重新实例化对象接收请求, 如果没 有在栈顶, 则会实例化一个新的对象接收 Intent 请求 3)singleTask:如果在栈中已经有该 Activity 的实例,就重用该实例(会调用实例的 onNewIntent)。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如 果栈中不存在该实例,将会创建新的实例放入栈中。和 singleTop 在名字上即可看出区 别,即 singleTop 每次只检测当前栈顶的 Activity 是否是我们需要请求创建的,而 singleTask 则会检测栈中全部的 Activity 对象,从上向下,如果检测到是我们所请求的 则会消灭此 Activity 对象上面的对象,直接把检测到的我们需要的 Activity 置为栈顶。 launchMode设置为singleTask的 Activity 总是在栈底, 只能被实例化一次, 它允许其 它 Activity 压入singleTask的 Activity 所在的 Task 栈,如果有新的 Intent 请求有此标志 的 Activity, 则系统会清除有此标志的 Task 栈中的全部 Activity,并把此 Activity 显示出 来。 4)singleInstance:在一个新栈中创建该 Activity 实例,并让多个应用共享该 Activity 实例。一旦这种模式的 Activity 实例存在于某个栈中,任何应用再激活这个 Activity 时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁 激活该 Activity 都会进入同一个应用中。此启动模式和我们使用的浏览器工作原理类似, 在多个程序中访问浏览器时,如果当前浏览器没有打开,则打开浏览器,否则会在当 前打开的浏览器中访问。此模式会节省大量的系统资源,因为他能保证要请求的 Activity 对象在当前的栈中只存在一个。 3.2.2 Intent Intent 用于封装程序的”调用意图“。两个 Activity 之间,可以把需要交换的数据封 装成 Bundle 对象,然后使用 Intent 携带 Bundle 对象,实现两个 Activity 之间的数据交 换;Intent 还是各种应用程序组件之间通信的重要媒介。不管想启动一个 Acit.ivity、Service 还是 BroadcastReceiver,Android 均使用统一的 Intent 对象来封装这 种启动意图很明显使用 Intent 提供了一致的编程模型;Intent 还有一个好处,如果应用程 序只是想启动具有某种特征的组件,并不想和某个具体的组件耦合,则可以通过在 毕毕 业业 论论 文文第 12 页 共 27 页 intent.filter 中配置相应的属性进行处理,与 stucts2 中的 MVC 框架思路类似。Intent 对 象大致包括 7 大属性:ComponentName、Action、Category、Data 、Type、 Extra、Flags。Intent 启动 Activity 的 Flag 属性用法例如: 如果依次启动了四个 Activity:A、B、C、D。 在 D Activity 里,跳到 B Activity,同时希望 D 和 C 都 finish 掉,可以在 startActivity(intent)里的 intent 里添加 flags 标记,如下所示: Intent intent = new Intent(this, B.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); 这样启动 B Activity 的同时,就会把 D、C 都 finished 掉。如果 B Activity 的 LaunchMode 是默认的“standard”,则 B Activity 会首先 finished 掉旧的 B 页面,再启动 一个新的 Activity B。 如果不想重新再创建一个新的 B Activity,而是重用之前的 B Activity,可以将 B Activity 的 LaunchMode 设置为“SingleTask”。特别需要注意的是: 在部分手机中,如三星手机。即便是 SingleTask 也会产生新的页面,而不是重用之前 的页面。 3.2.3 Fragment Fragment 是在 Android 3.0 (API level 11)开始引入新的 API 技术。 为了提高代码重 用性和改善用户体验,我们将 Activity 中的 UI 组件进行分组和模块化管理。这些分组 后的 UI 组件就是 Fragment。一个 Activity 页面中可以包含多个 Fragment 模块,而同一 个 Fragment 模块也可以被多个 Activity 使用。每个 Fragment 有自己的布局,有自己的 生命周期。虽然 Fragment 拥有自己的生命周期,但因为 Fragment 必须被嵌入到 Activity 中使用,因此 Fragment 的生命周期是受其 Activity 宿主的生命周期所控制的。 当 Activity 暂停时,该 Activtiy 内的所有 Fragment 都会暂停;当 Activity 被销毁时,该 Activity 内的所有 Fragment 都会被销毁。 毕毕 业业 论论 文文第 13 页 共 27 页 4 需求分析需求分析 4.1 总体需求分析总体需求分析 在网络飞速发展的今天,在社会更新换代的今朝,很多自己纠结的问题但又不好 意思打电话问朋友,依靠这款软件不仅可以匿名向好友说出自己纠结的问题,也可以 帮助其他朋友解决一些纠结的问题。这样既帮助了自己也帮助了他人。 4.2 市场需求分析市场需求分析 Google 推出 Android 手机操作以来,被各大手机厂商争相追捧,HTC、摩托罗拉、 三星、LG、魅族、联想、中兴、华为等手机厂商纷纷采用 Android 手机操作系统。自 价值 1999 的高配置小米手机盛行以来,Android 系统更是被普遍应用。中国三大运营 商中国移动、中国联通、中国电信更是推出了 3G 手机 4G 手机合约购机计划 12。 4.3 可行性分析可行性分析 可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决, 是否值得解决。在前期调查的基础上,复查并确定系统的目标,规模和功能,对所开 发项目的背景和意义进行分析,并草拟初步的开发计划,主要从技术可行性和操作可 行性两方面研究分析15。 4.3.1 技术可行性分析 技术可行性是对要开发项目的功能性能和限制条件进行分析,使用现在的技术能 否实现系统达到的目标。 Android 是近年来推出的新型手机操作系统平台,技术先进。Android 房屋租售信 息检索系统要求 UI 简洁大方,操控简单易用,注重用户体验(Android 在这一点上, 做的非常优秀)。软件中有一些数据需要存储,如浏览房屋历史、收藏的房屋等等, 这些数据都可以存在 Android 内置的 SQLite 数据库中。此外,Android 房屋测试后需 要将测试结果提交给开发人员,这些功能在 Android 平台的手机上都可以做到。 4.3.2 操作可行性分析 毕毕 业业 论论 文文第 14 页 共 27 页 在需求分析中已明确了此手机软件项目的需求,根据项目需求和自己现在所掌握 的知识,本人认为完全有能力在现有的时间完成这款软件的开发与测试。并且测试软 件的界面设计时,会更多的考虑用户使用时的感受,设计出方便操作且简洁大方的界 面。 4.4 手机软件开发平台的选择手机软件开发平台的选择 手机软件开发平台有很多,目前国内主流的有苹果的 IOS(iphone OS),谷歌的 Android,微软的 WM(Windows Mobile)等等。本项目采用了 Android 开发平台,主 要 平台无关性。 苹果 IOS 平台的应用软件需要在装有 MAC 操作系统的计算机上开发, Android 平台上的应用软件可以在装有 Windows,Linux,或 MAC 等多种操作系统的 计算机上开发,考虑到 MAC 操作系统的诸多不便,所以放弃了 IOS 平台;此外, WM(windows mobile)平台应用软件的开发语言是 C+,开发环境是 Visual Studio, 而 Andriod 的开发语言是 Java,开发环境是 Eclipse,考虑到对 Java+Eclipse 的开发环 境更为熟悉,所以本项目采用了 Android 平台开发。 4.5 各个模块功能需求分析各个模块功能需求分析 4.5.1 系统总体需求分析 根据前面的分析,绘制系统需求图,如图 4.1 所示: 毕毕 业业 论论 文文第 15 页 共 27 页 图 4.1 系统需求图 4.5.2 各个模块需求分析 a)广场模块 利用一个书签选项卡将广场分为两个部分一个投票一个活动。两个模块均使用 ListView 进行列表的展示,使用户可以更直观的看到最新信息、并且利用 ViewPager 可以实现两个模块的侧滑效果,这样使用户的体验会更好。通过筛选功能可以对广场 的投票进行筛选。 毕毕 业业 论论 文文第 16 页 共 27 页 广场投票、活动 广场筛选 毕毕 业业 论论 文文第 17 页 共 27 页 b)票夹模块 票夹模块主要分为:投票、活动、收藏;投票模块主要展示自己发起的、参与过的 投票;而活动模块主要展示了自己发起和参与的活动;而收藏模块主是展示自己收藏过 的投票(现在还没有收藏活动的功能),这三个模块均使用了 ListView 进行数据的展 示。在票夹中利用 ListView 的自定义适配器 BaseAdapter,进行数据填充,实现了一个 简单的时间轴效果。 票夹 c)发起模块 发起模块分为发起文本票、数字票以及活动。这个大模块也是这后来主要负责的 一个模块;发起文本票和发起数字由于界面十分相似,所以他们用了一个界面。发起 文本票中选项模块利用代码实现动态添加每个选项,预置结果利用了自定义的 Spinner. 实现了一个理想状态的下拉选项卡。而截止时间选择器是模仿了 IOS 的滚轮选择效果, 这样用户体验也十分的好。选择媒体文件,可以通过拍摄和相册选择两种方法得到图 片,拍照利用了 Android 中自带的方法: 毕毕 业业 论论 文文第 18 页 共 27 页 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment .getExternalStorageDirectory(),temp.jpg); startActivityForResult(intent, PHOTO_GRAPH); 最后通过 onActivityResult 方法便可以拿到刚刚拍摄的照片。 而通过相册中选图片则是自己写的一个方法、他先读取 SD 卡中有照片的文件夹,在依 次遍历所有文件夹下的图片。 发起活动中,增加了地图功能,可以搜索位置定位自己想去的地方,然后将搜索 出来的地址利用接口回调到上一页面,地图利用的是高德地图 SDK 毕毕 业业 论论 文文第 19 页 共 27 页 d)朋友圈模块 朋友圈模块主要展示了自己的好友、票功能。 毕毕 业业 论论 文文第 20 页 共 27 页 e)我的模块 我的模块分为我的信息、个人设置、豆豆三个模块;我的信息主要展示自己的一些基本信息, 个人设置主要设置我的基本信息、豆豆模块主要展示了自己豆豆收支、求捐信息。豆豆界面也利用 和同票夹一样的方法也同样实现了一个简单的时间轴效果。 毕毕 业业 论论 文文第 21 页 共 27 页 我的 设置 豆豆 5 系统测试系统测试 在软件项目开发和设计过程中,软件的测试是必不可少的。通过不断的调试软件, 才能检测到软件的 BUG。本项目通过 Eclipse 中的 LogCat 插件打印的错误报告。找到 异常,从而解决问题。 动态测试有两种主要的方法黑盒测试和白盒测试。 5.1 本系统测试实施本系统测试实施 5.1.1 软件调试 在编写这个软件的过程中遇见很多异常,在这里只写几个吧,就不一一列举了。 a) ANR 异常 在访问网络时迟迟得不到响应。这个时候就会产生 ANR(Application Not Responses)异常。对于这样的问题,可以启动一个异步任务 AsyncTask(封装了 Handler Looper),让这些耗时的操作在子线程中完成,从而释放主线程来进行 UI(User Interface)操作。 b)空指针异常 定义的对象没有初始化。导致后面的出现找不到对象的情况。 毕毕 业业 论论 文文第 22 页 共 27 页 c)权限访问异常 说明在进行编程的时候忘记添加系统的各种权限从而导致的异常,该异常经常出 现在访问网络的时候停止响应,因为没有权限去访问网络,访问 SDCard 的时候停止响 应,说明很可能没有添加访问 SDCard 的权限,调用系统功能的时候异常,说明没有添 加对应的权限。所以在 Android 开发的时候要注意为 APP 添加权限,以避免因为权限 问题而导致的各种异常。 5.1.2 数据库测试 在数据库编程中,创建的数据库名和表名都不能重复。否则查询不到。找到在 Eclipse 中的 DDMS 试图下的 File Explorer 下的 Data data 目录下的包名下的 databases 下的数据库,导出到任意位置如图 7.1。然后使用 SQLite Expert personal 进行查看如 图 7.2,查看表结构是否完整。 图 7.1 导出数据库 毕毕 业业 论论 文文第 23 页 共 27 页 图 7.2 查看数据库 5.2 测试结果测试结果 在本系统测试实施中,各个功能模块进行程序调试及单元测试,发现错误后对其 进行更改。单元测试结束后,将相关的功能模块连接起来,进行集成测试,逐步组合, 直到整个系统调试成功。下面为系统部分测试结果如表 7.1 所示: 表 7.1 测试结果表 NO场景测试步骤预期结果测试 结果 备注 1欢迎界面运行系统显示欢迎界面符合无 2进入主界面默认广场进入程序主界面符合无 3票夹点击票夹展示票夹信息符合无 4发起投票极值选择数字写上 最大最小值 超出范围给出提示,否 则正常发 符合无 5发起投票特殊符号写东西的时候正常发起符合无 毕毕 业业 论论 文文第 24 页 共 27 页 写上特殊特号 6发起投票时间选择选择时间时写 上 0 时 0 分, 以及过去时间 给出相应提醒符合无 7发起图片选择选择不同的图 片上传 正常上传符合无 8退出功能点击返回Toast(吐丝)提示符合无 结结 论论 经过测试,本设计的所以模块均可正常运行,基本达到了预期的效果。与此同时 本设计还存在这很多的不足之处。下面,我对本设计进行一些总体阐述。 本设计以基于 ADK 的 Java 语言进行开发,SQLite 数据库作文后台支撑,MVC 框 毕毕 业业 论论 文文第 25 页 共 27 页 架作为 UI 审计的基本框架来进行 UI 的设计,本设计的界面特点是:界面简洁大方, 便于维护和操作,基本上都是人机交互进行应用操作,能够很好的完成数据处理过程。 本应用采用的是从网络服务器端得到总体数据

温馨提示

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

评论

0/150

提交评论