《基于Android的手机通讯录设计说明书.doc》由会员分享,可在线阅读,更多相关《基于Android的手机通讯录设计说明书.doc(35页珍藏版)》请在三一办公上搜索。
1、基于Android的手机通讯录设计说明书武汉交通职业技术学院课程设计报告课程名称:_系 别: 专业班级: 小组成员: 指导教师: 评阅成绩: 基于Andriod环境的通讯录系统设计1系统描述1.1 问题描述学习完计算机相关专业课后,对计算机软硬件相关知识有了一定的了解;基于此,设计与实现一个在Android系统上运行的手机通讯管理软件,实现手机通讯录的基本功能,包括:添加联系人、查看联系人、修改联系人、删除联系人、拨打电话、发送短信、查询联系人,以及联系人的导入导出功能即联系人的备份。主要开发基于Android 的手机的通讯管理软件。以Java语言为基础,结合Android移动开发平台,并利用
2、Android提供的SDK,实现在Android平台上运行的手机通讯录,方便广大手机用户更加便捷地对联系人的信息进行管理。该手机通讯录面向所有的Android手机用户,为他们提供更实际便捷的手机服务,具有拨号、通讯记录等基本功能。该通讯录的数据导出功能是该软件的一个特色,可以实现联系人数据导出到文本,实现数据备份。大家生活当中经常遇到手机丢失,出现故障,和其他一些事故。最担心的就是丢失手机里的电话号码。1.2 功能描述此次设计的软件主要功能有:1 添加联系人:可以添加联系人的基本信息,如:姓名、电话、单位、住址等信息;2 查看信息:查看某个联系人的具体信息;3 查询联系人:根据输入的条件查询联
3、系人;4 修改联系人的信息;5 数据备份与还原:可以将整个通讯录备份到SD卡上,以防止信息丢失、抑可将备份的数据还原到通讯录中;1.3 数据需求本程序的数据为通讯录中的联系人信息,这些信息有用户输入,并保存在Android的SQLite数据库中,主要有:联系人的姓名、手机、家庭电话、公司电话、单位、家庭地址、电子邮件、备注等信息。1.4 设计意义随着3G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。在Google和Android手机联盟的共同推动下,Android在众多手机操作系统中脱颖而出,受到广大消费者的欢迎。手
4、机通讯录作为手机的基本功能之一,每天我们都在频繁地使用着。根据手机功能使用调查显示,有八成以上的消费者使用手机通讯录功能。随着手机通讯录功能的不断加强与完善,手机通讯录对于人们的意义,已不仅仅像记事簿一样显示通讯地址,而是向着个性化、人性化的方向发展4。通讯录从无到有,从英文到中文,经过了十几年的发展历程,今后的发展趋势就是从通讯录发展为名片夹,也就是在一个人名下,可以存储座机、手机、单位、地址、电子邮件等内容。这种名片夹在电话薄的基础上,大大丰富了内容,同时结构也发生了革命性变化,而且随着手机的发展,相信更优秀的通讯录会越来越受到社会各层人士的喜爱。2. 组员分工尹煜:UI界面设计,数据类设
5、计。余迪:Main(Activity)设计,AddNew(Activity)设计。王荔:UserDetail(Activity)设计,MainPrivacy(Activity)设计。3.需求分析3.1 前期调研通过对已有的手机通讯录的研究,对其基本业务流程进行分析,确定出基本的处理需求:用户的行为:增、删、改、查、备份与还原。 增:增加联系人的基本信息; 删:删除已有联系人的基本信息; 改:修改已有联系人的信息; 查:查询联系人的基本信息; 备份与还原:备份该通讯录数据库中的数据到SD卡上,或者从SD卡上还原备份的数据。3.2 数据流图根据“功能分解,逐步求精”的原则,此次需求分析的数据流图主
6、要分为三层:顶层数据流图:确定系统的输入与输出、第一层数据流图:对系统进行第一层功能分解,确定系统的主要工作、第二层数据流图:确定系统详细的工作流图顶层数据流图:底层数据流图:3.3 数据字典数据流图表达了数据和处理的关系,数据字典则是系统中的各类数据描述的集合,是进行详细的数据手机和数据分析做得到的主要成果,可以自己设计一套适合阅读的图表。本设计的数据字典有:联系人的信息,具体如下:名字:联系人信息别名:Contacts描述:联系人的详细信息定义:联系人的信息 = 头像 + 姓名 + 手机号码 + 办公室号码 + 家庭电话 + 职务职称 + 单位名称 + 地址 + 邮编 + Email +
7、其他联系方式 + 备注 位置:联系人信息表4系统设计4.1 总体设计Android手机通讯管理软件主要功能模块包括:联系人添加、联系人查看、联系人编辑、联系人删除、联系人查找、呼叫、发送短信、数据备份与还原、个人空间等,如图5-1所示:图5-1 总体设计图4.2 数据库表结构4.2.1 实体根据需求分析的数据流图,对其进行自底向上的分析。抽象出设计视图,集成局部视图,得到全局的概念结构。本数据库的实体为:联系人信息(头像 ,姓名,手机号码,办公室号码,家庭电话,职务职称,单位名称,地址,邮编,Email,其他联系方式,备注)4.2.2 系统E-R图根据E-R的设计过程,根据初始数据流图设计初始
8、的E-R图,而后将各分E-R图集成,消除冲突、消除冗余,得到最初的E-R图,对其进行分析和根据规范化理论进行规范化,集成视图,最后形成基本的E-R图。其过程如图所示: 联系人实体E-R图图5-2 联系人信息实体E-R图4.2.3 数据库表设计根据上述联系人实体E-R图,设计出数据库的表,如表5-1所示,表5-1 user表的设计字段名数据类型是否为空约束条件备注_idint非空主键自动增量nameText非空mobilephoneText可以为空officephoneTextfamilyphoneTextaddressTextothercontactTextemailTextpositionT
9、extcompanyTextzipcodeTextremark Textimageidintprivacyint隐私用户1普通用户04.3 输入/输出设计在这个系统中,通过对系统的分析,可以识别出参与者:用户。对于用户而言,通讯录上按钮、菜单、输入框是用户向系统输入的操作请求的输入设备,GUI与是用于向用户输出信息的输出设备。按钮、菜单、输入框SQLite数据库GUI系统图5-3通讯录的参与者事件是来自人操作的重要的消息,表5-2给出了通讯录系统中可能发生的所有事件。表5-2系统响应及其执行结果事 件系统响应执行结果1从手机屏幕点击软件系统调用函数入口,启动系统,进入该软件进入该软件,显示联系
10、人列表2点击Menu,选择添加联系人调用添加函数进入添加界面3点击其中一个联系人调用查看/修改某个联系人函数进入联系人详细界面4在联系人详细界面点击Menu,可对联系人进行发送短信调用系统发送短信函数进入发送短信界面5在联系人详细界面点击Menu,可对联系人进行拨打电话调用系统拨打电话函数进入呼叫联系人界面6在联系人详细界面点击Menu,可对联系人进行修改调用修改函数修改联系人信息7在联系人详细界面点击Menu,可对联系人进行删除调用删除函数调用删除函数8在联系人列表界面点击Menu,选择查找调用查找联系人函数显示用户查找结果9在联系人列表界面点击Menu,选择退出调用退出函数退出通讯录软件1
11、0在联系人列表界面点击Menu,选择菜单调用菜单函数先是菜单界面11在菜单界面选择显示所有人信息调用显示函数显示所有人信息12在菜单界面选择删除所有人信息调用删除函数删除所有人信息13在菜单界面选择备份所有人信息调用备份函数备份信息到SD卡14在菜单界面选择还原所有人信息调用还原函数进入还原界面,还原信息到数据库15在菜单界面选择个人空间调用私人空间类进入私人界面其中的输入包括:用户选择的上述按钮、菜单,还包括输入框的内容,包括:联系人头像、联系人姓名、手机号、家庭电话、单位电话、单位名、职位、住址、邮编、备注等信息。其中输出包括:根据用户的选择输出的相应内容,如:联系人列表显示信息、联系人详
12、细信息等。4.4 处理过程设计4.4.1 业务流程图用户进入手机通讯管理软件后,会看到联系人列表界面。联系人列表界面主菜单中包括:添加、搜索、删除、菜单、退出;其中菜单又包括:显示所有联系人、删除所有联系人、备份信息到SD卡、还原数据到通讯录、个人空间、退出。点击添加联系人,则进入联系人添加界面,添加成功后返回联系人列表界面。点击搜索菜单,则进入联系人搜索界面,输入联系人的全名或一个字,即可查找到相关联系人,点击联系人会进入联系人查看界面,可以对联系人进行编辑、删除、拨打电话、发送短信,长按某分联系人,可以选中该联系人,点击删除,会删除已经标记的联系人。点击菜单,可进入菜单界面:点击所有联系人
13、,可以显示所有人信息、点击删除所有联系人,可以删除所有人信息、点击备份信息到SD卡,可以将数据库数据备份到SD卡、点击还原数据到通讯录,可以从SD卡上备份的数据还原到数据库、点击个人空间,输入密码并进入个人操作界面、点击退出,退出到主界面。该软件的业务流程如图5-4所示:用户手机通讯管理软件添加联系人编辑联系人删除联系人联系人列表联系人搜索联系人菜单呼叫联系人发送短信退出通讯录显示所有联系人删除所有联系人备份还原个人空间退出菜单图5-4 系统业务流程图4.4.2 系统Activity设计根据Android的Activity设计原则,设计出整个系统的界面,如图5-5所示:图5-5 系统Activ
14、ity设计图4.4.3 功能处理设计1. 浏览联系人1 用例名称:浏览联系人2 用例描述:浏览联系人列表3 角色:手机用户4 前置条件:通讯录中已有联系人5 后置条件:显示出所有联系人6 基本路径A. 打开通讯录B. 系统查询数据库C. 显示出联系人列表2. 查看联系人1 用例名称:查看联系人2 用例描述:查看联系人信息3 角色:手机用户4 前置条件:通讯录中已有联系人5 后置条件:给出联系人信息6 基本路径A.查看联系人信息B.给出相关信息3. 编辑联系人1 用例名称:编辑联系人2 用例描述:编辑联系人信息3 角色:手机用户4 前置条件:通讯录中已有联系人5 后置条件:修改联系人信息6 基本
15、路径A.输入要修改的新信息B.修改联系人信息4. 删除联系人1 用例名称:删除联系人2 用例描述:删除联系人3 角色:手机用户4 前置条件:通讯录中已有联系人5 后置条件:删除联系人6 基本路径A.选中联系人,选择删除操做B.询问是否确定删除操作C.删除联系人上述三种业务操作的流程图开始联系人列表单击某个联系人查看/修改/删除跳转到联系人信息Activity结束联系人数据库图5-6 查看/修改/删除流程图5. 查询联系人1 用例名称:查询联系人2 用例描述:查询联系人信息3 角色:手机用户4 前置条件:通讯录中已有联系人5 后置条件:给出联系人信息6 基本路径A.输入查找的数据B.查询列表根据
16、数据动态现实出信息点击Menu菜单,选择查找联系人跳转SearchContactActivity,在查找联系人界面中,TextView被监听,根据TextView输入的数据,进行查询后在List中显示。开始联系人列表按查询按钮跳转到查看联系人Activity结束输入查询条件显示信息修改/删除操作打电话、发短信联系人数据库图5-7 查询联系人流程图6. 菜单操作1 用例名称:菜单操作2 用例描述:选择菜单功能3 角色:手机用户4 前置条件:单击菜单按钮5 后置条件:进入菜单界面6 基本路径A.单击菜单按钮B.选择菜单的功能 开始联系人列表按查询按钮跳转到菜单Activity结束查看所有联系人数据
17、库删除所有备份还原个人空间退出菜单SD卡数据图5-8 菜单操作流程图4.4.4 系统界面设计本系统一共有11个页面文件,主要的界面如下:Main.xml文件,如图5-9所示,显示已经存储的联系人数据数据:图5-9 系统主界面AddNew.xml文件,如图5-10所示,显示添加联系人的选项,完成联系人的添加:图5-10 添加联系人界面Main-menu_grid.xml 显示弹出的主菜单的对话图5-11 主菜单界面5.详细设计完成上述的操作后,便是进行代码的编写和调试,使用Java语言和Android API进行程序设计。5.1 开发环境开发软件:Eclipse 、JDK1.7、Android
18、SDK 、ADT 开发环境:Windows7虚拟设备:Android AVD 开发版本:Android 2.15.2 程序设计5.2.1 数据类设计用户User类如图6-1所示,主要用于暂存页面获得的信息,然后再存入数据库中。图6-1 User类DBhelper类如图6-2所示,主要完成数据库的表的创建和数据的添加删除以及备份的功能,以下是各个具体的函数和变量。图6-2 DBhelper类insert(User)函数实现:完成数据的插入,并根据插入是否成功,返回一个长整型的值getAllUser(boolean)的实现:完成数据的显示,使用SQLiteDatabase.query() 方法,利
19、用cursor对象,一一取出字段的值,放入一个hasp表中,最后存入数组列表中,返回给数组列表。modify(User )函数的实现:使用user类中的字段,更新数据库delete(int)函数的实现:根据数据的id进行单个数据的删除deleteAll(int )函数的实现:删除所有数据getTotalCount() 函数的实现:使用cursor对象getint()方法得到数据的个数getUsers(String boolean) 函数的实现:完成数据的查找,使用SQL语句中的模糊查找,然后放入数组列表,进行返回。deleteMarked(ArrayList)函数的实现:删除被标记多个数据的数
20、据,backupData(boolean)函数的实现:新建一个字符串,把当前所有数据的值写成一个insert 语句存入字符串中,以便备份的时候能够插入到数据库中saveDataToFile(string,boolean)函数的实现:把插入字符串写到zpcontacData下的文件中public void backupData(boolean privacy) StringBuffer sqlBackup = new StringBuffer();Cursor cursor = null;if(privacy) cursor = dbInstance.query(DB_TABLENAME, ne
21、w String_id,name,mobilephone,officephone,familyphone,address,othercontact,email,position,company,zipcode,remark,imageid,privacy, privacy=1, null, null, null, null); else cursor = dbInstance.query(DB_TABLENAME, new String_id,name,mobilephone,officephone,familyphone,address,othercontact,email,position
22、,company,zipcode,remark,imageid,privacy, privacy=0,null, null, null, null); while(cursor.moveToNext() sqlBackup.append(insert into + DB_TABLENAME + (name,mobilephone,officephone,familyphone,address,othercontact,email,position,company,zipcode,remark,imageid,privacy).append( values ().append(cursor.ge
23、tString(cursor.getColumnIndex(name).append(,).append(cursor.getString(cursor.getColumnIndex(mobilephone).append(,).append(cursor.getString(cursor.getColumnIndex(officephone).append(,).append(cursor.getString(cursor.getColumnIndex(familyphone).append(,).append(cursor.getString(cursor.getColumnIndex(a
24、ddress).append(,).append(cursor.getString(cursor.getColumnIndex(othercontact).append(,).append(cursor.getString(cursor.getColumnIndex(email).append(,).append(cursor.getString(cursor.getColumnIndex(position).append(,).append(cursor.getString(cursor.getColumnIndex(company).append(,).append(cursor.getS
25、tring(cursor.getColumnIndex(zipcode).append(,).append(cursor.getString(cursor.getColumnIndex(remark).append(,).append(cursor.getInt(cursor.getColumnIndex(imageid).append(,).append(cursor.getInt(cursor.getColumnIndex(privacy).append();).append(n);saveDataToFile(sqlBackup.toString(),privacy);restoreDa
26、ta(string)函数的实现:载入备份文件,读出插入字符串,写到数据库中,完成备份findFile(string)函数的实现:判断文件是否存在,能否备份MyDBHleper类:继承于SQLiteOpenHelper,主要有俩个函数,onCreate()和onUpgrade()onCreate()函数主要用于数据库中表的创建。onUpgrade()函数主要用于数据库的版本不对应,重新创建表。5.2.2 Main(Activity)设计如图6-3所示,显示了 Main(Activity)涉及的变量以及调用和重写的函数:图6-3 Main(Activity)onCreate(Bundle) 为主函
27、数,创建ListView对象,将数据与adapter集合起来,显示给用户看,然后响应ListView的点击事件,跳转用户详细信息页面。onActivityResult()函数的实现:此函数主要是判断是从那些页面跳转到主页面,并刷新主页面onKeyDown(int KeyEvent)的函数实现:响应点击Menu按钮时的事件,用于设置底部菜单是否可见loadBottomMenu() 函数的实现:主菜单的点击事件的响应,实现各种功能模块getMenuAdapter(string) 函数的实现:将图片和文字设置在一个集合中,组成一个菜单5.2.3 AddNew(Activity)设计如图6-4所示,A
28、ddNew(Activity)用到的变量以及函数图6-4 AddNew(Activity)onCreate()函数的实现:实现头像的选择,数据的填写。loadImage() 函数实现:使用gallery控件和imageswith实现头像的加载和选择ImageAdapter类的实现自定义头像适配器public View makeView() ImageView view = new ImageView(this);view.setBackgroundColor(0xff);view.setScaleType(ScaleType.FIT_CENTER);view.setLayoutParams(n
29、ew ImageSwitcher.LayoutParams(90,90);return view;initImageChooseDialog()函数实现:完成图像的选择对话框5.2.4 UserDetail(Activity)设计函数基本同AddNew(Activity),增加了修改按钮的点击事件和删除按钮的点击事件。增加的函数有:loadUserData():获得控件,为控件赋值setEditTextAble():把页面中的控件可修改setColorToBlack()设置显示的字体颜色为黑色setColorToWhite()设置显示的字体颜色为白色setEditTextDisable()把设
30、置控件不可修改private void modify() 数据更新函数delete() 数据删除函数onCreateOptionsMenu(Menu)的实现:通讯菜单的实现,完成联系人的打电话,发短信,发邮件功能5.2.5 MainPrivacy(Activity)设计如图6-5所示,MainPrivacy(Activity)涉及到的变量以及函数图6-5 MainPrivacy(Activity)类图用到的函数:onCreate();onActivityResult();onKeyDown(int, KeyEvent);loadBottomMenu();loadMainMenuDialog()
31、;loadSearchLinearout();getMenuAdapter(String, int);onDestroy();函数与Main(Activity)的函数相同,不再赘述。图7-1 添加联系人测试图6设计总结6.1 设计特点学习完计算机等相关专业课程后,对计算机软硬件知识有了一定的认识和了解,特别是学习完高级语言程序设计、Java语言程序设计,数据库导论、操作系统、软工程等专业课,对计算机软件开发有了一定了解。而课程设计便是对学习效果的检验。课程设计不仅可以锻炼我们独立思考问题、解决问题的能力,而且可以培养我们的整体性思维的能力;通过课程设计,加深了对程序设计、数据库设计、操作系统、
32、软件工程等知识的认识。利用android的组件和自带数据库Sqlite实现了一个基于Android系统的通讯录软件,基本实现了需要的功能,达到了预期的目的。完成本系统,。首先要熟悉所用到的Android的组件,Android系统为我们提供了很多的组件的函数,如何正确使用这些函数,正确使用参数,并且加入自己的函数,实现自己的功能,这是一个考验。在数据库方面,使用系统自带的数据库,只要在程序中调用继承于SQLiteOpenHelper 的MyDBhelper数据库帮助类完成表的建立,然后根据具体的要求,自己编写数据库的添加,删除,更新等操作。页面之间值传递问题,只要使用Android的传信员-in
33、tent,在跳转之前,新建一个intent,利用intent.putExtras();放入传递的数据,在新页面调用intent.getExtras()获得传递的数据。页面之间跳转,通过onActivityResult()判断是从哪个页面返回主页面。出色的地方本次课程设计,刚开始看到课程设计题目时,感觉难度不是很大,因为Android对我是一个全心的东西,但是当我细想时,它是基于java语言的,而且网络资源丰富,在一定程度上坚定了我的信息,最终设计出这款通讯录软件。在设计的过程中充分考虑到了系统的易用性和可用性。系统界面应设计的美观、友好、易于操作、功能健全。系统的基本功能都已实现,而且添加了自
34、己的特色(数据导入导出功能),使这个系统与众不同。设此款通讯录软件包含了基本的通讯录的功能:增、删、改、查,并且还加入了头像选择、个人空间、数据备份与还原、支持模糊查询、支持选择单个和多个联系人等特色功能!不足的地方程序设计的风格上还有待完善,缺少注释,是程序对别人难以阅读和理解,也不便于调试与完善。查询功能还有待完善,虽然支持精准查询和模糊查寻,但是查询速度不是很好,查询速度还有待优化。6.2 经验与收获这次课程设计,与以往主要任务是编程不同,这次对自学能力的要求、编程的要求、数据库知识和软件工程设计方面的知识有很高的要求,不再是一拿到题目就是考试考虑编程了,而要按照软件工程的方法,对各个主要阶段活动都要进行,如果前期的准备工作没有做好,最终会导致设计出的数据库连基本的题目要求都不能满足,更不谈推广应用了,因此必须从头开始,费时又费力,因此设计的前期阶段:课题研究调查、背景知识准备与学习、需求分析、系统总体设计、等的工作必须做好,否则后面的工作很难展开,白费力气。此次课设不仅使我对Android上的应用程序的开发方法和原理、软件工程各个阶段活动的任务和目的有所掌握,对自己的自学能力有了一定的考验和提升,而且对编程知识也有所提升,对java语言结合Android API 开发应用与普通程序设计的异同都有所认识 ,大大提升了自己的编程能力。