记账本的设计.docx
《记账本的设计.docx》由会员分享,可在线阅读,更多相关《记账本的设计.docx(36页珍藏版)》请在冰豆网上搜索。
记账本的设计
课题名称
基于Android记账本的设计
院系
计算机与软件学院
专业
移动互联网技术(Android技术)
班级
学号
学生姓名
指导教师:
2016年05月日
计算机与软件学院
毕业设计(论文)诚信承诺
我谨在此承诺:
本人所写的毕业论文《基于Android的Time记账本的设计》,系本人独立完成,没有抄袭行为,凡涉与其他作者的观点和材料,均作了注释与说明,若有不实,后果由本人承担。
承诺人(签名):
2016年05月18日
摘要
在后PC时代的今天,手机已经普与到人手一台以上,智能手机成为最重要的移动终端,其两大主流是GoogleAndroid系统与其IOS系统。
特别是Android平台,其具有开放的、配置优、性价比高等特点,显然越来越多的软件使用Android技术开发。
然而在基于Android技术开发的软件中,却没有一款能够满足用户对收支图形化显示的记账软件。
为了解决用户需求的问题,本毕业设计基于Android技术设计并实现了Time记账本管理软件的开发。
该记账软件以AndroidStudio作为开发平台,使用AChartEngine制作图表,调用本地SQLite数据库保存本地信息,同时利用LeanCloud云端数据来管理用户账户,实现了对账本(Bill)数据的增删改查和用户资产的增删改查。
本记账软件包括以下几个模块:
用户密码登陆,收支数据的录入、个人明细与汇总统计,数据云端备份。
本设计着重实现记账功能和资产管理功能。
关键词:
记账软件;AndroidStudio;数据库;
Abstract
InthePCeratoday,mobilephoneshavespreadtomorethanahand,smartphonesbecomethemostimportantmobileterminal,itstwobigmainstreamisGoogleAndroidandIOSsystem.TheAndroidplatform,inparticular,ithasopen,configurationandhighcostperformancecharacteristics,moreandmoreobviouslyusingAndroidsoftwaretechnologydevelopment.InthedevelopmentofsoftwarebasedonAndroidtechnology,however,havenoagraphicaldisplaycansatisfytheusers'paymentsbillingsoftware.Inordertosolvetheproblemofuserdemand,thisgraduationdesignisbasedontheAndroidtechnologyisdesignedandimplementedtheTimeforthedevelopmentofthemanagementsoftwareofchargetoanaccount.
TheaccountingsoftwareforAndroidStudioasadevelopmentplatform,usingAChartEnginecharts,callalocalSQLitedatabasetostorethelocalinformation,atthesametimeusingLeanCloudclouddatatomanageuseraccounts,realizedwithbookstoaddanddelete(Bill)dataanduserassetstoaddanddelete.
Theaccountingsoftwareincludesthefollowingseveralmodules:
userpasswordlogin,balanceofpaymentsdataentry,personaldetailsandsummarystatistics,datacloudbackup.Thisdesignfocusesonaccountingandassetmanagementfunctions.
Keywords:
accountingsoftware;AndroidStudio;Database;
目录
1绪论1
1.1选题背景1
1.2记账本的发展趋势1
2软件需求分析2
2.1需求分析2
2.2可行性分析3
2.2.1可行性研究前提3
2.2.2技术可行性研究3
2.2.3社会可行性研究3
2.2.4时间可行性研究3
2.2.5结论3
3软件详细设计4
3.1软件功能结构图4
3.2软件业务流程4
3.2.1登录注册模块4
3.2.2资产模块5
3.2.3支出、收入相关业务流程6
3.2.4用户数据的显示图表模块7
3.2.5服务模块7
3.3软件命名规范8
3.3.1数据库命名规范8
3.3.2程序代码命名规范9
3.4数据库与数据库表设计10
3.4.1软件数据库设计10
3.4.2LeanCloud云端账户表10
3.4.3LncomeAndExpenditure(收入/支出表)10
3.4.4Assets(资产管理表)11
3.4.5Category(支出/收入表)11
4软件的实现与结果12
4.1项目结构MVC设计模式12
4.2软件公共类设计13
4.2.1界面设计语言MaterialDesign13
4.3数据库设计14
4.3.1数据库的创建14
4.3.2数据库的增删改查14
4.3.3本地数据库的初始化15
4.4主窗体设计实现16
4.5收入支出版块设计实现17
4.6支出收入数据显示版块设计实现17
4.7资产管理模块的设计18
4.8数据统计版块设计实现19
4.8.1分类收入、支出统计19
4.9软件设置版块设置20
4.9.1软件设置主界面20
4.9.2服务软件子模块20
4.10账户管理版块设计实现21
4.10.1用户登录/注册21
4.10.2修改用户信息22
5软件测试过程与结果23
5.1测试目的23
5.2测试平台简介23
5.3测试方法23
6开发中遇到问题与解决方法25
6.1Fragment之间的通信25
6.2fragnment与activity通信探究25
总结27
谢辞28
参考文献29
1绪论
1.1选题背景
一个有经济头脑的人,在日常生活和投资中,都会对自己的收入和开销做到心里有数,以便于制定出自己的一套理财计划,达到合理的经济统筹,有记账习惯的人可以从以往的统计中看到自己主要消费方向,看出自己的消费是否合理。
之所谓巧妇难为无米之炊,如果自己想要理财,先决条件得要有“财”才行。
如何才能有财呢?
开源节流呀!
有计划的用钱,再将节流下来的钱去用于理财,这样不就行了吗?
那又怎么样来“开源”呢?
记账是个好办法,它有针对性地罗列、统计计算资源信息。
从查阅资料来看,一些比较发达国家的人生活中对理财有着很严格的计划,因此国外的理财系统总体来说比较普遍,做的也比较完善。
国内的理财系统主要偏重于办公财务软件,而个人理财和家庭理财方面的比较少,因此需要开发相关的系统软件,从而达到引导理性消费,合理安排收支。
1.2记账本的发展趋势
记账从过去的纸质记账到网络记账,再到现在流行的手机记账,让记账成为了很好的传统习惯,也变成了现代生活的一种时尚。
随着年龄的增长,消费项目逐渐多起来,有时一天下来收入、支出的小项目达到几十项,攒到晚上一块儿记很容易就会落下。
而且晚上经常加班到很晚,回到家打开电脑再完成记账这项任务也有些力不从心。
记账从过去的纸质记账到网络记账,再到现在流行的手机记账,让记账成为了很好的传统习惯,也变成了现代生活的一种时尚。
如果进行账目的整理,每天手动统计的话,用于统计的账本和记录会越来越多,不利于保管,容易造成丢失;其次,随着纪录的增多,如果要查找以前的记录,会变得越来越困难。
电脑记账的话,不方便携带,要先在纸上记录然后再录入到电脑上,麻烦且浪费时间,记账又是一种需要持之以恒的耐力才能实现的良好习惯,但是工作以后时间就没那么固定。
因此,需要一个功能比较完善的手机记账系统来代替传统的手工和电脑统计。
在手机上装上记账软件以后,等公交车或坐车的时候、甚至吃午饭、晚饭等待的时间都可以成为记账的时间。
本软件详细记录用户的每次收入、支出行为,并且可以做出统计,用户可以对自己的收支情况做各种综合的查询,可以管理账目,方便对数据的管理。
2软件需求分析
2.1需求分析
记账管理是一个家庭和个人不可缺少的部分,但现在人使用的小型财务系统却还是凤毛麟角。
记账是很小的一个部分,但大到企业,小到家庭以与个人都有十分重要的意义。
本记账系统的系统设计是基于Android语言,使用AndroidStudio作为开发平台,实现记账系统的系统构建。
而后台的数据库则使用了Sqlite+LeanCloud云端数据库管理整个记账系统的后台数据。
包括以下几个模块:
用户密码登陆,收支数据的录入、个人明细与汇总统计,数据云端备份等,从而对家庭、个人收入与支出进行有效、系统的管理,并使之更全面和灵活。
随着支付手段与购物场景的日趋多样化,人们对于自己的开支消费未能有着很好的整体把握,而单纯的采用记事本记账,条目繁多而杂乱。
用户对于收支记账有着较大的需求。
而专业的记账软件,通过良好的归类和便捷的记账功能,让用户方便的记下自己的每一笔开支,并且通过图表形式,清晰的了解自己的收支情况和变化趋势。
随着人们生活水平的不断提高,越来越多的人开始注意到理财的重要性,在计算机网络技术高速发展的今天,原始的记账方式已经不能满足人们的需要,手机记账不仅方便快捷,而且可以实现数据的长期保存,同时还可以实现账本信息共享,并与更多的朋友分享自己的理财心得。
论文首先对家庭与个人记账本系统的研究背景进行了介绍,对系统需要解决的问题进行了详细概述,讨论了课题的重要性和研究意义,并且阐述了系统的开发流程和开发过程中使用的相关技术;论文提出了系统的项目要求和项目目标,并对系统进行详细的需求调研和需求分析,主要包括系统的业务需求分析、功能需求分析、数据需求分析和非功能性需求分析,并且给出了系统主要功能的业务流程图、数据流图和功能分析图,并对数据库进行描述。
其次在系统设计过程中,主要对系统进行总体设计和模块设计,总体设计主要包括对系统的架构设计和功能结构设计,同时给出了系统的架构模型和总体功能结构图,主要包括会员管理、账本管理、收支分类管理、日常收支记录管理、查询和统计分析等六大功能模块,并且分别描述每个模块设计的功能结构图和处理流程图,详细阐述了系统的设计内容。
论文最后对研究的课题进行了总结,阐述了本人的主要工作,指出了论文存在的不足,并对进一步的工作进行了展望。
2.2可行性分析
2.2.1可行性研究前提
1)要求
主要功能满足用户实际需求
可便利地进行收入支出的增删改操作
对用户数据进行正确的统计
系统操作人性化、简单易用
保证软件的安全性
2)目标
方便地进行收入、支出等数据进行管理整合
能够多个用户一起使用,确保数据的安全性
2.2.2技术可行性研究
记账本软件在目前主流的智能Android手机上运行,在AndroidStudioIDE开发,使用LeanCloud云端数据库+调用本地Sqlite的方式进行数据存储。
2.2.3社会可行性研究
随着支付手段与购物场景的日趋多样化,人们对于自己的开支消费未能有着很好的整体把握,而单纯的采用记事本记账,条目繁多而杂乱。
用户对于收支记账有着较大的需求。
而专业的记账软件,通过良好的归类和便捷的记账功能,让用户方便的记下自己的每一笔开支,并且通过图表形式,清晰的了解自己的收支情况和变化趋势。
2.2.4时间可行性研究
现在的时间流逝的飞快,人们肯定不会为了那些让人头疼的小账目而浪费时间清理。
手机记账软件是非常契合现在人的便捷记账需要。
在手机上装上记账软件以后,等公交车或坐车的时候,等电梯的工夫,甚至吃午饭、晚饭等时间都成为记账的时间。
让你对花销有一个完整的概念。
2.2.5结论
根据以上分析,软件开发在技术上,时间成本上都在可以接受的范围,该系统具有很高的开发可行性,可以进行对该项目的开发。
3软件详细设计
3.1软件功能结构图
软件主要实现记账功能和资产管理功能,辅助添加大小写计算,汇率换算,快递,彩票等功能,使用图表展示数据。
为了数据保存,软件实现了云端数据库备份功能,使用户在更换Android手机时保障数据的不丢失。
当用在同一部手机登录不同的账号时,记账本软件会将上一次用户的数据完全清楚,以保障用户信息的安全,当用户在登录账户时会从LeanCloud云端数据库下载数据并完成初始化。
具体软件功能结构图如下图3.1所示:
图3.1记账本软件功能结构图
3.2软件业务流程
3.2.1登录注册模块
记账本软件在云端保存用户的信息,用户在同一部手机首次登陆记账本软件时是需要登陆,用户输入登陆信息,记账本软件将数据发送到LeanCloud云端数据库,LeanCloud云端数据库返回验证结果;当用户首次注册时,记账本软件会将注册数据发送到LeanCloud云端数据库,LeanCloud云端数据库在接受到数据后将数据保存,并返回注册结果信息,记账本软件在接收到数据后,会将数据以缓存的形式保存在本地,使用户在下一次登录时不需要再次输入登录信息。
具体的用户登录流程如下图3.2所示:
图3.2登陆模块业务流程
3.2.2资产模块
资产(银行卡,支付宝)管理是记账本软件首要功能之一,用户在首次安装记账本软件的时候,记账本软件,即在后台新建“支付宝”“现金”两个默认的资产账户。
当用户输入资产信息(银行卡账户)是记账本软件讲数据上传至网络并验证用户资产信息的合法性,当用户输入的资产合法是将返回资产信息(所属银行),若用户的输入不和法是则返回错误信息,1、资产(银行卡号格式错误)2、不存在的银行卡账户等。
资产支持注销功能,但是用户使用资产时所产生的账单信息则不会同时被删除。
用户删除资产后,资产内用户数据会被清空。
操作具体流程如图3.3所示:
图3.3资产管理流程图
3.2.3支出、收入相关业务流程
支出,收入是记账本软件的核心功能之一,主要用于记录用户的资产增加,减少项目的记录。
用户在新增支出、收入时,会同时关联一个资产账户,会将资产账户中的资产数数值进行增加和减少。
用户在新增支出,收入的时候要设置支出,收入类别,支出收入类别可以在界面菜单中增加删除。
操作具体流程如图3.4所示:
图3.4收入、支出业务流程图
3.2.4用户数据的显示图表模块
本系统中对输入数据的统计是特色模块。
数据统计模块的主要功能就是把输入的收入、支出信息经过相关计算使其以饼图的形式展现给用户,让用户能够一目了然的知道各个支出或收入的百分比具体的数据统计。
操作流程如图3.5所示:
图3.5用户数据统计业务流程图
3.2.5服务模块
服务模块主要有房贷计算,大小写转换,彩票,快递,汇率换算等,服务模块各个子模块数据并没有保存在数据库,也不会上传只是实现一些功能。
服务模块各个子模块主要是调用相关API实现。
例如大小写转换,用户输入阿拉伯数字,单击转换按钮,记账本软件即将数据加上API拼接成字符串发送至网络,再从网络接受数据处理。
服务模块典型实现方案如图3.6所示:
如图3.6服务模块典型实现方案图
3.3软件命名规范
3.3.1数据库命名规范
数据库以相关的英文单词缩写命名,如表3.1所示。
表3.1数据库命名
数据库名称
描述
Jizhangben.db
记账本软件
数据库表命名以相应意思的英语单词,如表3.2所示。
表3.2数据库表命名
数据库表名称
描述
tb_account
账户表
字段命名除用户id以_id下划线开头,其他均为相应英语单词,如表3.3所示。
表3.3数据库字段命名
字段名称
描述
_id
用户id
time
时间
3.3.2程序代码命名规范
数据类型命名规则。
在系统中定义变量、常量时,以数据类型简写开头加上对应的英语简写,如表3.4所示。
表3.4数据类型命名规则
数据类型
简写
整型
int
字符串
str
布尔型
bl
单精度浮点型
flt
双精度浮点型
dbl
组件命名规则。
在为组件申明id时以组件类型缩写加对应的作用英语,如表3.5所示。
表3.5组件命名规则
组件
简写
EditText
txt
Botton
btn
TextView
tv
Spinner
sp
ListView
lv
…
…
3.4数据库与数据库表设计
3.4.1软件数据库设计
数据库的设计思路:
1)确保数据库中的每个数据表都有明确的数据关系。
2)统一数据库中的命名规则,使得有良好的交互性,使程序能够良好的运行。
3)减少程序中的重复,尽可能多的通过表与表之间的关系进行联查。
3.4.2LeanCloud云端账户表
LeanCloud云端账户表(_User)用来保存用户信息。
objectld为用户的唯一标识,为表的主键,也为其他表的objectld相对应。
email和password分别代表着用户名和密码,是用户后期可以修改的,如表3.6所示。
表3.6用户账户表
字段名
数据类型
是否主键(Y/N)
是否外键(Y/N)
描述
objectld
String
Y
N
用户id
emails
String
N
N
用户名/邮箱
password
String
N
N
密码
3.4.3LncomeAndExpenditure(收入/支出表)
LncomeAndExpenditure收入/支出表。
iae为收入/支出代码1:
收入,2支出,assets为资产id,如表3.7所示。
表3.7收入/支出信息表
字段名
数据类型
是否主键(Y/N)
是否外键(Y/N)
描述
_id
Integer
N
Y
用户id
iae
Integer
Y
N
支出/支出代码
amountOfMoney
String
N
N
金额
remarks
String
N
N
备注
category
String
N
N
类别
assets
String
N
N
资产id
time
time
N
N
时间
3.4.4Assets(资产管理表)
资产管理表保存资产信息,如表3.8所示。
表3.8支出信息表
字段名
数据类型
是否主键(Y/N)
是否外键(Y/N)
描述
_id
Integer
Y
N
用户id
assetsName
String
N
N
资产名
assetsDetailed
String
N
N
资产详细
assetsAmountOfMoney
String
N
N
金额
3.4.5Category(支出/收入表)
Category为支出类型表。
本系统在数据库中已写入部分类型,由于每个用户都有不同的支出原因,在添加支出信息时,选择支出类型也大有不同。
在此设计支出类型表,可以为用户提供修改支出类型的服务,根据自己的需要修改支出类型。
这里的_id和账户表的_id是对应着的,如表3.9所示。
表3.9支出类型表
字段名
数据类型
是否主键(Y/N)
可否为空(Y/N)
描述
_id
Integer
N
N
用户id
category
String
N
N
类型名称
lae
String
N
N
收入/支出
4软件的实现与结果
4.1项目结构MVC设计模式
在编写系统之前,定制好系统的系统文件夹组织结构有利于规范系统整体结构,如图4.1所示。
图4.1文件夹组织结构
MVC全名是ModelViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面与用户交互的同时,不需要重新编写业务逻辑。
MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
MVC是一种使用MVC(ModelViewController模型-视图-控制器)设计创建Web应用程序的模式:
[1]
Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)。
MVC模式同时提供了对HTML、CSS和JavaScript的完全控制。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
4.2软件公共类设计
软件公共类的设计是为了使程序更加的结构化,使代码的重复降低。
本软件中设计了数据模型公共类和对数据库进行增删改查的API接口和继承制API接口的lmpi公共类。
每一个数据模型类都封装成一个接口供API接口和继承制API接口的lmpi公共类中的数据存放和取出数据来实现API接口和继承制API接口的lmpi公共类中对数据库信息的操作。
其中包括资产管理、收入/支出管理等,以下是以资产管理为例的类图如图4.2所示。
4.2资产管理的类图
4.2.1界面设计语言MaterialDesign
设计风格采用谷歌全新推出的设计语言MaterialDesign,MaterialDesign和苹果以前的拟物设计并不尽相同。
拟物设计是尽力利用美工和交互在设计上模拟实物。
而MaterialDesign则更为抽象,它不关心实物是什么,只关心它的质感,层次,深度,和其他物体的叠放逻辑。
从某种程度上来说,MaterialDesign更像是把交互界面变成了一张张的纸。
因此,MaterialDesign更像是拟物设计和扁平设计的结