根据安卓系统的通讯录设计资料文档.docx

上传人:b****6 文档编号:7526067 上传时间:2023-05-11 格式:DOCX 页数:26 大小:1.46MB
下载 相关 举报
根据安卓系统的通讯录设计资料文档.docx_第1页
第1页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第2页
第2页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第3页
第3页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第4页
第4页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第5页
第5页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第6页
第6页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第7页
第7页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第8页
第8页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第9页
第9页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第10页
第10页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第11页
第11页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第12页
第12页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第13页
第13页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第14页
第14页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第15页
第15页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第16页
第16页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第17页
第17页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第18页
第18页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第19页
第19页 / 共26页
根据安卓系统的通讯录设计资料文档.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

根据安卓系统的通讯录设计资料文档.docx

《根据安卓系统的通讯录设计资料文档.docx》由会员分享,可在线阅读,更多相关《根据安卓系统的通讯录设计资料文档.docx(26页珍藏版)》请在冰点文库上搜索。

根据安卓系统的通讯录设计资料文档.docx

根据安卓系统的通讯录设计资料文档

 

第一章项目介绍………………………………………………2

第二章数据库设计……………………………………………3

第三章系统概要设计…………………………………………4

第四章类的设计………………………………………………11

第五章功能实现………………………………………………14

第六章部分代码………………………………………………20

第七章实验心得………………………………………………26

 

第一章项目介绍

本项目是使用eclipse开发平台,并连接使用SQlite数据库编写的通讯录。

分为后台数据库的建立和维护,以及前端应用程序的开发两个部分,主要包括添加、删除、修改联系人姓名、电话、住址等。

1.功能需求分析:

当今社会是信息高速发展的时代,朋友圈也逐渐得到扩展,而人与人之间的联系也愈加密切,准确详细并安全的保存需要联系的人的信息则显得更加重要。

2.功能模块分析:

(1)查询所有联系人模块:

可以查询所有添加成功的联系人的信息。

(2)搜索联系人模块:

可以按照关键字进行搜索。

(3)新联系人模块:

可以添加新联系人的信息。

3.数据流图:

数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。

按照系统的业务流程来分析系统中的信息流向,可画出系统的数据流图如下:

4.功能模块结构图:

第二章数据库设计

本项目使用SQLite数据库系统,其库文件为:

contacts.db,表名称为:

contacts

其具体定义如下:

字段

类型

描述

_id

Integer

id

name

Text

姓名

mobileNumber

Text

电话

email

Text

邮箱

createDate

Long

创建时间

modifyedDate

long

修改时间

company

Text

公司

第三章系统概要设计

1.外部事件

该图描述了通讯录与外部环境的交互,在这个系统中,通过对系统的分析,可以识别出参与者:

用户。

对于用户而言,通讯录上按钮是用户向系统输入的操作请求的输入设备,GUI是用于向用户输出的输出设备。

2.业务流程图:

3.数据增加流程图:

4.数据修改流程图:

5.数据删除流程图:

6.系统用例分析

该图显示了通话记录功能模块,包括了联系人详细信息查看,清空通话记录,在选择一个联系人之后,可以进行拨打电话,发送信息的操作,也可以进行删除。

该图显示了短信记录功能模块的用例。

包括查看短信,发送短信,删除选中的短信记录,清空整个短信记录,其中发送短信包含了新建信息和回复信息。

如果用户是新建信息,发送对象可以自己手动输入对方电话号码,也可以从联系人列表中选取,可以选中多个,如果是自己输入多个,用”;”分开即可。

该图显示了联系人功能模块的用例。

包括了查看联系人详细信息,编辑联系人信息,新建联系人,对选中的联系人,可以对其进行删除、拨打电话、发送短信的操作。

用户还可以进行联系人搜索,这样方便用户快速找到想的联系人信息。

7.通话记录模块的实现流程图:

通话记录使用户可以查看最近通话记录,在选中某条栏目后,为用户提供了拨打电话、发送短信、删除该记录、查看联系人信息和情况整个记录的功能。

在用户选中此功能后,系统会先调用LastContact类的initComment()函数初始化控件,然后再调用该类的initDate()函数初始化数据,最后通过函数getDate()获得最近通话记录。

因为此系统多个模块都有查看联系人信息、发送短信和拨打电话的操作,所以在设计的时候,将此三个方法写成了静态方法(方法名分别为actionSendMsg,actionDialog,actionCheckInfo,封装在类Action_T中),以此降低程序代码的耦合度。

综上所述,用户在进行拨打电话、发送短信、查看联系人信息的时候,分别会调用actionSendMsg(),actionDialog(),actionCheckInfo()三个方法。

8.短信记录的流程:

