安卓课程设计
记账软件课程设计
1 引言............................................................................................................................................................. 2
1.1 背景................................................................................................................................................ 3
1.1.1 课程背景........................................................................................................................... 3
1.1.2 开发与运行环境............................................................................................................... 3
2 项目总体分析............................................................................................................................................. 3
2.1 项目架构分析(根据页面区分).............................................................................................. 3
2.1.1 首次启动页....................................................................................................................... 3
2.1.2 首页.................................................................................................................................... 3
2.1.3 记账页............................................................................................................................... 3
2.1.4 分类页............................................................................................................................... 3
2.1.5 图表页............................................................................................................................... 3
2.1.6 页面跳转关系................................................................................................................... 3
2.2 功能模块分析................................................................................................................................ 4
2.2.1 账目显示&记账&分类管理............................................................................................. 4
2.2.2 数据统计&数据查询........................................................................................................ 5
3 数据库设计................................................................................................................................................. 5
3.1 数据库概念分析............................................................................................................................ 5
3.1.1 确认所需数据库............................................................................................................... 5
3.1.2 数据库所需操作分析...................................................................................................... 5
3.2 表设计............................................................................................................................................ 5
3.3 关系设计........................................................................................................................................ 6
4 类设计......................................................................................................................................................... 6
4.1 账单类............................................................................................................................................ 6
4.2 分类类............................................................................................................................................ 6
5 项目实现..................................................................................................................................................... 7
5.1 UI..................................................................................................................................................... 7
5.1.4 分类页............................................................................................................................. 13
5.2 功能模块逻辑实现..................................................................................................................... 17
6 测试........................................................................................................................................................... 33
6.1 测试内容及遇到的问题............................................................................................................. 33
·测试内容&遇到的问题&解决方法:.................................................................................. 33
6.2 可优化方案.................................................................................................................................. 34
6.3 未解决问题&部分修改.............................................................................................................. 34
7 难点分析................................................................................................................................................... 34
7.1 数据库的操作代码编写............................................................................................................. 34
7.2 RecyclerView的显示和布局以及item样式设置................................................................... 34
7.3 隐藏显示新界面及动画的使用................................................................................................ 34
7.4 复选框的相关操作..................................................................................................................... 34
7.5 图表的统计显示......................................................................................................................... 34
8 总结........................................................................................................................................................... 35
《移动软件开发》课程设计:设计实现基于Android平台的记账app。简单分析一下自己的需求,对于衣食住行进行分类,然后记录每天的时间,记录下消费的原因,最重要的就是金额了,以及收入进账的记录。做每个月账单统计,分析自己当前的支出和收入。
Winxp/win7/win8/win10/vista/win2003server, android studio。
数据库:SQLite
JDK1.7 及以上
兼容 Android 版本 4.3 及以上版本
目标设备:android 手机
首次使用app,首次加载,点击开启记账,进入首页。
app主体界面,默认显示手机系统时间当月的账单以及当月的总支出、总收入。用户可通过按键< >查看其它月份账单和支出收入情况。
app主要功能界面,主要功能有添加新账目,修改原有账目。
分类设置界面,默认显示数据库原有分类条目。用户可长按分类条目显示编辑按钮条,编辑、删除(可多选)分类条目或隐藏编辑按钮条。同时在编辑按钮条隐藏的条件下,用户可以通过点击右下角的添加按钮添加分类条目。
数据统计分类显示界面,默认显示手机系统时间当月账单的支出分类圆形图表,用户可通过点击收入按钮查看当月账单的收入分类圆形图表。同时用户可以通过< >按键查看其它月份的分类圆形图表。
·账目显示:读取用户已添加过的当月的所有账单条目显示在【主页】,每一条条目包含【账目类别名称】、【账目收入支出类别】、【账目金额】、【账目时间 24小时制】,按添加顺序(即时间先后顺序)排列。
·记账:点击【+】按钮跳转至【记账页】,账目类别名称默认为“FOOD”,账目收入支出类别默认为“支出”。用户通过输入数字进金额编辑框来设定金额(最大不超过99999),通过点击收入或支出按钮设定支出收入类别,通过点击“FOOD”跳转至【分类页】设定账目类别名称,后台通过读取手机系统时间设定该账目时间。用户也可以长按【主页】显示的item跳转至【记账页】来编辑被长按的item,可以修改此条item的账目类别名称、账目金额、收入或支出类别。用户点击【<】放弃添加账单返回【主页】,点击【保存】按钮确认添加新账目。
·分类管理:读取用户已添加过的所有账单类别显示在[分类页],每一条条目只包含[类别名称],按添加顺序排列。用户通过长按某一条item获取【编辑按钮条】以及类别条目的复选框,编辑按钮条包含【撤回】、【编辑】、【删除】三个按钮。点击撤回按钮隐藏编辑按钮条以及类别条目复选框。在复选框选择一个条目的情况下可点击编辑按钮滑出【编辑框】修改类别条目名称,或点击删除按钮删除条目。在复选框多选的情况下隐藏编辑按钮,只可进行删除操作。
-
-
- 数据统计&数据查询
-
·数据统计:在【图表】界面统计每个月不同类别的金额收入或支出百分比圆形图表,默认显示手机系统当月支出百分比圆形图表。用户通过点击收入或支出按钮查看当月的收入支出图表。
·数据查询:用户通过点击【<】或【>】按钮查看当月的上一个月或下一个月的账单图表。
通过功能模块分析可知需要数据增删查改的页面有【记账页】以及【分类页】,所以所需两个表。本项目建立了两个数据库分别存放账单表以及类别表。
数据库1:bill-> 表1:costlist costDate为主键
数据库2:mClassify-> 表2:classify classifyName 为主键
增:【记账页】的添加账单操作,【分类页】的添加分类操作
删:【分类页】的复选框删除分类操作
查:【记账页】不同月份账单切换显示操作,【分类页】分类条目显示操作
改:【记账页】通过长按【主页】条目进行的修改条目操作,【分类页】分类条目的编辑操作。
表1:costlist
数据名称 |
数据类型 |
数据含义 |
costTitle |
Varchar |
账目类别名称 |
costDate primary key |
Varchar |
账目被添加时的详细时间 |
costYear |
Varchar |
账目被添加时的年份 |
costMonth |
Varchar |
账目被添加时的月份 |
costDay |
Varchar |
账目被添加时的日 |
costHour |
Varchar |
账目被添加时的时 |
costMinute |
Varchar |
账目被添加时的分 |
costSecond |
Varchar |
账目被添加时的秒 |
costMoney |
Varchar |
账目金额 |
costInOut |
Varchar |
账目支出收入 |
表2:classify
数据名称 |
数据类型 |
数据含义 |
classifyName primary key |
Varchar |
类别名称 |
costInOut |
Varchar |
类别支出收入属性 |
PS:数据库后台会为表单自动插入一个rowid列来记录每一条数据的行数。
无
CostBean类
成员变量:(all public)
数据名称 |
数据类型 |
数据含义 |
costTitle |
String |
账目类别名称 |
costDate |
String |
账目被添加时的详细时间 |
costYear |
String |
账目被添加时的年份 |
costMonth |
String |
账目被添加时的月份 |
costDay |
String |
账目被添加时的日 |
costHour |
String |
账目被添加时的时 |
costMinute |
String |
账目被添加时的分 |
costSecond |
String |
账目被添加时的秒 |
costMoney |
String |
账目金额 |
costInOut |
String |
账目支出收入 |
ClassifyBean类
成员变量:(all public)
数据名称 |
数据类型 |
数据含义 |
classifyName |
String |
类别名称 |
costInOut |
String |
类别支出收入属性 |
isShow |
boolean |
复选框是否显示 |
isChecked |
boolean |
复选框是否被选中 |
成员函数:(all public)
函数名称 |
返回类型 |
函数功能 |
getClassifyName |
String |
获取类别名称 |
setClassifyName |