北邮移动互联网应用大作业实验报告《云账本app》开发

简介: 北邮移动互联网应用大作业实验报告《云账本app》开发

北邮移动互联网应用大作业实验报告《云账本app》开发

1、相关技术

  • 绘制布局,掌握android基本view控件的属性和使用
  • 熟练掌握Activity页面展示,跳转和传值
  • 使用碎片加载界面,滑动视图切换页面
  • 自定义对话框
  • 自定义软键盘绘制和使用
  • 列表视图以及网格视图的适配器使用和页面加载
  • 使用Android自带数据库,熟练创建表,并进行增删改查
  • 定义drawable文件,设定布局以及控件样式
  • 使用MPAndroidChart第三方框架绘制柱状图

2、系统功能需求

这是一个个人记账工具,能够方便人们进行个人账户收支使用情况进行管理分析。

本软件包含的功能有:

  • 计算当天以及当月共收支总钱数
  • 对于每月收支情况进行图标分析,百分比分析
  • 查看历史账单
  • 能够搜索用户关于某种记录的全部收支情况

2.1计算当天收支总数功能:

通过软件“记一笔”按钮可以进入记录页面,页面包括了收入和支出两个部分,用户根据自己当前使用情况进行选择记录收入还是支出。

选择收入还是支出时需要选择当前记录的事件类型,选择完毕则输入具体记录的金额。

2.2图标分析收支情况:

在用户想要对自己的记录数据进行复盘,数据分析时,我们提供一个“收入情况图标分析”的功能,可以进行百分比的分析,让用户能够直观的查看自己使用数据的情况。账单详情页提供了支出和收入两部分数据的图表,包含了用户数据使用的时间,事件类型,收入支出具体金额。

2.3查看历史账单

用户可以根据历史账单查看自己过去几个月个人消费的具体情况,可以选择具体的时间,查看具体的事件,具体的金额,具体时间,事件类型。

2.4搜索收入支出记录

用户可以根据时间,事件,事件类型搜素自己的开支情况,索引记录将以列表的形式展现。

2.5清除数据功能

用户可以清除所有使用记录

3、系统设计与实现

3.1、总体设计

首页,界面简约美观,滑动流畅,主要体现出整体的功能架构,分为5个要素,账单记录,搜索账单,设置,账单详情,关于。

首页可视化的功能为:

  • 具体数据
  • 具体事件
  • 三个按钮

具体数据情况一栏可以通过点击眼睛实现数据的隐藏。

点击头布局眼睛时,如果原来是明文,就加密,如果是密文,就显示出来

private void toggleShow() {
        if (isShow) {   //明文====》密文
            PasswordTransformationMethod passwordMethod =                            PasswordTransformationMethod.getInstance();
            topInTv.setTransformationMethod(passwordMethod);   //设置隐藏
            topOutTv.setTransformationMethod(passwordMethod);   //设置隐藏
            topbudgetTv.setTransformationMethod(passwordMethod);   //设置隐藏
            topShowIv.setImageResource(R.mipmap.ih_hide);
            isShow = false;   //设置标志位为隐藏状态
        }else{  //密文---》明文
            HideReturnsTransformationMethod hideMethod = HideReturnsTransformationMethod.getInstance();
            topInTv.setTransformationMethod(hideMethod);   //设置隐藏
            topOutTv.setTransformationMethod(hideMethod);   //设置隐藏
            topbudgetTv.setTransformationMethod(hideMethod);   //设置隐藏
            topShowIv.setImageResource(R.mipmap.ih_show);
            isShow = true;   //设置标志位为隐藏状态
        }
    }

3.2、系统模块

3.2.1账单详情编辑页

通过首页点击”记一笔“数据之后,页面跳转到账单详情,用户根据自己当前使用情况进行选择记录收入还是支出。

选择收入还是支出时需要选择当前记录的事件类型,选择完毕则输入具体记录的金额。

3.2.2账单数据图表分析页

用户对自己的记录数据进行复盘,数据分析时,我们提供一个“收入情况图标分析”的功能,可以进行百分比的分析,让用户能够直观的查看自己使用数据的情况。账单详情页提供了支出和收入两部分数据的图表,包含了用户数据使用的时间,事件类型,收入支出具体金额。

3.2.3搜索账单信息记录

用户可以根据时间,事件,事件类型搜素自己的开支情况,索引记录将以列表的形式展现。具体的搜索是通过事件id进行请求,调用android系统数据库遍历数据。

数据库的调用:

/* 表示全局应用的类*/
public class UniteApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // 初始化数据库
        DBManager.initDB(getApplicationContext());
    }
}

搜索数据时,首先进行一次判空操作,不为空则进行搜索。

具体的数据源对象如下:

  • ListView searchLv
  • EditText searchEt
  • TextView emptyTv
  • List<AccountBean>mDatas
  • AccountAdapter adapter

