基于Android平台的家庭记账本App

摘要:

  基于Android平台的家庭记账App旨在为用户提供方便快捷的家庭财务管理解决方案。该App主要包含账单、图表、支出记录、收入记录和个人中心等功能模块,旨在帮助用户轻松了解和掌握家庭财务情况,实现财务自由和理财规划。以下是该应用的主要功能模块和设计要点:

账单模块,图表模块:提供多种图表类型,如柱状图、折线图等,展示家庭财务数据的趋势和分布情况,用户可以记录家庭的支出和收入情况,包括金额、日期、类别等信息。支持自定义支出和收入的类别,以满足不同家庭的需求。个人中心,提供个人中心模块,用户可以管理个人信息、设置预算和目标等。支持数据备份和恢复功能,确保用户数据的安全性和可靠性。其他设计要点:采用简洁直观的用户界面设计,提高用户体验。

数据存储采用SQLite数据库存储本地数据,确保数据的高效管理和安全存储。

集成数据分析功能,为用户提供财务数据的统计分析和报表展示。支持多用户登录,适应不同家庭成员的需求,实现共享财务管理具。

关键词:Android应用开发,记账APP,家庭理财

Development and Design of Primary School Mathematics Game App Based on Android

Abstract:Based on the Android platform, the family accounting app aims to provide users with a convenient and efficient solution for managing household finances. The main modules of the app include bill management, charts, expense recording, income recording, and personal center. The goal is to help users easily understand and manage their household financial situation, achieving financial freedom and financial planning. Here are the main functional modules and design points of the app:

Bill Module, Chart Module: Provides various types of charts, such as bar charts, line charts, etc., to show the trend and distribution of household financial data. Users can record household expenses and income, including amount, date, category, etc. It supports customizing expense and income categories to meet the needs of different families.

Personal Center: Provides a personal center module where users can manage personal information, set budgets, and goals, etc. It supports data backup and recovery to ensure the security and reliability of user data.Other Design Points: Adopt a simple and intuitive user interface design to improve user experience. Data storage uses SQLite database for local data storage, ensuring efficient management and secure storage of data. Integrated data analysis functionality provides users with statistical analysis of financial data and report display. Supports multi-user login to adapt to the needs of different family members, realizing shared financial management.

Overall, the app aims to be an effective assistant for household financial management, helping users better manage their household finances and achieve financial freedom and financial goals.

Key words: Android Application Development, Expense Tracking App, Family Finance

目录

本科毕业论文(设计)

基于Android智能记账App的开发与设计

1 绪论

1.1 开发背景及意义

1.1.1 现状

2 系统需求分析

2.1 系统可行性分析

2.1.1 技术可行性

2.1.2经济可行性

2.1.3时间可行性

2.1.4用户接受度

2.2 系统功能需求分析

2.3 业务需求分析

3系统的流程分析和基本框架

3.1  系统流程分析

3.1.1  注册功能流程

3.1注册功能流程图

3.1.2  登录及系统功能模块

3.2系统习题流程图

3.3  系统基本架构的设计

3.5总体结构设计图

3.6用户功能结构图

4数据库模型设计

4.1  数据库需求分析

4.2  数据库概念结构设计

4.1总关系E-R图

4.2用户数据E-R图

4.3账单信息E-R图

4.3  数据库物理结构设

5  功能模块的设计与实现

5.1  注册模块的实现

5.2 账单信息

5.3 图表统计

5.4 记账支出、收入

5.5 发现

5.6 我的信息

参考文献

1 绪论 

随着社会经济的发展和生活水平的提高,家庭理财管理变得越来越重要。有效地管理家庭的财务情况不仅可以帮助家庭成员合理安排支出、储蓄和投资,还能够提升生活质量和未来的经济安全。然而,许多家庭在理财方面面临着诸多挑战,如支出记录不清晰、预算管理困难等问题。针对这些问题,开发一款方便实用的家庭记账App具有重要意义。

