安卓课程设计.docx
- 文档编号:24598629
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:23
- 大小:304.89KB
安卓课程设计.docx
《安卓课程设计.docx》由会员分享,可在线阅读,更多相关《安卓课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
安卓课程设计
移动通信课程设计
题目联系人管理
姓名学号
院系计算机与软件学院
专业
指导教师
二O一二年六月五日
联系人管理
1概述
1.1设计平台介绍
Android是Google推出的开源手机操作系统。
它基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,具有以下5个特点:
1、开放性。
2、应用程序无界限。
3、应用程序是在平等条件下创建的。
4、应用程序可以轻松的嵌入网络。
5、应用程序可以并行运行。
Android平台特性:
1、应用程序框架支持组件的重用与替换。
2、Dalvik虚拟机专为移动设备优化。
3、集成的浏览器基于开源的WebKit引擎。
4、优化的图形库包括定制的2D图形库,3D图形库基于OpenGLES1.0(硬件加速可选)。
5、SQLite用作结构化的数据存储。
6、多媒体支持包括常见的音频、视频和静态图像格式(如MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF)。
7、GSM电话技术(依赖于硬件)。
8、蓝牙Bluetooth,EDGE,3G,和WiFi(依赖于硬件)。
9、照相机,GPS,指南针,和加速度计(accelerometer)(依赖于硬件)。
10、丰富的开发环境包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件。
Android架构:
如图1-1
图1-1android架构
Android的应用层是用Java语言编写的运行在虚拟机上的程序,我们课程设计中所用到开发语言就是Java。
1.2课题描叙
这次课程设计我做的是一个手机联系人管理的小软件,它可以设置联系的详细资料,帮助你记住你朋友的号码,邮编,住址等。
把QQ里面的头像图片加载了进来,可以根据你的喜爱设置你的朋友的可爱头像,并且可以把联系人备份到SD卡中,方便保存,以免在刷机等突发情况时丢失联系人信息,下次只要重新从SD卡中导入到手机中即可,非常方便实用。
1.3需求分析
这是个信息膨胀的时代,随着网络的发展,我们的朋友越来越多,所以朋友的信息就越来越多了,朋友的手机号码,固定电话号码,家庭住址,邮编等。
手机是现在人们最随身带的电子产品之一,所以想到了在手机上做一款联系人管理软件,来帮助我们记录和管理联系人的资料,随时随地都可以看到,方便实用,成本也很低。
基于以上的想法,进行了一些简单的可行性分析,主要问题在于技术的实现问题。
就我们现在所学,对于实现我们想要的软件功能完全是可能的,所以借助于各种参考文献和网络资料,开始了软件的开发。
2移动通信软件的设计
2.1功能模块图
手机联系人管理软件包括以下几个功能:
增加新的联系人,查找已有的联系人,删除单个联系人,删除所有联系人,修改联系人信息,备份联系人,还原联系人,检查软件更新信息。
如图2-1所示:
图2-1功能总体模块图
2.2系统流程图
用户进入系统后首先看到的是联系人列表界面,如果没有联系人则显示无信息。
按下Menw建,我们会看到添加,查找,删除,菜单,退出几个选项,我们可以进行联系人的添加,查找,删除等操作。
双击联系人,我们可以进入查看联系人信息的界面,可以进行修改资料,删除等操作。
当我们点击菜单选项时,我们会看到显示所有联系人,删除所有,备份,还原,更新等,进行各项操作。
如图2-2所示:
图2-2系统整体流程图
添加联系人模块,在我们添加联系人时,会进行名字的判断,联系人列表中是否已经有该联系的名字和信息,如果有则会提醒出现错误,要求你返回联系人列表。
所以该数据流图会有一个判定框的功能实现该检查功能。
具体的数据流图如图2-3所示:
图2-3添加联系人数据流图
我们在联系人菜单,对联系人进行信息修改时,需要对我们输入的联系人信息进行判断,判断其是否合乎我们要求的格式等,所以进行了一个判定,修改信息错误时会报错,具体功能实现,如下图2-4所示:
图2-4修改信息流程图
删除联系人得原理和添加差不多,只是会提示是否确认删除,以免失误删除重要信息,数据流图2-5所示:
图2-5删除联系人数据流图
在菜单的选项中,实现数据的备份与还原时,数据是在手机和SD卡之间转换的,导入导出之前都进行确认询问,最终完成操作。
具体数据流图如图2-6所示:
图2-6数据备份流图
2.3软件界面风格设计
进行了数据流图的分析之后,开始准备进行软件界面风格的整体和细节设计,主界面,联系人界面,各种操作的界面,都进行了设想与设计,以方便软件功能的实现,由于初次做,所以布局等可能有些不合理,界面比较粗糙。
3软件功能的具体实现
3.1联系人主界面模块
我们打开软件,第一个看到的就是联系人列表,显示联系人得头像,姓名和手机号码信息,很简约的风格,如图5-1所示。
按下Menw键,我们可以看到下面会显示出5个功能菜单,所实现的功能是分别是添加新的联系人,查找具体的联系人,删除单个联系人,打开菜单选项和退出软件,如图5-2所示。
图5-1联系人列表界面
图5-2Menw功能选项
此时按下菜单键,会出现菜单的选项,出现如图5-3的功能选项。
图5-3菜单的功能选项
关键代码:
publicclassMainextendsActivity{
ListViewlv;
ArrayListlist;
SimpleAdapteradapter;
GridViewbottomMenuGrid;
GridViewmainMenuGrid;
ViewmainMenuView;
ViewloginView;
LinearLayoutsearchLinearout;
LinearLayoutmainLinearLayout;
EditTextet_search;
EditTextet_enter_file_name;
AlertDialogmainMenuDialog;
AlertDialogconfirmDialog;
AlertDialogprogressDialog;
AlertDialogenterFileNameDialog;
AlertDialogloginDialog;
booleanprivacy=false;
intmarkedNum;
ArrayList
String[]main_menu_itemName={"显示所有","删除所有","备份数据","还原数据","更新","后退"};
//主菜单图片
int[]main_menu_itemSource={
;
String[]bottom_menu_itemName={"增加","查找","删除","菜单","退出"};
StringfileName;
int[]bottom_menu_itemSource={
};
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(;
mainLinearLayout=(LinearLayout)findViewById(;
DBHelperhelper=newDBHelper(this);
helper.openDatabase();
list=helper.getAllUser(privacy);
lv=(ListView)findViewById(;//创建ListView对象
if(list.size()==0){
Drawablenodata_bg=getResources().getDrawable(;
mainLinearLayout.setBackgroundDrawable(nodata_bg);
setTitle("没有查到任何数据");
}
adapter=newSimpleAdapter(this,
list,
newString[]{"imageid","name","mobilephone"},
newint[]{,,;
lv.setAdapter(adapter);
lv.setOnItemClickListener(newOnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView
>arg0,Viewarg1,intarg2,
longarg3){
HashMapitem=(HashMap)arg0.getItemAtPosition(arg2);
int_id=Integer.parseInt(String.valueOf(item.get("_id")));
Intentintent=newIntent(Main.this,UserDetail.class);
Useruser=newUser();
user._id=Integer.parseInt(String.valueOf(item.get("_id")));
user.address=String.valueOf(item.get("address"));
pany=String.valueOf(item.get("company"));
user.email=String.valueOf(item.get("email"));
user.familyPhone=String.valueOf(item.get("familyphone"));
user.mobilePhone=String.valueOf(item.get("mobilephone"));
user.officePhone=String.valueOf(item.get("officephone"));
user.otherContact=String.valueOf(item.get("othercontact"));
user.position=String.valueOf(item.get("position"));
user.remark=String.valueOf(item.get("remark"));
user.username=String.valueOf(item.get("name"));
user.zipCode=String.valueOf(item.get("zipcode"));
user.imageId=Integer.parseInt(String.valueOf(item.get("imageid")));
intent.putExtra("user",user);
if(searchLinearout!
=null&&searchLinearout.getVisibility()==View.VISIBLE){
searchLinearout.setVisibility(View.GONE);
}
startActivityForResult(intent,arg2);
}
});
lv.setCacheColorHint(Color.TRANSPARENT);//设置ListView的背景为透明
lv.setOnItemLongClickListener(newOnItemLongClickListener(){
@Override
publicbooleanonItemLongClick(AdapterView
>arg0,Viewarg1,
intarg2,longarg3){
if(deleteId==null){
deleteId=newArrayList
}
HashMapitem=(HashMap)arg0.getItemAtPosition(arg2);
Integer_id=Integer.parseInt(String.valueOf(item.get("_id")));
RelativeLayoutr=(RelativeLayout)arg1;
ImageViewmarkedView=(ImageView)r.getChildAt
(2);
if(markedView.getVisibility()==View.VISIBLE){
markedView.setVisibility(View.GONE);
deleteId.remove(_id);
}else{
markedView.setVisibility(View.VISIBLE);
deleteId.add(_id);
}
returntrue;
}
});
DrawablebgDrawable=getResources().getDrawable(;
lv.setSelector(bgDrawable);
}
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
super.onActivityResult(requestCode,resultCode,data);
if(deleteId!
=null){
deleteId.clear();
}
if(resultCode==3||resultCode==4){
DBHelperhelper=newDBHelper(this);
list=helper.getAllUser(privacy);
adapter=
newSimpleAdapter(
this,
list,
newString[]{"imageid","name","mobilephone"},
newint[]{,,;
if(list.size()>0){
mainLinearLayout.setBackgroundDrawable(null);
}
}
lv.setAdapter(adapter);
if(resultCode==3){
lv.setSelection(list.size());
}else{
lv.setSelection(requestCode);
}
3.2菜单功能实现
菜单的功能选项是显示所有联系人,删除所有联系人,备份联系人,还原联系人,检查更新和返回。
如图5-4所示为备份功能。
图5-4备份功能选项
关键代码:
privatevoidloadMainMenuDialog(){
if(mainMenuDialog==null){
LayoutInflaterli=LayoutInflater.from(this);
mainMenuView=li.inflate(,null);
mainMenuDialog=newAlertDialog.Builder(this).setView(mainMenuView).create();
mainMenuGrid=(GridView)mainMenuView.findViewById(;
SimpleAdaptermenuAdapter=getMenuAdapter(main_menu_itemName,main_menu_itemSource);
mainMenuGrid.setAdapter(menuAdapter);
mainMenuGrid.setOnItemClickListener(newOnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView
>arg0,Viewarg1,intarg2,
longarg3){
switch(arg2){
case0:
{
DBHelperhelper=newDBHelper(Main.this);
list=helper.getAllUser(privacy);
adapter=newSimpleAdapter(
Main.this,
list,
newString[]{"imageid","name","mobilephone"},
newint[]{,,;
lv.setAdapter(adapter);//显示所有数据
mainMenuDialog.dismiss();
break;
}
case1:
{
AlertDialog.Builderbuilder=newAlertDialog.Builder(Main.this);
confirmDialog=builder.create();
builder.setTitle("是否删除所有!
?
");
builder.setPositiveButton("确定",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
DBHelperhelper=newDBHelper(Main.this);
helper.deleteAll(0);
list=helper.getAllUser(privacy);
adapter=newSimpleAdapter(
Main.this,
list,
newString[]{"imageid","name","mobilephone"},
newint[]{,,;
lv.setAdapter(adapter);//显示所有数据
mainMenuDialog.dismiss();
}
});
builder.setNegativeButton("取消",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
confirmDialog.dismiss();
}
});
builder.create().show();
break;
}
case2:
{
mainMenuDialog.dismiss();
newAlertDialog.Builder(Main.this)
.setTitle("是否需要备份记录到SD卡?
")
.setPositiveButton("确定",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
LayoutInflaterli=LayoutInflater.from(Main.this);
Viewbackup_view=li.inflate(,null);
progressDialog=newAlertDialog.Builder(Main.this)
.setTitle("备份正在进行中...")
.setView(backup_view)
.create();
progressDialog.show();
DBHelperhelper=newDBHelper(Main.this);
helper.backupData(privacy);
ProgressBarbar=(ProgressBar)backup_view.findViewById(;
Buttonbtn_backup_ok=(Button)backup_view.findViewById(;
bar.setMax(list.size());
for(inti=0;i<=list.size();i++){
bar.setProgress(i);
}
progressDialog.setTitle("备份完成!
一共"+list.size()+"条记录");
btn_backup_ok.setVisibility(View.VISIBLE);
btn_backup_ok.setOnClickListener(newOnClickListener(){
@Ove
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计