说在前面:

由于这一次的大作业涉及到的代码部分过于长,所以博客里不放相关代码;

工程&apk&记账app原型&素材资源链接:https://download.csdn.net/download/white2333/11234105

配套文档目录预览&资源链接:https://download.csdn.net/download/white2333/11234160

本博客涉及到的内容(目录):

  1. 项目内容介绍
  2. app所需实现功能分析
  3. 难点重点归纳
  4. 可参考CSDN合集
  5. 项目部分截图
  6. 个人总结&遇到的问题&解决方案

1.项目内容介绍:

根据老师给的相关pdf以及html网站合集可以总结得到:设计实现基于Android平台的记账app。简单分析一下自己的需求,对于衣食住行进行分类,然后记录每天的时间,记录下消费的原因,最重要的就是金额了,以及收入进账的记录。做每个月账单统计图表,分析自己当前的支出和收入。

2.app所需实现功能分析

  • 首次启动页:首次使用app,首次加载,点击开启记账,进入首页。
  • 首页:app主体界面,默认显示手机系统时间当月的账单以及当月的总支出、总收入。用户可通过按键< >查看其它月份账单和支出收入情况。
  • 记账页:app主要功能界面,主要功能有添加新账目,修改原有账目。
  • 分类页:分类设置界面,默认显示数据库原有分类条目。用户可长按分类条目显示编辑按钮条,编辑、删除(可多选)分类条目或隐藏编辑按钮条。同时在编辑按钮条隐藏的条件下,用户可以通过点击右下角的添加按钮添加分类条目。
  • 图表页:数据统计分类显示界面,默认显示手机系统时间当月账单的支出分类圆形图表,用户可通过点击收入按钮查看当月账单的收入分类圆形图表。同时用户可以通过< >按键查看其它月份的分类圆形图表。

页面跳转关系图如下:

3.重点难点归纳:

 

数据库的操作代码编写

本项目的重点,数据库中表的创建以及其他功能的实现非常容易出错,而且Android studio不会在因为数据库的操作错误而提示出具体的错误信息,app会直接终止运行,所以很难自己找出bug在哪。

 

RecyclerView的显示和布局以及item样式设置

这一点主要是针对以前从未接触过list以及从数据库读取显示的新手,第一次接触理解和操作起来都比较难,很容易在初始化列表以及读取item的时候出错。

 

隐藏显示新界面及动画的使用

由于动画的使用课堂涉及比较少,所以只能通过看博客以及自我理解来使用,很容易连动画xml文件如何创建都不知道。隐藏和显示界面需要自定义函数来实现,所以要判断的地方比较多,很容易出现判断不足或者显示和数据更改错误或未更改问题。

 

复选框的相关操作

复选框涉及到界面的显示以及按钮的显示,所以要在相关界面进行不断的判断,并且经常要读取被选项的相关数据,对于之前未接触过复选框相关操作的新手,容易忽略一些地方的判断,复选框的实现以及操作会显得比较复杂和繁琐

 

图表的统计显示

4.可参考的CSDN:

Android 判断Intent是否存在:

https://blog.csdn.net/top_code/article/details/17285695

 使用Intent传递对象:

https://blog.csdn.net/qq_41005535/article/details/79390548

https://blog.csdn.net/wei18791957243/article/details/82716737

https://blog.csdn.net/llengnuo/article/details/78109334

Android SQLite增删改查的语句:

https://blog.csdn.net/qq_30716173/article/details/50148151

Android ListView长按弹出CheckBox,实现全选,反选,批量删除功能:

https://blog.csdn.net/u013006960/article/details/52102839

Android 自定义CheckBox样式

https://blog.csdn.net/dodod2012/article/details/78780296

安卓编程之获取系统当前时间

https://blog.csdn.net/hou09tian/article/details/78209167

Android自定义View实战(圆饼图的实现)

https://www.jianshu.com/p/dff5dd124b0d

Java对Arraylist的常用操作

https://blog.csdn.net/zy20120580223/article/details/80294717

对ArrayList某一属性相同的数据进行合并算法

https://blog.csdn.net/liu_yulong/article/details/84378098

 

