实践环节: Android应用开发
项目名称: 个人理财通软件设计与实现
实训任务书
一、实训名称
实践环节___ Android应用开发实训 _______
项目名称_基于Android系统的个人理财通软件设计与实现__
二、学生信息
三、用户需求及约束条件
你是月光族吗?你能说出每月的钱都用到什么地方了吗?为了更好的记录您每月的收入及支出,本实训要求开发了一款基于Android系统的个人理财通软件。通过该软件,用户可以随时随地的记录自己的收入、支出等信息;另外,为了保护自己的隐私,还可以为个人理财通设置密码。
需要实现的功能如图所示
四、设计要求、技术参数及设计规格
设计要求:
1、界面简洁美观。
2、方便的对收入及支出进行增、删、改、查等操作。
3、便签方便的记录用户的计划。
4、能够通过设置密码保证程序的安全性。
5、系统运行稳定、安全可靠。
技术参数、开发环境
1、操作系统:Windows 7。
2、JDK环境:Java SE Development KET(JDK) version 7。
3、开发工具:Eclipse 4.4.2+Android 5.0。
4、开发语言:Java、XML。
5、数据库管理软件:SQLite 3。
6、运行平台:Windows、Linux各版本。
7、分辨率:最佳效果1440*×900像素。
编码规范
五、工作量
天/日期 |
任务描述 |
通过标准 |
1 |
项目总体分析,可行性分析,需求分析, |
|
2 |
项目总体设计,功能模块划分,数据库设计实现 |
|
3 |
公共类设计,数据模型公共类,Dao公共类 |
|
4 |
登陆模块设计,包含界面设计,业务逻辑编程 |
|
5 |
系统主窗体设计,包含系统主窗体布局文件、定义文本及图片组件、定义功能图标及说明文字、设置功能图标及说明文字、添加收入信息、设计收入信息浏览布局文件 |
|
6 |
收入管理模块设计与实现,主要包含设计新增收入布局文件、添加收入信息、设计收入信息浏览布局文件单击指定项时打开详细信息 |
|
7 |
设计修改/删除收入布局文件、显示指定编号的收入信息、修改收入信息,删除收入信息 |
|
8 |
支出管理模块设计与实现,主要包含设计新增支出布局文件、添加支出信息、设计支出信息浏览布局文件单击指定项时打开详细支出信息 |
|
9 |
支出管理,、设计修改/删除支出布局文件、显示指定编号的支出信息、修改支出信息 |
|
10 |
便签管理模块设计与实现,主要包含设计新增便签布局文件、添加便签信息、设计便签信息浏览布局文件、显示所有的便签信息、 |
|
11 |
便签管理,单击指定项时打开详细信息、设计修改/删除便签布局文件、显示指定编号的便签信息、修改便签信息、删除便签信息 |
|
12 |
系统设置模块设计,设计系统设置布局文件、设置登录密码、重置密码文本框 |
|
13 |
系统整体调试,性能优化 |
|
14 |
撰写实训报告 |
|
15 |
实训成果汇报以及实训报告验收 |
|
六、考核形式、考核时间、考核指标及成绩评定
完 成 期 限:____2018年5月11日_____ _
指导教师签章: ________
专业负责人签章:_________________ ______ _
教学院长签章:
2018 年 4 月 21 日
实训进度日历
实践环节 |
Android应用开发实训 |
|||||||
项目名称 |
基于Android系统的个人理财通软件设计与实现 |
|||||||
学年学期 |
2017-2018学年 第2学期 |
专业班级 |
软件工程(移动互联网)16-01、16-02 |
指导教师姓名 |
张玲 杨华 |
|||
天 |
上午/下午 |
实训任务详细描述 |
教师实训任务的指导(解决方案、实现步骤、技术路线、难点提示) |
通过标准 |
||||
1 |
上午 |
项目总体分析,可行性分析, |
根据实训指导材料,让学生先对项目有一个整体的了解,对项目的需求分析进行讲解。 |
需求分析详细正确; |
||||
下午 |
需求分析 |
分析出系统的功能需求,非功能性需求,画出系统的功能模块图 |
画出系统的功能模块图 |
|||||
2 |
上午 |
项目总体设计,功能模块划分 |
新建项目工程,了解系统整体架构 |
搭建项目工程 |
||||
下午 |
数据库设计实现 |
创建个人理财通系统数据库,创建各个数据库表 |
数据库创建成功 |
|||||
3 |
上午 |
公共类设计,数据模型公共类 |
创建数据模型公共类,操纵数据库表Tb_flag,Tb_inaccount Tb_outaccount Tb_pwd |
能够操纵数据库数据 |
||||
下午 |
公共类设计, Dao公共类 |
创建业务逻辑层,DBOpenHelper、FlagDAO、InaccountDAO、OutaccountDAO和PwdDAO |
业务逻辑层创建成功
|
|||||
4 |
上午 |
登陆模块设计 |
包含界面设计,业务逻辑编程 |
能够登陆系统 |
||||
下午 |
登陆模块设计 |
重置登陆信息,退出功能 |
能够重置、退出 |
|||||
5 |
上午 |
系统主窗体设计 |
包含系统主窗体布局文件、定义文本及图片组件、定义功能图标及说明文字、设置功能图标及说明文字、 |
主界面能够运行 |
||||
下午 |
系统主窗体设计 |
添加收入信息、设计收入信息浏览布局文件 |
个人收入界面显示成功 |
|||||
6 |
上午 |
收入管理模块设计与实现 |
设计新增收入布局文件、添加收入信息、 |
新增收入功能正常运行 |
||||
下午 |
收入管理模块设计与实现 |
设计收入信息浏览布局 文件单击指定项时打开详细信息 |
浏览收入功能正常运行 |
|||||
7 |
上午 |
收入管理模块设计与实现 |
设计修改收入布局文件、显示指定编号的收入信息、修改收入信息 |
修改收入功能正常运行 |
||||
下午 |
收入管理模块设计与实现 |
设计删除收入布局文件、删除收入信息 |
删除收入功能正常运行 |
|||||
8 |
上午 |
支出管理模块设计与实现, |
主要包含设计新增支出布局文件、添加支出信息 |
新增支出功能正常运行 |
||||
下午 |
支出管理模块设计与实现, |
设计支出信息浏览布局文件单击指定项时打开详细支出信息 |
浏览支出功能正常运行 |
|||||
9 |
上午 |
支出管理模块设计与实现, |
支出管理,、设计修改支出布局文件、显示指定编号的支出信息、修改支出信息 |
修改支出功能正常运行 |
||||
下午 |
支出管理模块设计与实现, |
支出管理,、设计删除支出布局文件、显示指定编号的支出信息、删除支出信息 |
删除支出功能正常运行 |
|||||
10 |
上午 |
便签管理模块设计与实现, |
主要包含设计新增便签布局文件、添加便签信息、 |
新增便签功能正常运行 |
||||
下午 |
便签管理模块设计与实现, |
设计便签信息浏览布局文件、显示所有的便签信息、 |
浏览便签功能正常运行 |
|||||
11 |
上午 |
便签管理模块设计与实现, |
便签管理,单击指定项时打开详细信息、 |
修改便签功能正常运行 |
||||
下午 |
便签管理模块设计与实现, |
设计修改/删除便签布局文件、显示指定编号的便签信息、修改便签信息、删除便签信息 |
删除便签功能正常运行 |
|||||
12 |
上午 |
系统设置模块设计, |
设计系统设置布局文件、设置登录密码、重置密码文本框 |
系统设置功能正常运行 |
||||
下午 |
系统整体调试,代码优化 |
调试Bug,各个模块连接 |
软件整体运行正常 |
|||||
13 |
上午 |
系统整体调试,代码优化 |
调试Bug,各个模块连接 |
软件整体运行正常 |
||||
下午 |
系统整体调试,代码优化 |
代码优化 |
软件整体运行正常 |
|||||
14 |
上午 |
撰写实训报告 |
按照要求撰写实训报告 |
实训报告内容丰富,格式正确 |
||||
下午 |
撰写实训报告 |
按照要求撰写实训报告 |
实训报告内容丰富,格式正确 |
|||||
15 |
上午 |
实训汇报 |
所有同学汇报实训成果 |
能够掌握AndroidApp开发流程,学会开发 |
||||
下午 |
实训成果验收 |
老师验收学生实训项目和报告 |
项目运行流畅,报告复合要求 |
|||||
制订教师: 张玲、杨华
目 录
1 需求分析.. 1
1.1 可行性分析.. 1
1.1.1 经济可行性分析... 1
1.1.2 技术可行性分析... 2
1.1.3 社会可行性分析... 2
1.2 用户功能需求分析.. 3
1.3 系统性能要求.. 4
1.3.1 即时性要求... 4
1.3.2 易用性要求... 4
1.3.3 响应速度要求... 5
2 数据库设计.. 6
2.1 数据库需求分析.. 6
2.2 数据表设计.. 6
3 系统实现.. 8
3.1 登录界面.. 8
3.2 主界面.. 9
3.3 收入管理模块设计.. 9
3.3.1 新增收入... 10
3.3.2 收入信息浏览... 10
3.3.3 修改/删除收入信息... 11
3.3.4 收入信息汇总图表... 12
3.4 支出管理模块设计.. 12
3.4.1 新增支出... 12
3.4.2 支出信息浏览... 13
3.4.3 修改/删除支出信息... 14
3.4.4 支出信息汇总图表... 15
3.5 便签管理模块设计.. 15
3.5.1 新增便签... 15
3.5.2 便签信息浏览... 16
3.5.3 修改/删除便签信息... 17
3.6 系统设置模块设计.. 18
4 实训总结.. 19
随着国民经济的日益增长,人们的收入也在逐年增加,个人可支配的财产也在增加,而且目前随着经济形式的多样化,人们收入与支出形式也出现多样化,并不仅仅是局限于传统的购物支出和工资收入这简单的形式,出现了越来越多的经济行为,像现在的股票、证券、信用卡、银行业务、个人福利、奖金、网上商店等的出现,面对这些复杂的经济行为,个人越来越难以管理和支配自己的财产,难免出现混乱。最后自己往往抱怨不知道钱花到什么地方。所以我们需要一个现代化工具来管理我们的个人的财产日常支出和收入,以合理管理支出行为,使经济效益最大化。与此同时,近年来基于Android系统来开发的便携式的智能手机以惊人的速度发展开来。智能手机拥有高速的运算能力、优秀的图形用户界面和高分辨率的屏幕,使人们从计算机中解放出来,能够随时随地的方便地处理各种电子资料并进行一些复杂的运算。因此,智能手机的应用软件将有广阔的发展前景。
个人理财通APP是一款简单实用的公共软件,主要运用Android平台、Java技术和SQLite数据库开发的一款个人理财应用软件,方便了人们日常生活中对自己收支信息的了解,能清楚的看到自己的收支状况,对自己的收支状况做一个调整,可以起到一个及时调节的作用。用户可以随时随地的管理自己的收支信息,让自己做出正确的财务决策。本软件主要包括以下几个模块:新增收入、新增支出、我的收入、我的支出、数据管理、收支便签以及密码设置。用户可以对支出和收入信息的记录、修改、删除、查询、统计进行操作以及用便签功能来记录将要支出和收入的信息,从而实现对个人的支出与收入进行有效并系统地管理。对自己在生活中的各类收支做一个详细的统计。
首先,本次设计是基于安卓系统的应用开发,安卓应用开发只需要一台性能不错的电脑,这对于大部分大学生来说都是拥有的,特别是软件工程、计算机专业,只要有了电脑,硬件条件就满足了。其次,只要在网上或是相关书籍上查找安卓平台开发环境搭建的相关资料,然后在电脑上搭建好开发环境,就具备了本次设计的基本条件,最后就是能有一个网络环境,虽然不是必须的,但是在有网络环境情况下,如果遇到困难就可以很方便的查阅资料来寻求解决的办法,而这个条件也是很容易满足的,不管在寝室还是在图书馆。由此可见,在经济上本次设计是可行的。
本次设计主要是在安卓平台上开发一个理财应用,将会涉及人机交互、数据库操作、客户端开发等。这些利用安卓平台以及安卓平台内嵌的SQLite数据库,运用Eclipse软件Java技术进行代码编写。
从自身技术而言,安卓开发需要有一定的Java技术基础、数据库技术基础、对安卓平台的了解、熟悉XML.作为软件专业的学生,在大学里学习过很多类似的基础知识:Java编程、MySQL数据库原理、Html5基础知识等相关基础知识,并且具有一定的自学能力,通过安卓开发书籍和网上查询相关的开发资料,是有能力开发出基于安卓系统的理财软件的。
由以上两点可以看出,基于安卓系统的个人理财软件在技术上也是可行的。
理财是现代社会每个人都必须掌握的基本生存能力之一。随着信息化时代的到来和现代生活节奏的加快,通过纸笔记账的传统理财方式早已远去,通过PC软件实施的信息化理财也曾兴起,但是通过PC软件进行理财,很难做到信息的实时记录。随着Android和iPhone等智能手机的普及,手机的功能早已不再局限于打电话发信息,由于具备天然的便携性,手机的功能和作用正在社交、游戏以及大量实用软件领域大量的替代PC。将个人理财通安装在手机中,用户就可以随时随地的进行记录,并可以进行统计和查看,这样就可以帮助用户真正实时的了解自己的财务状况。
因此,开发基于Android 系统的手机理财软件具有很大的实际价值和意义。所以,基于Android 系统的理财软件也具有社会可行性。
综上所述,本系统的开发目标明确,开发时机成熟,所以完全是可行的。
个人理财通APP是针对用户要求用手机对自己的财务的收入、支出以及相关的各种信息,进行记录、修改、添加、删除而设计的一种现代化管理软件,所以本软件需要具有以下功能:
(1)由于一项新的软件在被使用之前,对于使用者来说是陌生和崭新的,所以要求系统具有良好的人机交互性能。
(2)能够实现家庭理财软件的各项功能,能成功的对用户各种信息进行管理。
(3)查询、修改、删除、添加数据方便,数据的稳定性和可靠性好。
总的说来,要求本系统具有以下几个功能模块:新增支出、我的支出、新增收入、我的收入、便签、数据管理以及系统设置。个人理财通APP的功能结构如下图1-1所示。
图1-1 功能结构图
为了保证系统在长期使用过程中能保持高效、可靠、安全等。系统应该达到以下性能要求:
即时性是系统中十分重要的性能之一。在用户使用过程中,及时的处理数据及信息反馈对于用户体验至关重要。在系统开发设计时,要充分考虑数据和数据交换,使系统的数据处理能力和响应速度能够满足用户需求。从系统本身来讲,即时准确的处理用户操作是系统成功的标志之一。
系统的使用者并非专业人员,这就要求系统设计简单,操作直接。所以良好的界面十分重要。界面作为人机交互的窗口,能让用户对软件产生最直观的认识。界面甚至决定了用户对软件的选择。这就要求系统从整体到细节尽量使用用户熟悉的语言和命名信息。要提供足够的帮助解释信息,缩短用户的熟悉过程,并对可能出现的问题给予解决。
系统中冗余数据和重复性处理是影响响应速度的最大因素。优秀的数据库设计,各个表结构的最大优化,可以大大提高系统响应速度。系统要做到及时处理,保证用户的使用效率。
在涉及数据库的软件开发时,对数据库的详细设计是软件开发过程中重中之重,完善的数据库设计是后期开发的必要基础。
本项目需要从数据库中查询信息,许多模块功能的实现都需要和数据库进行交互。用户权限的实现以及页面上各个功能图标的显示是查询数据库动态生成的,并且鉴于系统数据交互的复杂性,一个良好的数据库设计就成为我们必须关注的问题。
本系统是一个关于个人理财信息的管理系统,主要包括收入、支出的管理。所以,所设计数据库表的时候设计了收入表、密码表、便签信息、支出表用来存储对应的信息。其中收入表如表2-1所示。密码表如表2-2所示。便签信息如表2-3所示。支出表如表2-4所示。
表2-1 收入表
备注: |
编号 |
钱数 |
时间 |
类别 |
付款方 |
备注 |
tb_inaccount |
_id |
money |
time |
type |
handler |
mark |
表2-2 密码表
备注: |
用户名 |
密码 |
tb_info |
name |
pwd |
表2-3 便签信息
备注 |
编号 |
便签 |
tb_flag |
_id |
flag |
表2-4 支出表
备注: |
编号 |
钱数 |
时间 |
类别 |
地址 |
备注 |
tb_outaccount |
_id |
money |
time |
type |
address |
mark |
本系统一共有13个界面,包括登录界面、主界面、新增收入界面、新增支出、我的收入界面、我的支出界面、收支信息界面、新增便签界面、修改收入界面、修改支出界面、修改便签界面、设置界面、帮助界面等。
登录界面设计布局采用相对布局(Relative Layout)其中包括两个Text View和两个Edit Text以及三个Button按钮。
用户通过登录界面可以输入账号和密码进入主界面,用户如果没有账号、密码,可以通过点击注册按钮进行简单注册以便登录主页面。同时本系统附带首次游客登录功能即使用者可以不输入账号和密码即可登录。不过仅适用于首次未设置密码的用户。登录界面如图3-1所示。
图3-1 登录页面
主界面在布局文件中设置为相对布局并在其中添加Grid View控件并将其内部设置为3*3格式,同时在Java文件中为Grid View创建对象插入数组进行相应的文本和对应文本的图标=显示。
用户通过登录界面的进入主界面,可跳转至新增收入、新增支出、查看我的收入或者查看我的支出等界面。主界面设计如图3-2所示。
图3-2 主界面设计图
收入管理模块主要包括4个部分分别是“新增收入”、“收入信息浏览”、“修改/删除收入信息”和“收入信息汇总图表”,其中,“新增收入”用来添加收入信息,“收入信息浏览”用来显示所有收入信息,“修改/删除收入信息”用来根据编号修改或者删除收入信息,“收入信息汇总”用来统计收入信息以图表的形式显示。
新增收入界面布局文件使用LinearLayout结合RelativeLayout进行布局,其中包括5个Text View组件、4个Edit Text组件、1个Spinner和2个Button组件。
用户进入新增收入界面主要用来添加收入信息,可以设置收入的金额、时间、收入类别、付款方和备注等。新增收入界面设计如图3-3所示。
图3-3 新增收入
收入信息浏览布局文件主要使用LinearLayout结合RelativeLayout进行布局,其中在布局中添加一个Text View组件和一个List View组件。“收入信息浏览”用来显示所有收入信息。我的收入设计界面如图3-4所示。
图3-4 我的收入界面
修改/删除收入布局文件使用LinearLayout结合RelativeLayout进行布局,在该布局中添加5个Text View组件、4个Edit Text组件、1个Spinner和2个Button组件。“修改/删除收入信息”用来根据编号修改或者删除收入信息,修改/删除收入信息如图3-5所示。
图3-5 修改/删除收入信息
在系统主窗体中,选择“数据管理”进入到数据管理页面,在该页面中点击“我的收入”按钮,将显示收入统计图表。其中绘图布局文件包括一个帧布局管理器,用于显示自定义的绘图类。收入信息汇总图表如图3-6所示。
图3-6 收入信息汇总图表
支出管理模块主要包括4个部分分别是“新增支出”、“支出信息浏览”、“修改/删除支出信息”和“支出信息汇总图表”,其中,“新增支出”用来添加收入信息,“支出信息浏览”用来显示所有支出信息,“修改/删除支出信息”用来根据编号修改或者删除支出信息,“支出信息汇总”用来统计支出信息以图表的形式显示。
新增支出界面布局文件使用LinearLayout结合RelativeLayout进行布局,其中包括5个Text View组件、4个Edit Text组件、1个Spinner和2个Button组件。
用户进入新增支出界面,该界面主要用来添加支出信息,可以设置支出的金额、时间、支出类别、支出地址和备注等。新增支出设计界面如图3-7所示。
图3-7 新增支出设计界面
支出信息浏览布局文件主要使用LinearLayout结合RelativeLayout进行布局,其中在布局中添加一个Text View组件和一个List View组件。“支出信息浏览”用来显示所有支出信息。支出信息浏览如图3-8所示。
图3-8 支出信息浏览
修改/删除支出布局文件使用LinearLayout结合RelativeLayout进行布局,在该布局中添加5个Text View组件、4个Edit Text组件、1个Spinner和2个Button组件。“修改/删除支出信息”用来根据编号修改或者删除支出信息,修改/删除支出信息如图3-9所示。
图3-9修改/删除支出信息
在系统主窗体中,选择“数据管理”进入到数据管理页面,在该页面中点击“我的支出”按钮,将显示支出统计图表。其中绘图布局文件包括一个帧布局管理器,用于显示自定义的绘图类。支出信息汇总图表如图3-10所示。
图3-10 支出信息汇总图表
便签管理模块主要包括3部分,分别是“新增便签”,“便签信息浏览”和“修改/删除便签信息”,其中“新增便签”用来添加便签信息,“便签信息浏览”用来显示所有的便签信息,“修改/删除便签信息”用来根据编号修改删除便签信息。
新增便签布局文件使用LinearLayout结合RelativeLayout进行布局,在该布局文件中添加2个TextView组件、1个EditText组件和2个Button组件。“新增便签”用来添加便签信息,新增便签如图3-11所示。
图3-11 新增便签
信息浏览布局文件可以调用支出/收入汇总表和显示便签信息。使用LinearLayout结合RelativeLayout进行布局,给布局包括3个Button和1个ListView组件,“便签信息浏览”用来显示所有的便签信息,便签信息浏览如图3-12所示。
图3-12 便签信息浏览
修改/删除便签信息窗体的布局文件使用LinearLayout和RelativeLayout进行布局,该布局包含2个TextView组件、1个EditText组件和2个Button按钮。“修改/删除便签信息”用来根据编号修改删除便签信息,修改/删除便签信息如图3-13所示。
图3-13 修改/删除便签信息
系统设置模块界面布局主要运用相对布局(RelativeLayout)进行布局排布,其中包含5个TextView、5个EditText和1个Button组件。系统设置模块主要对个人理财通的登录密码进行设置。系统设置如图3-14所示。
图3-14 系统设置
通过这次禹州实训,我明白了做好一件事总不是那么容易的,但是能够独自完成Android的基础操作,这将是我进入程序员世界第一步。首先,创建项目必须要拥有项目的设计方案,不能盲目、一味地敲代码,按照课本照搬照抄。其次,创建Android数据库时,不能按照自己意愿进行设计数据库、数据表,简而言之命名方式让其他人看得懂的前提下进行自我意愿设置。接着就是设计Android布局,众所周知,布局就那么几个比如:LinearLayout、RelativeLayout和GridLayout等,然而有的人可以通过这些简单的布局进行设计各种各样的样式,当然这些与创新思维是不可能从课本得到的。最后就是activity文件部分,相比布局而言,这个Java文件更加复杂,就此而言这些Java文件无非就是链接布局文件,或者引用布局中的组件并对其进行监听,Java文件连接Java文件的时候就涉及了跳转,最简单的跳转方式是Intent,至于使用显示还是隐式就凭个人喜好了。在编程的海洋里,最令人欢喜令人忧的就是Bug了。令人忧的是这家伙不管你是程序小白还是自身码农,它总是必不可少的,并且无处不在,有时会突然地出现你意想不到的地方,让你没有一点点的防备,让你疲惫于寻找它的身影。但大部分时间当你找到它,总会哑然失笑,因为它总是出现在你意料之外,但又在情理之中的地方。在Bug的寻找过程中是繁琐而又乏味的,但是如果能够完全明白代码,了解它要表达的意思,解决问题就是很随意。令人欢喜的就是能够发现Bug、解决掉Bug,最终完成此次实训的说有内容就是程序小白提升的开始。