1、本科毕业论文设计基于ANDROID平台的个人理财软件的设计与实现二级学院医药信息工程学院专业计算机科学与技术班级医学智能2011级1班学生姓名学号1107505151指导教师2015年3月诚信声明我声明,所呈交的毕业论文(设计)是本人在老师指导下进行的研究工作及取得的研究成果。据我查证,除了文中特别加以标注和致谢的地方外,论文(设计)中不包含其他人已经发表或撰写过的研究成果,也不包含为获得其他教育机构的学位或证书而使用过的材料。我承诺,论文(设计)中的所有内容均真实、可信。毕业论文(设计)作者(签名)年月日基于ANDROID平台的个人理财软件的设计与实现【摘要】个人理财管理系统是基于ANDRO
2、ID系统开发的一款手机应用程序。它主要是为了满足人们在快节奏的生活中可以随时记下自己的收支情况的需求。个人理财管理系统与传统的记账方式相比,体现了它的便捷性、安全性及可扩展性。系统采用ECLIPSEANDROIDDEVELOPERTOOLS作为开发工具,以SQLITE为数据库。系统功能包括用户账户的注册、用户切换、用户名密码修改、账户删除,语音识别记账,收入信息的增删改,支出信息的增删改,收入类型的增删,支出类型的增删,收入信息分类统计,支出信息分类统计,收入支出总额统计,数据还原、清空等等。系统具有界面简洁鲜明、功能便捷易用、操作人性化等特征。【关键字】收支管理;ANDROID;SQLITE
3、;PERSONALFINANCIALMANAGEMENTSYSTEMDESIGNANDIMPLEMENTATIONABSTRACTPERSONALFINANCIALMANAGEMENTSYSTEMISBASEDONTHEANDROIDSYSTEMDEVELOPEDAMOBILEAPPLICATIONITISMAINLYTOMEETTHOSEPEOPLEWHOWANTTOWRITEDOWNTHEIRINCOMEANDEXPENDITUREMOREQUICKLYANDCONVENIENTLYINTHEFASTPACEDLIFECOMPAREDWITHTHETRADITIONALMETHOD,PER
4、SONALFINANCIALMANAGEMENTSYSTEMREFLECTSMORECONVENIENCE,SECURITYANDSCALABILITYESPECIALLYINTHISDAYANDAGE,PEOPLEAREONTHESIDEOFTHEPHONESYSTEMUSESECLIPSEANDANDROIDDEVELOPERTOOLSASADEVELOPMENTTOOLANDSQLITEASTHEDATABASEANDROIDTECHNOLOGYISNOWVERYMATURE,WECANEASILYDEVELOPPERSONALFINANCIALMANAGEMENTSYSTEMOFTHE
5、MAINFUNCTIONALMODULES,INCLUDINGUSERACCOUNTREGISTRATION,USERSWITCHING,USERNAMEPASSWORDCHANGES,ACCOUNTDELETION,INCOMEINFORMATIONMANAGEMENT,EXPENDITUREINFORMATIONMANAGEMENT,VOICERECOGNITIONACCOUNTING,TYPEOFINCOMEMANAGEMENT,EXPENDITURETYPEMANAGER,INCOMEINFORMATIONCLASSIFICATIONSTATISTICS,EXPENDITUREINFO
6、RMATIONCLASSIFICATIONSTATISTICS,TOTALINCOMEANDEXPENDITURESTATISTICS,DATAREDUCTION,DATAEMPTIEDANDSOONTHESYSTEMHASASIMPLEANDCLEARINTERFACE,EASYTOUSEFEATURES,USERFRIENDLYOPERATIONANDOTHERFEATURESKEYWORDSREVENUEANDEXPENDITUREMANAGEMENTANDROIDSQLITE目录1绪论111选题背景112课题研究的目的和意义113国内外现状和发展趋势12设计开发所用到的工具和技术321
7、系统开发工具322ANDROID的介绍323ECLIPSE的介绍424SQLITE的介绍53系统需求分析631需求分析632可行性分析6321系统可行性6322技术可行性6323经济可行性733系统功能模块74系统总体设计941系统总体设计分析942系统流程图943系统特点944数据库设计10441TB_ACCOUNT(账户表)110442TB_INCOME(收入信息表)110443TB_PAY(支出信息表)11444TB_PTYPE(支出类型表)11445TB_ITYPE(收入类型表)125系统详细设计与实现1251主界面设计1252收入/支出插入数据界面1653语音记账界面2154类别维护
8、界面3155收入/支出统计界面316论文总结38参考文献39致谢401绪论11选题背景出门口诀“伸手要赏钱”分别代表着身份证、手机、钥匙、伞、钱。在后PC时代的今天,手机成为最重要的移动终端,是我们出门出行的必携物。以前,或许我们的手机只能为我们提供基本通信功能,而随着ANDROID系统的诞生,我们的生活迎来了一场不亚于“工业革命”带给我们的巨大变化。基于ANDROID系统的手机处理各类信息的能力得到了质的提升。而ANDROID这个开源的操作系统,将享受这项优质服务的权利给了所有愿意使用它的人。ANDROID从08年9月的11版到去年的L版,一路走来,从基本走向优化,全方面地为我们提供了出色的
9、网络、多媒体、通讯、娱乐等功能。这匹黑马,从诞生伊始到去年7月的“全球市场占有率达819”,告诉我们它的出现是多么受人们欢迎。它备受追捧的原因不外乎它完全的对第三方软件开发商和我们这些开发者的开发。我们可以在它上面实现无限自主的“自定义”。它宛如一张白纸,我们可以在上面随意画出自己想要的东西。它,贵在给予了我们自由。12课题研究的目的和意义随着高速经济化,我们的生活节奏越来越快。我们忙东忙西,总会容易忽略忘记了一些生活细节,比如收支管理。为了更好的释放一些时间来享受我们的生活,我们期待有这么一款软件来帮助管理这些小数据。建立在ANDROID操作系统上的个人理财系统,方便我们随时随地地记录着这些
10、零散的数据,从此我们不必再为收支费心,清心地查看数据统计结果是我们唯一要做的事。13国内外现状和发展趋势安卓在手机上的应用使得手机的功能有了很大改善,这使得越来越多的入主要依靠手机查询大量信息,而用户们不断提高的需求也决定了越来越多的基于安卓平台的应用软件及系统的产生。若是基于安卓平台的个人理财系统得到广泛推广,人们能从该应用显而易见2的了解到个人的财务状况,明确的使用自身钱财,了解到日常中支出比例,调整支出,正确理财。1开放性手机平台ANDROID是GOOGLE开发的基于LINUX平台的开源手机操作系统。GOOGLE通过与运营商、设备制造商、手机公司和其他有关各方结成深层次的合作伙伴关系,希
11、望借助建立标准化、开放式的智能手机操作系统,在移动产业内形成一个开放式的生态系统。2网络集成性很高涵盖了生活中各个方面的网络应用,对长期使用网络、信息依赖度比较高的人群很合适。3ANDROID具备创新性自从GOOGLE开发出ANDROID后,许多人认为其技术可信度要比其它操作系统略胜一筹,但这并不是用户购买ANDROID智能手机的唯一原因。人们认为ANDROID是一种相对较新的、又较为成熟的技术,在达到巅峰之前还有很大发展空间。4ANDROID平台在数量上逐渐主宰市场市场分析机构NPD发布的数据显示,2014年46月份发售的智能手机中,33为ANDROID手机,而RIM手机发售比例为28,IP
12、HONE为225ANDROID在其它领域的拓展ANDROID不仅促进了手机产业的发展,它的全面计算服务和丰富的功能支持,已将应用拓展到手机以外的其他领域。ANDROID平台的通用性可以适用于不同的屏幕、有线和无线设备。ANDROID的系统和应用程序开发人员将更多的涉足多媒体、移动互联网设备、数字视频和家庭娱乐设备、汽车、医药、网络、监测仪器和工业管理、机顶盒等新领域。32设计开发所用到的工具和技术21系统开发工具个人财务管理系统的开发及运行环境如下所述操作系统WINDOWS7JDK环境JAVADEVELOPMENTKITVERSION170_45开发工具ECLIPSEVERSION420AND
13、ROIDSOFTWAREDEVELOPMENTKITVERSION442ANDROIDDEVELOPERTOOLSBUILDV2230887826开发语言JAVA、XML数据库软件SQLITE运行平台WINDOWS虚拟机720P1080X72022ANDROID的介绍ANDROID是一种基于LINUX的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由GOOGLE公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。ANDROID操作系统最初由ANDYRUBIN开发,主要支持手机。2005年8月由GOOGLE收购注资。2007年11月
14、,GOOGLE与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良ANDROID系统。该平台由操作系统、中间件、用户界面和应用软件组成。它采用软件堆层(SOFTWARESTACK,又名软件叠层)的架构,主要分为三部分。底层以LINUX内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库LIBRARY和虚拟机VIRTUALMACHINE,由C开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以JAVA作为编写程序的一部分。不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。ANDROID分为四
15、个层,从高层到低层分别是应用程序层、应用程序框架层、系4统运行库层和LINUX核心层。蓝色的代表JAVA程序,黄色的代码为运行JAVA程序而实现的虚拟机,绿色部分为C/C语言编写的程序库,红色的代码内核LINUX内核DRIVER。在APPLICATIONFRAMEWORK之下,由C/C的程序库组成,通过JNI完成从JAVA到C的调用。图21ANDROID架构23ECLIPSE的介绍ECLIPSEGALILEOECLIPSE是一个开放源代码的、基于JAVA的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,ECLIPSE附带了一个标准的插件集,包括J
16、AVA开发工具(JAVADEVELOPMENTTOOLS,JDT)。ECLIPSE最初是由IBM公司开发的替代商业软件VISUALAGEFORJAVA的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟ECLIPSE基金会(ECLIPSEFOUNDATION)管理。2003年,ECLIPSE30选择OSGI服务平台规范为运行时架构。2007年6月,稳定版33发布。2008年6月发布代号为GANYMEDE的34版。2009年7月发布代号为GALILEO的35版。ECLIPSE是著名的跨平台的自由集成开发环境(IDE)。最初主要用来JAVA语言开发,但是目前亦有人通
17、过插件使其作为其他计算机语言比如C和PYTHON5的开发工具。ECLIPSE的本身只是一个框架平台,但是众多插件的支持使得ECLIPSE拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以ECLIPSE为框架开发自己的IDE。ECLIPSE最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。IBM提供了最初的ECLIPSE代码基础,包括PLATFORM、JDT和PDE。目前由IBM牵头,围绕着ECLIPSE项目已经发展成为了一个庞大的ECLIPSE联盟,有150多家软件公司参与到ECLIPSE项目中,其中包括BORLAND、RATIONALSOFTWARE、
18、REDHAT及SYBASE等。ECLIPSE是一个开发源码项目,它其实是VISUALAGEFORJAVA的替代品,其界面跟先前的VISUALAGEFORJAVA差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括ORACLE在内的许多大公司也纷纷加入了该项目,并宣称ECLIPSE将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。24SQLITE的介绍SQLITE,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是DRICHARDHIPP建立的公有领域项目。它的设计
19、目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持WINDOWS/LINUX/UNIX等等主流的操作系统,同时能够跟很多程序语言相结合,比如TCL、C、PHP、JAVA等,还有ODBC接口,同样比起MYSQL、POSTGRESQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLITE第一个ALPHA版本诞生于2000年5月。至2015年已经有15个年头,SQLITE也迎来了一个版本SQLITE3已经发布。63系统需求分析31需求分析生活中记录日常花销、收入总是琐碎累心的。特别是纸质记录,除了
20、携带不方便外,还很容易丢失损毁。这个时候,若是我们身边常带的手机上有这么一款可以随时记录收入和支出的软件,因为在记录收支的同时,会有一些注意事项需要标注,比如欠钱还钱注意事项。在对各项数据进行记录后,用户会希望看到对各类数据的统计,所以需要满足基本需求的统计模块。为了保证数据安全,增设账户模块。为了区分各用户的操作习惯,所以增设收入支出类型管理模块和系统设置模块。32可行性分析321系统可行性可行性分析实在目前市场己有的类似系统调查的基础上,辩证新系统的研发是否具备开发必要性和可能性,对新系统的研发从技术、经济、社会因素等多个方面进行相关的分析和研究,以避免造成不必要的投资失误,保证和提高新系
21、统开发成功的把握。可行性研究的目的就是以最小的时间、金钱代价确定疑难问题是否能够妥善解决。322技术可行性此系统需要在ANDROID手机操作系统上运行,用ECLIPSE进行开发,数据库我选用轻量级的SQLITE。开发所需的软件技术成熟稳定,且支持ANDROID系统的手机也分布广泛,可以完全满足所以的开发需求。至于自己在ANDROID方面虽然没有基础,鉴于之前有JAVA编程经验且时间充裕,有足够时间来学习空白的知识。7323经济可行性从市场经济来看,近年来,国人生活品质提升,逐渐重视生活品质,手机应用便成了人们生活的一部分。当今社会己步入了一个全新的信息时代,人类的每个活动都和“信息”紧密的联系
22、在一起,小至个人的衣食住行,大及国家大事新闻发布,都依与信息的传播与发布,而社会中最活跃的,在市场经济高速发展的现在,手机应用普遍化,生活化,低端化成了不可阻挡的趋势。从技术经济来看,由于SQLITE数据库和ANDROIDSDK都是开源的免费的开发学习工具,而且本系统使用灵活方便,技术也不是很复杂,开发周期较短,因此开发成本较低。市场前景非常看好,所以说技术经济方面来看,本项目也是可行的。由此可以看出本系统开发所产生的效益将大于投入,所以开发本项目是可行的、必要的。综上所述,个人理财系统充分利用了软硬件资源,技术成熟,成本低廉,操作简单,管理方便,使理财记账摆脱空间的限制,实现自动化处理和信息
23、化管理,因此,本系统的实施是可行的。33系统功能模块(1)用户管理可以设置当前用户(2)类别维护用户可以添加日常收入、日常支出的类别,并且可以删除相应的类别,填写类别详细。(3)日常收入用户可以按照日常收入日期、金额、类别、备注进行数据的增添(4)日常支出用户可以按照日常支出日期、金额、类别、备注进行数据的增添(5)收入支出统计按照一定的数据查询条件,用户可以对数据进行统计。8图31个人理财管理系统功能结构图个人理财类别维护用户信息收入支出查询收入支出统计收入支出插入收入类别维护支出类别维护手动输入语音输入收入插入数据支出插入数据收入统计支出统计收入数据查询支出数据查询用户信息维护94系统总体
24、设计41系统总体设计分析系统设计是系统开发过程中的核心,从需求出发,总体上描述系统架构应该包含的组成要素。系统总体设计尽可能模块化,描述了各个模块之间的关联。模块化是一种很重要的设计思想,把一个复杂的系统分解为一些规模较小、功能简单的、更易于建立和修改的部分。一方面,各个模块具有相对独立性,可以分别加以设计实现另一方面,模块之间的相互关系则通过一定的方式予以说明。各模块在这些关系的约束下共同构成一个统一的整体,完成系统的功能。总体设计的核心内容就是依据需求分析定义的功能,合理、有效地实现系统中定义的各种需求,包括模块设计、数据库设计等。42系统流程图根据系统分析以及功能需求,系统的基本流程可以
25、描述为主界面选择各子功能模块,如下图所示图41系统流程图43系统特点(1)目的明确理财就是以管钱为中心,通过抓好赚钱、生钱、护钱,三个环个人理财系统密码管理模块用户登录模块收/支数据查询类别管理模块收/支记录模块10节,管好自己手中的现金流动,让资产在保值的基础上,实现稳定持续的增长。(2)功能齐全系统覆盖了理财所需要的功能,收支,统计。(3)适应性强系统采用基于模型的设计思,用户的特点抽象出管理模型,根据模型进行系统设计,使系统具有很好的开放性的拓展性,能够高效率地适应各用户群体的需求。44数据库设计441TB_ACCOUNT账户表TB_ACCOUNT用于管理系统各个用户信息。_ID为用户的
26、唯一标识,为表的主键,也为其他表的_ID相对应。USERNAME和PWD分别代表着用户名和密码。这两个是用户后期可以修改的。账户表中存在着一个特殊的用户默认用户。它的用户名密码用户不可见。用户在没有登陆的情况下,数据保存在这个用户下方。表41用户账户表字段名数据类型是否主键描述_IDINTEGERY用户IDUSERNAMEVARCHAR20N用户名PWDVARCHAR50N密码442TB_INCOME(收入信息表)TYPE_ID与TB_ITYPE表的TYPE_ID对应。NO为收入信息的编号,不同用户的收入信息存入数据库的时候,都是以NO1为起始的,进而往后递增。表42收入信息表字段名数据类型是
27、否主键描述_IDINTEGERN用户IDNOINTEGERY编号11443TB_PAY(支出信息表)TYPE_ID与TB_PTYPE表的TYPE_ID对应。NO为收入信息的编号,不同用户的支出信息存入数据库的时候,都是以NO1为起始的,进而往后递增。表43支出信息表字段名数据类型是否主键描述_IDINTEGERN用户IDNOINTEGERY自增MONEYDECIMALN支出金额TIMEDATEN支出时间TYPE_IDINTEGERN支出类别ADDRESSVARCHAR100N消费地点MARKVARCHAR200N备注PHOTOVARCHAR200N照片KINDVARCHAR10N类别444TB
28、_PTYPE(支出类型表)TB_PTYPE为支出类型表。由于每个用户都有对应的用户习惯,在添加支出信息时,收入类型的种类、使用频率都会有所不同。在此设计支出类型表,可以为用户提供修改支出类型的服务,根据自己的使用频率修改支出类型。MONEYDECIMALN收入金额TIMEDATEN收入时间TYPE_IDINTEGERN收入类别HANDLERVARCHAR100N放款方MARKVARCHAR200N备注PHOTOVARCHAR200N照片KINDVARCHAR10N类别12表44支出类型表字段名数据类型是否主键可否为空描述_IDINTEGERNN用户IDNOINTEGERYN类型编号TYPE_I
29、DINTEGERNN类型ID445TB_ITYPE(收入类型表)TB_ITYPE为收入类型表。由于每个用户都有对应的用户习惯,在添加收入信息时,收入类型的种类、使用频率都会有所不同。在此设计收入类型表,可以为用户提供修改收入类型的服务,根据自己的使用频率修改收入类型。表45收入类型表字段名数据类型是否主键可否为空描述_IDINTEGERNN用户IDNOINTEGERYN类型编号TYPE_IDINTEGERNN类型ID5系统详细设计与实现51主界面设计快速记个人记账软件主界面,有4个FRAGMENT页面。13图51为快速记主界面主界面使用4个FRAGMENT和POPUPWINDOW生成,部分代码
30、/显示POPUPWINDOW弹出菜单/PRIVATEVOIDSHOWPOPUPWINDOWVIEWPARENTDISPLAYMETRICSDMPARENTGETRESOURCESGETDISPLAYMETRICSINTW_SCREENDMWIDTHPIXELSINTH_SCREENDMHEIGHTPIXELS14/SYSTEMOUTPRINTLN“你的设备W_SCREEN“W_SCREEN“H_SCREEN“/H_SCREENIFPOPWINDOWNULLLAYOUTINFLATERLAYOUTINFLATERLAYOUTINFLATERGETSYSTEMSERVICECONTEXTLAYOU
31、T_INFLATER_SERVICEVIEWVIEWLAYOUTINFLATERINFLATERLAYOUTPOPWINDOW_LAYOUT,NULLPOPWINLAYOUTLINEARLAYOUTVIEWFINDVIEWBYIDRIDPOPWINDOW/创建一个POPUWIDOW对象FLOATRADIOWITHW_SCREEN/4800FFLOATRADIOHEIGHTH_SCREEN/8000FPOPWINDOWNEWPOPUPWINDOWVIEW,INTPOPWINLAYOUTGETLAYOUTPARAMSWIDTH,H_SCREEN/4/使其聚集,要想监听菜单里控件的事件就必须要调用此
32、方法POPWINDOWSETFOCUSABLETRUEPOP_VOICEVIEWLINEARLAYOUTPOPWINLAYOUTFINDVIEWBYIDRIDPOP_VOICEPOP_QUICKVIEWLINEARLAYOUTPOPWINLAYOUTFINDVIEWBYIDRIDPOP_QUICKPOP_VOICEVIEWSETONCLICKLISTENERTHISPOP_QUICKVIEWSETONCLICKLISTENERTHIS/设置允许在外点击消失POPWINDOWSETOUTSIDETOUCHABLETRUE/设置背景,这个是为了点击“返回BACK”也能使其消失,并且并不会影响你的背
33、景POPWINDOWSETBACKGROUNDDRAWABLENEWBITMAPDRAWABLE/设置菜单显示的位置INTXPOSW_SCREENPOPWINLAYOUTGETLAYOUTPARAMSWIDTH/2POPWINDOWSHOWASDROPDOWNPARENT,XPOS,12/POPWINDOWSHOWASDROPDOWNPARENT,GRAVITYCENTER,0/监听菜单的关闭事件POPWINDOWSETONDISMISSLISTENERNEWONDISMISSLISTENEROVERRIDEPUBLICVOIDONDISMISS/改变显示的按钮图片为正常状态CHANGEBUT
34、TONIMAGE15/监听触屏事件POPWINDOWSETTOUCHINTERCEPTORNEWONTOUCHLISTENERPUBLICBOOLEANONTOUCHVIEWVIEW,MOTIONEVENTEVENTIFEVENTGETACTIONMOTIONEVENTACTION_OUTSIDE/改变显示的按钮图片为正常状态CHANGEBUTTONIMAGERETURNFALSE/点击了“明细”按钮/PRIVATEVOIDCLICKFRIENDFEEDBTN/实例化FRAGMENT页面FRAGMENTPAGE1NEWFRAGMENTPAGE1/得到FRAGMENT事务管理器FRAGMENTT
35、RANSACTIONFRAGMENTTRANSACTIONTHISGETSUPPORTFRAGMENTMANAGERBEGINTRANSACTION/替换当前的页面FRAGMENTTRANSACTIONREPLACERIDFRAME_CONTENT,FRAGMENTPAGE1/事务管理提交FRAGMENTTRANSACTIONCOMMITFRIENDFEEDFLSETSELECTEDTRUEFRIENDFEEDIVSETSELECTEDTRUEMYFEEDFLSETSELECTEDFALSEMYFEEDIVSETSELECTEDFALSEHOMEFLSETSELECTEDFALSEHOMEIV
36、SETSELECTEDFALSEMOREFLSETSELECTEDFALSEMOREIVSETSELECTEDFALSE此处省略类似的函数PRIVATEVOIDCLICKPOP_VOICEBTN16INTENTINTENTNEWINTENTMAINACTIVITYTHIS,ADDPAYCLASS/创建INTENT对象INTENTPUTEXTRA“CWPID“,USERIDINTENTPUTEXTRA“CWPVOICE“,“/设置传递数据STARTACTIVITYINTENTPRIVATEVOIDCLICKPOP_QUICKBTNINTENTINTENTNEWINTENTMAINACTIVITY
37、THIS,ADDPAYCLASS/创建INTENT对象INTENTPUTEXTRA“CWPID“,USERIDSTARTACTIVITYINTENT/点击了中间按钮/PRIVATEVOIDCLICKTOGGLEBTNSHOWPOPUPWINDOWPLUSIMAGEVIEW/改变按钮显示的图片为按下时的状态PLUSIMAGEVIEWSETIMAGERESOURCERDRAWABLETOOLBAR_PLUSBACKTOGGLEIMAGEVIEWSETIMAGERESOURCERDRAWABLETOOLBAR_BTN_PRESSED/改变显示的按钮图片为正常状态/PRIVATEVOIDCHANGEB
38、UTTONIMAGEPLUSIMAGEVIEWSETIMAGERESOURCERDRAWABLETOOLBAR_PLUSTOGGLEIMAGEVIEWSETIMAGERESOURCERDRAWABLETOOLBAR_BTN_NORMAL52收入/支出插入数据界面添加软键盘,来添加收入/支出消费记录17图52收入/支出插入数据界面添加收/支部分代码,需要判断是添加模式还是修改模式,是添加收入还是添加支出BTNSAVEBUTTONSETONCLICKLISTENERNEWONCLICKLISTENER/为保存按钮设置监听事件SUPPRESSLINT“NEWAPI“OVERRIDEPUBLICVOI
39、DONCLICKVIEWARG0IFTYPEMODE“ADD“/添加模式STRINGSTRMONEYTXTMONEYGETTEXTTOSTRING/获取金额文本框的值IFTYPE“PAY“/支出IFSTRMONEYISEMPTY/判断金额不为空/创建INACCOUNTDAO对象PAYDAOPAYDAONEWPAYDAOADDPAYTHIS/创建TB_INACCOUNT对象TB_PAYTB_PAYNEWTB_PAYUSERID,PAYDAOGETMAXNOUSERID1,GET2DOUBLESTRMONEY,SETTIMEFORMATNULL,18SPTYPEGETSELECTEDITEMPOS
40、ITION1,TXTADDRESSGETTEXTTOSTRING,TXTMARKGETTEXTTOSTRINGPAYDAOADDTB_PAY/添加收入信息TOASTMAKETEXTADDPAYTHIS,“新增收入数据添加成功“,TOASTLENGTH_SHORTSHOWGOTOBACKELSETOASTMAKETEXTADDPAYTHIS,“请输入收入金额“,TOASTLENGTH_SHORTSHOWELSE/收入IFSTRMONEYISEMPTY/判断金额不为空/创建INACCOUNTDAO对象INCOMEDAOINCOMEDAONEWINCOMEDAOADDPAYTHIS/创建TB_INA
41、CCOUNT对象TB_INCOMETB_INCOMENEWTB_INCOMEUSERID,INCOMEDAOGETMAXNOUSERID1,GET2DOUBLESTRMONEY,SETTIMEFORMATNULL,SPTYPEGETSELECTEDITEMPOSITION1,TXTINHANDLERGETTEXTTOSTRING,TXTMARKGETTEXTTOSTRINGSYSTEMOUTPRINTLN“MONEY“GET2DOUBLESTRMONEYINCOMEDAOADDTB_INCOME/添加收入信息/弹出信息提示TOASTMAKETEXTADDPAYTHIS,“新增收入数据添加成功“
42、,TOASTLENGTH_SHORTSHOWGOTOBACKELSETOASTMAKETEXTADDPAYTHIS,“请输入收入金额“,TOASTLENGTH_SHORTSHOWELSE/修改模式IFTYPE“PAY“/支出19IFTXTMONEYGETTEXTTOSTRINGISEMPTY/判断金额不为空TB_PAYTB_PAYNEWTB_PAY/创建TB_PAY对象TB_PAYSET_IDUSERID/设置USERIDTB_PAYSETNOINTEGERPARSEINTSTRNO/设置编号TB_PAYSETMONEYGET2DOUBLETXTMONEYGETTEXTTOSTRING/设置金
43、额TB_PAYSETTIMESETTIMEFORMATTXTTIMEGETTEXTTOSTRING/设置时间TB_PAYSETTYPESPTYPEGETSELECTEDITEMPOSITION1/设置类别TB_PAYSETADDRESSTXTADDRESSGETTEXTTOSTRING/设置地点TB_PAYSETMARKTXTMARKGETTEXTTOSTRING/设置备注PAYDAOUPDATETB_PAY/更新支出信息TOASTMAKETEXTADDPAYTHIS,“数据修改成功“,TOASTLENGTH_SHORTSHOWGOTOBACKELSETOASTMAKETEXTADDPAYTH
44、IS,“请输入收入金额“,TOASTLENGTH_SHORTSHOWELSE/收入IFTXTMONEYGETTEXTTOSTRINGISEMPTY/判断金额不为空TB_INCOMETB_INCOMENEWTB_INCOME/创建TB_INCOME对象TB_INCOMESET_IDUSERID/设置编号TB_INCOMESETNOINTEGERPARSEINTSTRNO/设置编号TB_INCOMESETMONEYGET2DOUBLETXTMONEYGETTEXTTOSTRING/设置金额TB_INCOMESETTIMESETTIMEFORMATTXTTIMEGETTEXTTOSTRING/设置时
45、间TB_INCOMESETTYPESPTYPEGETSELECTEDITEMPOSITION1/设置类别TB_INCOMESETHANDLERTXTINHANDLERGETTEXTTOSTRING/设置付款方TB_INCOMESETMARKTXTMARKGETTEXT20TOSTRING/设置备注INCOMEDAOUPDATETB_INCOME/更新收入信息TOASTMAKETEXTADDPAYTHIS,“数据修改成功“,TOASTLENGTH_SHORTSHOWGOTOBACKELSETOASTMAKETEXTADDPAYTHIS,“请输入收入金额“,TOASTLENGTH_SHORTSHO
46、W软键盘部分代码PUBLICVOIDONKEYINTPRIMARYCODE,INTKEYCODESEDITABLEEDITABLEEDGETTEXTIFTYPEMODEEQUALS“MODIFYINP“/添加模式获取开始光标EDSETSELECTIONEDITABLELENGTHINTSTARTEDGETSELECTIONSTARTIFPRIMARYCODEKEYBOARDKEYCODE_DELETE/删除键IFEDITABLENULLIFEDGETTEXTTOSTRINGINDEXOF“0AFALSEELSEIFPRIMARYCODE9/语音识别HIDEKEYBOARDDIALOGSHOWU
47、TILDIALOGSHOW“ROTATEBOTTOM“,“FIRST“,“,“ELSEEDITABLEINSERTSTART,CHARACTERTOSTRINGCHARPRIMARYCODE21PUBLICVOIDSHOWKEYBOARD/显示键盘INTVISIBILITYKEYBOARDVIEWGETVISIBILITYIFVISIBILITYVIEWGONE|VISIBILITYVIEWINVISIBLEKEYBOARDVIEWSETVISIBILITYVIEWVISIBLEPUBLICVOIDHIDEKEYBOARD/隐藏键盘INTVISIBILITYKEYBOARDVIEWGETVIS
48、IBILITYIFVISIBILITYVIEWVISIBLEKEYBOARDVIEWSETVISIBILITYVIEWINVISIBLE53语音记账界面语音记账使用了百度语音识别API,通过响应用户的触发,调用API动态生成百度自定义的DIALOG来进行用户语音录音。当用户录入语音后,返回语音识别的数据,然后转为字符串并进行分析判断。目前主要以金额和类别来作为关键字来进行判断,首先通过将识别字符串通过跟收入/支出类别进行对比,如果存在相关类别即标记下当前录入的类别;如果没有当前这个类别,将会弹出自定义DIALOG让用户去选择即使没有匹配的类别,是否依然要录入,如果“是”,该笔类型就会默认为“语
49、音识别”类别,并会让用户去选择当前记录是“支出”还是“收入”,再去结合当前的金额录入数据;如果用户录入的类别同时存在于“收入”和“支出”之中,那么就会让用户去选择该笔记录是“收入”还是“支出”,在去结合当前的金额录入数据。另一方面,将识别字符串与自定义的列如“一”,“二”,“元”,“钱”去对比,然后标记下这个金额的起始和结束位置,然后截取出来,并调用工具类把这个汉字的金额转变为阿拉伯数字。最后使用方法去判断当前是“添加模式”还是“修改模式”,然后再判断是“支出”还是“收入”,然后录入数据库。22图53语音记账界面23百度识别回调部分代码MRECOGNITIONLISTENERNEWDIALOGRECOGNITIONLISTENER/百度识别返回数据OVERRIDEPUBLICVOIDONRESULTSBUNDLERESULTSARRAYLISTRSRESULTSNULLRESULTSGETSTRINGARRAYLISTRESULTS_RECOGNITIONNULLIFRSNUL
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。