基于Android系统的通讯录设计文档毕业论文.docx
- 文档编号:7222816
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:48
- 大小:1.48MB
基于Android系统的通讯录设计文档毕业论文.docx
《基于Android系统的通讯录设计文档毕业论文.docx》由会员分享,可在线阅读,更多相关《基于Android系统的通讯录设计文档毕业论文.docx(48页珍藏版)》请在冰豆网上搜索。
基于Android系统的通讯录设计文档毕业论文
第一章项目介绍………………………………………………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
电话
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
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()){
HashMap
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.get
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 系统 通讯录 设计 文档 毕业论文