基于Android的个人理财APP的设计与实现

目 录
1.引言 1
1.1相关背景 1
1.2目的和意义 2
2.Android简介 2
2.1安卓技术 2
2.2 SQLite简介 2
3.可行性分析 3
3.1经济可行性分析 3
3.2技术可行性 3
3.3业务流程分析 3
3.4系统需求分析 4
3.5性能需求分析 5
4.数据库设计 5
4.1 数据库的概念 5
4.2 数据库的选择 5
4.3 数据库表的描述 5
5.系统设计与实现 7
5.1详细设计与实现 7
6.系统测试 17
6.1测试目的及意义…17
6.2测试方法说明…17
6.2测试详情…18
7.总结 20
参考文献 20
3可行性分析
3.1经济可行性分析
因为这个App是一个比较小的软件,所以在开发过程中并没有需要过多的经费或者投入,有开发必备的电脑和测试工具以及开发环境即可,开发的系统不是非常的复杂,并且应该让操作简单易行。开发过程是由一个人独立完成的,用时大概在两个月左右,需要投入的成本费大概是由人工费用,加上电脑设备以及开发软件构成的。
3.2技术可行性分析
由于该系统是小型的理财记账系统,并且是做一个让用户随身携带的在手机端的一个应用软件,所以采用的是Android技术进行开发,而且Android平台是目前世界上最成功的移动终端设备开发系统之一。并且Android平台的开源性也让开发过程不受很大的阻碍,这大大提高了系统设计的便捷性。所以对于个人理财系统来说,使用Android技术进行开发是完全可以的。
3.3业务流程分析
3.3.1 系统业务流程分析
使用者在第一次使用该软件时必须注册一个用户名才能进行操作,在注册了个人用户名密码之后进行登录,用户登录后就可以使用App里面的所有功能了。
用户成功登陆之后,在界面下方有四大功能模块分别是记账功能,报表功能,资金管理功能,更多功能。当用户登陆之后会有四个界面展示在用户面前,之后用户可以根据自己想要使用的功能进行具体的操作。记账功能可以将用户具体账目变动情况详细记录而且也可以将用户每日或者每一固定时间的账户收入以及支出情况详细的呈现出来,并且可以查看当天账单的历史记录。在用户记账之后,所记录的收入和支出可以通过报表功能以报表的形式详细、直观的展现在用户面前。资金管理功能可以添加资金账户并且可以对这些账户进行具体操作比如查看、转账等。更多功能里可以通过点击头像进行修改用户信息以及退出登录,并且有资金提醒等一些其他操作。
通过以上功能的具体划分不仅可以满足用户对自己账目流转的管理而且以图表的形式把账目流转的具体情况呈现出来,也可以管理多个资金账户进行相应的具体操作。可以说,基于Android平台开发的个人理财APP应用在这一类应用软件当中取得了新的突破。
在设计了整个系统的功能逻辑之后绘制了个人理财App的系统流程图,系统业务流程图如图1所示:
图1 系统业务流程图

在这里插入图片描述

