安卓开发课程设计报告.docx

上传人:b****6 文档编号:13518923 上传时间:2023-06-14 格式:DOCX 页数:33 大小:233.95KB
下载 相关 举报
安卓开发课程设计报告.docx_第1页
第1页 / 共33页
安卓开发课程设计报告.docx_第2页
第2页 / 共33页
安卓开发课程设计报告.docx_第3页
第3页 / 共33页
安卓开发课程设计报告.docx_第4页
第4页 / 共33页
安卓开发课程设计报告.docx_第5页
第5页 / 共33页
安卓开发课程设计报告.docx_第6页
第6页 / 共33页
安卓开发课程设计报告.docx_第7页
第7页 / 共33页
安卓开发课程设计报告.docx_第8页
第8页 / 共33页
安卓开发课程设计报告.docx_第9页
第9页 / 共33页
安卓开发课程设计报告.docx_第10页
第10页 / 共33页
安卓开发课程设计报告.docx_第11页
第11页 / 共33页
安卓开发课程设计报告.docx_第12页
第12页 / 共33页
安卓开发课程设计报告.docx_第13页
第13页 / 共33页
安卓开发课程设计报告.docx_第14页
第14页 / 共33页
安卓开发课程设计报告.docx_第15页
第15页 / 共33页
安卓开发课程设计报告.docx_第16页
第16页 / 共33页
安卓开发课程设计报告.docx_第17页
第17页 / 共33页
安卓开发课程设计报告.docx_第18页
第18页 / 共33页
安卓开发课程设计报告.docx_第19页
第19页 / 共33页
安卓开发课程设计报告.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

安卓开发课程设计报告.docx

《安卓开发课程设计报告.docx》由会员分享,可在线阅读,更多相关《安卓开发课程设计报告.docx(33页珍藏版)》请在冰点文库上搜索。

安卓开发课程设计报告.docx

安卓开发课程设计报告

 

武汉理工大学华夏学院

课程报告

 

课程名称:

智能手机软件开发

 

题目:

 基于 Android 的手机通

讯录的设计与实现

 

专业信息工程系

班级

学号

姓名

成绩

指导教师

 

2015 年 3 月 23 日至 2015 年 6 月 12 日

智能手机软件开发大作业

 

根据所学的 Android 手机开发的知识,采用 Eclipse、JAVA 开发一个基于 Android

平台的手机通讯录软件,具体要求如下:

1.要发该软件能够在 Android4.0 以上的平台上运行。

2.要求软件界面美观,操作方便,符合日常使用规范。

3.能够通过该手机通讯录来添加新的联系人,用来存放联系人的姓名、单位、

电话、QQ、地址等信息。

4.能够通过该手机通讯录来编辑联系人信息,来修改联系人的个人信息。

5.能够通过该手机通讯录来调用系统的通信接口,直接给用户发短信,打电话。

6.在手机通讯录中,添加合适的菜单,来操作手机通讯录。

7.将开发的过程写成报告,要求内容完整,格式规范,条理清晰。

1 设计目的

 

随着手机通讯录功能的不断加强与完善,手机通讯录对于人们的意义,

已不仅仅像记事簿一样显示通讯地址,而是向着个性化、人性化的方向发展移动

终端的应用软件和需要的服务将会有很大的发展空间。

根据这个特点,设计一个

基于 Android 平台的通讯录系统,能根据手机的特点,存储,管理,修改联系人

信息,并且能够根据选定的联系人,对其拨打电话,发送短信等。

手机通讯录作为手机的基本功能之一,每天我们都在频繁地使用着。

据手机功能使用调查显示,通讯录从无到有,从英文到中文,经过了十几年的发

展历程,今后的发展趋势就是从通讯录发展为名片夹,也就是在一个人名下,可

以存储座机、手机、单位、地址、电子邮件等内容。

所以手机通讯录功能越来越

齐全,满足了人们的需求。

 

2 开发环境

 

由 于 该 android 通 讯 录 是 一 个 基 于 Java 语 言 开 发 软 件 , 所 以 选 择 了

Eclipse3.4 作为开发平台,作为插件,它能够安装 Android SDK,从而可以安装

使用 Android 虚拟机,使得程序得以开发,亦更为方便。

本通讯录系统就是在 Eclipse3.4+Android 平台环境下编写设计而成的。

 

3 需求分析

 

该系统针对的主要用户是 Android 手机用户。

Android 手机通信管理系统包

括以下主要内容:

