基于Android平台的个人理财软件的设计与实现

基于Android平台的个人理财软件的设计与实现
基于Android平台的个人理财软件的设计与实现

基于A n d r o i d平台的个人理财软件的设计与实现 This model paper was revised by the Standardization Office on December 10, 2020

本科毕业论文(设计)

基于Android平台的个人理财软件的设计与实

二级学院医药信息工程学院

专业计算机科学与技术

班级医学智能2011级(1)班

学生姓名林彬健

学号

指导教师王鹤娴

2015 年 3 月

诚信声明

我声明,所呈交的毕业论文(设计)是本人在老师指导下进行的研究工作及取得的研究成果。据我查证,除了文中特别加以标注和致谢的地方外,论文(设计)中不包含其他人已经发表或撰写过的研究成果,也不包含为获得其他教育机构的学位或证书而使用过的材料。我承诺,论文(设计)中的所有内容均真实、可信。

毕业论文(设计)作者(签名):

年月日基于Android平台的个人理财软件的设计与实现【摘要】:个人理财管理系统是基于Android系统开发的一款手机应用程序。它主要是为了满足人们在快节奏的生活中可以随时记下自己的收支情况的需求。个人理财管理系统与传统的记账方式相比,体现了它的便捷性、安全性及可扩展性。系统采用Eclipse+ Android Developer Tools作为开发工具,以SQLite为数据库。系统功能包括:用户账户的注册、用户切换、用户名密码修改、账户删除,语音识别记账,收入信息的增删改,

支出信息的增删改,收入类型的增删,支出类型的增删,收入信息分类统计,支出信息分类统计,收入支出总额统计,数据还原、清空等等。系统

具有界面简洁鲜明、功能便捷易用、操作人性化等特征。

【关键字】:收支管理;Android;SQLite;

Personal Financial Management System Design

and Implementation

Abstract:Personal financial management system is based on the Android system developed a mobile is mainly to meet those people who want to write down their income and expenditure more quickly and conveniently in the fast-paced life. Compared with the traditional method, Personal financial management system reflects more convenience,security and scalability. Especially in this day and age, people are on the side of the phone. System uses Eclipse and Android Developer Tools as a development tool and SQLite as the database. Android technology is now very mature, we can easily Financial Management System of the main functional modules,including: user account registration, user switching, username password changes, account deletion, Income information management,Expenditure information management,voice recognition accounting,Type of income management, Expenditure Type Manager, Income information classification statistics, expenditure information classification statistics, total income and

expenditure statistics,Data reduction, data emptied and so on. The system has a simple and clear interface, easy-to-use features, user-friendly operation and other features

Keywords: Revenue and expenditure management;Android;SQLite;

目录

1

绪论

1.1选题背景

出门口诀“伸手要赏钱”分别代表着身份证、手机、钥匙、伞、钱。在后PC时代的今天,手机成为最重要的移动终端,是我们出门出行的必携物。以前,或许我们的手机只能为我们提供基本通信功能,而随着Android系统的诞生,我们的生活迎来了一场不亚于“工业革命”带给我们的巨大变化。基于Android系统的手机处理各类信息的能力得到了质的提升。而Android这个开源的操作系统,将享受这项优质服务的权利给了所有愿意使用它的人。

Android从08年9月的版到去年的L版,一路走来,从基本走向优化,全方面地为我们提供了出色的网络、多媒体、通讯、娱乐等功能。这匹黑马,从诞生伊始到去年7月的“全球市场占有率达%”,告诉我们它的出现是多么受人们欢迎。它备受追捧的原因不外乎它完全的对第三方软件开发商和我们这些开发者的开发。我们可以在它上面实现无限自主的“自定义”。它宛如一张白纸,我们可以在上面随意画出自己想要的东西。它,贵在给予了我们自由。

课题研究的目的和意义

随着高速经济化,我们的生活节奏越来越快。我们忙东忙西,总会容易忽略忘记了一些生活细节,比如收支管理。为了更好的释放一些时间来享受我们的生活,我们期待有这么一款软件来帮助管理这些小数据。建立在Android操作系统上的个人理财系统,方便我们随时随地地记录着这些零散的数据,从此我们不必再为收支费心,清心地查看数据统计结果是我们唯一要做的事。

