Android移动平台的客户关系管理系统.docx

上传人:b****7 文档编号:8588175 上传时间:2023-01-31 格式:DOCX 页数:39 大小:382.73KB
下载 相关 举报
Android移动平台的客户关系管理系统.docx_第1页
第1页 / 共39页
Android移动平台的客户关系管理系统.docx_第2页
第2页 / 共39页
Android移动平台的客户关系管理系统.docx_第3页
第3页 / 共39页
Android移动平台的客户关系管理系统.docx_第4页
第4页 / 共39页
Android移动平台的客户关系管理系统.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

Android移动平台的客户关系管理系统.docx

《Android移动平台的客户关系管理系统.docx》由会员分享,可在线阅读,更多相关《Android移动平台的客户关系管理系统.docx(39页珍藏版)》请在冰豆网上搜索。

Android移动平台的客户关系管理系统.docx

Android移动平台的客户关系管理系统

 

Android实训项目教程

 

第1章基于Android移动平台的客户关系管理系统

本章重点

&Android布局

&Activity与Activity之间的跳转

&ListView控件和CursorAdapter使用

&Android对话框

&SQLite数据库

&ContentProvider使用

1.1实训目的

通过这个项目的学习,使学员掌握Android平台中的ListView、Activity、Activity的跳转、Button、TextView、EditView、Adatper和Dialog等有关UI技术,熟悉嵌入式数据库SQLite、以及Android的数据持久化技术SQLiteOpenHelper和ContentProvider等技术,并能掌握adb等Android调试工具的使用。

此外,通过完成一个完整的项目使学员了解软件开发周期过程、UML常用元素的含义,更能够增强学员的团队合作精神,培养学员的沟通能力,学会自我管理。

1.2项目任务概述

1.2.1项目背景

随着移动设备处理能力的增强,用户手机中存放客户信息已是可能,3G版CRM(客户关系管理)能够在手机中存放客户信息,使用方便,节省时间,保密性强,携带方便。

我们可以在任何时间地点查找客户信息,做到随时掌握客户信息。

1.2.2项目任务

本项目实现在Android移动设备上管理客户信息。

由于是移动设备,所以使用起来方便快捷,可以随时随地的查找客户,查看相应的客户信息,也可以随时随地的添加客户信息,并对客户信息进行修改。

客户信息存放在手机内的SQLite嵌入式数据库内。

1.3需求分析

用户可以使用该系统实现客户信息的查询,增加,修改和删除,客户信息查看。

1.3.1总体用例图

图1

1.3.2客户信息查询用例图

图2

1.3.3客户信息查询业务流程

图3

用户通过点击桌面CRM图标进入客户关系管理系统,进入系统需要查询所有客户信息列表。

查询功能是在这个列表页面点击“查询”菜单进入的,弹出条件输入对话框,在这个对话框中我们可以输入“客户名称”、“联系人”和“电话”进行查询,这三个条件都是进行的模糊查询,并且是“与”关系。

点击对话框“确定”则进行查询,并将查询的结果显示在列表页面,如果没有符合条件的数据则显示原来书籍列表信息。

点击对话框“取消”则不进行查询,并保留原来的客户信息在列表页面中。

1.3.4客户信息添加用例图

图4

1.3.5客户信息添加业务流程

图5

用户通过点击桌面CRM图标进入客户关系管理系统,进入系统需要查询所有客户信息列表。

添加功能是在这个列表页面点击“添加”菜单进入的,页面跳转到客户信息添加页面,在这个添加页面中我们可以输入“客户名称”、“联系人”、“电话”、“E-mail”、“传真”和“地址”信息,输入完成后点击“确定”按钮,可以将客户信息插入到数据库中,返回到列表页面,并将查询的结果显示在列表页面。

如果点击“取消”按钮返回到列表页面。

1.3.6客户信息删除用例图

图6

1.3.7客户信息删除业务流程

图7

用户通过点击桌面CRM图标进入客户关系管理系统,进入系统需要查询所有客户信息列表。

删除功能是在这个列表页面中,选择XX客户信息长按事件,弹出一个“修改”和“删除”操作选择对话框。

选择“删除”选项,删除数据库中的客户信息,返回列表页面并进行查询。

1.3.8客户信息修改用例图

图8

1.3.9客户信息修改业务流程

图9

用户通过点击桌面CRM图标进入客户关系管理系统,进入系统需要查询所有客户信息列表。