(1) 用户通过联系人功能可以保存联系人的详细信息,可以对联系人进行编

辑、删除、拨打电话、发送短信可以根据索引条件搜索联系人。

(2) 用户通过短信记录功能可以发送短信,删除短信记录。

(3) 用户通过 SD 卡所储存信息向通讯录批量导入联系人信息。

(4) 用户通过个人中心可以设置自己的详细信息,这样方便其他人了解自己,

也可以将具有相同名字的联系人合并。

要设计一个良好的手机通讯录,就必须首先明确该应用环境对系统的要求。

Android 手机通讯录应用背景:

方便用户快捷通讯。

(1)类似于传统手机通讯录的联系人的添加、修改、查找、删除功能。

(2)指定联系人后,录音并发送给该联系人的留言功能。

(3)通过通讯录访问联系人的微博以实现与联系人互动的功能。

(4)接收短信、电话、语音留言和微博留言的信息并提醒用户。

(5)保存用户自身的个人信息以用于与他人联系时显示身份。

 

4 概要设计

 

下面数据流图是对于 Android 手机通讯管理软件主要功能模块包括的简单结

构图:

联系人查看、联系人编辑、联系人添加、联系人删除、呼叫、发送短信、

搜索,如图所示:

Android 手机通讯

 

通讯列表

 

发送

短信

 

图 4.1Android 手机通讯管理软件主要功能模块

联系人列表界面主菜单中包括添加联系人、搜索联系人、关于及查看系统

版本号、退出菜单项。

点击添加联系人,则进入联系人添加界面,添加成功后返

回列表界面。

点击搜索菜单,则进入联系人搜索界面,输入联系人的全名或一个

字,即可查找相关联系人,点击联系人会进入联系人查看界面,可以对联系人进

行编辑、删除、拨打电话、发送短信。

如下图所示的 Android 手机通讯管理软件

业务流程图.

 

开始

 

选则功

 

选中条目

新建

 

编辑

删除

拨打电话

发送短信

输入新建

搜索

联系人信

息后保存

输入搜索

条件

更新数据库

显示搜索

结果

 

结束

 

图 4.2Android 手机通讯管理软件业务流程图

5 数据库设计

 

5.1 SQLite 数据库简介

 

SQLite,是一款轻型的数据库,是遵守 ACID 的关联式数据库管理系统,它

的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资

源非常的低,在嵌入式设备中,可能只需要几百 K 的内存就够了。

它能够支持

Windows/Linux/Unix 等等主流的操作系统,同时能够跟很多程序语言相结合,比

如 Tcl、C#、PHP、Java 等,还有 ODBC 接口,同样比起 Mysql、PostgreSQL 这

两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

SQLite

第一个 Alpha 版本诞生于 2000 年 5 月. 至今已经有 10 个年头,SQLite 也迎来了

一个版本 SQLite 3 已经发布。

本系统采用的是 Android 系统自带的 SQLite 轻型数据库数据库。

因此占用资

源非常小。

 

5.2 数据库表结构

 

首先创建数据库,在数据库中创建表用来存储联系人数据,其中包括联系人

姓名、手机号、QQ、地址等联系方式。

 

6 详细设计与实现

 

6.1 联系人浏览模块

 

6.1.1 进入首界面,显示联系人列表。

点击某个联系人会进入查看联系人界面,

可以查看联系人的详细信息,对联系人进行编辑、删除、拨打电话发送短信等。

截图所示:

 

图 6.1.1 通讯录联系人列表模块界面

6.1.2 点击菜单按钮时,就会显示添加、查找、关于和退出功能。

如果点击退出

菜单,则会退出该软件。

如图所示:

 

图 6.1.2 通讯录主菜单项模块

6.1.3 长按菜单显示 Android 手机通讯截图如图所示:

 

图 6.1.3通讯录联系人界面菜单模块

6.2 查看联系人模块

 

6.2.1 在联系人界面点中击某个联系人,则会跳转到该界面。

该软件实现了给联

系人拨打电话和发送短信的功能。

查看联系人界面截图如图所示:

 

图 6.2手机通讯查看联系人模块界面

6.3 编辑联系人模块

 

6.3.1 联系人编辑界面设置了返回列表菜单和删除联系人菜单。

点击返回列表菜

单,会返回到联系人浏览界面。

编辑联系人界面如图所示:

 

图 6.3 手机通讯录编辑联系人界面模块

6.4 查找联系人模块

查找到所有包含该部分的联系人,并在 ListView 中显示出来所有的联系人的姓