3.4系统需求分析
去设计维护一个App,首先最重要的就是去明确一个确切而又详细的目标,有一个合理的系统规划。通过对用户目前的一些需求,在这些方面下手,才能做好一个用户满意的东西。系统规划就是对系统的方向和内容进行一个提前的掌握以及设计,这样的话开发者才会对这个软件的设计有一个初步的把控和合理的分析。所以通过对目前一些app的查看以及对用户的一些调查来说,大致明确了一个方向,需要有四个模块来支撑整个App的运行。
首先对于管理员,也就是用户个人来说,应该有一个登录注册界面来让用户登录个人的账户,并且假如用户注册了多个账户,每个账户的内容也应该是不一样的,得在后台记录每个用户的资金状况。
其次,最重要的肯定是用户对于记账信息的管理,包括对用户每天资金流转具体情况的输入,并且应该让这些信息显示在用户的面前,这样用户才能看到自己每一天的收入支出情况,这是用户最关心的东西。
此App增加了一个功能就是报表显示用户当月的收入支出情况,收入和支出会用报表的方式向用户展示在报表界面中,非常的直观。所以应该设计一个报表模块来显示用户的收入支出情况。
因为用户的资金账户不可能只有一个,比如用户有支付宝、银行卡等等一些账户,添加收入支出的时候具体到哪个账户都得分清楚,还有就是其他的某些账户比如说现金。所以应该设计一个资金管理界面,让用户添加资金账户,并且管理账户的余额情况,在用户记账的时候每笔收入支出用的是哪个资金账户都可以选择。
因为主要是做Android系统的开发,此软件应该使用主流的使用java语言编写代码的Eclipes或者目前安卓开发使用较多的Android Studio。Eclipes只是一个开发环境,还需要有Java SDK。此外,因为开发的是Android平台的应用系统,所以安卓的SDK也是必须要的,这是安卓的开发环境必须的一些工具。
此外不管是在开发中还是在开发结束后都要时刻对做好的App进行检测,所以还需要Android的虚拟机来进行测试,Genymotion是一款最稳定的不容易崩溃而且一直能连接到的虚拟机,还有就是夜神模拟器或者是逍遥模拟器,二者都可以选择但是有时会断开连接,所以推荐使用Genymotion,本文转载自http://www.biyezuopin.vip/onews.asp?id=13842当然真机也是可以当做测试机的。
简单地说,上述的各种开发中所必须的工具全部准备好之后才开始整个Android的开发,然后准备好一个测试机,这样才能开始一个完整的Android平台应用程序的开发。

下面是记账模块中的部分代码:
public void updateRecord() {
				AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
				View v = View.inflate(getActivity(), R.layout.account_update_dialog, null);
				builder.setView(v);
				//  获取  收入/支出  的spinner
				final List<String> list = DataUtils.getType(mDatas.get(index).inorout);
				final AlertDialog dialog = builder.create();
				final Spinner type = 
						(Spinner) v.findViewById(R.id.account_update_dialog_type);
				ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,list);
				// 设置 spinner 文字居中
				type.setGravity(android.view.Gravity.CENTER);
				type.setAdapter(adapter);
				// 设置默认的 类型
				for (int i=0; i<list.size(); i++) {
					if (list.get(i).equals(mDatas.get(index).name)) {
						type.setSelection(i, true);
					}
				}
				
				//  获取下拉选择框 选中 的 内容
				type.setOnItemSelectedListener(new OnItemSelectedListener() {

					@Override
					public void onItemSelected(AdapterView<?> parent,
							View view, int position, long id) {
						update_name = list.get(position);
					}

					@Override
					public void onNothingSelected(AdapterView<?> parent) {}
				});
				
				// 设置默认的金额
				final EditText money = 
						(EditText) v.findViewById(R.id.account_update_dialog_money);
				money.setText(mDatas.get(index).money+"");
				money.setSelection(money.getText().toString().length());
				Button cancel = (Button) v.findViewById(R.id.account_update_dialog_btn_cancel);
				Button enter = (Button) v.findViewById(R.id.account_update_dialog_btn_enter);
				cancel.setOnClickListener(new OnClickListener() {
					@Override
					public void onClick(View v) {
						dialog.dismiss();
					}
				});
				enter.setOnClickListener(new OnClickListener() {
					@Override
					public void onClick(View v) {
						Double upMoney = Double.valueOf(money.getText().toString());
						Account account = dao.findAccountById(mDatas.get(index).account_id);
						if (mDatas.get(index).inorout == 1) {
							if (upMoney <= 0) {
								Toast.makeText(getActivity(), "输入的金额必须大于0", 20).show();
								return;
							}
						}else {
							if (upMoney >= 0) {
								Toast.makeText(getActivity(), "输入的金额必须小于0", 20).show();
								return;
							}
						}
						account.money = account.money + upMoney - mDatas.get(index).money;
						//  更新资金表
						dao.updateAccount(mDatas.get(index).account_id, account.money);
						//  更新记录表
						dao.updateRecord(mDatas.get(index).id, update_name, upMoney);
						showMonthView(SharedpreferencesUtils.getBoolean(getActivity(), "login_flag",
								false));
						//通知其他页面同步更新
						accountListener.setAccountListener();
						accountListener.setFormListener();
						dialog.dismiss();
					}
				});
				dialog.show();
			}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值