该模块主要为用户提供了手机短信方面的功能,包括用户可以查看新收到的短信,可以调用actionSenMsg()方法发送短信,当然,发送短信分为新建短信和回复短信。

当用户选择某一个条目后,可以调用delete()方法删除该短信记录,当然可以调用empet()直接一次性清空整个短信记录。

9.通讯录模块

该模块是系统的主要功能。

当用户进入该功能模块时,程序默认选中第一个条目,当然用户可以任意选中任一条目。

在被选中后,用户可以对该条目进行编辑、拨打电话、发送短信以及删除该联系人的操作。

此外,通过功能键,用户可以新建联系人和搜索联系人。

该功能模块的流程图如图所示:

结束

选则功能

编辑

搜索

发送短信

拨打电话

删除

新建

更新数据库

选中条目

输入搜索条件

结束

输入新建联系人信息后保存

显示搜索结果

 

第四章类的设计

1.ContactColumn类图

该类主要定义了系统中用到的常量,如contacts表中各字段的名称、各字段在表中的具体索引位置,以提高程序整体的可读性与可维护性。

2.DBHelper类图

该类充当数据库辅助类,主要用于实现数据库的创建工作。

其包含了具体的建库SQL语句。

3.ContactsProvider类图

该类实现了ContentProvide类,封装了对SQLite数据库中contacts表的增删改查操作。

使得具体数据库操作对View层透明。

4.Contacts类图

该类实现了ListActivity类,以列表界面列出了contacts表中所用记录,并提供菜单实现记录的添加与查询操作,提供上下文菜单实现记录的编辑和删除。

5.ContactEditer类图

该类实现了Activity类,主要实现对contacts表中记录进行增删改的界面。

 

第四章功能实现

1.界面展示:

2.显示所有联系人:

显示的内容为测试时存入。

3.按照关键字搜索联系人:

4.添加新联系人:

添加成功:

 

5.删除联系人:

6.给联系人拨打电话:

结束通话:

7.向联系人发送信息:

第5章部分代码

1.DatabaseHelper作为一个访问SQLite的助手类,提供两个方面的功能:

第一,getReadableDatabase(),getWritableDatabase()

可以获得SQLiteDatabse对象,通过该对象可以对数据库进行操作;

第二,提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己的操作。

DatabaseHelper.java

packageliu.sqlite3.db;

importandroid.content.Context;

importandroid.database.sqlite.SQLiteDatabase;

importandroid.database.sqlite.SQLiteOpenHelper;

importandroid.database.sqlite.SQLiteDatabase.CursorFactory;

publicclassDatabaseHelperextendsSQLiteOpenHelper{

privatestaticfinalintVERSION=1;

publicDatabaseHelper(Contextcontext,Stringname,CursorFactoryfactory,

intversion){

super(context,name,factory,version);

//TODOAuto-generatedconstructorstub

}

publicDatabaseHelper(Contextcontext,Stringname){

this(context,name,VERSION);

}

publicDatabaseHelper(Contextcontext,Stringname,intversion){

this(context,name,null,version);

}

@Override

publicvoidonCreate(SQLiteDatabasedb){

//TODOAuto-generatedmethodstub

System.out.println("createaDatabase");

db.execSQL("createtableuser(namevarchar(20),phonetext,qqtext,mailtext,addresstext)");

}

@Override

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){

//TODOAuto-generatedmethodstub

System.out.println("updateaDatabase");

}

}

2.创建新联系人并与SQlite数据库连接起来:

注意:

调用DatabaseHelper对象的getReadableDatabase()方法才能打开SQlite数据库。

packagenet.yxarm;

importjava.util.ArrayList;

importjava.util.HashMap;

importliu.sqlite3.db.DatabaseHelper;

importandroid.app.Activity;

importandroid.content.ContentValues;

importandroid.content.Intent;

importandroid.database.Cursor;

importandroid.database.sqlite.SQLiteDatabase;

importandroid.os.Bundle;

importandroid.util.Log;

importandroid.view.ContextMenu;

importandroid.view.Menu;

importandroid.view.MenuInflater;

importandroid.view.MenuItem;

importandroid.view.View;

importandroid.view.ContextMenu.ContextMenuInfo;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

importandroid.widget.EditText;

importandroid.widget.Toast;

publicclassAdd_peopleextendsActivity{

privateEditTexteditName=null;

privateEditTexteditPhone=null;

privateEditTexteditQQ=null;

privateEditTexteditEmail=null;

privateEditTexteditAddress=null;

privateButtonbuttonAdd=null;

privateButtonbuttonCancel=null;

publicstaticintn;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.second);

editName=(EditText)findViewById(R.id.edit_name);

editPhone=(EditText)findViewById(R.id.edit_phone);

editQQ=(EditText)findViewById(R.id.edit_QQ);