修改功能是在这个列表页面中,选择XX客户信息长按事件,弹出一个“修改”和“删除”操作选择对话框。

选择“修改”选项,修改数据库中的客户信息,返回列表页面并进行查询。

1.3.10客户信息查看用例图

图10

1.3.11客户信息查看业务流程

图11

用户通过点击桌面CRM图标进入客户关系管理系统,进入系统需要查询所有客户信息列表。

阅读功能是在这个列表页面中,选择XX客户信息短按事件,弹出一个客户信息查看对话框。

点击“关闭”按钮关闭对话框,返回列表页面。

 

1.4系统设计

1.4.1客户信息查询UI——列表页面示意图

图12图13

1.4.2客户信息查询UI——列表页面项目说明

1.ListView控件:

每个ListView项中包含三个TextView控件,即“客户名称”、“联系人”和“电话”,“客户名称”控件字体大小20dip、“联系人”控件字体大小15dip和“电话”控件字体大小15dip。

2.Menu控件:

有两个菜单项,即“查询”和“添加”。

1.4.3客户信息查询UI——查询对话框示意图

图14

1.4.4客户信息查询UI——查询对话框项目说明

1.Dailog控件:

用户点击“查询”菜单则弹出“查询”对话框,包括:

“客户名称”TextView、“客户名称”EditView、“联系人”TextView、“联系人”EditView控件、“电话”TextView、“电话”EditView控件,“确定”按钮和“取消”按钮。

1.4.5客户信息查询类图

图15

列表页面Activity(CRMListActivity)需要继承,并重写onCreate、onCreateOptionsMenu和onOptionsItemSelected。

ØonCreate方法是列表页面的初始化方法,在这个方法中我们要初始化页面中用到的ListView等控件信息。

ØonCreateOptionsMenu方法是列表页面中初始化菜单信息。

ØonOptionsItemSelected方法是列表页面中处理菜单点击事件。

ØfindAll方法是查询所有客户信息方法,该方法为私有方法。

ØfindByInfo方法是按照条件查询符合条件有客户信息方法,参数是clientname(客户名称)、linkman(联系人)和phone(电话)都是String类型,该方法为私有方法。

图16

图的类图反映的是数据持久化部分的类图,事实上这部分类在客户信息删除、修改和添加等模块也都使用,在其它模块介绍中就不再介绍这些类了。

DBHelper类是数据库帮助类继承SQLiteOpenHelper类,在这个类中我们可以创建数据库中的表,当数据库版本变化的时候,可以删除旧版本的表再建立新版本的表。

ØDBHelper方法是一个构造方法。

ØonCreate方法是数据库的初始化方法,在这个方法中我们要初始化数据库中用到的表。

ØonUpgrade方法是数据库的更新方法,在这个方法中我们要比较数据库版本是否变化,如果数据库版本变化了则删除数据库中的表,再重建表。

DataProvider类是数据库操作类继承ContentProvider,在这个类中我们可以对数据库中的表实现CRUD(增加、查询、更新和删除)操作。

ØonCreate方法是数据库操作类的初始化方法,在这个方法中我们要DBHelper类,以备在CRUD操作中使用。

ØgetType返回ContentProvider的数据类型。

Øinsert插入数据方法。

Ødelete删除数据方法。

Øquery查询数据方法。

Øupdate更新数据方法。

1.4.6客户信息添加UI——添加页面示意图

图17图18

 

1.4.7客户信息添加UI——添加页面项目说明

1.“客户名称”TextView控件,默认字体大小。

2.“客户名称”EditView控件,默认字体大小。

3.“联系人”TextView控件,默认字体大小和样式。

4.“联系人”EditView控件,默认字体大小和样式。

5.“电话”TextView控件,默认字体大小和样式。

6.“电话”EditView控件,默认字体大小和样式。

7.“E-mail”TextView控件,默认字体大小。

8.“E-mail”EditView控件,默认字体大小。

9.“地址”TextView控件,默认字体大小和样式。

10.“地址”EditView控件,默认字体大小和样式。

11.“确定”按钮,默认字体大小和样式。

12.“取消”按钮,默认字体大小和样式。

1.4.8客户信息添加类图

图19

添加页面Activity(CRMAddActivity)需要继承,并重写onCreate。

ØonCreate方法是添加页面的初始化方法,在这个方法中我们要初始化页面中用到的TextView、Button和EditView等控件信息。

