个人账单管理系统毕业论文
2020-02-19 20:09:26
摘 要
账单管理作为一项很多人都会涉及的业务需求越来越受到重视,个人账单管理系统作为消费信息的管理工具已经逐渐普及,例如支付宝、微信APP都有自己的账单功能模块。但是这些功能在实际使用过程中存在着诸多问题,包括缺乏自定义标签、缺乏自定义统计。最大的问题是这些功能的初衷是为了展示消费信息而不是管理消费信息。本文将着重分析这些问题,并介绍结合自身需求设计开发出一款改良版的账单管理软件的过程。
论文主要包含个人账单管理系统的分析、设计、开发过程的具体实现。着重介绍消费信息管理、自定义标签管理和图表生成的具体思路和实现。
本系统使用Android Studio作为开发环境,Java作为开发语言,Android内置Sqlite作为数据库,设计并实现个人账单管理系统。通过系统调研、系统分析、系统设计、系统实施逐步完成系统的开发实现。本文将详细地介绍各个步骤地具体实现方案,从功能需求、性能需求、解决方案各个方面进行详细地阐释说明。对于系统使用的技术手段也进行详细地介绍。
关键词:账单管理;Android;Java;MVVM模式
Abstract
As a business requirement that many people are involved in, bill management has become more and more important. Personal bill management system has become popular as a management tool for consumer information. For example, Alipay and WeChat APP have their own billing function modules. However, in the actual use process these functions have many problems.,including lack of custom tags and custom statistics.The biggest problem is that the original purpose of these features is to show billing information rather than manage them. This paper focuses on analyzing these problems, introducting the development process of an improved bill management software based on my own demands.
The paper mainly includes the concrete realization of the analysis, design and development process of the personal bill management system and focuses on the specific ideas and implementations of billing information management,custom tags management,chart generation.
This system uses Android Studio as the development environment, Java as the development language, Android built-in Sqlite as the database, design and implement the personal billing management system. The system development and implementation are gradually completed through system research, system analysis, system design, and system implementation. This paper will detail the specific implementation of each step, including the functional requirements, performance requirements and solutions. The technical means used by the system are also described in detail.
Key Words:Bill Management;Android;Java;MVVM Pattern
目录
第一章 绪论 1
1.1项目背景 1
1.2研究现状 1
1.3系统目标及意义 2
第二章 系统分析 3
2.1框架介绍 3
2.1.1Android系统 3
2.1.2Jetpack组件 3
2.1.3MVVM模式 3
2.2功能需求分析 5
2.3业务流程分析 6
2.3.1消费信息管理模块流程分析 6
2.3.2标签信息管理流程分析 7
2.3.3图表生成模块流程分析 8
2.4性能需求分析 9
2.4.1取消用户实体 9
2.4.2设置列表分页、缓存 10
2.4.3本地文件存储与数据库存储选择 10
2.4.4实现数据持久化 11
2.4.5标签树设计 11
第三章 系统设计 13
3.1整体架构设计 13
3.2数据存储设计 15
3.3UI界面设计 16
第四章 系统实施 17
4.1导航栏页面 17
4.2主页面 18
4.3标签页面 19
4.4图表页面 20
第五章 结论 23
致谢 25
参考文献 26
附录 关键代码 27
第一章 绪论
1.1项目背景
移动支付时指使用移动设备、互联网或近距离传感完成资金转移行为。得利于移动支付的广泛应用,现在人们不必随身携带大量现金,只需一个手机便可行遍天下。人们的消费信息也在移动支付的过程中被保留下来,因此对于消费信息的有效管理的需求也日渐提升。目前最常见的移动支付平台,例如支付宝和微信,都提供了消费信息的管理功能。
在现今信息爆炸的时代,信息数据的影响力正在迅速增长,对信息管理、处理的需求越来越高,这些消费信息需要被更加高效的利用起来。一直以来,人们都希望能用最简单的方式完成对信息的处理和提炼。
1.2研究现状
支付宝和微信账单的主要功能是对用户的每一笔消费进行记录,并对其进行分类统计,用户可以利用账单功能查看所有过往的消费信息。此外,支付宝账单还对所有的消费信息加以整理并以月为周期进行统计、生成报表。在报表中可以看到月与月之间的消费情况对比,同时还有消费信息的检索功能,可根据消费的关键字或者分类进行检索,找到特定的记录。支付宝账单还有消费信息分类功能,会按照内置默认的方式将每一笔消费信息进行分类,例如饮食、交通出行、运动健康、服饰美容等,统计报表中也能看到一些分类的相关统计信息。
对于想要充分利用账单功能了解自身消费情况,合理地进行消费管理的用户而言,支付宝和微信账单在功能上存在着一些不足:
使用不同支付渠道时消费信息只存储于相应的软件中,无法进行合并和汇总。
报表统计不能个性化定制。报表统计功能只能使用预定义的月为周期、消费总额为数据,对于实际生活中想要指定区间和数据项的需求无法满足。
分类功能不能个性化定制。只能接受预定义的分类,对于实际生活中想要详细分类和自定义字段的需求无法满足,目前的分类功能只能在检索时提供关键字,不能在报表中作为单独的数据项。
因此,本设计希望能以个人账单管理系统的方式、移动应用的形式针对以上不足进行一定的改进,在个性化定制方面做出一些改变,以满足用户对于信息收集整理的相关需求,在消费信息的分类整理、报表统计方面打破常规,提供更加丰富的检索、统计功能,对消费信息进行更加有效的管理和利用,让用户能通过此设计在以往的消费信息中挖掘出更多、更有价值的信息,为用户在消费决策中提供更有效的建议。
1.3系统目标及意义
个人账单管理系统的目标主要是实现消费信息的记录、删除、检索、分类,分类标签树的个性化定制,可视化的消费信息统计图表的生成。分类标签树个性化定制将允许用户定制属于自己的消费信息分类标签,并根据标签进行检索和统计,让用户在总结个人消费水平、反思消费习惯时拥有更清晰的思路。
第二章 系统分析
2.1框架介绍
2.1.1Android系统
Android是一种基于Linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,Android操作系统的开发是由谷歌和开放手机联盟(OHA)主导,包括如谷歌,HTC,戴尔,英特尔,摩托罗拉,高通,德州仪器,三星,LG,T-Mobile,Nvidia。 OHA是一个硬件,软件和电信公司的联盟,致力于推动手机开源业务。
Android操作系统代码是基于Linux内核版本2.6的修改版本[1],由谷歌以Apache许可证发布,该许可证也是免费软件和开源许可证。
Android操作系统由在基于Java的面向对象的应用程序框架和Dalvik虚拟机(VM)下运行的众多Java应用程序和Java核心库组成。Dalvik虚拟机是Android在移动设备中运行的不可或缺的一部分,因为这些系统在处理器速度和内存方面限制诸多[2]。
至于多媒体支持,Android操作系统支持2D和3D图形,常见的音频和视频格式。它还支持多点触控输入。
2.1.2Jetpack组件
Android Jetpack是一套用于开发Android应用程序的组件,工具和指南[3]。Android Jetpack组件以额外的支持库方式提供,这些库不是Android平台的一部分,因此可以自由地决定使用每一个独立的组件。此外,Android Jetpack专注于关注点分离、可测试性以及Kotlin集成等功能。因此可以更轻松地使用更少的代码构建强大,高质量的应用程序。虽然Android Jetpack的组件可以协同工作,例如Lifecycles和LiveData,但也可以在保留应用程序完整性的前提下集成Android Jetpack的某一部分组件来解决特定问题。
2.1.3MVVM模式
MVVM是Model-View-ViewModel的简写,本质上是MVC的改进版[4]。Model指代表内容的数据访问层,是整个模式中的数据源。View指用户可见的视图,是用户与系统交互的接口。ViewModel则包含所有View需要的公共属性和方法,将Model与View进行数据绑定、关联。在Android中使用DataBinding技术完成View层状态和行为的完全抽象化,将所有的业务逻辑转交给ViewModel。
图2-1 MVVM模式
2.2功能需求分析
随着信息技术的不断发展,特别是移动通信技术与网络技术的发展,人们对于信息的处理和利用方式也发生了巨大的变化。手机的不断普及和性能的提高促进了基于移动端的各类移动应用程序的不断发展。
消费行为的产生是必然的,记录消费信息是人们 一直在做的一件事,信息技术不断发展,信息不断膨胀,使用纸质方式记录消费信息已然过时不可取。因此我选择利用移动端的优势做一个个人账单管理系统,让用户以更方便地形式记录消费信息,更直观地从消费信息中挖掘出有意义的东西。
账单系统主要有三个功能。一是对消费信息的管理,包括增加、删除、检索。考虑到消费信息实体相对简单,使用删除然后重新增加的方式代替对某条信息的修改,这样能在不影响用户体验的基础上减少系统的界面数量,提高一定的美观程度。二是对消费信息分类标签树的自定义编辑。在支付宝和微信账单中的消费信息分类都是预定义分类,例如餐饮美食、生活日用、人情往来等。这些分类标签不准确且意义不明确,对于信息的检索和统计都无益处,因此账单系统使用可编辑的自定义分类标签,并使用可视化的标签树进行展示和修改。让这些分类标签真正地具有意义和使用价值。三是对消费信息进行统计并生成可视化图表。可视化图表在支付宝账单中也有,但自定义元素较少,只能指定统计时间。账单系统支持自定义时间节点、分类标签和图表类型。统计更多更有用的数据,方便用户提取出更多有意义的信息。其中消费信息的增加、检索所使用的标签信息、标签树展示信息、可视化图表所使用的标签信息全部对应。功能模块如图:
图2-2 功能模块图
2.3业务流程分析
2.3.1消费信息管理模块流程分析
消费信息管理模块包括对消费信息的增加、删除、检索。点击增加按钮会弹出可供输入的对话框,通过两个文本框和两个选择器完成信息的输入,点击确定按钮后验证输入数据的完整性,通过完整性检验后将所有信息作为一条记录插入数据库。在消费信息列表上长按会弹出删除选项,点击即可删除选中记录。点击搜索文本框,弹出搜索条件控制页面,包含一个默认全选的标签列表,可手动取消任意标签,点击软键盘搜索按钮进行检索,更新消费信息列表并关闭搜索条件控制页面。检索功能具体业务流程图如下:
图2-3 检索功能流程
2.3.2标签信息管理流程分析
标签信息管理模块包含对标签树中标签的增加、删除、重命名。其中标签树的所有信息都存储在tag.json文件中,对标签树的任何修改都会写入到tag.json文件中。
当用户打开应用时,应用通过SharedPreference中是否存在“isfirstopen”这个自定义键值对来判断是否是第一次打开。如果是,程序会加载assets目录下默认的静态文件tag.json进行渲染和展示,然后在本地文件系统中生成同名tag.json文件并将所有信息写入,否则应用将加载本地的tag.json文件进行渲染和展示。由于assets目录下的静态文件不能编辑,因此对标签树的修改会写入到本地的文件中。标签树加载的业务流程图如下:
图2-4 标签树加载流程
对于标签树的增加标签。由于增加标签并不会对现有数据造成任何不良的影响,因此只需要将这个标签信息插入并更新到tag.json文件中即可。
对于标签树的删除标签。由于数据库中可能存在包含当前要删除标签的记录,直接删除标签会导致数据的不一致,引起页面数据展示的混乱甚至是应用崩溃。因此需要在删除标签时给予用户警告提醒,并在删除标签时让用户决定这些记录是否删除。
对于标签树的重命名标签。考虑到重命名的操作意味着对这一标签定义的修改,应该对数据库中所有此标签的记录进行相应的修改,保证数据的一致性。标签树修改的业务流程图如下:
图2-5 标签树修改流程
2.3.3图表生成模块流程分析
图表模块主要包含条形图、饼状图和三个选择器。其中三个选择器决定了生成图表的图表设置,包括图表类型选择器、日期选择器和标签选择器。三个选择器的值组成一个图表设置对象,图表的具体绘制内容由图表设置对象控制。
当用户打开应用时,程序加载默认的图表设置,即“按月份”,当前时间对应的日期和标签树的根节点。当用户通过选择器选择任意一项时,重新修改图表设置对象的值,由观察者模式定义的Observer对象会回调onChange方法,完成对图表的重新绘制。
当用户选择图表类型选择器时。由于不同图表的展示方式和所需的数据源都不同,因此需要重新设置图表属性、请求数据和设置数据源。
当用户选择日期选择器或者标签选择器时。图表的展示方式不变,不需要改变图表属性,数据源发生变化,因此只需要重新请求数据和设置数据源。图表模块的业务流程如下:
图2-6 图表绘制流程
2.4性能需求分析
由于Android系统相比PC系统性能较低,内存较小,因此在开发应用程序的过程中需要注意应用的性能问题[5],合理的代码编写方式,合适的数据存储结构,灵活地使用有限地内存都能有效地提高应用的性能,使应用更加流畅,用户体验更加良好。
2.4.1取消用户实体
本系统中取消了用户这个实体。即在本系统中没有注册、登录模块,没有除了消费信息以外的任何个人信息。理由如下:
消费信息无疑是有价值的,目前本系统没有实现任何关于这些信息传输的安全保护功能,因此本系统不将消费信息与个体绑定,让这些信息只在本地对本人可见。当信息实体没有了个体属性时,它就不存在隐私问题了[6]。
本系统的功能模块不涉及到数据共享,即不同用户的数据之间是完全独立、不需要互相交互的,用户实体对于本系统的功能而言可有可无。
如果建立用户实体,则用户与信息数据之间需要建立绑定并在服务器备份。这样系统的使用就建立在网络权限之上,为了让系统的功能独立而不依赖于网络权限,本系统决定取消用户实体。
2.4.2设置列表分页、缓存
随着用户不停地使用本系统,消费信息会迅速增加,Android系统的内存有限。因此需要在展示消费信息时使用分页功能,每一页只展示固定数量的消费信息记录,也只有这一部分信息会留在内存中,当用户需要查看更多信息时,程序会从数据库中再次请求消费信息记录写入内存,之前的内存会被Android GC自动回收。这样即使消费信息数量无限增长,系统所占用内存不会发生变化,不会导致内存溢出和程序崩溃问题[7]。
关于内存缓存,考虑到后续版本的更新设计中消费信息实体可能会变得更加复杂,展示内容可能会增加,由于Android列表项目的渲染发生在滑动时,可能会导致展示内容渲染时间过长而产生丢帧、卡顿,严重影响用户体验[8]。因此本系统使用了内存缓存技术,将部分大内存、耗时的展示内容,如图片进行缓存处理,在滑动列表展示具体列表项时,先展示空内容或默认内容,异步尝试从内存缓存中取出复杂内容,成功则进行更新渲染,失败则重新请求数据并存进内存缓存。内存缓存的置换使用缓存栈先进先出,保证缓存区大小不会过大。
设置列表分页和缓存的主要目的是保证消费信息列表在不会占用过多的内存的前提下能够流畅的划动使用。由于现有版本的系统消费信息结构相对简单,内存缓存实际上是一个未雨绸缪的需求。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: