第167页
15.4.1 数据库分析
家庭理财通是一款运行在Android系统上的程序,在Android系统中,集成了一种轻量型的数据库,即SQLite,该数据库是使用C语言编写的开源嵌入式数据库,支持的数据库大小为2TB,使用该数据库,可以像使用SQL Server数据库或者Oracle数据库那样来存储、管理和维护数据。本系统采用了SQLite数据库,并且命名为account.db,该数据库中用到了4个数据表,分别是tb_flag、tb_inaccount、tb_outaccount和tb_pwd,如图15.3所示。
图15.3 家庭理财通系统中用到的数据表
15.4.2 创建数据库
家庭理财通系统在创建数据库时,是通过使用SQLiteOpenHelper类的构造函数来实现的,实现代码如下:
private static final int VERSION = 1; //定义数据库版本号
private static final String DBNAME = "account.db"; //定义数据库名
public DBOpenHelper(Context context) //定义构造函数
{
super(context, DBNAME, null, VERSION); //重写基类的构造函数,以创建数据库
}
技巧: 创建数据库时,也可以在cmd命令窗口中使用sqlite3命令打开SQLite数据库,然后使用create database语句创建,但这里需要注意的是,在cmd命令窗口中操作SQLite数据库时,SQL语句最后需要加分号“;”。
15.4.3 创建数据表
在创建数据表前,首先要根据项目实际要求规划相关的数据表结构,然后在数据库中创建相应的数据表。
(1)tb_pwd(密码信息表)
tb_pwd表用于保存家庭理财通系统的密码信息,该表的结构如表15.8所示。
表15.8 密码信息表
字段名 数据类型 是否主键 描 述
password varchar(20) 否 用户密码
(2)tb_outaccount(支出信息表)
tb_outaccount表用于保存用户的支出信息,该表的结构如表15.9所示。
表15.9 支出信息表
字段名 数据类型 是否主键 描 述
_id integer 是 编号
money decimal 否 支出金额
time varchar(10) 否 支出时间
type varchar(10) 否 支出类别
address varchar(100) 否 支出地点
mark varchar(200) 否 备注
(3)tb_inaccount(收入信息表)
tb_inaccount表用于保存用户的收入信息,该表的结构如表15.10所示。
表15.10 收入信息表
字段名 数据类型 是否主键 描 述
_id integer 是 编号
money decimal 否 收入金额
time varchar(10) 否 收入时间
type varchar(10) 否 收入类别
handler varchar(100) 否 付款方
mark varchar(200) 否 备注
(4)tb_flag(便签信息表)
tb_flag表用于保存家庭理财通系统的便签信息,该表的结构如表15.11所示。
表15.11 便签信息表
字段名 数据类型 是否主键 描 述
_id integer 是 编号
flag varchar(200) 否 便签内容
15.5 创建项目
教学录像:光盘\TM\lx\15\创建项目.exe
家庭理财通系统的项目名称为AccountMS,该项目是使用Eclipse+Android 4.0开发的,在Eclipse开发环境中创建该项目的步骤如下:
(1)启动Eclipse,单击工具栏中的按钮,或者在菜单栏中依次选择“文件”/“新建”/Android Project命令,如图15.4所示。如果“新建”菜单中没有Android Project子菜单,则选择“新建”/“其他”命令,在弹出的“新建”窗口中展开Android节点,选择Android Project节点,如图15.5所示,然后单击“下一步”按钮。
图15.4 选择菜单命令 图15.5 “新建”窗口
(2)弹出New Android Project窗口,在该窗口中,首先输入项目名称AccountMS,并选择项目存放路径,如图15.6所示,然后单击“下一步”按钮,进入Select Build Target界面,从中选择Android版本,如图15.7所示。
图15.6 输入项目名称和存放路径 图15.7 选择Android版本
(3)单击“下一步”按钮,进入Application Info界面,在Package Name文本框中输入包名,这里输入com.xiaoke.accountsoft.activity,其他采用默认设置,如图15.8所示。
图15.8 Application Info界面
(4)单击“完成”按钮,这样即可创建AccountMS项目。
15.6 系统文件夹组织结构
教学录像:光盘\TM\lx\15\系统文件夹组织结构.exe
在编写项目代码之前,需要制定好项目的系统文件夹组织结构,如不同的Java包存放不同的窗体、公共类、数据模型、工具类或者图片资源等,这样不但可以保证团队开发的一致性,也可以规范系统的整体架构。创建完系统中可能用到的文件夹或者Java包之后,在开发时,只需将创建的类文件或者资源文件保存到相应的文件夹中即可。家庭理财通系统的文件夹组织结构如图15.9所示。
图15.9 文件夹组织结构
说明: 从图15.9可以看出,res和assets文件夹都用来存放资源文件,但在实际开发时,Android不为assets文件夹下的资源文件生成ID,用户需要通过AssetManager类以文件路径和文件名的方式来访问assets文件夹中的文件。
15.7 公共类设计
教学录像:光盘\TM\lx\15\公共类设计.exe
公共类是代码重用的一种形式,它将各个功能模块经常调用的方法提取到公用的Java类中,例如,访问数据库的Dao类容纳了所有访问数据库的方法,并同时管理着数据库的连接、关闭等内容。使用公共类,不但实现了项目代码的重用,还提供了程序性能和代码的可读性。本节将介绍家庭理财通系统中的公共类设计。
15.7.1 数据模型公共类
在com.xiaoke.accountsoft.model包中存放的是数据模型公共类,它们对应着数据库中不同的数据表,这些模型将被访问数据库的Dao类和程序中各个模块甚至各个组件所使用。数据模型是对数据表中所有字段的封装,主要用于存储数据,并通过相应的getXXX()和setXXX()方法实现不同属性的访问原则。现在以收入信息表为例,介绍它所对应的数据模型类的实现代码,主要代码如下:
package com.xiaoke.accountsoft.model;