名和手机号码,截图如图所示:

 

图 6.4 通讯录查找联系人模块界面

7 总结

 

这学期的智能手机开发课程的学习,让我了解到手机开发端应用的广泛性,

以及对自己所学知识的总结,做手机通讯录,让我了解到手机已经成为日常生活

中不可分割的一部分,所以手机上的功能满足人们的需求,才是手机通讯录开的

重要性。

对于这次的课程设计,使我发现了自己所掌握的知识是真正如此的缺乏,

自己综合应用所学的专业知识能力是如此的不足通过这次开发项目,我们学会了

如何在一个项目中集成多种技术,如何合理的耦合各种小功能,如何解决各种开

发中出现的问题。

同时在这次开发中出现的问题也暴露出了我们对 java 程序设

计的一些问题,以及自己的动手能力还需要提高,而且做一个项目首先要明白这

个项目的中心思想,这样才有目的去设计。

  通过课程设计,使我深深体会到,干任何事都必须耐心,细致,课程设计过

程中,许多迷惑有时不免令我感到有些心烦意乱,有几次因为不小心而出错,只

能毫不情意地重来。

但一想起老师对我们耐心的教导,认真对待的良好习惯.这

次课程设计使我在工作作风上得到了一次难得的磨练,一个人的性格很大程度上

决定一件事情的进展以及对工作的态度和生活的态度,所以养成好的习惯能够帮

助我克服各种苦难,能够帮助我在今后的学习中脚踏实地的工作。

通过这次手机开发通讯录课程设计,我能够更加深刻的了解到手机通讯录开

发的前景以及所需的知识,总之在今后的学习中自己应该了解如今社会上开发手

机通讯录所需的最新的技术,不能一成不变,只看书本上的知识,养成自我学习

的良好习惯。

 

8 参考文献

 

[1] 罗伟. 基于 Android平台的即时通讯系统的研究与实现[D].湖南师范大学, 2009  .

[2] 李刚,《疯狂 Java 讲义》,电子工业出版社,2008

[3] 程峰,《JAVA 核心技术》,机械工业出版社,2007

[4] 王鹏,《JAVA 语言程序设计》,大连理工出版社,2005

9 附录源代码

 

public class DBHelper