本文旨在介绍基于Android平台的家庭记账App的开发与设计过程。首先,将分析家庭理财管理的现状和存在的问题,探讨开发家庭记账App的必要性。其次,将介绍家庭记账App的功能需求和设计思路,包括账单管理、图表展示、支出记录、收入记录和个人中心等模块。然后,将阐述开发过程中采用的技术和工具,如Android开发工具包(SDK)、Java编程语言、SQLite数据库等。最后,将讨论未来进一步完善和优化家庭记账App的可能性和挑战。

通过本文的阐述,读者将了解到如何利用Android平台开发一款实用的家庭记账App,帮助用户轻松管理家庭财务,实现财务自由和理财目标。同时,也将为相关领域的研究和实践提供一定的参考和借鉴价值。。

1.1 开发背景及意义

随着社会经济的不断发展和人们生活水平的提高,家庭财务管理成为越来越多家庭关注的重要问题。有效管理家庭财务不仅可以帮助家庭成员规划支出、储蓄和投资,还可以提升生活品质和未来的经济安全。然而,许多家庭在财务管理方面存在诸多挑战,如支出记录不清晰、预算管理困难等。

在这样的背景下,开发一款方便实用的家庭记账App具有重要的意义。首先,家庭记账App能够帮助用户轻松记录和管理家庭的收入和支出情况,实现财务透明化和可视化。其次,通过家庭记账App,用户可以更加直观地了解自己的消费习惯和财务状况,从而合理安排支出、制定预算,并实现财务目标。此外,家庭记账App还可以提供数据分析和报告功能,帮助用户进行财务规划和决策。

总的来说,开发一款基于Android平台的家庭记账App能够为用户提供便捷高效的家庭财务管理工具,提升生活质量,实现财务自由和理财目标。同时,也有助于推动智能手机应用在财务管理领域的应用和发展,促进科技与生活的融合。

      1. 现状 

目前,许多家庭在财务管理方面存在一些普遍的问题和挑战,主要包括以下几个方面:

支出记录不清晰: 很多家庭对于日常的支出情况没有清晰的记录,导致无法准确了解自己的消费习惯和财务状况。

预算管理困难: 缺乏有效的预算管理工具和方法,使得家庭难以制定合理的预算和控制支出,导致财务压力增加。缺乏财务规划: 许多家庭没有进行有效的财务规划,缺乏长远的财务目标和规划,导致财务状况不稳定。信息不对称: 家庭成员之间缺乏财务信息的共享和沟通,导致决策不够科学和合理。

理财意识薄弱: 部分家庭缺乏理财意识和知识,对于投资和理财方式不够了解,容易陷入不良的财务状态。

综上所述,当前许多家庭在财务管理方面面临诸多挑战,需要一款方便实用的工具来帮助他们记录、管理和规划家庭财务,提升财务管理效率和水平。因此,开发一款基于Android平台的家庭记账App具有重要的现实意义和市场需求。

2 系统需求分析

2.1 系统可行性分析

2.1.1 技术可行性

确保技术上能够实现设计的游戏系统,包括开发所需的软件、硬件资源是否具备,以及技术团队是否具备开发和维护该系统所需的技能和经验。

考虑选择合适的开发工具和平台,以确保游戏系统可以跨平台使用,满足不同用户设备的需求。

2.1.2经济可行性

基于Android平台的家庭记账App的经济可行性可以从多个方面进行评估:

市场需求: 需要对目标市场进行调研,分析用户对于家庭财务管理的需求和偏好,评估市场规模和增长潜力。

竞争分析: 对现有的家庭财务管理App进行竞争分析,评估其优势和劣势,为产品定位和市场营销提供参考。

产品定位: 根据市场调研结果,确定产品的定位和特色功能,确保能够满足用户需求并具有竞争优势。

开发成本: 评估开发一款家庭记账App的成本,包括软件开发、设计、测试、推广等方面的费用,确保投入能够获得合理的回报。

盈利模式: 制定明确的盈利模式,如广告收入、付费订阅、增值服务等,确保能够实现盈利并持续发展。

营销策略: 制定有效的市场营销策略,包括推广渠道、用户获取、品牌建设等方面,提高产品知名度和用户使用率。

用户反馈和改进: 定期收集用户反馈,不断优化和改进产品,提升用户体验和满意度,保持竞争优势。

综合考虑以上因素,如果市场需求较大,产品定位准确,开发成本控制合理,盈利模式清晰,且能够有效营销推广,那么开发一款基于Android平台的家庭记账App具备较好的经济可行性。然而,在投入之前,务必进行全面的市场调研和商业计划评估,降低风险,提高成功的几率。

2.1.3时间可行性

制定合理的项目开发计划和时间表,确保游戏系统可以按时完成并投入使用。

考虑项目开发过程中可能出现的延迟和风险因素,并制定相应的风险管理计划。

2.1.4用户接受度

进行市场调研和用户需求分析,确保游戏系统的设计符合目标用户的喜好和需求,可以进行用户测试和反馈收集,及时调整和改进系统设计,提高用户体验和接受度。

通过综合考虑以上方面的因素,可以评估小学数学教育与游戏融合系统的可行性,并为项目的顺利实施提供指导和支持;

2.2 系统功能需求分析

下面是更详细的需求分析,包括账单、图表、记录支出、收入、我的功能:

1. 账单功能:

查看账单列表: 用户可以查看按日期排序的账单列表,显示每笔交易的类型、金额、日期等信息。

筛选账单: 用户可以按照日期范围、收支类型、分类等条件进行筛选和查找账单。

查看账单详情: 用户可以点击单个账单查看详细信息,包括交易类型、金额、日期、分类、备注等。

编辑和删除账单: 用户可以编辑和删除已经记录的账单信息,例如修改金额、分类、备注等。

2. 图表功能:

收支统计图表: 提供柱状图、饼图等图表展示用户的收入和支出情况,帮助用户直观了解财务状况。

分类分析图表: 展示各个分类的支出占比或收入占比,帮助用户了解自己的消费习惯。

趋势分析图表: 显示用户的收支趋势,如每月总收入和总支出的变化趋势,帮助用户制定合理的预算和规划。

3. 记录支出和收入功能:

添加支出和收入记录: 用户可以手动添加每笔支出和收入记录,包括金额、日期、分类、备注等信息。

快速记账: 提供快速记账功能,用户可以快速记录当天的支出和收入,节省时间。

默认分类和标签: 用户可以设置默认分类和标签,简化记账流程,减少重复输入。

4. 我的功能:

个人信息管理: 允许用户管理个人信息,如用户名、头像、登录密码等。

数据备份与恢复: 提供数据备份和恢复功能,用户可以定期备份数据到云端,以防数据丢失。

通知设置: 用户可以设置记账提醒和账单到期提醒的方式和时间,以确保不漏记账和避免逾期。

主题和界面设置: 提供多种主题和界面风格选择,用户可以根据个人喜好进行设置。

以上功能是基于家庭记账App的常见需求,可以根据实际情况进行调整和扩展。

2.3 业务需求分析

. 用户管理:

注册与登录: 用户可以通过注册账号并登录来使用记账App的功能。

个人信息管理: 用户可以管理个人信息,包括用户名、密码、邮箱等。

权限管理: 管理员可以设置不同用户的权限,例如普通用户只能查看自己的账单,而管理员可以查看所有用户的账单。

2. 记账功能:

记录支出和收入: 用户可以手动记录每笔支出和收入的详细信息,包括金额、日期、分类、备注等。

自动记账: 可以通过链接银行账户或者扫描收据等方式实现自动记账功能,减少用户手动输入的工作量。

