《移动应用开发》课程设计报告书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《移动应用开发》课程设计报告
{
学院名称:计算机与信息工程学院
班级名称:计科对口14
学生:胡闻璐
学号: 19
题目:基于《个人理财通》的计算器
任课教师
#
姓名:东良
起止日期:2017年04月18日至04月30日
目录
《移动应用开发》课程设计报告 (1)
*
摘要 (3)
1 项目需求分析 (3)
需求分析 (3)
功能需求 (3)
2系统总体设计 (5)
系统架构设计 (5)
系统功能体系 (5)
3系统详细设计 (6)
》
数据库设计 (6)
系统界面设计 (7)
数据存储设计 (13)
信息统计设计 (13)
地图轨迹设计 (13)
服务应用设计 (14)
4系统编码实现 (14)
框架引用 (14)
~
交互实现 (14)
单元测试 (17)
5 系统测试发布 (18)
手机环境的实测 (18)
APP的发布实测 (18)
参考文献 (19)
成绩评定 (20)
<
摘要
随着移动终端的迅速普及,Android系统平台引用软件的需求随之增大。
伴随着Android 智能手机与平板电脑已经出现在我们生活的大量的使用,越来越多的基于Android开发平台也随之而出,为丰富人们使用Android智能产品的用途,使其可以帮人们记录一些事情。
本设计开发通过研究Android体系结构和个人理财管理方面的知识,设计并实现了个人理财通系统。
能够对理财信息进行获取、汇总、整理、计算等功能,从而实现随身随时随地地进行日常的理财活动。
1 项目需求分析
需求分析
物质和科技的飞速发展,人们的生活水平也不断的在提高,往往有很多人在快节奏的生活中迷失和迷茫,很多人觉得自己没钱,但每个月的工资也不是很低,却往往不知道钱花在哪,为什么每到月底自己的钱包会空空如也,正因为这样,人们才需要一款个人理财软件,简单的界面,易懂的操作,十分便携直观的理财方式,可以让人们更好的进行个人理财。
以下是本软件的一些功能:
①登录界面:初始登陆时没有密码,为了方便用户保护隐私,可以自行设置密码
②新增支出:添加支出金额、时间、类别和地点等信息
③新增收入:添加收入金额、时间、类别和付款方等信息
④数据管理:支出汇总,收入汇总,便签信息
⑤便签功能:添加便签,设置提醒或事项
⑥计算器:对数据进行计算,方便记录,长按结果可直接复制
⑦移动课堂:泛雅平台中的安卓课程访问
⑧帮助:对个人理财通各个功能部件的使用介绍
⑨退出:退出该系统
功能需求
目前国外理财软件已有上百种之多,如美国的直觉公司QUICKEN软件为美国13个州及加拿大的客户提供金融管理和预算等财务问题。
国在财务管理方面做的比较突出的当属金蝶公司。
然而,在手机理财软件方面做的很突出的还没有,本软件是针对个人用户的一款Android 软件,主要对个人理财收入、支出做一个记录和统计,可以对用户的收入、支出记录做添加、删除、查询和修改的管理,本软件该具备以下功能:
①功能操作要方便、易懂、,不要有多余或复杂的操作。
②对用户收入支出信息做添加、删除、查询和修改。
③系统的功能复合本人的实际情况。
④界面直观简洁,方便用户更好的使用。
⑤保证软件的安全性。
2系统总体设计
系统架构设计
图2-1 系统架构图
系统功能体系
系统总体功能主要包括系统各功能模块的详细划分和定义,以及各子功能模
块具体实现细节,通过详细划分和定义细节可以将系统各功能进行有效区分,防止功能重叠,功能冗余等现象,系统总体功能分析如表2-2所示.
3系统详细设计
数据库设计
(1)数据类型简要规则
程序中需要定义常量,变量,这些需要指定的类型。
下面介绍常见的数据库类型,如表3-1
表3-1 数据类型简要规则
(2)组件命名规则
所有的组件对象名称的拼音简写,如果发现冲突可采用不同的简写规则。
组件命名如表
表3-2 组件命名规则
个人理财通是一款运行在Android系统上的程序,在Android系统中,集成了一种轻量型的数据库,即SQLite,该数据库是使用C语言编写的开源嵌入式数据库,支持的数据库大小为2TB,使用该数据库,用户可以像使用SQL Server数据库或者Oracle数据库那样来存储、管理和维护数据,本系统采用了SQLite数据库,并且命名为,,该数据库中用到了4个数据表,分别是tb_flag、tb_inaccount、tb_outaccount和tb_pwd。
系统界面设计
1启动界面:清新简洁的启动界面,标识着个人理财通和开发者微博,提升整体软件美观程度,如图3-1所示。
图3-1
2.用户登录:首次登录不需要密码,进去后可在系统设置里设置密码。
由于本软件属于个人客户端,通常情况下只有本人使用,所以没有用户名,直接进入密码输入环节,便于保护用户隐私,如图3-2所示。
图3-2
3.用户登入后进入软件的主界面,主界面包括软件的所有功能图标,用户可根据需要使用,如图3-3所示。
图3-3
4.计算器:基本的加减乘除,可以方便用户对金额进行计算,从而方便记录,在本计算机中计算的结果,可以长按结果进行复制,从而到收入支出页面进行快捷的粘贴,如图3-4、3-5所示。
图3-4 图3-5
5.新增支出:此模块的功能是添加用户的新增支出。
同样新增支出可以选择金额、时间、类别、地点和备注。
类别可以选择餐费、应酬、礼金、车费以及其他,长按金额后面的填写框可以快捷复制计算器的计算结果,如图3-6、3-7所示。
图3-6 图3-7
6.新增收入:此模块的功能是添加用户新增的收入。
在平时理财的过程中,添加收入记录是很频繁操作,所以此模块为用户提供了一个非常实用而且便捷的操作过程。
在这个模块中,用户可以添加收入信息记录的容包括:金额、时间、类别、付款方以及备注。
为了用户能够方便的查看收入记录,故将收入类别进行了分类,具体分为五类,分别为工资、兼职、分红、奖金、其他,长按金额后面的填写框可以快捷复制计算器的计算结果,如图3-8、3-9所示。
图3-8 图3-9
7.我的支出、我的收入:当在新增收入模块进行了添加操作后,添加的收入记录就会显示在
模块中。
在这两个界面中可以清楚的看到所有的记录,如图3-10、3-11所示。
图3-10 图3-11
8.数据管理:对于家庭理财系统来说,数据管理功能是非常重要的一个功能,它主要是管理支出、收入以及便签的记录信息,如图3-12所示。
图3-12
9.系统设置:让用户来设置密码。
密码设置成功后,用户再次登录时就需要所设置的密码,
图3-13
10.新增便签,主要实现添加便签记录。
便签模块可以记录将要进行的收入或支出信息,也就是相当于备忘录的功能,如图3-14所示。
图3-14
11.移动课堂:泛雅平台的移动应用开发学习界面,用户可以在这里学习安卓有关知识,如
图3-15
12.帮助:《个人理财通》使用帮助,用于解决在系统中遇到的问题,如图3-16所示。
图3-16
13.退出:用户点击退出图标后回到登录界面。
数据存储设计
class DBOpenHelper extends SQLiteOpenHelper {
private static final int VERSION = 1; = how();
break;
}
}
/* ============================= */
/* private 私有方法 */
/* =========================== */
private void fillview(GridLayout gl) {
Button buttontemp;
params;
for (int i = 0; i < (); i++) {
buttontemp = (Button) (i);
params = (LayoutParams) ();
= () / ())
- - ;
(params);
}
}
oString().equals("")) {
, "結果為空",
.show();
return;
}
}
});
}
private void printDebugInfo(String str) {
if (isDebug) {
("TAG", "Debug: " + str);
}
}
oString().equals("0")) {
oString().equals("0")) {
("0");规则同样适用于其他数字按钮
oString().equals("0")) {
("0");
}
}
oString());
} else {
buttonClear();oString().equals("0")) {
("0");
}
}
钮的功能
;
} else if ().toString().equals("0")) {
appendTextView(".");
isTextViewInputted = true;
}
}
oString();
ontains(".")) {
isInteger = false;
}
arrFlaotNumber[i] = (arr[i]);
if (0 == i && isFisrtWeiFu) {
arrFlaotNumber[i] = -arrFlaotNumber[i];
}
}
if (isInteger) {
ontains(".")) {
isInteger = false;
}
arrFlaotNumber[i] = (arr[i]);
if (0 == i && isFisrtWeiFu) {
arrFlaotNumber[i] = -arrFlaotNumber[i];
}
}
if (isInteger) {
ontains(".")) {
isInteger = false;
}
arrFlaotNumber[i] = (arr[i]);
if (0 == i && isFisrtWeiFu) {
arrFlaotNumber[i] = -arrFlaotNumber[i];
}
}
if (isInteger) {
ontains(".")) {
isInteger = false;
}
arrFlaotNumber[i] = (arr[i]);
if (0 == i && isFisrtWeiFu) {
arrFlaotNumber[i] = -arrFlaotNumber[i];
}
}
if (isInteger) {
etSupportZoom(true);
().setBuiltInZoomControls(true);
("./course/.html");
apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:orientation="vertical">
<TextView
android:id="+id/calculate_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="#ffffff"
android:gravity="right"
android:paddingRight="2dp"
android:text="0"
android:textColor="#6699ff"
android:textIsSelectable="true"
android:textSize="40sp"/>
<Space
android:layout_width="1dp"
android:layout_height="0dp"
android:layout_weight="1"/>
<GridLayout
android:id="+id/gridlayout_c"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:columnCount="4"
android:rowCount="5">
<!-- 第 0排 C、DEL 、÷、 X -->
<Button
android:layout_row="0"
android:onClick="onClick"
android:text="C"
android:textSize="25dp"/> <Button
android:id="+id/btn_del"
android:layout_column="1"
android:layout_row="0"
android:onClick="onClick"
android:text="DEL"
android:textSize="25dp"/> <Button
android:id="+id/btn_chu"
android:layout_column="2"
android:layout_row="0"
android:onClick="onClick"
android:text="÷"
android:textSize="25dp"/> <Button
android:id="+id/btn_cheng"
android:layout_column="3"
android:layout_row="0"
android:onClick="onClick"
android:text="*"
android:textSize="25dp"/> <!-- 第 1排 7、8 、9, -, --> <Button
android:id="+id/btn_7"
android:layout_column="0"
android:layout_row="1"
android:onClick="onClick"
android:text="7"
android:textSize="25dp"/> <Button
android:id="+id/btn_8"
android:layout_column="1"
android:layout_row="1"
android:onClick="onClick"
android:text="8"
android:textSize="25dp"/> <Button
android:id="+id/btn_9"
android:layout_column="2"
android:layout_row="1"
android:onClick="onClick"
android:text="9"
android:textSize="25dp"/> <Button
android:id="+id/btn_jian"
android:layout_column="3"
android:layout_row="1"
android:onClick="onClick"
android:text="-"
android:textSize="25dp"/> <!-- 第 2排 4、5 、6, +, --> <Button
android:id="+id/btn_4"
android:layout_column="0"
android:layout_row="2"
android:onClick="onClick"
android:text="4"
android:textSize="25dp"/> <Button
android:id="+id/btn_5"
android:layout_column="1"
android:layout_row="2"
android:onClick="onClick"
<Button
android:id="+id/btn_6"
android:layout_column="2"
android:layout_row="2"
android:onClick="onClick"
android:text="6"
android:textSize="25dp"/>
<Button
android:id="+id/btn_jia"
android:layout_column="3"
android:layout_row="2"
android:onClick="onClick"
android:text="+"
android:textSize="25dp"/>
<!-- 第 3排 1、2 、3, =, -->
<Button
android:id="+id/btn_1"
android:layout_column="0"
android:layout_row="3"
android:onClick="onClick"
android:text="1"
android:textSize="25dp"/>
<Button
android:id="+id/btn_2"
android:layout_column="1"
android:layout_row="3"
android:onClick="onClick"
android:text="2"
android:textSize="25dp"/>
<Button
android:id="+id/btn_3"
android:layout_column="2"
android:layout_row="3"
android:onClick="onClick"
android:text="3"
android:textSize="25dp"/>
<Button
android:id="+id/btn_dengyu"
android:layout_column="3"
android:layout_gravity="fill_vertical"
android:layout_row="3"
android:layout_rowSpan="2"
android:onClick="onClick"
android:text="="
android:textSize="25dp"/>
<!-- 第 4排 0、. 、 =, -->
<Button
android:id="+id/btn_0"
android:layout_column="0"
android:layout_columnSpan="2"
android:layout_gravity="fill_horizontal"
android:layout_row="4"
android:onClick="onClick"
android:text="0"
android:textSize="25dp"/>
<Button
android:id="+id/btn_dian"
android:layout_column="2"
android:layout_row="4"
android:onClick="onClick"
android:text="."
android:textSize="25dp"/>
</GridLayout>
<Button
android:id="+id/fz"
style="android:attr/buttonStyleSmall"
android:layout_width="265dp"
android:layout_height="wrap_content"
android:onClick="onClickCopy"
android:text="长按结果进行复制"
android:textSize="25dp"/>
<Space
android:layout_width="1dp"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
单元测试
设备检测:美图,华为
API检测:没有问题
功能测试:每个功能都能实现,达到预期目标
5 系统测试发布
手机环境的实测
图5-1 图5-2
APP的发布实测
1. JDK or JDK (JRE alone is not sufficient)
2. Eclipse
3. Android SDK
4.
5. Eclipse安装ADT 插件
参考文献
[1]吴亚峰等编著,Android核心技术与实例详解[M],人民邮电,2010年10月
[2]兴华,Google Android SDK开发例大全[M],人民邮电,2010年6月
[3] 汪永松,Android平台开发之旅,机械工业,2010年8月
[4]郭宏志,Android应用开发详解[M],电子工业,2010年1月
[5]邓凡平,深入理解Android,机械工业 2010年8月
成绩评定
课程设计基本要求
评定课程成绩
考勤成绩:
实验成绩:
课程设计成绩:
课程成绩:考勤成绩*20%+实验成绩*20%+课程设计成绩*60%
任课老师签字:评定时间:2017年04月日<。