【安卓开发】简单记账app功能实现开发-期末大作业个人总结
说在前面:
由于这一次的大作业涉及到的代码部分过于长,所以博客里不放相关代码;
工程&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改为自己相应的版本
【安卓开发】简单记账app功能实现开发-期末大作业个人总结相关推荐
- 基于JavaSwing开发简单的画图板程序 课程设计 大作业源码
基于JavaSwing开发简单的画图板程序: (大作业) 开发环境: Windows操作系统 开发工具: MyEclipse+Jdk 运行效果图: 基于JavaSwing开发简单的画图板程序: ( ...
- 简单微信小程序点菜菜谱-期末大作业
简单微信小程序点菜菜谱-应付一下期末大作业 下载链接:https://download.csdn.net/download/weixin_43474701/85382892 点我下载资源
- 用HTML+CSS+JS做一个漂亮简单的公司网站(JavaScript期末大作业)
- 安卓手机移动办公App软件的开发
在移动办公软件的开发和应用中,安卓手机的普及为其奠定良好基础.现阶段,企业信息化水平越来越高,进而提高企业的办公效率和管理效率,在一定程度上增加对移动办公软件的需求量,然而我国的移动办公软件开发和应用 ...
- 利用Bmob快速实现安卓的简单登陆注册功能Bmobsdk3.6.9版本亲测可用(详细图文攻略附带处理小bug)
前言:从其他人的留言中我知道Bmob这个云数据库,之前我一直在自己写后台但是发现太慢了要学的东西超级多,脚手架也不知道为什么老是搭不上很蛋疼,然后春节又必须回来老家山区里面有些事情耽搁了后台也凉了,后 ...
- Android app开发期末大作业“快乐七巧板”开发总结
写在前面 大二的暑假过去一半了,我终于想起来把期末大作业写出来了.本文的主要目的就是总结一学期安卓开发入门和最后期末大作业相关的一些收获和感受. 给自己一个总结和给以后再去学习的相关内容的小伙伴们一咪 ...
- Android期末大作业、移动应用开发期末大作业(教练预约APP)
移动应用开发期末大作业(教练预约APP) 运动健身APP 用户:小型健身房和健身者 功能:注册登录,预约教练,发布讨论,删除讨论 页面展示: 欢迎页面:(三秒自动跳转到主页面) 首页: 我的: 登录注 ...
- 自己怎么开发一个软件app、如何开发一个app系统软件?
自己怎么开发一个软件app.如何开发一个app系统软件? 华盛恒辉开发app软件的办法如下: 1.华盛恒辉首先本人明白需求,懂代码,熟习开发流程. 2.华盛恒辉APP开发后期需求理解产品定位. 3. ...
- Android安卓期末大作业 新闻app 实现注册登录增删改查功能
Android安卓期末大作业 新闻app (文末附下载链接) app情况如下图所示: 点我下载 https://download.csdn.net/download/weixin_43474701/7 ...
最新文章
- python IDE- IDLE
- 【赠书】深入浅出embedding:原理解析与应用实践
- 「日常训练」Alternative Thinking(Codeforces Round #334 Div.2 C)
- php 挂机,用php实现qq挂机
- HttpHelper之我见
- eclipse中junit_在Eclipse中有效使用JUnit
- URAL 1013 K-based Numbers. Version 3
- 计算机组成原理算术运算实验报告,计算机组成原理算术逻辑运算实验报告
- 【es】client通信流程与负载均衡
- linux 去掉csv文件第一行,使用PowerShell删除文本文件的第一行
- 如何全局使用php composer,php – 如何配置要全局安装的composer包?
- 2021-08-31为什么随机森林能降低方差
- bzoj3223Tyvj 1729 文艺平衡树 splay
- mcgs组态软件中字体如果从左到右变化_在MCGS嵌入版组态软件中,可以利用大小变化来实现动画效果。( )...
- vs2010最佳配色选择_2010年代35部最佳电影
- 消息事件管理(游戏人工智能编程案例精粹)
- 2023年天津农学院专升本停招专业的备考建议?
- 机器学习中的分类算法
- 点击table中的某一个td,获得这个tr的所有数据
- 德智体美等方面表现 学生年度评语