3. 分类与标签:

支出分类: 提供常见的支出分类,如餐饮、交通、购物等,用户可以选择合适的分类来记录支出。

自定义分类: 允许用户添加自定义的支出分类,以满足个性化的记账需求。

标签管理: 用户可以给账单添加标签,方便后续的查询和分析。

4. 预算管理:

设定预算: 用户可以设定每月或每周的预算金额,系统会提醒用户预算执行情况。

预算警告: 当用户的支出超过预算金额时,系统会发送警告通知用户,帮助用户合理控制消费。

5. 数据分析与报表:

账单统计: 提供收入和支出的统计数据,如每月总收入、总支出、结余等。

图表展示: 以图表的形式展示数据,如柱状图、饼图等,帮助用户直观地了解自己的财务状况。

趋势分析: 分析用户的消费趋势,如消费习惯、支出变化趋势等。

6. 提醒与通知:

记账提醒: 可以设置每日、每周或每月的记账提醒,帮助用户养成良好的记账习惯。

账单到期提醒: 当账单到期时,系统会发送提醒通知用户及时支付,避免逾期罚款。

7. 数据安全与隐私保护:

数据加密: 采用加密算法对用户的账单数据进行加密存储,保障数据安全。

隐私保护: 严格遵守相关法律法规,保护用户的个人隐私信息,不会将用户数据用于其他商业用途。

8. 多平台兼容:

移动端兼容性: 支持Android和iOS平台,用户可以在不同设备上使用记账App。

Web端支持: 提供Web版的记账平台,用户可以通过浏览器访问并管理账单。

以上是家庭记账App的业务需求分析,通过满足这些需求,可以提供一个功能完善、用户体验良好的记账平台。

3系统的流程分析和基本框架

3.1  系统流程分析 

3.1.1  注册功能流程

因为没有给未注册用户提供注册,用户需要通过系统注册才能使用该家庭记账APP,注册只需要账号信息,邮箱号,密码等,注册流程如图3.1所示。

3.1注册功能流程图

3.1.2  登录及系统功能模块

系统首先检查用户提交的登录信息,用户登录成功后方可进行搜索,从数据检索所注册的账户及登入密码信息;流程如图3.2所示。

3.2系统习题流程图

数学练习题系统的数据流图如下:

3.3 层数据流图

3.3  系统基本架构的设计

根据3.2节中功能模块的划分,得出系统总体结构设计架构如图3.5所示。

3.5总体结构设计图

用户使用结构图等功能,如图3.6所示

3.6用户功能结构图

4数据库模型设计

4.1  数据库需求分析

系统运行中用户的要求更具体、更充分,直接体现在数据的保存、更新频率以及在各种数据项条件下的查询,这一原则要求其数据库设计结构同时满足这些关键信息的输出和输入要求。添加程序关键数据信息,为每个过程的数据结构进行处理和分析,并为下一个具体功能的数据库结构设计打下坚实的基础。

用户办理:管理人员和用户都可以在本系统中举行用户的信息的办理和改正,包罗用户个人信息的增、删、改、查。

普通管理员办理:管理人员和普通管理员都可以在本系统中举行普通管理员的信息的办理和改正,包罗普通管理员个人信息的增、删、改、查。

4.2  数据库概念结构设计

根据以上分析得知本系统中的实体有:用户数据、因素倍数实体、选择题实体、特殊数实体、等实体。

每一个实体都有自己的数据项组成,具体如图4.1:

4.1总关系E-R图

用户数据E-R图包含了id、用户数据、支出、收入、账单、导出、设置等数据项,如图4.2所示

4.2用户数据E-R图

账单数据E-R图包含了id、支出类型、收入类型、记账时间,备注、等数据项,如图4.3所示

4.3账单信息E-R图

记账E-R图包含了id、类型、支出、收入,记账时间、备注,额度

等数据项,如图4.3所示