{

/*

*操作数据库和各个表

*/

public static final String DATABASE_NAME="CONTACT_DB";

public static final String TABLE_CONTACTER="contact_person";

public static final String TABLE_MOBLIEPHONE="phone_number";

public static final String TABLE_GROUP="mygroup";

public static final String TABLE_EMAIL="email";

public static final String TABLE_QQ="qq";

public static final String TABLE_HOMEPHONE="home_phone_number";

public static final String TABLE_ADDRESS="address";

public static final String TABLE_FAX="fax";

//创建表的 SQL 语句

public static String[] CreateTabelSQL;

private static SQLiteDatabase dbInstance;

public static final int VERSION = 4;

private MyDBHelper myDBHelper;

private Context context;

public DBHelper(Context context,String[] createtablesql)

{

this.context=context;

this.CreateTabelSQL=createtablesql;

}

public DBHelper(Context context)

{

this.context=context;

}

/**

* 打开数据库

*/

public void openDatabase()

{

if(dbInstance==null)

{

//创建数据库

myDBHelper= new MyDBHelper(context, DATABASE_NAME, VERSION);

dbInstance=myDBHelper.getWritableDatabase();

}

}

/**

* 返回所有联系人

*/

public ArrayList> getAllContacter(String condition)

{

ArrayList> contaclist = new ArrayList();

Cursor cursor;

if(condition==null||condition.trim().equals(""))

cursor=dbInstance.query(TABLE_CONTACTER,

new String[]{"id","name","headImage"}, null, null,

null, null, null);

else {

StringBuffer sqlBuffer=new StringBuffer();

sqlBuffer.append("select id,name,headImage from ")

.append(TABLE_CONTACTER)

.append(" where name like '%")

.append(condition)

.append("%'");

cursor=dbInstance.rawQuery(sqlBuffer.toString(), null);

}

cursor.moveToFirst();

while(!

cursor.isAfterLast())

{

HashMap item=new HashMap();

item.put("contacter_id", cursor.getInt(cursor.getColumnIndex("id")));

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

item.put("headimage", cursor.getString(cursor.getColumnIndex("headImage")));

//返回第一个手机电话号码

Cursor phoneCursor=dbInstance.query(TABLE_MOBLIEPHONE,

new String[]{"phone_number"}, "id=?

",

new

String[]{String.valueOf(cursor.getInt(cursor.getColumnIndex("id")))},

null, null, null);

phoneCursor.moveToFirst();

item.put("phonenumber",

phoneCursor.getString(phoneCursor.getColumnIndex("phone_number")));

contaclist.add(item);

cursor.moveToNext();

}

return contaclist;

}

/**

* 根据编号返回一个联系人

*/

public Contacter getContacter(int id)

{

Contacter contacter = new Contacter();

Cursor contacterCursor =dbInstance.query(TABLE_CONTACTER,

new

String[]{"id","group_name","name","nick_name","birthday","workingunits","headImage"},

"id=?

",

new String[]{String.valueOf(id)}, null,

null, null);

contacter.id=id;

contacterCursor.moveToFirst();

contacter.name=contacterCursor.getString(contacterCursor.getColumnIndex("name"));

contacter.nickname=contacterCursor.getString(contacterCursor.getColumnIndex("nick_name"));

contacter.workingunits=contacterCursor.getString(contacterCursor.getColumnIndex("workingunit

s"));

if(contacterCursor.getString(contacterCursor.getColumnIndex("birthday")).trim()!

=null

&&!

contacterCursor.getString(contacterCursor.getColumnIndex("birthday")).trim().equals(""))

{

String

string=contacterCursor.getString(contacterCursor.getColumnIndex("birthday")).trim();

contacter.birthday=Date.valueOf(contacterCursor.getString(contacterCursor.getColumnIndex("bir

thday")));

}

contacter.headimage=contacterCursor.getInt(contacterCursor.getColumnIndex("headImage"));

//联系人的手机号码

Cursor phoneCursor =dbInstance.query(TABLE_MOBLIEPHONE,

new String[]{"phone_number"},

"id=?

",

newString[]{String.valueOf(id)},null,

null, null);

phoneCursor.moveToFirst();

contacter.mobilephone=new String[phoneCursor.getCount()];

for(int i=0;i

{

contacter.mobilephone[i]=phoneCursor.getString(phoneCursor.getColumnIndex("phone_number"

));

phoneCursor.moveToNext();

}

//联系人的座机号码

Cursor homephoneCursor=dbInstance.query(TABLE_HOMEPHONE,

new String[]{"home_number"},

"id=?

",

new String[]{String.valueOf(id)}, null,

null, null);

homephoneCursor.moveToFirst();

contacter.homephonenumber=new String[homephoneCursor.getCount()];

for(int i=0;i

{

contacter.homephonenumber[i]=homephoneCursor.getString(homephoneCursor.getColumnIndex(

"home_number"));

homephoneCursor.moveToNext();

}

//联系人的 email

Cursor emailCursor=dbInstance.query(TABLE_EMAIL,

new String[]{"email"},

"id=?

",

newString[]{String.valueOf(id)},null,

null,null);

emailCursor.moveToFirst();

contacter.email=new String[emailCursor.getCount()];

for(int i=0;i

{

contacter.email[i]=emailCursor.getString(emailCursor.getColumnIndex("email"));

emailCursor.moveToNext();

}

//联系人的传真号码

Cursor faxCursor=dbInstance.query(TABLE_FAX,

new String[]{"fax_number"},

"id=?

",

new String[]{String.valueOf(id)}, null, null,null);

contacter.faxnumber=new String[emailCursor.getCount()];

faxCursor.moveToFirst();

for(int i=0;i

{

contacter.faxnumber[i]=faxCursor.getString(faxCursor.getColumnIndex("fax_number"));

faxCursor.moveToNext();

}

//联系人的地址

Cursor addressCursor=dbInstance.query(TABLE_ADDRESS,

new

String[]{"add_code","province","city","street","zip_code","country"},

"id=?

",

newString[]{String.valueOf(id)},null,

null, null);

addressCursor.moveToFirst();

contacter.addresses=new address[addressCursor.getCount()];

for(int i=0;i

{

contacter.addresses[i]=new address();

contacter.addresses[i].add_code=addressCursor.getInt(addressCursor.getColumnIndex("add_code

"));

contacter.addresses[i].province=addressCursor.getString(addressCursor.getColumnIndex("provinc

e"));

contacter.addresses[i].city=addressCursor.getString(addressCursor.getColumnIndex("city"));

contacter.addresses[i].street=addressCursor.getString(addressCursor.getCo

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

当前位置:首页 > 考试认证 > 公务员考试

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

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