具体的搜索执行事件如下:

public void onClick(View view) {
        switch (view.getId()) {
            case R.id.search_iv_back:
                finish();
                break;
            case R.id.search_iv_sh:   //执行搜索的操作
                String msg = searchEt.getText().toString().trim();
//                判断输入内容是否为空,如果为空,就提示不能搜索
                if (TextUtils.isEmpty(msg)) {
                    Toast.makeText(this,"输入内容不能为空!",Toast.LENGTH_SHORT).show();
                    return;
                }
                //开始搜索
                List<AccountBean> list = DBManager.getAccountListByRemarkFromAccounttb(msg);
                mDatas.clear();
                mDatas.addAll(list);
                adapter.notifyDataSetChanged();
                break;
        }
    }
3.2.4账单详情页和历史详情页

账单详情页提供了支出和收入两部分数据的图表,包含了用户数据使用的时间,事件类型,收入支出具体金额。用户可以根据历史账单查看自己过去几个月个人消费的具体情况,可以选择具体的时间,查看具体的事件,具体的金额,具体时间,事件类型。

获取指定年月份记录代码如下:

private void loadData(int year,int month) {
        List<AccountBean> list = DBManager.getAccountListOneMonthFromAccounttb(year, month);
        mDatas.clear();
        mDatas.addAll(list);
        adapter.notifyDataSetChanged();
    }

4、系统可能的扩展

该系统是一个记账系统,主要是通过用户记录自己的数据达到分析数据的目的。用户使用该系统是强调“记录”的作用。本系统的扩展目的是------“合理”。在系统中设计开发一个推荐系统模块,通过用户的使用数据,系统会给出个性化推荐方案,主要是推荐并培养用户如何保持一个良好的记账习惯。

可以通过训练神经网络模型,基于深度学习推荐个性化服务来扩展该系统。这个原理可以参考目前的电子商务网站比如淘宝,京东等,它们可以通过分析用户的使用习惯推荐给用户可能需要的商品。那么我们也可以通过此原理去扩展 该系统,该系统目的是培养用户如何保持一个良好的记账习惯,能够给用户一个合理化的使用建议。分析用户在哪些方面花钱较多较少,分析是否具有合理支出的可行性方案。

5、总结体会

这一学期的课就那么快结束了,真的挺快的。

一开始接触 Android 是从自己的手机开始的,觉得它很酷,是我喜欢的风格,然后我就通过了一些网络渠道去了解 Android 。在选课的时候发现有这个课程,于是我就报名了。刚开始接触 Android 开发时感觉到它很有意思,在界面开发上和 web 也可以形成了相通的架构,更加方便,视觉上也是非常的酷。Android 作为新兴的手机操作系统,适应潮流的发展,在一定程度上迎合了现代人们最求效率和最求完美的心态,再加上的它的先进之处,所以 Android 的发展很快, Android 的应用资源也越来越广泛,现在的 Android 正在快速形成一个只能手机王国,给人们提供日常娱乐和办公的平台,无论在哪些方面,Android 的表现总是能够让人满意, 它正在快速地占领手机终端,未来的智能手机领域将是 Android 的天下,越来越多的人选用 Android 平台的手机。如果说追求苹果是因为苹果的高端与美感,那么追求 Android 则是因为它的先进性开源性,也正是因为 Android 这些吸引人们瞩目的特点,才会有越来越多的人对 Android 充满激情, Android 的发展也才能这样的迅猛,所以在这里要先谢谢 Goolge ,以及那些充满激情的开发者们。首先在界面上,我们同样可以通过不同布局进行设计非常酷的界面,这些界面可以通过 include 进行引入,我们可以通过一些公用的方法写个 BaseActivity 这个基类,通过继承方式比较不 错 的 实 现 了 Activity 的 界 面 , 因 为 这 样 你 可 以 Header( 头 部 ) 和Footer( 尾部 ) 进行处理一些触发事件或者特效等。布局模式以相对模式为主,线线布局模式可以在比较简单的 include 进行完成,最重要的一点就是:我们可以自己通过重写方法或者通过实现 View 或者 Layout 等类进行扩充项目需要的布局 ( 或者控件 ) , 在学习界面中, Android 为我们提供了很好的类似反射机制,通过 Layout 文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样可以通过 java 代码直接创建 View 进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的 跳转Intent 管理,通过 Bundle 对数据在界面之间进行传输。其次在手机交互式通信服务中,学习了 Android 手机之间进行短信发送、广播、对广播的监听、服务等。