4.4记账信息E-R图

4.3  数据库物理结构设

1)用户信息表的属性有:主键id、账号、密码。详情如表1用户信息表所示。

1 User信息表

列名

数据类型

长度

是否主键

允许Null值

说明

id

nvarchar

20

NOT NULL

编号

User

nvarchar

20

NOTNULL

账号

Pwd

nvarchar

20

NOTNULL

密码

Address

50

NULL

地址

Email

char

50

Null

邮箱

2)账单数据E-R图包含了id、支出类型、收入类型、记账时间,备注、等等。详情如表2分类信息表所示。

表2账单数据sort)

列名

类型

长度

能否为空

是否主键

备注

id

Int

11

主键id

name

Varchar

50

名称

Flag

Int

2

记账类型题

outType

Int

5

支出类型确

inType

Int

5

收入类型

RememberTime

Varchar

50

记账时间

Ext

Varchar

50

备注

3)选记账属性有:主键id、类型、支出、收入,记账时间、备注,额度

等数据项。详情如表3记账表所示。

表3选择题表(remember) 

列名

类型

长度

能否为空

是否主键

备注

id

Int

11

主键id

Remembe

Varchar

50

题目

Number

Varchar

50

额度

Flag

Varchar

50

支出类型

inType

Varchar

20

收入类型

Type

Int

11

题型

remarks

Varchar

50

备注

5  功能模块的设计与实现

系统功能设计是为了满足用户的需求,并提供便捷、高效的操作界面。在设计过程中,需要遵循一些原则,如实用性、清晰性、多样性和可扩展性等。

首先,系统功能设计应以实用性为出发点。系统功能应该能够解决用户的实际问题,提供有用的功能。在这个基础上,设计界面应该清晰明了,用户能够轻松地找到所需的功能,操作流程简单明确。其次,界面设计应该避免单调,为用户提供多样性的选择。通过使用不同的颜色、图标、布局等元素,可以使界面更加生动有趣,提高用户的使用体验。同时,系统设计还应符合用户的合理需求。在需求分析阶段,需要充分了解用户的需求,包括功能需求、操作习惯等。根据用户的需求,设计出合理的功能模块和界面布局,以便用户能够快速找到所需的功能,并能够轻松上手使用。

此外,系统设计应该具有可扩展性。系统的功能应该基于模块化设计,以便于后续的二次开发和功能扩展。当用户提出新的需求时,可以通过添加新的模块或功能来满足用户的需求,而不需要对整个系统进行大规模的修改。

最后,系统设计应保持整体性。虽然根据用户需求进行二次开发是可以的,但需要注意不破坏系统的整体结构和功能,以保证系统的稳定性和安全性。在进行二次开发时,应进行充分的测试和验证,确保新功能与原有功能的兼容性和一致性。

总之,系统功能设计应以用户需求为导向,注重实用性和清晰性,同时提供多样性的选择。设计应符合用户的合理需求,并具有可扩展性和整体性,以便系统能够不断升级和完善

5.1  注册模块的实现

系统为开发方便未给未注册用户预留注册功能,所以用户必须先注册才能进行学习等动作,所以本系统要提供便捷的用户注册功能,如图5.1为用户注册模块的实现界面。

图5-1,注册页面