国内外现状和发展趋势

安卓在手机上的应用使得手机的功能有了很大改善,这使得越来越多的入主要依靠手机查询大量信息,而用户们不断提高的需求也决定了越来越多的基于安卓平台的应用软件及系统的产生。

若是基于安卓平台的个人理财系统得到广泛推广,人们能从该应用显而易见的了解到个人的财务状况,明确的使用自身钱财,了解到日常中支出比例,

调整支出,正确理财。

(1) 开放性手机平台:android是Google开发的基于Linux平台的开源手机操作系统。Google通过与运营商、设备制造商、手机公司和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的智能手机操作系统,在移动产业内形成一个开放式的生态系统。

(2) 网络集成性很高:涵盖了生活中各个方面的网络应用,对长期使用网络、信息依赖度比较高的人群很合适。

(3)Android具备创新性自从:Google开发出Android后,许多人认为其技术可信度要比其它操作系统略胜一筹,但这并不是用户购买Android智能手机的唯一原因。人们认为Android是一种相对较新的、又较为成熟的技术,在达到巅峰之前还有很大发展空间。

(4) Android平台在数量上逐渐主宰市场:市场分析机构NPD发布的数据显示,2014年4-6月份发售的智能手机中,33%为Android手机,而RIM手机发售比例为28%,iPhone为22%...

(5) Android在其它领域的拓展:android不仅促进了手机产业的发展,它的全面计算服务和丰富的功能支持,已将应用拓展到手机以外的其他领域。Android 平台的通用性可以适用于不同的屏幕、有线和无线设备。Android的系统和应用程序开发人员将更多的涉足多媒体、移动互联网设备、数字视频和家庭娱乐设备、汽车、医药、网络、监测仪器和工业管理、机顶盒等新领域。

2设计开发所用到的工具和技术

系统开发工具

个人财务管理系统的开发及运行环境如下所述:

操作系统:Windows7

JDK环境:

开发工具:Eclipse version= Android Software Development Kit version=开发语言:Java、XML

数据库软件:SQLite

运行平台:Windows

虚拟机:720P(1080x720)

Android的介绍

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。

Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。

该平台由操作系统、中间件、用户界面和应用软件组成。它采用软件堆层(Software Stack,又名软件叠层)的架构,主要分为三部分。底层以Linux 内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。

android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

蓝色的代表java程序,黄色的代码为运行JAVA程序而实现的虚拟机,绿色部分为C/C++语言编写的程序库,红色的代码内核(linux内核+driver)。在Application Framework之下,由C/C++的程序库组成,通过JNI完成从JAVA 到C的调用。

图2-1 Android架构

Eclipse的介绍

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

Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java 的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。 2003年,Eclipse 选择OSGi服务平台规范为运行时架构。 2007年6月,稳定版发布。2008年6月发布代号为Ganymede的版。2009年7月发布代号为GALILEO的版。

Eclipse是着名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。

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 Java差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。

SQLite的介绍

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL 这两款开源的世界着名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。至2015年已经有15个年头,

SQLite也迎来了一个版本 SQLite 3已经发布。

3系统需求分析

需求分析

生活中记录日常花销、收入总是琐碎累心的。特别是纸质记录,除了携带不方便外,还很容易丢失损毁。

这个时候,若是我们身边常带的手机上有这么一款可以随时记录收入和支出的软件,因为在记录收支的同时,会有一些注意事项需要标注,比如欠钱还钱注意事项。在对各项数据进行记录后,用户会希望看到对各类数据的统计,所以需要满足基本需求的统计模块。为了保证数据安全,增设账户模块。为了区分各用户的操作习惯,所以增设收入支出类型管理模块和系统设置模块。

可行性分析

系统可行性

可行性分析实在目前市场己有的类似系统调查的基础上,辩证新系统的研发是否具备开发必要性和可能性,对新系统的研发从技术、经济、社会因素等多个方面进行相关的分析和研究,以避免造成不必要的投资失误,保证和提高新系统开发成功的把握。可行性研究的目的就是以最小的时间、金钱代价确定疑难问题是否能够妥善解决。

技术可行性

此系统需要在Android手机操作系统上运行,用Eclipse进行开发,数据库我选用轻量级的SqLite。开发所需的软件技术成熟稳定,且支持Android系统的手机也分布广泛,可以完全满足所以的开发需求。