目录
相关文章
|
5天前
|
JavaScript 前端开发 小程序
uniapp一个人开发APP关键步骤和考虑因素
uniapp一个人开发APP关键步骤和考虑因素
26 0
uniapp一个人开发APP关键步骤和考虑因素
|
18天前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
21天前
|
XML 移动开发 前端开发
使用duxapp开发 React Native App 事半功倍
对于Taro的壳子,或者原生React Native,都会存在 `android` `ios`这两个文件夹,而在duxapp中,这些文件夹的内容是自动生成的,那么对于需要在这些文件夹中修改的配置内容,例如包名、版本号、新架构开关等,都通过配置文件的方式配置了,而不需要需修改具体的文件
|
21天前
|
存储 开发工具 Android开发
使用.NET MAUI开发第一个安卓APP
【9月更文挑战第24天】使用.NET MAUI开发首个安卓APP需完成以下步骤:首先,安装Visual Studio 2022并勾选“.NET Multi-platform App UI development”工作负载;接着,安装Android SDK。然后,创建新项目时选择“.NET Multi-platform App (MAUI)”模板,并仅针对Android平台进行配置。了解项目结构,包括`.csproj`配置文件、`Properties`配置文件夹、平台特定代码及共享代码等。
|
1月前
|
Web App开发 Java 视频直播
FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP
对于软件、计算机等专业的毕业生,毕业设计需实现实用软件或APP。新颖的设计应结合最新技术,如5G时代的音视频技术。示例包括: 1. **短视频分享APP**: 集成FFmpeg实现视频剪辑功能,如添加字幕、转场特效等。 2. **电商购物APP**: 具备直播带货功能,使用RTMP/SRT协议支持流畅直播体验。 3. **同城生活APP**: 引入WebRTC技术实现可信的视频通话功能。这些应用不仅实用,还能展示开发者紧跟技术潮流的能力。
75 4
FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP
|
1月前
|
移动开发 小程序 JavaScript
uni-app开发微信小程序
本文详细介绍如何使用 uni-app 开发微信小程序,涵盖需求分析、架构思路及实施方案。主要功能包括用户登录、商品列表展示、商品详情、购物车及订单管理。技术栈采用 uni-app、uView UI 和 RESTful API。文章通过具体示例代码展示了从初始化项目、配置全局样式到实现各页面组件及 API 接口的全过程,并提供了完整的文件结构和配置文件示例。此外,还介绍了微信授权登录及后端接口模拟方法,确保项目的稳定性和安全性。通过本教程,读者可快速掌握使用 uni-app 开发微信小程序的方法。
76 3
|
2月前
|
Web App开发 Android开发
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
实时数据传输在互联网中至关重要,不仅支持即时通讯如QQ、微信的文字与图片传输,还包括音视频通信。一对一通信常采用WebRTC技术,如《Android Studio开发实战》中的App集成示例;而一对多的在线直播则需部署独立的流媒体服务器,使用如SRT等协议。SRT因其优越的直播质量正逐渐成为主流。本文档概述了SRT协议的使用,包括通过OBS Studio和SRT Streamer进行SRT直播推流的方法,并展示了推流与拉流的成功实例。更多细节参见《FFmpeg开发实战》一书。
47 1
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
|
2月前
|
Web App开发 5G Linux
FFmpeg开发笔记(四十四)毕业设计可做的几个拉满颜值的音视频APP
一年一度的毕业季来临,计算机专业的毕业设计尤为重要,不仅关乎学业评价还积累实战经验。选择紧跟5G技术趋势的音视频APP作为课题极具吸引力。这里推荐三类应用:一是融合WebRTC技术实现视频通话的即时通信APP;二是具备在线直播功能的短视频分享平台,涉及RTMP/SRT等直播技术;三是具有自定义动画特效及卡拉OK歌词字幕功能的视频剪辑工具。这些项目不仅技术含量高,也符合市场需求,是毕业设计的理想选择。
70 6
FFmpeg开发笔记(四十四)毕业设计可做的几个拉满颜值的音视频APP
|
2月前
|
编解码 Java Android开发
FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流
​SRT Streamer是一个安卓手机端的开源SRT协议直播推流框架,可用于RTMP直播和SRT直播。SRT Streamer支持的视频编码包括H264、H265等等,支持的音频编码包括AAC、OPUS等等,可谓功能强大的APP直播框架。另一款APP直播框架RTMP Streamer支持RTMP直播和RTSP直播,不支持SRT协议的直播。而本文讲述的SRT Streamer支持RTMP直播和SRT直播,不支持RTSP协议的直播。有关RTMP Streamer的说明参见之前的文章《使用RTMP Streamer开启APP直播推流》,下面介绍如何使用SRT Streamer开启手机直播。
62 4
FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流
|
2月前
|
IDE Java 开发工具
探索安卓开发之旅:打造你的第一款App
【8月更文挑战第24天】在这篇文章中,我们将一起踏上激动人心的安卓开发之旅。不论你是编程新手还是希望扩展技能的老手,本文将为你提供一份详尽指南,帮助你理解安卓开发的基础知识并实现你的第一个应用程序。从搭建开发环境到编写“Hello World”,每一步都将用浅显易懂的语言进行解释。那么,让我们开始吧!