部分代码:

 protected int getLayoutId() {

        return R.layout.activity_user_land;

    }

    @Override

    protected void initWidget() {

        super.initWidget();

        mOwlView=findViewById(R.id.land_owl_view);

        emailET=findViewById(R.id.login_et_email);

        usernameET=findViewById(R.id.login_et_username);

        usernameET1=findViewById(R.id.login_et_username1);

        passwordET=findViewById(R.id.login_et_password);

        rpasswordET=findViewById(R.id.login_et_rpassword);

        signTV=findViewById(R.id.login_tv_sign);

        forgetTV=findViewById(R.id.login_tv_forget);

        loginBtn=findViewById(R.id.login_btn_login);

    }

    @Override

    protected void initClick() {

        super.initClick();

        passwordET.setOnFocusChangeListener(this);

        rpasswordET.setOnFocusChangeListener(this);

        signTV.setOnClickListener(this);

        forgetTV.setOnClickListener(this);

        loginBtn.setOnClickListener(this);

    }

    @Override

    public void onFocusChange(View v, boolean hasFocus) {

        if (hasFocus) {

            mOwlView.open();

        } else {

            mOwlView.close();

        }

    }

    @Override

    public void onClick(View v) {

        switch (v.getId()) {

            case R.id.login_btn_login:  //button

                if (isLogin) {

                    login();  //登陆

                } else {

                    sign();  //注册

                }

                break;

            case R.id.login_tv_sign:  //sign

                if (isLogin) {

                    //置换注册界面

                    signTV.setText("登录");

                    loginBtn.setText("注册");

                    rpasswordET.setVisibility(View.VISIBLE);

                    emailET.setVisibility(View.VISIBLE);

                    usernameET.setVisibility(View.GONE);

                    usernameET1.setVisibility(View.VISIBLE);

                } else {

                    //置换登陆界面

                    signTV.setText("注册");

                    loginBtn.setText("登录");

                    usernameET.setVisibility(View.VISIBLE);

                    usernameET1.setVisibility(View.GONE);

                    rpasswordET.setVisibility(View.GONE);

                    emailET.setVisibility(View.GONE);

                }

                isLogin = !isLogin;

                break;

            case R.id.login_tv_forget:  //忘记密码

                showForgetPwDialog();

                break;

            default:

                break;

        }

    }

5.2 账单信息

家庭账单,记入家庭所有的支出消费和收入,可以通过时间月份,日期查询账单信息,如图所示:

图5-2账单信息

核心代码:

 protected void initClick() {

        super.initClick();

        incomeTv.setOnClickListener(this);

        outcomeTv.setOnClickListener(this);

        ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.Callback() {

            @Override

            public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {

                //首先回调的方法 返回int表示是否监听该方向

                int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;//拖拽

                int swipeFlags = ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;//侧滑删除

                return makeMovementFlags(dragFlags, swipeFlags);

            }

            @Override

            public boolean onMove(RecyclerView recyclerView,

                                  RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {

                //处理拖拽事件回调

                //滑动事件

                Collections.swap(mDatas, viewHolder.getAdapterPosition(), target.getAdapterPosition());

                billSortAdapter.notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition());

                //更新账单分类排序

                saveBSorts();

                return true;

            }

            @Override

            public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {

                int index = viewHolder.getAdapterPosition();

                final BSort item = mDatas.get(index);

                //侧滑事件

                new MaterialDialog.Builder(mContext)

                        .title("确定删除此分类")

                        .content("删除后该分类下的账单会继续保留")

                        .positiveText("确定")

                        .negativeText("取消")

                        .onPositive(((dialog, which) -> {

                            //删除账单分类

                            mPresenter.deleteBSortByID(mDatas.get(index).getId());

                            mDatas.remove(index);

                            billSortAdapter.notifyItemRemoved(viewHolder.getAdapterPosition());

                            //更新排序

                            saveBSorts();

                        }

                        ))

                        //取消删除恢复

                        .onNegative(((dialog, which) -> {

//                          刷新恢复消失的item

                            billSortAdapter.notifyItemChanged(index);

                        }))

                        .show();

            }

            @Override

            public boolean isLongPressDragEnabled() {

                //是否可拖拽

                return true;

            }

        });

        helper.attachToRecyclerView(mRecyclerView);

    }

    @Override

    protected void processLogic() {

        super.processLogic();

        mPresenter.getBillNote();

    }

5.3 图表统计

图表统计是对账单信息的一个统计,分析账单

图5-3统计分析

部分核心代码:

protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.shopping_activity_address);

        TextView  textView = (TextView) findViewById(R.id.titleView);

        textView.setText("");

        recycerView = (RecyclerView) findViewById(R.id.data_re);

        all = (TextView) findViewById(R.id.all);

        wait = (TextView) findViewById(R.id.wait);

        pj = (TextView) findViewById(R.id.pj);

        tk = (TextView) findViewById(R.id.tk);

        back = (ImageView) findViewById(R.id.btn_back);

        type= getIntent().getStringExtra("type");

        back.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                finish();

            }

        });

        rubbishBeanDao = new RubbishBeanDao();

       addressBeanList=  rubbishBeanDao.getContactAll(type);

        adapter = new AddressListAdapter();

//        if (Build.VERSION.SDK_INT >= 21) {

//            View decorView = getWindow().getDecorView();

//            int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

//                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;

//            decorView.setSystemUiVisibility(option);

//            getWindow().setStatusBarColor(Color.argb(100,0,0,0));

//        }

        all.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                all.setTextSize(20f);

                wait.setTextSize(16f);

                pj.setTextSize(16f);

                tk.setTextSize(16f);

                recycerView.setVisibility(View.VISIBLE);

            }

        });

5.4 记账支出、收入

记账支出收入包含不同类别,方便统计,如图所示:

图5-4记账支出,收入

部分核心代码:

 public void onClick(View view) {

        switch (view.getId()) {

            case R.id.back_btn:

                finish();

                break;

            case R.id.tb_note_income://收入

                isOutcome = false;

                setTitleStatus();

                break;

            case R.id.tb_note_outcome://支出

                isOutcome = true;

                setTitleStatus();

                break;

            case R.id.tb_note_cash://现金

                showPayinfoSelector();

                break;

            case R.id.tb_note_date://日期

                showTimeSelector();

                break;

            case R.id.tb_note_remark://备注

                showContentDialog();

                break;

            case R.id.tb_calc_num_done://确定

                doCommit();

                break;

            case R.id.tb_calc_num_1:

                calcMoney(1);

                break;

            case R.id.tb_calc_num_2:

                calcMoney(2);

                break;

            case R.id.tb_calc_num_3:

                calcMoney(3);

                break;

            case R.id.tb_calc_num_4:

                calcMoney(4);

                break;

            case R.id.tb_calc_num_5:

                calcMoney(5);

                break;

            case R.id.tb_calc_num_6:

                calcMoney(6);

                break;

            case R.id.tb_calc_num_7:

                calcMoney(7);

                break;

            case R.id.tb_calc_num_8:

                calcMoney(8);

                break;

            case R.id.tb_calc_num_9:

                calcMoney(9);

                break;

            case R.id.tb_calc_num_0:

                calcMoney(0);

                break;

            case R.id.tb_calc_num_dot:

                if (dotNum.equals(".00")) {

                    isDot = true;

                    dotNum = ".";

                }

                moneyTv.setText(num + dotNum);

                break;

            case R.id.tb_note_clear://清空

                doClear();

                break;

            case R.id.tb_calc_num_del://删除

                doDelete();

                break;

        }

    }

    /**

     * 监听Activity返回结果

     *

     * @param requestCode

     * @param resultCode

     * @param intent

     */

    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {

        if (resultCode == RESULT_OK) {

            switch (requestCode) {

                case 0:

                    mPresenter.getBillNote();

                    break;

            }

        }

    }

5.5 发现

发现主要是查看一些信息资讯

图5-5,新闻资讯

