基于Android平台的账目管理软件开发毕业设计(22页).doc
-基于Android平台的账目管理软件开发毕业设计-第 16 页本 科 毕 业 设 计 (论 文)基于Android平台的账目管理软件开发Accounts management software development based on the Android platform 学 院: 电子工程学院 专业班级: 电子信息工程 电子082 学生姓名: 学 号: 指导教师: 张金学(实验师) 2012 年 6 月毕业设计(论文)中文摘要基于Android平台的账目管理软件的开发摘 要:随着移动通信技术的发展,手机已被广泛的应用到生活当中,用户需要更有品质的产品来根据自身需求添加个性化设置,来完善手机的应用功能。通过Android完全开放的系统,运用灵活轻便的开发技术,为用户提供更多的服务,将成为智能手机市场的重点。本课题从用户的实际应用出发,设计并开发一款在Android平台下实现账目管理的应用软件。设计过程:在Eclipse开发环境下,以Java语言为基础,结合Android SDK。使用XML进行布局,设计用户界面,运用SQLite来设计数据库,通过Android操作系统来运行。主要功能:为用户提供简洁明了的操作界面,登记用户财务账目细节,对账目细节进行保存,即时查看财务收支状况,每月月底汇总。关键词:Android;SQLite;账目管理;应用软件;毕业设计(论文)外文摘要Accounts management software developmentbased on the Android platformAbstract: With the development of mobile communication technology, mobile phones have been widely applied to daily lives, we need more quality products to add personalized according to their needs, to improve the functionality of mobile phone applications. Android a completely open system, the use of lightweight and flexible development techniques to provide users with more services, will become the focus of the smart phone market. This issue proceeding from the practical application of the user, design and development of an Android application platform under the account management software. The design process: the Eclipse development environment to the Java language-based, combined with the Android SDK. Using XML layout, user interface design, the use of SQLite to design the database to run the Android operating system.Main functions: to provide users with clear and concise user interface to register the details of the user financial accounts, the accounts details to be saved and instantly view the financial balance of payments, the summary by the end of each month.Keywords: Android;SQLite;Accounts management;Application software目 录1绪论11.1课题背景11.2 Android平台的优越性12 Android开发相关技术32.1 Android系统架构32.2 Android SDK简介42.3 Eclipse集成开发环境52.4 App Inventor介绍63 Android开发环境73.1安装JDK73.1.1设置环境变量83.1.2检测JAVA环境是否建立83.2安装并设置Android SDK93.2.1安装SDK93.2.2设置AVD Manage93.3安装Eclipse并配置Android插件103.4创建Android的项目184程序设计214.1程序流程214.2设计用户界面214.3 开发过程224.3.1创建ColaBox项目224.3.2对数据库的操作234.3.3设计数据库244.3.4添加账目界面的布局及设置275 软件测试30结 论36致 谢37参 考 文 献381绪论1.1课题背景 传统的手机开发模式,由于手机系统的封闭对开发人员的限制,只能做一些简单的应用,不能像桌面电脑那样在各行各业都应用广泛。随后各手机制造商制作了各自的手机操作系统机开发应用程序扩展了手机的应用面,在家居、工作、娱乐领域的应用也越来越广泛,也使得手机能控制一切可以控制的东西,在智能控制领域更是前景可观。如今,3G技术已经到来,移动电话正向着高度智能化的方向发展,这使得智能手机市场快速发展起来,手机已不在是单一的语音通信工具,而是成为多种工具的功能载体。在过去很长一段时间里,手机用户只能使用厂商提供的固定功能,而不能根据用户的需求添加自定义功能。Android的到来,解决了这一难题。Android 是一款基于Linux的开源移动手机平台,该平台是在2007年底由Google推出。Android是Google为了满足手机用户的需求为移动终端打造的一个完全开放的平台。Android平台是由操作系统用户界面、中间件以及关键的应用软件等构成。另外,Google希望与软硬件开发商、设备制造商、电信运营商等相关机构建立长期的合作关系,先后与33家公司合作成立为Android平台发展的开发手机联盟(OHA)。在这个智能手机相互角逐的市场,Android的出现,构建了一种崭新的移动电话开发模式,给手机用户带来了全新的体验。目前,Android成为最流行的手机操作系统。世界许多知名品牌手机都已搭载了Android平台,例如MOTO、HTC、三星、多普达等。Android依靠Google强大的开发实力和资源,已成为众多手机生产厂商相互竞争和追逐的对象。1.2 Android平台的优越性 Android平台的是一个真正意义上完全开发的平台,同时也是一个完整的系统。任何开发商或者有兴趣的个人开发者都可以参与Android开发, Android作为一个智能手机平台,其技术上的优势主要包括: (1)全开放的智能手机平台 (2)多种硬件系统的支持 (3)使用广泛的标准化技术 (4)核心技术比较完整且统一 (5)完善的SDK和应用文档 (6)完整的辅助开发工具2在过去的10年里,Symbian一直占据着智能手机市场的主导地位。经过多年的发展,Symbian系统的市场也变的非常成熟。同时,也出现了许多问题:一般配置的机型反映比较慢,对于主流媒体格式的支持性比较差,不同版本的软件兼容性较差,并且证书问题也非常烦恼。因其传统的封闭开发模式,不可避免开发出来的产品过于保守,无论对于开发者还是手机用户来说,在开发和使用过程中都存在很大局限性。因此,在未来的智能手机市场Symbian的开发技术已不具备代表性。相对于iPhone而言,iPhone全触摸的设计,引起了移动电话开发史上的一次技术革命,曾一度成为世界关注的焦点。同时,iPhone添加的第三方应用软件较多,使其娱乐性能强。但是,和Symbian一样其系统封闭发展,使其功能不太全面。用户不能在iPhone平台下,自行添加应用。并且iPhone所有的应用软件都是苹果公司独立设计开发,在这种特立独行的发展模式下,使得iPhone价格较高。于普通大众来讲,用户需要的是经济实用的产品而iPhone更像是一件奢侈品。因此,这将使iPhone的占据的市场较为狭窄。因此,从这些方面来看Android平台的发展是和未来智能手机的发展方向紧密相连的。这也是Android能够以较短时间在智能手机市场取得较好成绩的关键原因。2 Android开发相关技术2.1 Android系统架构 Android作为一个完整的软件系统,是由众多的源代码构成。一个Android软件结构共有四层:第1层次:Linux操作系统层第2层次:各种库和Android运行环境第3层次:应用程序框架第4层次:Java应用程序Android操作系统层是由C语言实现,运行环境由C/C+实现,其应用程序主要由Java实现,其各层之间的作用:第1层次和第2层之间是内核空间与用户空间的分界线第2层次和第3层次之间是本地代码层和Java代码层的接口第3层次和第4层次之间是Android系统的API接口。 图2-1 Android系统架构图Android核心系统的安全性、内存管理、网络进程管理、和驱动完全依赖于Linux内核。除此之外,Android系统本身还要增加驱动:显示驱动、输入驱动、输出驱动、Wifi驱动、Bluetooth驱动等。这些驱动为Android系统运行提供了基本条件。22.2 Android SDK简介Android SDK是Android应用软件的开发工具,主要以Java语言为基础。通过该开发工具中的Android模拟器进行软件模拟测试然后,然后通过Android SDK所提供的一系列工具将应用程序打包成供Android系统所用的APK文件,。Android SDK提供了在多种平台下开发Android应用的工具,Android面向所有平台开放,可进行跨平台开发。Android SDK提供了进行Android移动应用开发所需要的各种工具集。Android SDKS是由许多定制的工具组成:(1) Android模拟器 用于对开发的Android应用软件进行模拟测试。(2)Eclipse集成开发环境插件用于在Eclipse集成开发环境下配置Android开发工具。通过该插件可以进行管理端口转发、查看进程信息、断点设置的系列操作。(3)调试监视服务集成在Android系统的虚拟机中,可以管理运行在Android模拟器或者Android设备中的进程,并进行协助调试。能够通过它来去除进程、选择特定进程进行调试、生成跟踪数据、查看线程数据、对Android模拟器或Android设备进行视图设计等。(4)Android调试桥用于从命令行访问Android模拟器或者Android手机设备并且向Android模拟器或者Android手机设备导入应用程序的APK文件。也可以通过它将标准的调试器连接到Android模拟器或Android手机设备上的代码。(5) Android资源的打包工具通过该工具来创建APK文件,该文件包含了Android应用软件的资源文件和二进制文件。(6)Android接口的描述语言通过该描述语言来生成各个进程之间的接口代码。(7)SQLite数据库Android应用程序的创建和使用SQLite数据文件,开发者和用很好可以轻松的访问SQLite数据文件。(8)跟踪显示工具通过该工具能够生成数据跟踪的图形分析的视图,对这些数据的跟踪由Android应用程序产生。(9)创建SD卡工具用于创建磁盘镜像,该磁盘镜像能够在模拟器中模拟外部的存储卡。(10)DX工具其将class字节码转化为Android字节码并存储于dex文件中。(11)生成Ant的构件文件这是一个脚本文件,可以生成Ant的构建文件。Ant构建文件是用于编译Android程序。如果在Eclipse环境下已安装了ADT插件,就不需要该脚本了。(12)Android虚拟设备Android虚拟设备可以模拟虚拟设备来运行Android平台,这个平台至少需要有独立的内核,数据分区和系统图像。开发人员能够创建并对多种虚拟模拟设备的配置进行保存。2.3 Eclipse集成开发环境2002年初,由美国IBM公司为主导提供基础源代码推出Eclipse集成开发环境。同Google一样,IBM也同多家公司合作组建了Eclipse开发联盟,通过这个联盟来负责Eclipse的长期发展。目前,已有150多家公司加入了该联盟并且建立了Eclipse平台。事实上,该平台最初的目的只是用于Java的应用开发,不过经过长时间的发展Eclipse已能够在不同平台上进行开发,这种跨平台的自由对于开发人员来说是非常实用的。Eclipse集成开发环境开发应用的周期也非常明确:设计开发、创建应用和调试结果。Eclipse集成开发环境本质上是一个集成多种开发工具的框架,通过其本身附带的多种插件对不同开发工具进行操作,开发人员不必再为各种开发工具的协调使用而烦恼,使开发人员将更多的注意力能都集中在实际应用开发的目标上。 Eclipse也是一种开放性源代码的集成开发环境,从这点来说选择Eclipse来开发Android应用是再合适不过了。同时Eclipse集成开发环境能够实现各种不同工具的相互操作。这将使开发者能够开发出更多有创意的应用。在Eclipse集成开发环境中通过XML定义已知接口,使不同插件相互结合。同时其应用范围也很广泛,从常规简单字符串的表述,到Java语言类的描述。因为Eclipse的兼容效果非常好,所以Eclipse插件定义的拓展点与其他插件定义的拓展点都能相互使用,因此运用低级的开发工具设计高级的应用程序,对Eclipse来说不是问题。经过长期的完善,如今Eclipse已不不限制任何开发语言,因此Java语言、C/C+语言和汇编语言都可以在Eclipse集成开发环境中运用,并且都能够在Eclipse的开发平台下同时确定不同的进程节点。由于Eclipse平台和Google 平台的开发模式非常相似,其技术优势是主要是开放和自由。并且Java开发者能够在Eclipse平台下实现源代码之间的共享,这有点像Visual Studio平台和Net Beans平台。Eclipse为开发商提供了较为完整的开发工具,使开发者可以轻松地控制其开发的软件技术。目前,Eclipse在业界是一款非常受欢迎的开发工具,使用该集成开发环境的用户也越来越多,其中最多的是从事Java的开发人员。集成了多种开发工具也带了一些负面因素,就是结构较为复杂,尤其对初学者不利,理解起来比较困难。使用Eclipse开发的插件较为繁多,Eclipse的核心就是插件扩展机制,因此Eclipse对于开发人员来讲,就需要了解成千上万种开发插件。 2.4 App Inventor介绍2010年7月,Google推出了一款名为App Inventor的Android手机编程软件,Google App Inventor用户可以通过该编程软件在Android平台下自行开发设计适合于手机用户使用的应用程序。因为此软件已经将所有的软件源代码全部编写完毕,并且向所有用户开放,开发者只需要根据应用需求向其中添加服务选项即可。相对于Eclipse而言,App Inventor同样需要运行Java,安装Android SDK。由于App Inventor是基于网页的开发环境,因此开发环境比较容易建立。在运用App Inventor在进行应用程序开发时,是以拖放代码块的形式进行程序开发。这种新颖的开发方式在当时引起了全世界的开发人员的关注。同时,这款手机编程工具对开发者的起点要求很低,即使是非专业的开发人员,甚至不需要掌握任何编程知识,也可以通过该编程软件开发属于自己的应用程序。但好景不长,2011年底Google放弃了这一项目,并且Google官方宣布不再维护这款软件。使其本来就不完善源代码得不到更新,这就给开发者在开发过程带来了很大的局限性,用户只能开发一些简单的应用。相信通过其源代码的完善可以解决这一难题。3 Android开发环境3.1安装JDK进入网址,选择需要的Java JDK版本点击 Download JDK 下载JDK,本设计使用的Java 6。如图3-1: 图3-1 JDK下载界面安装Java开发包JDK,如图3-2:图3-2 安装JDK3.1.1设置环境变量我的电脑->属性->高级->环境变量->系统变量->新建,如图3-5: 图 3-3环境变量窗口在上图的窗口下设置Java环境变量: 变量名:JAVA_HOME 变量值:D:Program FilesJavajdk1.6.0_18 变量名:CLASSPATH 变量值:.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar 变量名:PATH 变量值:%JAVA_HOME%bin;%JAVA_HOME%jrebin3.1.2检测JAVA环境是否建立 开始->运行->输入“Java-version”,如图3-4: 图3-4 检测Java环境3.2安装并设置Android SDK3.2.1安装SDK解压android-sdk_r15-windows开发包,选择SDK Manager.exe如图3-5: 图3-5 Android SDK的安装 在上述窗口下,选择开发所需的安卓版本并安装。本课题选择的是Android 2.1版本,还需要安装了tool 和Extras包。3.2.2设置AVD ManageAVD的参数设置Name:avd2.1Target:Android 2.1 API Level 7SD Card: 256 MiBSkin:WVGA800Hardware:Abstracted LCD density 240Max VM application heap size 24如图3-6: 图3-6设置AVD manage参数3.3安装Eclipse并配置Android插件在www.eclipse.org找到下载链接,选择开发需要的Eclipse版本进行下载。本课题选择的是Eclipse IDE for java EE Developers。如图3-7: 图3-7 Eclipse下载界面打开Eclipse,help->Install New SoftWare 如图3-8: 图3-8安装插件 点击 Add,显示如图3-9:Location: http:/dl- Name: Android (自定义) 图3-9 自定义名称点击OK,显示如图3-10: 图3-10选择工具包 点击 Next按钮 ,显示如图3-11: 图3-11显示开发工具点击Next按钮,显示如图3-12: 图3-12 添加组件点击Next,进入安装插件界面如图3-13: 图3-13 安装插件界面安装完成后,显示如图3-14: 图3-14 安装完成界面选择菜单window->preferences如图3-15: 图3-15选择Android SDK解压目录 点击菜单 window->Android SDK and AVD manage如图3-16: 图3-16升级Android SDK版本点击update all按钮如图3-17: 图3-17选择安装项目选择SDK 2.1 和samples for API7,选择Accept,点击Install开始安装如图3-18: 图3-18安装API安装完成界面如图3-19: 图3-19安装完成创建AVD如图3-20: 图3-20新建AVDAVD参数设置如图3-21: 图3-21 设置AVD参数创建完成如图3-22: 图3-22创建成功3.4创建Android的项目选择菜单file->new->other 如图3-23: 图 3-23创建Android工程项目选择新建Android Project项目,点击Next按钮如图3-24: 图 3-24项目名称编辑相关参数设置Project Name: Hello WorldPackage Name: helloworld.test。Activity Name: Hello WorldApplication Name: Hello World在min SDK version里输入整数点击Next后出现界面如图3-25: 图3-25生成代码项目->Run as -> Run Configuration如图3-26: 图3-26运行项目项目名称->run as ->Android Application,启动Android模拟器界面如图3-27: 图 3-27 Android模拟器启动运行结果显示如图3-28: 图3-28运行结果4程序设计4.1程序流程使用Android 制作一个个人账目管理软件,介绍编写该软件的流程。本软件的主要功能是可以存储日常生活中的各类收入和支出明细,并且可以随时统计各类收支情况。月底对收支记录并进行统计,给出明细的账目清单。 启动 初始化数据库数据获取模块 用户界面 添加用户信息 账目信息SQLite数据库获取模块图4-1程序流程图4.2设计用户界面根据应用需求,首先为应用程序应设计用户界面,该界面主要是对用户添加账目信息进行输入并保存,包含了账目类型、填写费用、选择时间以及用户对一些重要账目的备注。如图4-2:图4-2 用户界面草图4.3 开发过程4.3.1创建ColaBox项目程序的开发阶段,首先建立Android平台账目管理软件的工程名为“ColaBox”,在程序模块设计的基础内容上,建立ColaBox工程。工程源代码的结构如下图所示:工程已经建立并自动配置Android运行环境。图4-3 工程源代码文件为了确保该工程源代码比较完整,ColaBox工程创建了多个类。用于定义数据库、界面布局、编辑并保存数据、实现本地应用操作等源代码文件。 表1 工程文件表工程文件包 类 说明com.cola.uiBilldbHelper.java定义数据库ColaBox.java程序入口,初始化界面Frm-AddBills.java添加账目界面设置Frm-Editacctiem.java通过<item> 元素添加系统元素指定子菜单Dialog-edit.java编辑对话框设置Grib-bills.java生产grib文件LocalService.java本地应用4.3.2对数据库的操作 Android 不会自动提供任何数据库,在使用SQLite时,首先创建数据库,再使用表、索引和添加数据。在创建表和索引中。本设计是对数据库通过MySQLiteDemo程序进行测试,在MySQLiteDemo中需要定义组件,选择数据类型并添加该数据库。 表2 数据库表的结构属性数据类型说明-IdInteger自定义组件PeopleidInteger组件id号NameInteger姓名AgeInteger年龄HeightInteger身高在创建一个数据库时,选择创建SQLiteOpenHelper子类,其能够根据应用程序的需求提供创建和升级数据库是的逻辑,用来管理数据库的创建。导入Android内置数据库SQLite辅助类SQLiteOpenHelper。关键代码:import android.database.sqlite.SQLiteOpenHelper;/导入首先需要向上连接SQLiteOpenHelper构造函数,此函数包括Context、数据库名称以及自动添加整数。关键代码:public class DatabaseHelper extends SQLiteOpenHelper private static final int VERSION = 1/构造函数向上连接SQLiteOpenHelpeSQLite能够为组件创建索引,通过onCeate()创建表以及添加SQLiteDatebase对象,这个类是核心类,用于管理和操作SQLite数据库。通过onUpgrade()升级数据库,SQLiteDateabase调用execSQL()创建表和索引。关键代码:public void onCreate(SQLiteDatabase db) /添加SQLiteDatebase对象db.execSQL(DB_CREATE); /创建表和索引在DBAdapter类中,扩展SQLiteOpenHelper类,覆盖onCreate()和onUpgrade()关键代码:private SQLiteDatabase db;private Context xContext;private DBOpenHelper dbOpenHelper;public DBAdapter(Context context)xContext=context;由于execSQL()不返回结果,通过SQLiteDatabase对象上的insert()、update()、delete()方法可以处理插入、更新、删除等操作,将SQL语句分解为多个块,再把块作为参数使用,该方法使用CotentValues对象。 关键代码:public long insert(People people)/数据库插入ContentValues newValuse= new ContentValues();public long updateOneDate(long id,People people)/数据库更新ContentValues newValues= new ContentValues();使用query()方法实现查询,该方法使用select语句片段生成查询,内容提供程序query()的实现创建SQLiteQueryBuillder,填入默认值,构建完整的查询。关键代码:public People queryOneData(long id)/数据库查询Cursor result=db.query(DB_TABLE,newStringKEY_ID,KEY_NAME,KEY_AGE,KEY_HEIGHT,null,null,null,null,null);return ConvertToPeople(result);4.3.3设计数据库在BilldbHelper.java类中,定义数据库主要代码:public class BilldbHelper /定义数据库 private static final String TAG = "Cola_BilldbHelper" private static final String DATABASE_NAME = "cola.db" SQLiteDatabase db; Context context;对数据库添加“个人”及“公司”表 db.execSQL("insert into tusers values (null,'个人')");/插入表 db.execSQL("insert into tusers values (null,'公司')");效果如图4-4: 图4-4 插入表的效果图在“收入”表中添加“工资”和“其他”项,在“支出”表中添加“生活用品”、“水电煤气费”、“汽油费”、和“其他”项。关键代码: db.execSQL("insert into acctitem values (1,null,'收入')");/插入表 db.execSQL("insert into acctitem values (2,1,'工资')"); db.execSQL("insert into acctitem values (9998,1,'其他')"); db.execSQL("insert into acctitem values (0,null,'支出')"); db.execSQL("insert into acctitem values (3,0,'生活用品')"); db.execSQL("insert into acctitem values (4,0,'水电煤气费')"); db.execSQL("insert into acctitem values (5,0,'汽油费')"); db.execSQL("insert into acctitem values (9999,0,'其他')");效果如图4-5: 图4-5 在表添加菜单效果图创建初始化界面,界面很简单是由一张图片和一个文本栏组成。关键代码:public class ColaBox extends Activity private Handler mHandler = new Handler();ImageView imageview;TextView textview;int alpha = 255;int b = 0;初始化界面效果如图4-6: 图4-6 初始化界面效果图如果是首次使用此软件,需要初始化本程序的SQLite数据库、建库、建Table、初始化账目数据。public void FirstStart() try String col = "type", "name" ; Cursor c =db.query("sqlite_master", col, "name='colaconfig'", null, null, null, null); int n=c.getCount();在程序初始化完成后,5秒之后初始化界面完成,然后自动切换到添加账目界面,设定alpha值。代码如下:public void updateApp() alpha -= 5;if (alpha <= 0) b = 2;Intent in = new Intent(this, com.cola.ui.Frm_Addbills.class);startActivity(in);this.finish();添加账目界面效果如图4-7: 图4-7 添加账目界面效果图4.3.4添加账目界面的布局及设置定义时间变量EditText edittext_acctitem,EditTextDESC,Fee;TextView mDate;TextView mTime;static final int RG_REQUEST = 0;private int mYear; private int mMonth; private int mDay; private int mHour;private int mMinute;从系统中获得当前时间:mDate = (TextView) findViewById(R.id.vdate);mTime = (TextView) findViewById(R.id.vtim