5.项目部分截图:

6.个人总结:在两个星期的app制作以及一个星期的课程设计报告编写中;学会了怎样在Android studio中灵活使用数据库,并且第一次接触到了动画的使用还有list的使用。同时学会了怎样在比较混乱的页面跳转关系中整理出页面跳转图进而在带参数以及不带参数的两种页面跳转方式中进行选择。目前对页面跳转方法掌握的比较全面。对实验过程中掌握了新的比较实用的UI布局方法。同时掌握了很多课本上没有的相关功能的实现方法对自己编写的项目越来越熟悉,测试和debug也越来越上手。

遇到的问题:

问题1:注释掉清空全部数据库的测试代码后,进行页面跳转之后再返回读取数据库数据的recylerView界面时发现之前插入的数据均未显示,以及之前删除的数据也再次恢复(设置了初始数据的情况)才发现数据库读取出现了问题,不然就是根本没有写进数据库。

解决方法:在编写Classify页面的项目添加时发现成功插入了数据库,并且经过多个页面跳转之后仍然可以正常读取,

从而返回去检查home_page的数据库插入问题,经过对比发现在插入数据库时设定的主键id没有用代码插入,

所以数据库插入出现了问题,经过修改数据库的创建代码之后(即创建数据库放弃id这个数据项,设置新主键)可以正确读取数据库。

 

问题2&解决方法:在解决问题1的时候遇到了另一个问题,一开始的解决方法是设定一个新的int数据来给id赋值,在插入数据时进行id++操作。这样插入数据是没有问题的,后来发现在重新启动app的情况下id会重新从0开始自增。导致主键重复,数据插入失败。所以在了解系统在创建表的时候会自动加入一个rowid数据项之后选择了放弃id这个数据项。

 

问题3:也是在解决问题1的时候遇到的问题,在确定放弃id这个数据项之后,我选择了直接在原来创建数据库的代码上删除了创建id数据项的语句。之后启动项目崩溃。检查之后发现由于原来已经创建了表和数据库,修改代码后再次创建了相同表名的表导致表重复无法重新创表。

解决方法:修改了表名也在数据库中删除了原表。

 

问题4:界面跳转问题,Finish()方法的缺陷;在Account界面利用startActivity()跳转到Classify界面并且选择完item返回Account界面时一开始选择的也是startActivity()跳转所以导致Account界面原本打算跳转到home_page的finish()方法跳转到了Classify界面

解决方法:将Classify跳转回Account界面的方法修改成了finish()方法则这样不会修改Account界面的上一个界面是home_page界面

问题5:初始化账目list收入支出金额text颜色显示问题,想要达到的效果是收入金额Text红色显示,支出金额Text黑色显示。但是实现的效果是,在插入金额时,list自动更新时是达到了想要的效果,但是重开app后,所有的金额都会变成布局文件中设定的初始颜色。再插入还是会有红黑之分。

解决办法:在寻求了同学的帮助下,不断排查了代码发现了问题;在改变Text颜色的代码之前进行的判断字符串是”收入”还是”支出”用的是”==”判断,在修改成equal之后该bug被解决。引起这个的原因主要是在判断的时候读取的字符串不是从数据库读取的,而是直接从布局中读取的,尽管显示出来有支出收入之分,但是读取时读的都是布局初始化的内个字段,以本项目为例,布局文件始终以支出为初始显示Text所以重开app之后所有收入支出字段的颜色又会被统一成黑色。

 

问题6:若第一次饼图设置pieValue数据分别为20,30,50;则控件默认以后都是数据之和为100时饼图才会全部显示,否则,若重新设置pieValue值为20,30;则会显示半圆。

解决方法:将pieValue按百分比设置,使之和一直为1即可,如上可改写为0.2,0.3,0.5;第二次重新设置0.4,0.6即可,故我们写了一个计算百分比的函数,每次要从数据库读取数据显示在饼图上时,先把读取到的数据计算出各自的百分比,再显示到饼图上。

 

问题7&解决方法:打开新项目后,R文件无法识别;将build.gradle中的classpath改为自己相应的版本

 

 

 

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