核心代码:

 protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_link_line_text);

        ButterKnife.bind(this);

        /**

         * 24/5,10,6,7,1

         * 195/6,26,13,16,9

         * 42/9,14,12,3,7

         * 126/4,5,27,13,21

         * 45/4,15,5,6,2

         */

        List<LinkDataBean> list = new ArrayList<LinkDataBean>();

        LinkDataBean linkDataBean = new LinkDataBean();

        linkDataBean.setCol(1);

        linkDataBean.setContent("24");

        linkDataBean.setRow(0);

        linkDataBean.setType("0");

        linkDataBean.setQ_num(0);

        LinkDataBean linkDataBean0 = new LinkDataBean();

        linkDataBean0.setCol(0);

        linkDataBean0.setContent("1");

        linkDataBean0.setRow(0);

        linkDataBean0.setType("0");

        linkDataBean0.setQ_num(0);

        LinkDataBean linkDataBean1 = new LinkDataBean();

        linkDataBean1.setCol(0);

        linkDataBean1.setContent("5");

        linkDataBean1.setRow(0);

        linkDataBean1.setType("0");

        linkDataBean1.setQ_num(1);

        LinkDataBean linkDataBean2 = new LinkDataBean();

        linkDataBean2.setCol(0);

        linkDataBean2.setContent("10");

        linkDataBean2.setRow(0);

        linkDataBean2.setType("0");

        linkDataBean2.setQ_num(2);

        LinkDataBean linkDataBean3 = new LinkDataBean();

        linkDataBean3.setCol(0);

        linkDataBean3.setContent("6");

        linkDataBean3.setRow(0);

        linkDataBean3.setType("0");

        linkDataBean3.setQ_num(0);

        LinkDataBean linkDataBean4 = new LinkDataBean();

        linkDataBean4.setCol(0);

        linkDataBean4.setContent("7");

        linkDataBean4.setRow(0);

        linkDataBean4.setType("0");

        linkDataBean4.setQ_num(4);

        list.add(linkDataBean);

        list.add(linkDataBean1);

        list.add(linkDataBean0);

        list.add(linkDataBean2);

        list.add(linkDataBean3);

        list.add(linkDataBean4);

        linkLineView.setData(list);

        linkLineView.setOnChoiceResultListener((correct, yourAnswer) -> {

            // 结果

            StringBuilder sb = new StringBuilder();

            sb.append("正确与否:");

            sb.append(correct);

            sb.append("\n");

            tvResult.setText(sb.toString());

        });

        next.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                startActivity(new Intent(LinkLineTextActivity.this,LinkLineTextActivity1.class));

            }

        });

5.6 我的信息

我的信息包含个人信息及设置,如图所示:

图5-6

参考文献

[1]陈飞,罗文广. 基于Android的智能交互APP设计[J]. 广西科技大学学报,2017,28(02):29-34+41.

[2]何远,张玉清,张光华. 基于黑盒遗传算法的Android驱动漏洞挖掘[J]. 计算机学报,2017,40(05):1031-1043.

[3]申晋祥,鲍美英. 基于Android的移动在线教育平台的设计与实现[J]. 软件,2016,37(03):30-33.

[4]曾露. MVP模式在Android中的应用研究[J]. 软件,2016,37(06):75-78.

[5]周,尹生强,王冬青,王英杰. 基于Eclipse和Android系统的App开发平台搭建研究[J]. 青岛大学学报(工程技术版),2016,31(03):49-53.

[6]路晔绵,李轶夫,应凌云,谷雅聪,苏璞睿,冯登国. Android应用第三方推送服务安全分析与安全增强[J]. 计算机研究与发展,2016,53(11):2431-2445.

[7]卿斯汉. Android安全的研究现状与展望[J]. 电信科学,2016,32(10):2-6+12-14.

[8]朱丽娜. 基于Android的日程管理系统的设计与实现[D].山东大学,2016.

[9]田志颖. 基于Android的移动学习软件设计与实现[D].曲阜师范大学,2016.

[10]葛臻. 基于Android平台的课堂笔记APP设计与实现[D].华中师范大学,2016.

[11]吕留记. 基于Android的即时通讯系统的研究与实现[D].电子科技大学,2016.

  • 33
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农乐园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值