至于自己在Android方面虽然没有基础,鉴于之前有Java编程经验且时间充裕,有足够时间来学习空白的知识。

经济可行性

从市场经济来看,近年来,国人生活品质提升,逐渐重视生活品质,手机应用便成了人们生活的一部分。当今社会己步入了一个全新的信息时代,人类的每个活动都和“信息”紧密的联系在一起,小至个人的衣食住行,大及国家大事新闻发布,都依与信息的传播与发布,而社会中最活跃的,在市场经济高速发展的现在,手机应用普遍化,生活化,低端化成了不可阻挡的趋势。

从技术经济来看,由于SQLite 数据库和Android SDK 都是开源的免费的开发学习工具,而且本系统使用灵活方便,技术也不是很复杂,开发周期较短,因此开发成本较低。市场前景非常看好,所以说技术经济方面来看,本项目也是可行的。由此可以看出本系统开发所产生的效益将大于投入,所以开发本项目是可行的、必要的。

综上所述,个人理财系统充分利用了软硬件资源,技术成熟,成本低廉,操作简单,管理方便,使理财记账摆脱空间的限制,实现自动化处理和信息化管理,因此,本系统的实施是可行的。

系统功能模块

(1)用户管理:可以设置当前用户

(2)类别维护:用户可以添加日常收入、日常支出的类别,并且可以删除相应的类别,填写类别详细。

(3)日常收入:用户可以按照日常收入日期、金额、类别、备注进行数据的增添

(4)日常支出:用户可以按照日常支出日期、金额、类别、备注进行数据的增添

(5)收入支出统计:按照一定的数据查询条件,用户可以对数据进行统计。

图3-1 个人理财管理系统功能结构图

个人理财

类别维护 用户信息

收入支出查询 收入支出统计 收入支出插入 收 入 类 别

支出类 别 维

动输入

语音输入

收 入 统计

支出统计

收 入 数据支出数据用户信息

4系统总体设计

系统总体设计分析

系统设计是系统开发过程中的核心,从需求出发,总体上描述系统架构应该包含的组成要素。系统总体设计尽可能模块化,描述了各个模块之间的关联。模块化是一种很重要的设计思想,把一个复杂的系统分解为一些规模较小、功能简单的、更易于建立和修改的部分。一方面,各个模块具有相对独立性,可以分别加以设计实现;另一方面,模块之间的相互关系则通过一定的方式予以说明。各模块在这些关系的约束下共同构成一个统一的整体,完成系统的功能。

总体设计的核心内容就是依据需求分析定义的功能,合理、有效地实现系统中定义的各种需求,包括模块设计、数据库设计等。

系统流程图

根据系统分析以及功能需求,系统的基本流程可以描述为:主界面→选择各子功能模块,如下图所示:

(1

长。

(2

(3)适应性强:系统采用基于模型的设计思,用户的特点抽象出管理模型,根据模型进行系统设计,使系统具有很好的开放性的拓展性,能够高效率地适应各用户群体的需求。

数据库设计

tb_account(账户表)

tb_account用于管理系统各个用户信息。_id为用户的唯一标识,为表的主键,也为其他表的_id相对应。Username和pwd分别代表着用户名和密码。这两个是用户后期可以修改的。

账户表中存在着一个特殊的用户:默认用户。它的用户名密码用户不可见。用户在没有登陆的情况下,数据保存在这个用户下方。

表4-1 用户账户表

tb_income(收入信息表)

TYPE_ID与tb_itype表的type_id对应。No为收入信息的编号,不同用户的收入信息存入数据库的时候,都是以no=1为起始的,进而往后递增。

表4-2 收入信息表

tb_pay(支出信息表)

TYPE_ID与tb_ptype表的type_id对应。No为收入信息的编号,不同用户的支出信息存入数据库的时候,都是以no=1为起始的,进而往后递增。

表4-3 支出信息表

tb_ptype(支出类型表)

tb_ ptype为支出类型表。由于每个用户都有对应的用户习惯,在添加支出信息时,收入类型的种类、使用频率都会有所不同。在此设计支出类型表,可以为用户提供修改支出类型的服务,根据自己的使用频率修改支出类型。

表4-4 支出类型表

tb_itype(收入类型表)

tb_itype为收入类型表。由于每个用户都有对应的用户习惯,在添加收入信息时,收入类型的种类、使用频率都会有所不同。在此设计收入类型表,可以为用户提供修改收入类型的服务,根据自己的使用频率修改收入类型。

表4-5 收入类型表

5系统详细设计与实现

主界面设计

快速记个人记账软件主界面,有4个Fragment页面。

图5-1 为快速记主界面

主界面使用4个Fragment和PopupWindow生成,部分代码:

/**

* 显示PopupWindow弹出菜单

*/

private void showPopupWindow(View parent) {

DisplayMetrics dm = ().getDisplayMetrics();

int w_screen = ;

int h_screen = ;

idth), h_screen / 4);

}