1.4.9客户信息修改UI——操作选择对话框示意图

图20

1.4.10客户信息修改UI——操作选择对话框项目说明

Dailog控件:

用户长按XX客户信息项,弹出“操作选择”对话框,包括:

“修改客户信息”和“删除客户信息”选择项。

1.4.11客户信息修改UI——修改页面示意图

图21

1.4.12客户信息修改UI——修改页面项目说明

1.“客户名称”TextView控件,默认字体大小。

2.“客户名称”EditView控件,默认字体大小。

3.“联系人”TextView控件,默认字体大小和样式。

4.“联系人”EditView控件,默认字体大小和样式。

5.“电话”TextView控件,默认字体大小和样式。

6.“电话”EditView控件,默认字体大小和样式。

7.“E-mail”TextView控件,默认字体大小。

8.“E-mail”EditView控件,默认字体大小。

9.“地址”TextView控件,默认字体大小和样式。

10.“地址”EditView控件,默认字体大小和样式。

11.“确定”按钮,默认字体大小和样式。

12.“取消”按钮,默认字体大小和样式。

1.4.13客户信息修改类图

图22

修改页面Activity(CRMModActivity)需要继承,并重写onCreate。

ØonCreate方法是添加页面的初始化方法,在这个方法中我们要初始化页面中用到的TextView、Button和EditView等控件信息。

1.4.14客户信息删除UI——删除页面示意图

同客户信息查询UI部分列表页面。

1.4.15客户信息删除UI——删除页面项目说明

同客户信息查询UI部分列表页面。

1.4.16客户信息删除UI——操作选择对话框示意图

图23

1.4.17客户信息删除UI——操作选择对话框项目说明

Dailog控件:

用户长按XX客户信息项,弹出“操作选择”对话框,包括:

“修改客户信息”和“删除客户信息”选择项。

1.4.18客户信息删除类图

同客户信息查询类图。

1.4.19客户信息查看UI——查看页面示意图

同客户信息查询UI部分列表页面。

1.4.20客户信息查看UI——查看页面项目说明

同客户信息查询UI部分列表页面。

1.4.21客户信息查看UI——查看对话框示意图

图24

1.4.22客户信息查看UI——查看对话框项目说明

Dailog控件:

title客户名称,setView部分客户信息的内容,“关闭”按钮。

1.4.23客户信息查看类图

同客户信息查询类图。

1.5数据库设计

我们的系统采用SQLite嵌入式数据库,在这个数据库中只有一个表——Client表。

图25

 

数据库名称

完成日期

版本

设计者

审核者

表名

Client

实体名称

客户

主键

_id

索引表名称和

索引字段名称

序号

项目名称

项目说明

类型(宽度)

位数

属性

备注

1

_id

编号

integer

P、N

2

clientname

客户名称

varchar

200

N

3

linkman

联系人

varchar

100

N

4

phone

电话

varchar

100

N

5

email

电子邮箱

varchar

200

N

6

address

地址

varchar

200

U:

唯一(Unique)P:

主键(Primary)N:

非空(NotNull)

F:

外键(Foreign)D:

默认(Default)I:

自增长(autoincrement)

 

1.6系统实现代码解析

1.6.1系统配置文件——

是系统中的配置文件,我们需要将系统中用到的Android组件全都在这个文件中注册,其中CRMListActivity是启动屏幕显示的Activity。

DataProvider是我们系统中ContentProvider组件,用于实现数据持久化的操作。

代码清单1

xmlversion=""encoding="utf-8"?

>

android=""

package=""android:

versionCode="1"android:

versionName="">

icon="@drawable/icon"android:

label="@string/app_name">

name=".DataProvider"android:

authorities="">

name=".CRMListActivity"android:

label="@string/app_name">

name=""/>

name=""/>

name=".CRMAddActivity"android:

label="@string/app_name"/>

name=".CRMModActivity"android:

label="@string/app_name"/>

minSdkVersion="3"/>

1.6.2系统常量定义

作为良好的编程习惯,我们应该把系统中用到的常量都定义到一个接口文件中。

代码清单2

