毕业论文基于Android的家庭财务记账系统的设计与实现.docx
《毕业论文基于Android的家庭财务记账系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业论文基于Android的家庭财务记账系统的设计与实现.docx(45页珍藏版)》请在冰点文库上搜索。
毕业论文基于Android的家庭财务记账系统的设计与实现
基于Android的家庭财务记账系统的设计与实现
摘要
以苹果ios和谷歌Android为代表的便携式智能设备在近年来发展非常迅速。
这些设备拥有高速的运算能力、优秀的图形用户界面和高分辨率的触摸屏幕,使得人们从计算机中解放出来能够在路上方便地处理电子资料并进行一些复杂的运算。
在这些新型平台上,应用于个人对资金流动和收支的管理,移动记账和个人财务分析无疑是一个重要的软件应用类别。
本文归纳了个人记账软件的常见功能,并讨论了使用掌上设备进行记账的特点和优势。
由此提出了一个基于Android上实现移动记账和个人财务分析的方案“个人记账系统”。
该方案采用了主流会计复式记账的方法来进行设计,划分有记账周期、日记账、分类账和数据管理四个功能模块。
本文进行了系统需求分析,列出了各模块的功能规格、讨论了如何使用嵌入式关系数据库SQLite以及建立O/R模型进行数据访问。
在系统实现部分,本文详细讨论了系统的类和系统分层,描述了系统的活动流程,以及界面设计,尤其在优化手指操作和重力感应自适应等方面的实现细节。
关键词:
Android系统,移动记账,个人财务分析
Basedontheandroid'sfamilyfinancialaccountingsystemdesignandimplementation
Abstract
TheAppleiOSandGoogleAndroidportabledeviceswhicharefeaturedinthepowerfulprocessingcapability,theexcellentGUI(GraphicUserInterface)andthehigh-definiationtouchscreen,hasbecomeverypopularintherecentyears.SuchdevicesofferbrandnewtechnologytopeoplewhoisonthewayindealingwithcomplexdigitaldatawithoutatraditionalPC.Onthesenewplatforms,thereisnodoubtthattheportableaccounting/personalfinancialanalysissoftwareforindividualisoneofthemostwelcomed.
Thedissertationgivesacommonspecificationofportableaccountingsoftwareforindividualandissuessomepersuasivepointsoftheadvantagetokeeptrackofone'sdailyexpenseandincometransactionsonamobiledevice.AnAndroidapproach,'PersonalAccountingSystem'withsuchfunctionsisdesignedandbuilt.Thisapproachadoptsthedoubleentryaccountingrule.Accordingtothefunctionsthesystemisdividedinto4modules:
FiscalPeriod,Journal,Account,andDataManager.ThesystemimplementstheembeddeddatabaseSQLiteforsavingpermanentdata.InthedataaccesstieranO/R(Object/Relational)modelisinplacetoprovidethedataaccessingsolution.Asfarassystemrealisation,thedissertationconductssystemanalysiswithclassdiagram,describesthesystemworkflowandthecommunicationmodelamongactivities,alsothedetailsofUIdesignaboutoptimizationforfingers-touchingandgravity-sensing.
KeyWords:
AndroidOS;PortableAccounting;PersonalFinancialAnalysis
第一章前言
1.1课题研究背景
现代人的社会生活离不开钱。
钱的范畴可以很广泛:
现金、薪水、银行账户、信用卡乃至股票、保险、房贷,还有各种消费。
对于个人而言,从认识钱到管理钱(或者从这里开始换个概念“个人理财”)是每一个现代人的必修课。
在今天,人理财越来越受到人们重视,如何采用新的技术来更好地记录、追踪和管理个人的收入与消费,是本文探讨的主题。
1.2记账软件及其发展
对于公司企业来说,财务一直被视为核心的管理环节之一。
企业理财有一个相当成熟的知识理论体系,并在财务管理和成本控制领域一直不乏有大型软件系统的支持,软件产业也不乏优秀的财务管理软件。
相比之下,面向个人的记账理财类软件的普及率则普遍不高,原因是多种多样的。
记账软件的功能涉及一些会计的专业知识,用户界面上难懂的术语和功能对一般人的使用造成障碍。
为了得到准确的报表,用户必须坚持进行乏味而又重复性的记账活动,这非常考验个人的耐性和毅力。
尽管如此,在个人理财越来越受到重视的今天,越来越多人使用软件进行记账。
记账软件的发展在不同时期表现有不同技术的特点,例如互联网的发展催生了不少基于网站的个人记账和理财服务。
然而一般人的经济活动(例如是消费)是突发性,得益于手机等移动智能设备的普及,人们要求可以随时随地进行记账。
由此可见,移动记账是一个潜在的需求。
1.3移动记账软件的特点
实现移动记账的软件应用程序一般具有以下特点:
便携性。
软件能够安装在随身设备,才能满足人走到哪里,账记到哪里的要求。
轻量级。
软件能够快速安装投入使用,功能一目了然,操作简单,方便易用。
计算能力。
软件用户界面反应迅速,具备即时计算能力显示统计结果。
数据流通。
软件支持数据的备份、导出和同步。
可配置。
软件能够适应不同用户的需要灵活地设定统计账目和使用偏好设置。
1.4本论文主要工作
本论文通过分析讨论Android平台上的手机记账软件,设计出一个改进方案并予以实现。
论文的主要研究工作包括:
1)调研Android平台国内外的个人记账软件,分析其设计特点并总结出改进方案。
2)熟习Android的架构、运作模式以及开发环境的配置。
3)基于会计复式记账理论设计“个人记账系统”,分析用例列出详细的功能规格。
4)设计数据表并使用嵌入式数据库SQLite进行数据的储存和访问。
5)使用UML图表进行系统建模,描述系统的活动与流程。
6)针对Android设备使用手指触摸操作的特点进行优化用户界面,并力求改进软件的易用性。
7)使用Java编码实现系统功能,并在Android设备上完成测试。
1.5论文结构
第一章绪论部分引出了个人理财的课题,阐述了使用移动设备进行记账的意义,并
通过分析Android平台上现有的记账应用,提出改进方案。
第二章介绍了Android技术及该平台的一些关键的概念。
第三章讨论了个人记账系统的设计,探讨了系统功能规格和设计目标,以及讨论了
模块划分、数据表设计等关键问题。
第四章重点阐述了个人记账系统的实现,包括系统层次结构/类的设计、活动流程
与通讯,以及界面设计与优化等内容。
第五章则讲述了个人记账系统的测试,描述在真实Android设备进行测试的过程,列出了系统主要功能的测试计划和运行结果。
1.6本章小结
本章作为论文的开篇,首先介绍了课题的研究背景、移动记账的特点与应用前景;然后分析并比较了国内外六款记账软件,从会计方法、记账功能、用户界面等角度进行总结并给予评价,提出改进方案“个人记账系统”。
最后列出本论文的主要研究工作和行文结构。
第二章Android技术与相关概念
2.1Android移动智能计算平台
Android是Google于2007年宣布的面向移动设备的开源操作系统。
该平台采用以Linux内核作为底层,采用Java作为应用软件编写语言。
简单而言,Android是一个免费和开源的操作系统,也指运行Android系统的移动设备(尤其指手机),同时是一个开源的移动应用开发平台。
Android的标志是一个绿色可爱的小机械人(见图2-1),它以十分惊人的速度风靡全球。
2.2Android系统框架
图2.2为Android系统框架
应用程序层:
该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。
同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。
应用程序框架层:
该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。
应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。
在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。
并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。
基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。
系统库和Android运行时:
系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。
Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、、android.media等等。
后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。
Linux内核:
Android核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。
Linux内核也是作为硬件与软件栈的抽象层。
驱动:
显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。
图2.2Android系统框架
2.3开发环境和工具
Android提供了免费和开放的开发环境使开发者能够快速编制应用程序。
Android提供了一些实用的工具用于搭建开发和调试环境,主要包括:
Eclipse集成开发环境。
Android支持多种集成开发环境(IDE),其中Eclipse与AndroidSDK集成得最好,而且Eclipse是完全免费。
Android软件开发包(SDK)。
AndroidSDK通过Google的Android开发者网站发布。
根据操作系统类别提示下载后直接解压到选定的文件夹即可。
其中子文件夹/tools下包含了很多开发过程中非常实用的工具。
虚拟设备管理器(AVD)。
用于创建Android虚拟机,通过指定不同硬件配置,开发者可以模拟出各种Android设备用于测试。
开发包管理器(SDKManager)。
用于安装、更新和管理不同版本的AndroidSDK,API库和技术文档。
Dalvik调试监控工具(DDMS)。
DDMS是一个强大的调试工具,用于查询、监视和暂停活动进程、查看堆栈,访问文件系统,还有截图和查看日志的功能。
Eclipse插件(ADT)。
通过在Eclipse软件更新选项下添加ADT的安装网址即可按提示完成安装。
插件安装成功后的Eclipse开发环境将为Android的开发与调试提供了许多便利,另一方面集成了上文提到的Android的实用工具。
2.4Android的活动及其生命周期
Android应用定义了4种应用程序构成:
活动(Activity)、服务(Service)、广播和意图接收器(BroadcastandIntentReceivers)、内容提供器(ContentProvider)。
其中应用程序大部分的代码是以活动的形式存在。
活动负责屏幕内容的显示以及用户的交互,每一个活动都代表一个显示界面。
理解活动的生命周期对于开发Android应用是非常关键的。
Android运行环境负责控制每一个应用的进程,而Android应用不能控制自身进程的生命周期。
每一个活动的状态是由活动位于栈(Stack)的位置决定的。
当一个新的活动启动时,该活动就移到栈的顶端成为前台活动显示在屏幕。
如果此时按下后退键或者前台活动结束,栈的下一个活动就会上升成为前台活动。
当系统内存不足的时候,位于栈底部的活动就会被终止以回收资源。
无论是什么开发环境,分离与代码无关的内容(如图片和文本),都是好的编程习惯。
Android支持将字符串、颜色、图片和视图布局等内容使用XML文件的方式作为外部资源放置在代码目录//res下。
这些内容会自动被编译成为对象并由一个命名为R的全局资源类所引用。
这样就可以在任何一段代码中使用这些资源。
2.5SQLite数据库
Android提供了一个轻量级的关系数据库SQLite用于数据储存和访问。
对于一个储存容量有限的移动设备来讲,快速和高效的数据存储和访问是很关键的。
SQLite这个嵌入式的数据库引擎可以为Android每一个应用程序安全而高效地实现数据持久化。
每一个应用程序的数据库默认是一个沙箱(sandbox),它的内容只对创建的程序可用。
为了解决不同应用程序之间共享数据的问题,Android提供了内容提供器作为一种良好的机制为需要的应用程序共享数据。
由于“个人记账系统”不涉及与设备上其他应用共享数据,因此本论文并不详细讨论内容提供器。
2.6图形用户界面与组件
Android的用户界面是由一组树状的图形元素组成,它们都是View类(视图)的子类。
树状的视图布局通常用XML表示,在活动创建时被实例化。
与其他图形用户界面一样,Android基于MVCCModel-View-Controller)设计模式。
事件监听、状态更新与重绘由Android的用户界面框架由单一线程自动完成。
强大的交互功能预示着用户界面的设计上是复杂的,Android提供了丰富的用户界面元素却是非常易用。
一般情况下,开发者无须自己绘制界面。
除了如文本、按钮之类常见的元素,一些复杂的界面例如菜单(Menu)、下拉列表(Spinner)、滚动视图(ListView)都可以通过系统提供的视图组件(Widget)予以实现。
“个人记账系统”在用户界面设计方面使用了多种系统视图组件。
当中,滚动视图(ListView)用于显示日记账等数据列表,下拉列表((Spinner)用于选择账目分类,单选按钮((RadioButton)用于选择记账类型、普通按钮((Button)用于界面导航与数字键面板,播放条(SeekBar)用于选择日期等等。
2.7进程间的通信与意图
Android通过引入意图(Intent)机制用来实现进程间有效的通讯,并且降低了功能之间的祸合性。
意图具有非常重要的作用,Android应用使用意图进行页面跳转、传递参数以及返回结果。
意图可以指定启动特定的活动,也可以只发送抽象的“意图”并由系统选择合适的活动完成任务。
2.8本章小结
本章从系统架构、应用前景、开发环境三个方面介绍了Android技术,并就“个人记账系统”的Android实现中涉及的一些关键的技术概念进行简要的说明。
第三章个人记账系统的设计
3.1需求分析
以下的内容首先会通过一个案例引出系统尝试去解决的问题,然后列出了系统的典型用例,最后总结系统设计的目标。
3.1.1案例分析
每个社会人只要有收入和消费,就有记账的潜在需求。
最简单的记账,只需要设立一个记账本,按一定分类登记收入和支出。
这种原始的记账方法可以说是全人手更新统计信息,在每记一笔收入或支出都需要手动修改账本上关联的银行账户或信用卡的余额,并定期对照银行的余额信息用于对账。
一些传统的电子化记账方法如Excel电子表格(如图3-1)、记账网站等可以大大有助于记账过程的规范化和统计分析。
这类工具根据公式会自动为用户计算出银行账户和信用卡的余额,并按月统计收入和支出,还能输出图表。
由于规范的记账过程普遍采用了复式记账的会计方法,每记一笔账要求同时登记相关的两个账户,一个在借方,另一个在贷方,金额相等。
然而不了解会计原理的人很容易搞错借贷方向。
另一方面,记账的习惯和效率是一个关键的问题。
虽然当天账当天记是一个良好的习惯,但是是一般人会隔几天甚至几周才会坐在电脑前入账,大量时间用于整理小票、查询网银记录、以及回忆消费上的一些细节。
不夸张说有时记一次账可能要花1-2小时。
更甚的是,在点算现金、与实际银行余额对账的时候常常发现余额不准确,通常是由于漏账而产生几百块不等的误差,从而导致坏账。
通过手机记账等移动记账工具可以实现随手记账,发生消费的时候即时记账,除了避免漏账,还可以大大提高记账效率。
通过上文案例的陈述,说明了移动记账是进行快速记账和实现有效个人财务分析的关键,它拥有传统记账工具不可比拟的优点;另一方面,复式记账涉及会计基础知识,尤其是关于借/贷方的方向容易混淆。
个人记账系统是为了针对解
决上述问题而提出的。
3.1.2典型用例分析
以下将通过几个典型的用例描述个人记账系统应该拥有什么功能以满足个人用户的使用需求:
用例一:
初次使用配置
这个用例从用户完成下载安装本系统,第一次打开系统界面开始。
系统检测到用户没有活动记账周期,提示导入默认记账周期和账目分类。
用户可以确认或取消。
系统显示记账周期列表。
用户可以添加、编辑、删除记账周期,和设置其中一个为活动记账周期。
系统检测到用户己设置活动记账周期,用户可进入配置账目分类。
系统显示分类账列表。
用户可以为资金、负债、收入和支出四个账目组添加、编辑、删除账目分类。
当存在活动记账周期并添加超过两个账目类别时,用户可以开始记账,用例结束。
用例二:
记一笔账,例如消费
这个用例从用户完成一笔消费并打开系统界面开始。
系统检测到用户存在活动记账周期,显示日记账列表。
用户添加一笔新的日记账。
系统提示输入时间、金额、选择消费类别和支付方式、以及对这笔消费的描述,用户按提示输入以上信息,或取消操作。
系统通过信息校验,并保存成一条新的日记账,提示成功信息。
如果校验失败,提示信息让用户重新输入。
当成功信息出现或操作取消时,用例结束。
用例三:
查看余额和统计信息
这个用例从用户希望查看财务状况并打开系统分类账界面开始。
系统检测到用户存在活动记账周期,显示分类账列表。
用户可以选择“资金负债”或“收入支出”两个标签。
当用户选择“资金负债”,系统计算当前所有资金和负债账目分类的期末余额,显示结果列表。
用例结束。
当用户选择“收入支出”,系统计算当前所有收入和支出账目分类的当期汇总,显示结果列表。
用例结束。
用例四:
数据管理,例如导入账目分类
这个用例从用户在PC上完成账目分类的编辑并放入SD卡,打开系统数据管理界面开始。
系统检测设备SD卡工作正常,提示数据管理功能列表。
用户可以选择进行数据备份、恢复,数据导出和导入的功能。
当用户选择“导入分类账数据”并指定导入文件后,系统开始导入。
系统导入成功,显示成功信息。
系统导入失败,显示失败信息。
用例结束。
3.1.3系统设计目标
个人记账系统的设计目标是(按重要性排列):
1)在手机上实现方便地记账;
2)即时计算显示账目余额和收支状况;
3)划分记账周期,独立进行记账和统计;
4)数据备份和恢复,与PC进行数据交换。
3.2功能规格说明与模块划分
根据上文的典型用例分析以及设计目标,系统整体的用例图可画出如图3-2所示:
个人记账系统是一个在AndroidOS1.6版本或以上的设备上运行,支持复式记账、多记账周期(多账本)、即时反映财务和收入情况的个人记账应用。
它特别优化了记账体验,具有内置数字键盘、日期选择器、借贷方账目自动加载、记
帐描述自动补全等特性。
另外,界面设计上采用“即时配置”的方式,通过切换不同模式在同一个列表上进行添加、编辑和删除等操作。
界面支持随屏幕旋转自动变换。
不同颜色标识账目组乡(资金一黄色、负债一红色、收入一绿色、支出一蓝色)。
支持基于XML文件的数据备份恢复,通过TXT/CSV格式进行数据导入和导出。
根据不同的功能,系统可以划分为四个模块:
记账周期模块。
用于配置记账周期。
日记账模块。
分类账模块。
主要功能是记账,包括记录消费、收入和转账。
用于查看资金和负债余额,统计收入和支出
数据管理模块。
关于日记账和分类账数据的备份与恢复、以及配置账目分类。
导出与导入。
3.2.1记账周期模块
记账周期(FiscalPeriod)可以用作不同会计个体的账本,或者是同一个会计个体的不同记账区间。
关键是不同记账周期的账目分类和日记账是独立的。
用户的日记账查询、分类账查询和数据管理都是以某一个记账周期为操作对象的。
在记账周期模块,用户可以显示记账周期列表,对记账周期进行添加、编辑、删除的操作。
用户可以将其中一个记账周期设为活动记账周期。
活动记账周期在其他模块的操作中是被认为是默认的记账周期。
缺少活动记账周期将无法进行记账、查询余额等操作。
每个记账周期可以配置标题、起始日期、终止日期;还有可选的口令设定功能以保护用户隐私。
3.2.2日记账模块
在日记账模块,用户可以进行三种主要的记账操作:
1、记录收入:
用户对收入活动进行记账,包括金额、选择收入账类别、资产形式。
2、记录支出:
用户对支出活动进行记账,包括金额、选择支出账类别、支付方式。
3、账目互转:
用户可以在不同账目中灵活转移余额,用于资金转移、借贷以及调账。
此外,用户可以进行列表查询、编辑与删除日记账项等操作。
每一笔日记账要求输入以下内容:
日期。
日期必须符合记账周期定义的起始日期和终止日期之间。
用户可以使用方便的日期选择器拖动滑块选择记账周期内的任意一日。
金额。
内置的数字输入器可以不开启系统软键盘就可以轻松输入数字。
日记账类别以及登记借/贷方账目。
由于采用复式记账法,因此每笔日记账都至少记录相关的两个不同的账户,一个借方和一个贷方的账户。
为了优化记账体验,系统会根据日记账类别自动为用户加载相关的借贷方。
3.2.3分类账模块
分类账(Account)在系统中结合了会计科目表和财务报表的概念。
记账的一般需要默认设置了4个账目组别(AccountGroup):
资产、负债、系统根据个人收入和支出。
按照资产负债表和损益表的会计元素分布,分类账模块所示可进一步划分两个子模块:
资产负债和收支一览。
前者是资