说在前面:

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

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

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

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

项目内容介绍

app所需实现功能分析

难点重点归纳

可参考CSDN合集

项目部分截图

个人总结&遇到的问题&解决方案

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改为自己相应的版本

android记账app开发报告,【安卓开发】简单记账app功能实现开发-期末大作业个人总结...相关推荐

  1. HTML我的家乡杭州网页设计作业源码(div+css)~ HTML+CSS网页设计期末课程大作业 ~ web前端开发技术 ~ web课程设计网页规划与设计 ~HTML期末大作业

    HTML我的家乡杭州网页设计作业源码(div+css)~ HTML+CSS+JS网页设计期末课程大作业 ~ web前端开发技术 ~ web课程设计网页规划与设计 ~HTML期末大作业 临近期末, 你还 ...

  2. 简单微信小程序点菜菜谱-期末大作业

    简单微信小程序点菜菜谱-应付一下期末大作业 下载链接:https://download.csdn.net/download/weixin_43474701/85382892 点我下载资源

  3. 《 Python程序设计项目案例》— 用Python开发的基于TCP通讯协议的私人聊天室 (期末大作业、结课作业、课程设计、毕业设计)

    基于Python与TCP协议的私人聊天室(GUI交互界面,用户注册.用户登录.实时聊天,文件上传与下载) 用Python开发的基于TCP通讯协议的实时聊天通讯和文件共享应用 目录 基于Python与T ...

  4. 用HTML+CSS+JS做一个漂亮简单的公司网站(JavaScript期末大作业)

  5. 个人HTML期末大作业~ 个人网页(HTML+CSS)6页面带下拉特效~简单带表格带设计说明 ~学生网页设计作业源码

    HTML期末大作业~ 个人网页6页面带下拉特效~简单带表格带设计说明 ~学生网页设计作业源码 作品介绍 下面介绍一下我的个人小网站吧,我的网站背景稍微单调一点白色,主要个人比较喜欢白色了,布局上面使用 ...

  6. HTML5期末大作业:网站——响应式网络游戏官网HTML+CSS+JavaScript ~ 学生HTML个人网页作业作品下载 ~ web课程设计网页规划与设计 ~大学生个人网站作业模板 ~简单个人网页

    HTML5期末大作业:网站--响应式网络游戏官网HTML+CSS+JavaScript ~ 学生HTML个人网页作业作品下载 ~ web课程设计网页规划与设计 ~大学生个人网站作业模板 ~简单个人网页 ...

  7. Android app开发期末大作业“快乐七巧板”开发总结

    写在前面 大二的暑假过去一半了,我终于想起来把期末大作业写出来了.本文的主要目的就是总结一学期安卓开发入门和最后期末大作业相关的一些收获和感受. 给自己一个总结和给以后再去学习的相关内容的小伙伴们一咪 ...

  8. Android期末大作业、移动应用开发期末大作业(教练预约APP)

    移动应用开发期末大作业(教练预约APP) 运动健身APP 用户:小型健身房和健身者 功能:注册登录,预约教练,发布讨论,删除讨论 页面展示: 欢迎页面:(三秒自动跳转到主页面) 首页: 我的: 登录注 ...

  9. 安卓期末大作业Android studio-记单词app(资源链接在文末,含注册登录,含设计报告,含导出app文件及源码导入方法文档)

    安卓期末大作业Android studio-记单词app(注册登录.增删改查) (资源下载链接在文末) 1.注册登录界面 2.用户点击加号按钮输入单词,键盘会自动弹出并焦点在输入框,用户输入英文和中文 ...

  10. 基于JavaSwing开发简单的画图板程序 课程设计 大作业源码

    基于JavaSwing开发简单的画图板程序:  (大作业) 开发环境: Windows操作系统 开发工具: MyEclipse+Jdk 运行效果图: 基于JavaSwing开发简单的画图板程序:  ( ...

最新文章

  1. 沃尔沃加入英伟达阵营 2021年开卖自动驾驶汽车
  2. Jmeter分布式压测方案
  3. Chromium on Android: 认识Chromium WebView
  4. anaconda镜像
  5. 文件上传下载—servlet API实现
  6. C语言 二级指针内存模型混合实战
  7. 【BZOJ2437】【codevs1949】兔兔与蛋蛋游戏,博弈+二分图匹配
  8. vmware虚拟机里的LINUX不能上网的原因一:虚拟网卡设置
  9. 用矩阵表示物体的缩放
  10. ThickBox在ASP.NET中的应用
  11. 【cf-edu-round72: C 】The Number Of Good Substrings(思维)
  12. web服务器通信原理
  13. npy文件的保存与读取
  14. java包含罗马字符_leetcode.字符串.12整数转罗马数字-Java
  15. myeclipseCI2018.12.0新建web项目目录结构没有webroot
  16. Gradle构建速度太慢尝试加快方法
  17. 浙江行游14---千岛湖,清凉的世界里
  18. 电商中,订单号的生成方法
  19. Ubuntu安装NS3出现./build.py失败解决
  20. EI期刊论文主题词检索

热门文章

  1. 笔记本无线上网卡的种类
  2. 关于R4s软路由刷机教程
  3. vmware下ubuntu从图形界面切换到控制台的快捷键
  4. 关于使用js的setAttribute和getAttribute取dom属性在ie ff safri下的问题
  5. 吾爱破解网站访问出错
  6. 关于晶圆介绍以及IGBT晶圆的应用
  7. 一键去“码”的AI,还能认出带上口罩的脸
  8. Java语言实现会议安排问题,利用贪心法思想解决问题
  9. Linux下文件、文件夹大小排序及文件内容排序
  10. kettle执行sql语句错误总结