publicinterfaceSysConst{

publicstaticfinalStringDATABASE_NAME="";

publicstaticfinalStringTABLE_NAME="client";

publicstaticfinalStringTABLE_FIELD_ID="_id";

publicstaticfinalStringTABLE_FIELD_CLIENTNAME="clientname";

publicstaticfinalStringTABLE_FIELD_LINKMAN="linkman";

publicstaticfinalStringTABLE_FIELD_PHONE="phone";

publicstaticfinalStringTABLE_FIELD_EMAIL="email";

publicstaticfinalStringTABLE_FIELD_ADDRESS="address";

publicstaticfinalStringAUTHORITY="";

publicstaticfinalUriCONTENT_URI=(""+AUTHORITY

+"/"+TABLE_NAME);

}

1.6.3数据持久化部分代码

持久化部分的代码包括:

数据库帮助类DBHelper和数据操作类DataProvider。

DBHelper类:

编写一个DBHelper类,此类继承SQLiteOpenHelper。

在此类中我们重写父类中的onCreate方法和onUpgrade方法,同时创建数据库。

onCreate方法中创建表,在onUpgrade方法中删除表,并重新调用onCreate方法,当数据库版本号发生改变时就调用该方法。

代码清单3

ublicclassDBHelperextendsSQLiteOpenHelper{

publicDBHelper(Contextcontext){

super(context,,null,4);

}

@Override

publicvoidonCreate(SQLiteDatabasedb){

try{

StringBuffersql=newStringBuffer();

("CREATETABLE");

;

("(");

;

("INTEGERPRIMARYKEYautoincrement,");

;

("varchar(200),");

;

("varchar(100),");

;

("varchar(100),");

;

("varchar(200),");

;

("varchar(200)");

(");");

(TAG,());

());

}catch(Exceptione){

(TAG,());

}}

@Override

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){

("DROPTABLEIFEXISTS"+;

onCreate(db);

}

}

DataProvider类:

编写一个DataProvider类,此类继承ContentProvider。

在此类插入(insert)方法,参数为uri和values。

实例化dbhepler类中的getWritableDatabase方法,调用SQLiteOpenHelper类中的insert方法,参数为表名、要插入的值。

如果返回值大于零则插入成功,失败则抛出异常。

代码清单4文件中insert方法

@Override

publicUriinsert(Uriuri,ContentValuesvalues){

SQLiteDatabasedb=();

longrowId=,null,values);

if(rowId>0){

代码清单5文件中delete方法

et

(1);

StringwhereClause=+"="+rowid;

return,whereClause,null);

}

在DataProvider类中查询(query)方法,参数为uri、字段名称集合、where条件、where参数和查询出结果的排序情况。

实例化dbhepler类中的getWritableDatabase方法,调用SQLiteOpenHelper类中的query方法,参数为表名、字段名称数组、where条件、where参数数组和查询结果的排序情况。

代码清单6文件中query方法

@Override

publicCursorquery(Uriuri,String[]projection,Stringselection,

String[]selectionArgs,StringsortOrder){

SQLiteDatabasedb=();

return,newString[]{

,

,

,

},selection,selectionArgs,null,

null,+"asc");

}

在DataProvider类中修改(update)方法,参数为uri、修改值、where条件和where参数。

实例化dbhepler类中的getWritableDatabase方法,调用SQLiteOpenHelper类中的update方法,参数为表名、要修改值、where条件。

代码清单7文件中update方法

@Override

publicintupdate(Uriuri,ContentValuesvalues,Stringselection,

String[]selectionArgs){

SQLiteDatabasedb=();

Stringrowid=().get

(1);

StringwhereClause=

+"="

+rowid

+((!

(selection)?

"AND("+selection+")"

:

""));

return,values,whereClause,null);

}

1.6.4客户信息查询——布局文件

查询页面布局采用XML形式,文件放置在\res\layout\中。

页面中要声明一个ListView控件,采用LinearLayout布局方式,可以自动适应屏幕大小的变化。

代码清单8布局文件

xmlversion=""encoding="utf-8"?

>

id="@+id/widget28"

android:

layout_width="fill_parent"android:

layout_height="fill_parent"

android:

orientation="vertical"xmlns:

android="">

id="@+id/listview"android:

layout_width="fill_parent"

android:

layout_height="wrap_content">

1.6.5客户信息查询——无条件查询方法

无条件查询方法是在初始化页面时候调用的,是通过CRMListActivity在onCreate方法中调用findAll实现的,在Android中的Activity中我们可以通过getContentResolver()方法获得ContentResolver对象,这个对象是可以通过Android框架调用到ContentProvider对象——DataProvider对象。

为了能够为ListView提供数据我们还要使用S

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 互联网

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1