个人收入理财App的设计与实现
目 录
摘 要 I
Abstract II
1绪论 1
1.1选题背景及意义 1
1.1.1 研究背景 1
1.1.2 目的和意义 1
1.2国内外现状和发展趋势 2
1.4 研究主要内容 3
2设计开发所用到的工具和技术 4
2.1系统开发工具 4
2.2 Eclipse的介绍 4
2.3 Android简介 5
2.4安卓技术 5
2.5 SQLite简介 6
3系统分析 8
3.1 经济可行性分析 8
3.2 技术可行性分析 8
3.3 系统业务流程分析 8
3.4 系统需求分析 9
3.5 性能需求分析 10
4系统设计 11
4.1系统总体设计分析 11
4.2系统结构图 11
4.3系统特点 11
4.2数据库设计 12
4.2.1数据库的概念 12
4.2.2数据库的选择 12
4.2.3数据库表的描述 12
5系统实现 14
5.1用户登录模块 14
5.2用户记账模块 17
5.3报表模块 23
5.4资金模块 25
5.5更多模块 28
6系统测试 33
6.1测试目的及意义 33
6.2测试方法说明 33
6.3测试详情 33
6.3.1 登录注册模块 33
6.3.2 记账模块 34
6.3.3 报表模块 35
6.3.4 资金模块 35
7总结 36
参考文献 37
致 谢 38
1.4 研究主要内容
设计内容主要包括系统分析、功能分析、数据库设计、系统测试,具体如下:
1、系统分析
该个人财务管理系统,是一款可以在安卓手机上运行的App。用户通过注册用户名密码登录系统,本文转载自http://www.biyezuopin.vip/onews.asp?id=14331进入以后用户可以将每天的收入支出等消费情况添加到系统内,系统会将收入支出情况显示在界面上,并可以用图表模式显示。
2、功能分析
该系统主要包括登录注册模块,记账模块,报表模块以及资金模块。
(1)登录注册模块:此模块在App的更多一栏中,用户通过点击头像进行登录注册。
(2)记账模块:用户在此栏目中可以添加每天的收入或者支出情况,并会予以显示。
(3)报表模块:收入支出情况都会以图表模式显示在App中。
(4)资金模块:用户在此模块中可以添加诸如银行卡、支付宝之类的资金账户,在记账时可以选择。
3、数据库设计
通过SQL语句建立,存放用户名密码收入支出等数据。
4、系统测试
通过手机对App进行运行以及Bug检测,确保没有数据的错误以及各种Bug。
2设计开发所用到的工具和技术
2.1系统开发工具
个人财务管理系统的开发及运行环境如下所述:
操作系统: Windows7
JDK环境: Java Development Kit version=1.7.0_45
开发工具: Eclipse version=4.2.0
Android Software Development Kit version=4.4.2
Android Developer Tools Build: v22.3.0-887826
开发语言: Java、XML
数据库软件:SQLite
运行平台: Windows
虚拟机:720P(1080x720)
package com.view;
import com.familyfinances.R;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
/*
* 自定义组合控件
*/
public class MineView extends LinearLayout{
private ImageView icon;
private TextView text;
private ImageView image;
private MineView mineView;
private String mText;
private int mIcon;
private int mImage;
public MineView(Context context, AttributeSet attrs) {
super(context, attrs);
//获取子元素
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MineView);
for(int i=0; i<ta.getIndexCount(); i++){
int attr = ta.getIndex(i);
switch (attr) {
case R.styleable.MineView_icon:
mIcon = ta.getResourceId(attr, R.drawable.ic_launcher);
break;
case R.styleable.MineView_text:
mText = ta.getString(attr);
break;
case R.styleable.MineView_image:
mImage = ta.getResourceId(attr, R.drawable.ic_launcher);
break;
}
}
//进行资源回收
ta.recycle();
initView(context);
}
private void initView(Context context) {
View view = View.inflate(context, R.layout.mine_list_view, this);
icon = (ImageView) view.findViewById(R.id.mineview_icon);
text = (TextView) view.findViewById(R.id.mineview_text);
image = (ImageView) view.findViewById(R.id.mineview_image);
icon.setImageResource(mIcon);
text.setText(mText);
image.setImageResource(mImage);
//给指定的控件设置 属性
if(mIcon == R.drawable.ft_cash || mIcon == R.drawable.ft_chuxuka
|| mIcon == R.drawable.ft_creditcard
||mIcon == R.drawable.ft_wangluochongzhi){
text.setTextColor(Color.parseColor("#ffffff"));
image.setVisibility(View.INVISIBLE);
}
}
/**
* 创建一个回调接口
* @author HelloWorld
*
*/
public interface MyOnClickListener{
public void setMyClickListener();
}
//声明一个 回调接口的 对象
private MyOnClickListener myOnClickListener;
/**
* 把对外调用的方法 传进来
* @param myOnClickListener
*/
public void setMyOnClickListener(MyOnClickListener myOnClickListener){
this.myOnClickListener = myOnClickListener;
}
}