idth) / 2;

(parent, xPos, 12);

etSupportFragmentManager().beginTransaction();

.

private void clickPop_voiceBtn() {

Intent intent = new Intent, ;oString();

oString(),

().toString());

(tb_pay);how();

gotoback();

} else {

, "请输入收入金额!",

.show();

}

} else { oString(),

().toString());

+ get2Double(strMoney));

(tb_income);how();

gotoback();

} else {

, "请输入收入金额!",

.show();

}

}

} else { oString().isEmpty()) { etText().toString()));etText().toString()));etSelectedItemPosition() + 1);

oString());oString());

how();

gotoback();

} else {

, "请输入收入金额!",

.show();

}

} else

{ oString().isEmpty()) {

etText().toString()));etText().toString()));etSelectedItemPosition() + 1);

oString());oString());how();

gotoback();

} else {

, "请输入收入金额!",

.show();

}

}

}

}

});

软键盘部分代码:

public void onKey(int primaryCode, int[] keyCodes) {

Editable editable = ();

if ("ModifyInP")) { oString().indexOf(".") < 0) {

a = true;

}

}

}

} else if (primaryCode == -7) { ;

a = false;

}

} else if (primaryCode == -9) { .去对比,然后标记下这个金额的起始和结束位置,然后截取出来,并调用工具类把这个汉字的金额转变为阿拉伯数字。最后使用方法去判断当前是“添加模式”还是“修改模式”,然后再判断是“支出”还是“收入”,然后录入数据库。

图5-3 语音记账界面

百度识别回调部分代码:

mRecognitionListener = new DialogRecognitionListener()

{ etStringArrayList(RESULTS_RECOGNITION) : null;

if (rs != null && () > 0) {

Recognition(0));

how();

}

}

};

void VoiceRecognition() { utInt, utString,utBoolean(

utBoolean(

,

;

().putBoolean(

,

;

();

}

/*

* 识别结果处理函数

*

* @param VoiceSave[0] 收入类别的值

*

* @param VoiceSave[1] 金额的值

*

* @param VoiceSave[3] 重复类别的值,仅用于显示提醒

*

* @param VoiceSave[4] 支出类别的值

*

* @param VoiceSave[5] "语音识别"类别的值

*/

private void Recognition(String t) {

int mfirst = 100, mend = 0, temp = 0;

Boolean ismoney = false, intype = false, outtype = false;

String w = "", strmoney = "", inname = "1", outname = "2";

spdatalist = (userid);

spdatalist2 = (userid);

VoiceSave[2] = t;

for (int i = 0; i < (); i++) { oString()) > -1) {

type = "pay";

intype = true;

inname = (i).toString();

VoiceSave[0] = (i); oString()) > -1) {

type = "income";

outtype = true;

outname = (i).toString();

VoiceSave[4] = (i); ndexOf(i).toString()) > -1) {

VoiceSave[5] = (i);

VoiceSave[3] = "语音识别";

}

}

w = "**提示:\n你的话中没有包含<(默认)类别>(" + listToString(spdatalist, ',')

+ ")\n\n\n将会记录为<语音识别>类别,是否依然记录\n";

("shake", "notype", t, w);

} else {

("rotatebottom", "OK", t, w);

}

}

}

Dialog部分处理代码:

public void dialogShow(String showtype, String style,

final String context1, String context2) {

switch (showtype) {

case "rotatebottom":

effect = ;

break;

case "shake":

effect = ;

break;

}

switch (style) {

case "first":

相关主题
相关文档
最新文档