editEmail=(EditText)findViewById(R.id.edit_mail);

editAddress=(EditText)findViewById(R.id.edit_address);

buttonAdd=(Button)findViewById(R.id.button1_add);

buttonCancel=(Button)findViewById(R.id.button2_cancel);

Intentintent=getIntent();

n=intent.getIntExtra("editpeople",0);

if(n==1)

{

System.out.println("----上一个Activity传进来的(editpeople)值:

"+n);

editName.setText(Address_Book.LIST.get(Address_Book.CLICK_ID).get("name").toString());

editPhone.setText(Address_Book.LIST.get(Address_Book.CLICK_ID).get("phone").toString());

editQQ.setText(Address_Book.LIST.get(Address_Book.CLICK_ID).get("qq").toString());

editEmail.setText(Address_Book.LIST.get(Address_Book.CLICK_ID).get("mail").toString());

editAddress.setText(Address_Book.LIST.get(Address_Book.CLICK_ID).get("address").toString());

}

//设置两个按钮监听事件

buttonAdd.setOnClickListener(newMyButtonOnClickListener());

buttonCancel.setOnClickListener(newMyButtonOnClickListener());

}

classMyButtonOnClickListenerimplementsOnClickListener{

privatestaticfinalintREQUESCODE2=2;

publicvoidonClick(Viewv){

switch(v.getId()){

caseR.id.button1_add:

if(editName.getText().toString().length()>0&editPhone.getText().toString().length()>=3){

CreateDatabaseHelper();

if(n!

=1){

Address_Book.LIST=Insert();

Toast.makeText(Add_people.this,"添加成功!

",1).show();

System.out.println("选择新建联系人");

}elseif(n==1){Address_Book.LIST=modfiy();/Toast.makeText(Add_people.this,"修改成功!

",1).show();

System.out.println("选择修改联系人");

}

Intentintent=newIntent();

intent.setClass(Add_people.this,Address_Book.class);

intent.putExtra("nothing2",2);

startActivityForResult(intent,REQUESCODE2);

}elseif(editName.getText().toString().equals("")){

Toast.makeText(Add_people.this,"请输入联系人姓名",1).show();

}elseif(editPhone.getText().toString().length()<3){

Toast.makeText(Add_people.this,"请输入有效电话",1).show();

}

break;

caseR.id.button2_cancel:

Toast.makeText(Add_people.this,"取消",1).show();

Intentintent=newIntent(Add_people.this,Address_Book.class);

startActivity(intent);

break;

default:

break;

}

}

}

publicvoidCreateDatabaseHelper(){

//创建一个DatabaseHelper对象

DatabaseHelperdbHelper=newDatabaseHelper(Add_people.this,"test_mars_db");

//调用DatabaseHelper对象的getReadableDatabase()方法

SQLiteDatabasedb=dbHelper.getReadableDatabase();

}

publicArrayListInsert(){

ContentValuesvalues=newContentValues();

values.put("name",editName.getText().toString());

values.put("phone",editPhone.getText().toString());

values.put("qq",editQQ.getText().toString());

values.put("mail",editEmail.getText().toString());

values.put("address",editAddress.getText().toString());

DatabaseHelperdbHelper=newDatabaseHelper(Add_people.this,"test_mars_db",2);

SQLiteDatabasedb=dbHelper.getWritableDatabase();

db.insert("user",null,values);

ArrayList>list=newArrayList>();

DatabaseHelperdbHelper1=newDatabaseHelper(Add_people.this,"test_mars_db");

SQLiteDatabasedb1=dbHelper1.getReadableDatabase();

Cursorcursor=db1.query("user",newString[]{"name","phone","qq","mail","address"},null,null,null,null,null);

while(cursor.moveToNext()){

HashMapmap=newHashMap();

map.put("name",cursor.getString(cursor.getColumnIndex("name")));

map.put("phone",cursor.getString(cursor.getColumnIndex("phone")));

map.put("qq",cursor.getString(cursor.getColumnIndex("qq")));

map.put("mail",cursor.getString(cursor.getColumnIndex("mail")));

map.put("address",cursor.getString(cursor.getColumnIndex("address")));

}

}

publicvoidQuery(){

DatabaseHelperdbHelper=newDatabaseHelper(Add_people.this,"test_mars_db");

SQLiteDatabasedb=dbHelper.getReadableDatabase();

Cursorcursor=db.query("user",newString[]{"name","phone","qq","mail","address"},"name=?

",newString[]{editName.getText().toString()},null,null,null);

while(cursor.moveToNext()){

Stringname1=cursor.getString(cursor.getColumnIndex("name"));

Stringname2=cursor.getString(cursor.getColumnIndex("phone"));

Stringname3=cursor.getString(

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2