




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学计算机能力拓展训练任务书课 程 设 计题 目基于andriod环境的通讯录系统设计学 院计算机科学与技术专 业计算机科学与技术班 级计算机班姓 名指导教师毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。 作者签名: 日期: 毕业论文(设计)授权使用说明本论文(设计)作者完全了解*学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。学校可以公布论文(设计)的全部或部分内容。保密的论文(设计)在解密后适用本规定。 作者签名: 指导教师签名: 日期: 日期: 注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用a4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订3)其它目 录1系统描述11.1 问题描述11.2 功能描述11.3 数据需求21.4 设计意义22.背景介绍22.1 android系统概述22.2 android开发组件42.2.1 activity组件42.2.2 service 组件72.2.3 broadcastreceiver 组件82.2.4 content provider 组件82.3 android数据库92.3.1 sqlite数据库92.3.2 sqlite数据库特点103.可行性研究113.1 技术可行性113.2 经济可行性113.3 操作可行性114.需求分析124.1 前期调研124.2 数据流图124.3 数据字典135系统设计145.1 总体设计145.2 数据库表结构145.2.1 实体145.2.2 系统e-r图155.2.3 数据库表设计155.3 输入/输出设计165.4 处理过程设计175.4.1 业务流程图175.4.2 系统activity设计185.4.3 功能处理设计195.4.4 系统界面设计236.详细设计286.1 开发环境286.2 程序设计296.2.1 数据类设计296.2.2 main(activity)设计326.2.3 addnew(activity)设计336.2.4 userdetail(activity)设计346.2.5 mainprivacy(activity)设计357.系统测试367.1 程序调试367.2 系统的测试367.2.1 测试的意义及目的367.2.2 测试步骤367.2.3 测试的主要内容377.3 测试数据387.3.1 添加模块测试387.3.2 查看编辑模块测试397.3.3 查询模块测试417.3.4 删除模块测试437.3.5 备份与还原模块测试468设计总结488.1 设计特点488.2 经验与收获49本科生课程设计成绩评定表5151计算机能力拓展训练任务书学生姓名: 专业班级: 计算机班 指导教师: 工作单位: 计算机科学与技术学院 题 目: 初始条件:理论:.net、java、linux、android或windows phone环境, oracle、sqlite、sql server、sql server ce或mysql数据库, c#、eclipse、c+或其它合适、有效的开发工具,等等。实践:计算机科学系实验中心提供计算机及软件开发环境。要求完成的主要任务: (1)系统需求分析:使用软件工程所学的知识对拟开发的系统进行数据需求和功能需求分析,确定开发环境和工具软件。 (2)系统设计:根据系统需求分析进行概要设计和详细设计,在确定好的开发环境中利用确定的工具软件进行系统实现。(3)编制好程序后,设计若干测试用例,上机测试所设计的原型系统。(4)设计报告按格式要求书写。设计报告正文的内容应包括:1)系统描述 包括问题说明、数据需求和功能需求。2)系统设计 包括总体设计、数据库表结构、输入/输出设计、用户界面设计、处理过程设计。3)系统测试 包括测试用例的描述、测试方法和测试结果。4)设计的特点、不足、收获和体会。时间安排:1、暑期完成。2、下学期开学第一周到计算机学院实验中心(三楼)检查程序、交课程设计报告、源程序(cd盘)。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日基于andriod环境的通讯录系统设计1系统描述1.1 问题描述学习完计算机相关专业课后,对计算机软硬件相关知识有了一定的了解;基于此,设计与实现一个在android系统上运行的手机通讯管理软件,实现手机通讯录的基本功能,包括:添加联系人、查看联系人、修改联系人、删除联系人、拨打电话、发送短信、查询联系人,以及联系人的导入导出功能即联系人的备份。主要开发基于android 的手机的通讯管理软件。以java语言为基础,结合android移动开发平台,并利用android提供的sdk,实现在android平台上运行的手机通讯录,方便广大手机用户更加便捷地对联系人的信息进行管理。该手机通讯录面向所有的android手机用户,为他们提供更实际便捷的手机服务,具有拨号、通讯记录等基本功能。该通讯录的数据导出功能是该软件的一个特色,可以实现联系人数据导出到文本,实现数据备份。大家生活当中经常遇到手机丢失,出现故障,和其他一些事故。最担心的就是丢失手机里的电话号码。1.2 功能描述此次设计的软件主要功能有:1 添加联系人:可以添加联系人的基本信息,如:姓名、电话、单位、住址等信息;2 查看信息:查看某个联系人的具体信息;3 查询联系人:根据输入的条件查询联系人;4 修改联系人的信息;5 数据备份与还原:可以将整个通讯录备份到sd卡上,以防止信息丢失、抑可将备份的数据还原到通讯录中;1.3 数据需求本程序的数据为通讯录中的联系人信息,这些信息有用户输入,并保存在android的sqlite数据库中,主要有:联系人的姓名、手机、家庭电话、公司电话、单位、家庭地址、电子邮件、备注等信息。1.4 设计意义随着3g网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。在google和android手机联盟的共同推动下,android在众多手机操作系统中脱颖而出,受到广大消费者的欢迎。手机通讯录作为手机的基本功能之一,每天我们都在频繁地使用着。根据手机功能使用调查显示,有八成以上的消费者使用手机通讯录功能。随着手机通讯录功能的不断加强与完善,手机通讯录对于人们的意义,已不仅仅像记事簿一样显示通讯地址,而是向着个性化、人性化的方向发展4。通讯录从无到有,从英文到中文,经过了十几年的发展历程,今后的发展趋势就是从通讯录发展为名片夹,也就是在一个人名下,可以存储座机、手机、单位、地址、电子邮件等内容。这种名片夹在电话薄的基础上,大大丰富了内容,同时结构也发生了革命性变化,而且随着手机的发展,相信更优秀的通讯录会越来越受到社会各层人士的喜爱。2.背景介绍2.1 android系统概述android一词的本义指机器人,同时也是google在2007年11月5日宣布的基于linux内核的开源手机系统的名称,中文注册商标安致, 该平台由操作系统、中间件、用户界面和应用软件组成,是一个为移动终端打造的真正开放和完整的智能手机系统。其早期为google开发,后由开放手机联盟( open handset alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分,底层以linux内核为基础,由c语言开发,只提供基本功能;中间层包括数据库library和虚拟机virtual machine,由c+开发;最上层是由各公司自行开发,以java编写的各种应用软件,如通话程序,短信程序等。android平台架构:android平台整体自底向上由以下四个层次组成:linux内核层、android运行库和其他库层、应用框架层、应用程序层。1 linux内核层android 基于linux version 2.6.23内核开发的,主要是添加了一个名为goldfish的虚拟cpu以及android运行。所需的特定驱动代码,该层用来提供系统的底层服务,包括安全机制、存管理、进程管理、网络堆栈及一系列驱动模块。作为一虚拟的中间层,该层位于硬件和软件层之间。但这个内核操作系统并非类gnu/linux的,所以其系统库、系统初始化和编程接口都和标准linux系统有所不同的。它没有采用虚拟内存文件系统。而是采用yaffs2文件系统yaffsyetanotherflash file system文件系统是一个开源的,专门为 nand flash 设计的文件系统,具有很好的可移植性,也是一种日志型文件系统,能够在 linux,uclinux和 windows ce 上运行。yaffs 目前有 yaffs 和 yaffs2 两个版本,一般来说,yaffs 对小页面528 字节页有很好的支持,而更大的页面2k 64字节页就需要支持超大容量的 nand flash。所以采用支持大页面的 yaffs2文件系统。2 android运行库和其他库层android运行库包含一组核心库和dalvik虚拟机。同时android提供了丰富的库类支持且大部分为开源代码,如采用的数据库为sqlite。android选择它作为移动终端的嵌入式数据库有以下优点,它无需安装和管理配置,它是一个存储在单一磁盘文件中的完整数据库,体积小只有250kb但支持数据库大小至2tb,提供了对事务功能和并发处理的支持,而且比目前流行的大多数数据库运行速度快。3 应用框架层在应用框架android开发人员可以跟那些核心应用一样拥有访问框架apis的全部权限。应用的系统机构化设计简化了各组件之间的重用,任何应用都可以分发自己的足见,任何应用也可以使用这些分发的足见。4 应用程序层android本身会附带一些核心的应用程序,包括e-mail客户端、短信程序、日历、地图、浏览器、通讯录等等,目前所有的应用程序都是由java语言开发的。图2-1 android体系结构2.2 android开发组件android开发四大组件分别是:活动(activity): 用于表现功能;服务(service): 后台运行服务,不提供界面呈现;广播接收器(broadcastreceiver):用于接收广播;内容提供商(content provider): 支持在多个应用中存储和读取数据,相当于数据库。2.2.1 activity组件android 中,activity 是所有程序的根本,所有程序的流程都运行在activity 之中,activity可以算是开发者遇到的最频繁,也是android 当中最基本的模块之一。一般一个android 应用是由多个activity 组成的,这多个activity 之间可以进行相互跳转,每个activity都是一个单独的类,它扩展实现了activity基础类。这个类显示为一个有views组成的用户界面,并响应事件。大多数程序有多个activity。某些情况下,一个activity可能会给前一个activity返回值。打开一个新界面后,前一个界面被暂停,并放入历史栈中。使用者可以回溯前面已经打开的存放在历史栈中的界面,也可以从历史栈中删除没有价值的界面。1 activity的生命周期如图2-1所示,activity的5中状态之间的如何切换与运作图2-2 activity的生命周期一个activity的启动顺序:oncreate()-onstart()-onresume()当另一个activity启动时:第一个activity onpause()-第二个activityoncreate()-onstart()-onresume()-第一个activityonstop()当返回到第一个activity时:第二个activity onpause()- 第一个activityonrestart()-onstart()-onresume()-第二个activityonstop()-ondestroy()一个activity的销毁顺序:情况一:onpause()-情况二:onpause()-onstop()-情况三:onpause()-onstop()-ondestroy()每一个活动activity都处于某一个状态,对于开发者来说,是无法控制其应用程序处于某一个状态的,这些均由系统来完成。但是当一个活动的状态发生改变的时候,开发者可以通过调用 onxx() 的方法获取到相关的通知信息。在实现 activity 类的时候,通过覆盖override这些方法即可在你需要处理的时候来调用。oncreate : 当活动第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。 oncreate 方法有一个参数,该参数可以为空null,也可以是之前调用 onsaveinstancestate ()方法保存的状态信息。onstart: 该方法的触发表示所属活动将被展现给用户。onresume:当一个活动和用户发生交互的时候,触发该方法。 onpause: 当一个正在前台运行的活动因为其他的活动需要前台运行而转入后台运行的时候,触发该方法。这时候需要将活动的状态持久化,比如正在编辑的数据库记录等。onstop: 当一个活动不再需要展示给用户的时候,触发该方法。如果内存紧张,系统会直接结束这个活动,而不会触发 onstop 方法。 所以保存状态信息是应该在onpause时做,而不是onstop时做。活动如果没有在前台运行,都将被停止或者linux管理进程为了给新的活动预留足够的存储空间而随时结束这些活动。在一些情况下,onpause方法或许是活动触发的最后的方法,因此开发者需要在这个时候保存需要保存的信息。onrestart: 当处于停止状态的活动需要再次展现给用户的时候,触发该方法。ondestroy:当活动销毁的时候,触发该方法。和 onstop 方法一样,如果内存紧张,系统会直接结束这个活动而不会触发该方法。onsaveinstancestate :系统调用该方法,允许活动保存之前的状态,比如说在一串字符串中的光标所处的位置等。2 activity栈每个activity的状态是由它在activity栈(是一个后进先出lifo,包含所有正在运行activity的队列)中的位置决定的。当一个新的activity启动时,当前的活动的activity将会移到activity栈的顶部。 如果用户使用后退按钮返回的话,或者前台的activity结束,活动的activity就会被移出栈消亡,而在栈上的上一个活动的activity将会移上来并变为活动状态。如图2-3所示,activity在栈中的活动顺序:图2-3 activity栈每个activity都有一个默认窗体;另外activity也会使用额外的窗体,例如:弹出式对话框,窗体中的元素是由view类的对象生成的,它们都继承自基类view。2.2.2 service 组件service 是android 系统中的一种组件,它跟activity 的级别差不多,但是它不能自己运行,只能后台运行,并且可以和其他组件进行交互。service 是没有界面的长生命周期的代码。service 是一种程序,它可以运行很长时间,但是它却没有用户界面。开启service有两种方式: (1) context.startservice():service会经历oncreate - onstart(如果service还没有运行,则android先调用oncreate()然后调用onstart();如果service已经运行,则只调用onstart(),所以一个service的onstart方法可能会重复调用多次 );stopservice的时候直接ondestroy,如果是调用者自己直接退出而没有调用stopservice的话,service会一直在后台运行。该service的调用者再启动起来后可以通过stopservice关闭service。 注意,多次调用context.startservice()不会嵌套(即使会有相应的onstart()方法被调用),所以无论同一个服务被启动了多少次,一旦调用context.stopservice()或者stopself(),他都会被停止。补充说明:传递给startservice()的intent对象会传递给onstart()方法。调用顺序为:oncreate - onstart(可多次调用) - ondestroy。 (2) context.bindservice():service会经历oncreate() - onbind(),onbind将返回给客户端一个ibind接口实例,ibind允许客户端回调服务的方法,比如得到service运行的状态或其他操作。这个时候把调用者(context,例如activity)会和service绑定在一起,context退出了,srevice就会调用onunbind - ondestroyed相应退出,所谓绑定在一起就共存亡了 。2.2.3 broadcastreceiver 组件在android 中,broadcast 是一种广泛运用的在应用程序之间传输信息的机制。而broadcastreceiver 是对发送出来的broadcast进行过滤接受并响应的一类组件。可以使用broadcastreceiver 来让应用对一个外部的事件做出响应。例如,当电话呼入这个外部事件到来的时候,可以利用broadcastreceiver 进行处理。broadcastreceiver不能生成ui,也就是说对于用户来说不是透明的,用户是看不到的。broadcastreceiver通过notificationmanager 来通知用户这些事情发生了。broadcastreceiver 既可以在androidmanifest.xml 中注册,也可以在运行时的代码中使用context.registerreceiver()进行注册。只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用context.sendbroadcast () 将它们自己的intent broadcasts广播给其他应用程序。2.2.4 content provider 组件content provider 是android提供的第三方应用数据的访问方案。在android中,对数据的保护是很严密的,除了放在sd卡中的数据,一个应用所持有的数据库、文件、等等内容,都是不允许其他直接访问的。andorid当然不会真的把每个应用都做成一座孤岛,它为所有应用都准备了一扇窗,这就是content provider。应用想对外提供的数据,可以通过派生contentprovider类, 封装成一枚content provider,每个content provider都用一个uri作为独立的标识,形如:content:/com.xxxxx。所有东西看着像rest的样子,但实际上,它比rest 更为灵活。和rest类似,uri也可以有两种类型,一种是带id的,另一种是列表的。另外,content provider不和rest一样只有uri可用,还可以接受projection,selection,orderby等参数,这样,就可以像数据库那样进行投影,选择和排序。查询到的结果,以cursor的形式进行返回,调用者可以移动cursor来访问各列的数据。content provider屏蔽了内部数据的存储细节,向外提供了上述统一的接口模型,这样的抽象层次,大大简化了上层应用的书写,也对数据的整合提供了更方便的途径。content provider内部,常用数据库来实现,android提供了强大的sqlite支持,但很多时候,你也可以封装文件或其他混合的数据。2.3 android数据库2.3.1 sqlite数据库sqlite,是一款轻型的数据库,是遵守acid的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百k的内存就够了。它能够支持windows/linux/unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 tcl、c#、php、java等,还有odbc接口,同样比起mysql、postgresql这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。sqlite第一个alpha版本诞生于2000年5月. 至今已经有10个年头,sqlite也迎来了一个版本 sqlite 3已经发布。sqlite数据类型:一般数据采用的固定的静态数据类型,而sqlite采用的是动态数据类型,会根据存入值自动判断。sqlite具有以下五种常用的数据类型:null:这个值为空值varchar(n):长度不固定且其最大长度为n的字串,n不能超过 4000char(n):长度固定为n的字串,n不能超过 254。integer:值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8.real:所有值都是浮动的数值,被存储为8字节的ieee浮动标记序号.text:值为文本字符串,使用数据库编码存储(tutf-8, utf-16be or utf-16-le).blob:值是blob数据块,以输入的数据格式进行存储。如何输入就如何存储,不改变格data:包含了 年份、月份、日期。time: 包含了 小时、分钟、秒。2.3.2 sqlite数据库特点1. 轻量级sqlite和c/s模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用sqlite一般只需要带上它的一个动态库,就可以分享它的全部功能。而且动态库的尺寸也相当小。2. 独立性。sqlite数据库的核心引擎不依赖第三方软件,使用它也不需要“安装”。所以在部署的使用能省去不少麻烦。3. 隔离性sqlite数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件内,方便管理和维护。4. 跨平台性sqlite数据库支持大部分操作系统,除了我们在电脑上使用的操作系统之外。很多手机操作系统都可以运行,比如android、windows phone、symbin、plam、ios等。5. 多语言接口sqlite数据库支持很多编程语言接口,比如c/c+、java等,得到很多开发者的喜爱。6. 安全性sqlite数据库通过数据库级上的独占性和共享锁实现独立事务处理。这就意味着多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程向数据库执行写入操作之前,必须取得独占锁。在发出独占锁后,其他的读或写操作将不会在发生。3.可行性研究3.1 技术可行性本系统设计到的技术因素主要有如下几个方面: ui页面的设计 android控件的各种函数的应用,实现其功能 activity的之间的跳转,页面之间值得传递方式,如何利用intent 数据库的创建和操作,如何把联系人的信息存储到数据库中,并把它显示出来 配置环境,装有windows 电脑一台,安装eclipse,安装android sdk,安装jdk,并配置了环境变量,安装 adt插件。开发技术:本次设计用的是java开发语言和android相关开发知识,由于android是开源项目,基于java,语法上并不难,网络上学习资源较多,因此技术上可行,调试相对简单。硬件支持:当前的计算机硬件配置也完全能满足开发的需求,能够良好的运行哥开发软件和android虚拟机。软件方面:相关的开发软件,可以方便的从网上下载,易于获得,且可以满足系统需求。综上所述:技术上可行!3.2 经济可行性由于软件资源可以从网络上免费获得,因此,软件尚不需要花费,另外,由于android有自己的运行虚拟机,因此开发的应用不用在android实体机上运行,省去了一部分硬件成本,因此经济上可行。3.3 操作可行性开发的应用完全可以运行在android虚拟机上,当然也可以运行在实体机上,而且整个应用操作上相对简单,操作上可行。4.需求分析4.1 前期调研通过对已有的手机通讯录的研究,对其基本业务流程进行分析,确定出基本的处理需求:用户的行为:增、删、改、查、备份与还原。 增:增加联系人的基本信息; 删:删除已有联系人的基本信息; 改:修改已有联系人的信息; 查:查询联系人的基本信息; 备份与还原:备份该通讯录数据库中的数据到sd卡上,或者从sd卡上还原备份的数据。4.2 数据流图根据“功能分解,逐步求精”的原则,此次需求分析的数据流图主要分为三层:顶层数据流图:确定系统的输入与输出、第一层数据流图:对系统进行第一层功能分解,确定系统的主要工作、第二层数据流图:确定系统详细的工作流图顶层数据流图:底层数据流图:4.3 数据字典数据流图表达了数据和处理的关系,数据字典则是系统中的各类数据描述的集合,是进行详细的数据手机和数据分析做得到的主要成果,可以自己设计一套适合阅读的图表。本设计的数据字典有:联系人的信息,具体如下:名字:联系人信息别名:contacts描述:联系人的详细信息定义:联系人的信息 = 头像 + 姓名 + 手机号码 + 办公室号码 + 家庭电话 + 职务职称 + 单位名称 + 地址 + 邮编 + email + 其他联系方式 + 备注 位置:联系人信息表5系统设计5.1 总体设计android手机通讯管理软件主要功能模块包括:联系人添加、联系人查看、联系人编辑、联系人删除、联系人查找、呼叫、发送短信、数据备份与还原、个人空间等,如图5-1所示:图5-1 总体设计图5.2 数据库表结构5.2.1 实体根据需求分析的数据流图,对其进行自底向上的分析。抽象出设计视图,集成局部视图,得到全局的概念结构。本数据库的实体为:联系人信息(头像 ,姓名,手机号码,办公室号码,家庭电话,职务职称,单位名称,地址,邮编,email,其他联系方式,备注)5.2.2 系统e-r图根据e-r的设计过程,根据初始数据流图设计初始的e-r图,而后将各分e-r图集成,消除冲突、消除冗余,得到最初的e-r图,对其进行分析和根据规范化理论进行规范化,集成视图,最后形成基本的e-r图。其过程如图所示: 联系人实体e-r图图5-2 联系人信息实体e-r图5.2.3 数据库表设计根据上述联系人实体e-r图,设计出数据库的表,如表5-1所示,表5-1 user表的设计字段名数据类型是否为空约束条件备注_idint非空主键自动增量nametext非空mobilephonetext可以为空officephonetextfamilyphonetextaddresstextothercontacttextemailtextpositiontextcompanytextzipcodetextremark textimageidintprivacyint隐私用户1普通用户05.3 输入/输出设计在这个系统中,通过对系统的分析,可以识别出参与者:用户。对于用户而言,通讯录上按钮、菜单、输入框是用户向系统输入的操作请求的输入设备,gui与是用于向用户输出信息的输出设备。按钮、菜单、输入框sqlite数据库gui系统图5-3通讯录的参与者事件是来自人操作的重要的消息,表5-2给出了通讯录系统中可能发生的所有事件。表5-2系统响应及其执行结果事 件系统响应执行结果1从手机屏幕点击软件系统调用函数入口,启动系统,进入该软件进入该软件,显示联系人列表2点击menu,选择添加联系人调用添加函数进入添加界面3点击其中一个联系人调用查看/修改某个联系人函数进入联系人详细界面4在联系人详细界面点击menu,可对联系人进行发送短信调用系统发送短信函数进入发送短信界面5在联系人详细界面点击menu,可对联系人进行拨打电话调用系统拨打电话函数进入呼叫联系人界面6在联系人详细界面点击menu,可对联系人进行修改调用修改函数修改联系人信息7在联系人详细界面点击menu,可对联系人进行删除调用删除函数调用删除函数8在联系人列表界面点击menu,选择查找调用查找联系人函数显示用户查找结果9在联系人列表界面点击menu,选择退出调用退出函数退出通讯录软件10在联系人列表界面点击menu,选择菜单调用菜单函数先是菜单界面11在菜单界面选择显示所有人信息调用显示函数显示所有人信息12在菜单界面选择删除所有人信息调用删除函数删除所有人信息13在菜单界面选择备份所有人信息调用备份函数备份信息到sd卡14在菜单界面选择还原所有人信息调用还原函数进入还原界面,还原信息到数据库15在菜单界面选择个人空间调用私人空间类进入私人界面其中的输入包括:用户选择的上述按钮、菜单,还包括输入框的内容,包括:联系人头像、联系人姓名、手机号、家庭电话、单位电话、单位名、职位、住址、邮编、备注等信息。其中输出包括:根据用户的选择输出的相应内容,如:联系人列表显示信息、联系人详细信息等。5.4 处理过程设计5.4.1 业务流程图用户进入手机通讯管理软件后,会看到联系人列表界面。联系人列表界面主菜单中包括:添加、搜索、删除、菜单、退出;其中菜单又包括:显示所有联系人、删除所有联系人、备份信息到sd卡、还原数据到通讯录、个人空间、退出。点击添加联系人,则进入联系人添加界面,添加成功后返回联系人列表界面。点击搜索菜单,则进入联系人搜索界面,输入联系人的全名或一个字,即可查找到相关联系人,点击联系人会进入联系人查看界面,可以对联系人进行编辑、删除、拨打电话、发送短信,长按某分联系人,可以选中该联系人,点击删除,会删除已经标记的联系人。点击菜单,可进入菜单界面:点击所有联系人,可以显示所有人信息、点击删除所有联系人,可以删除所有人信息、点击备份信息到sd卡,可以将数据库数据备份到sd卡、点击还原数据到通讯录,可以从sd卡上备份的数据还原到数据库、点击个人空间,输入密码并进入个人操作界面、点击退出,退出到主界面。该软件的业务流程如图5-4所示:用户手机通讯管理软件添加联系人编辑联系人删除联系人联系人列表联系人搜索联系人菜单呼叫联系人发送短信退出通讯录显示所有联系人删除所有联系人备份还原个人空间退出菜单图5-4 系统业务流程图5.4.2 系统activity设计根据android的activity设计原则,设计出整个系统的界面,如图5-5所示:图5-5 系统activity设计图5.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 基本路径a.输入要修改的新信息b.修改联系人信息4. 删除联系人1 用例名称:删除联系人2 用例描述:删除联系人3 角色:手机用户4 前置条件:通讯录中已有联系人5 后置条件:删除联系人6 基本路径a.选中联系人,选择删除操做b.询问是否确定删除操作c.删除联系人上述三种业务操作的流程图开始联系人列表单击某个联系人查看/修改/删除跳转到联系人信息activity结束联系人数据库图5-6 查看/修改/删除流程图5. 查询联系人1 用例名称:查询联系人2 用例描述:查询联系人信息3 角色:手机用户4 前置条件:通讯录中已有联系人5 后置条件:给出联系人信息6 基本路径a.输入查找的数据b.查询列表根据数据动态现实出信息点击menu菜单,选择查找联系人跳转searchcontactactivity,在查找联系人界面中,textview被监听,根据textview输入的数据,进行查询后在list中显示。开始联系人列表按查询按钮跳转到查看联系人activity结束输入查询条件显示信息修改/删除操作打电话、发短信联系人数据库图5-7 查询联系人流程图6. 菜单操作1 用例名称:菜单操作2 用例描述:选择菜单功能3 角色:手机用户4 前置条件:单击菜单按钮5 后置条件:进入菜单界面6 基本路径a.单击菜单按钮b.选择菜单的功能 开始联系人列表按查询按钮跳转到菜单activity结束查看所有联系人数据库删除所有备份还原个人空间退出菜单sd卡数据图5-8 菜单操作流程图5.4.4 系统界面设计本系统一共有11个页面文件,主要的界面如下:main.xml文件,如图5-9所示,显示已经存储的联系人数据数据:图5-9 系统主界面addnew.xml文件,如图5-10所示,显示添加联系人的选项,完成联系人的添加:图5-10 添加联系人界面main-menu_grid.xml 显示弹出的主菜单的对话图5-11 主菜单界面userdetail.xml文件如图5-12所示,显示联系人的信息具体选项,可以完成数据的编辑和删除:图5-12 查看修改界面imgaeswitch.xml 显示用户头像的切换:图5-13 选择头像界面numchoose.xml 打电话时弹出的对话框显示图5-14 打电话发短信界面item_menu.xml 显示主页的菜单图5-15 子菜单界面login.xml 为特权用户登录图5-16 个人空间登陆界面进入后的界面:图5-17 个人空间界面6.详细设计完成上述的操作后,便是进行代码的编写和调试,使用java语言和android api进行程序设计。6.1 开发环境开发软件:eclipse 、jdk1.7、android sdk 、adt 开发环境:windows7虚拟设备:android avd 开发版本:android 2.16.2 程序设计6.2.1 数据类设计用户user类如图6-1所示,主要用于暂存页面获得的信息,然后再存入数据库中。图6-1 user类dbhelper类如图6-2所示,主要完成数据库的表的创建和数据的添加删除以及备份的功能,以下是各个具体的函数和变量。图6-2 dbhelper类insert(user)函数实现:完成数据的插入,并根据插入是否成功,返回一个长整型的值getalluser(boolean)的实现:完成数据的显示,使用sqlitedatabase.query() 方法,利用cursor对象,一一取出字段的值,放入一个hasp表中,最后存入数组列表中,返回给数组列表。modify(user )函数的实现:使用user类中的字段,更新数据库delete(int)函数的实现:根据数据的id进行单个数据的删除deleteall(int )函数的实现:删除所有数据gettotalcount() 函数的实现:使用cursor对象getint()方法得到数据的个数getusers(string boolean) 函数的实现:完成数据的查找,使用sql语句中的模糊查找,然后放入数组列表,进行返回。deletemarked(arraylist)函数的实现:删除被标记多个数据的数据,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, new 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,company,zipcode,remark,imageid,privacy, privacy=0,null, null, null, null); while(cursor.movetonext() sqlbackup.app
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年学历类自考专业(电子商务)商法(二)-电子商务英语参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)票据法-知识产权法参考题库含答案解析(5卷)
- 2025年学历类自考专业(国贸)涉外经济法-涉外经济法参考题库含答案解析(5卷)
- 2025年学历类自考专业(国贸)国际贸易-国际贸易参考题库含答案解析(5卷)
- 2025年学历类自考专业(公共关系)广告运作策略-公共关系策划参考题库含答案解析(5卷)
- 2025年学历类成考专升本艺术概论-计算机基础参考题库含答案解析(5卷)
- 2025年度产品销售代理合同范本
- 2025企业雇佣合同书
- 2025年医卫类护理学(中级)相关专业知识-专业实践能力参考题库含答案解析(5卷)
- 2025年医卫类妇产科主治医师相关专业知识-相关专业知识参考题库含答案解析(5卷)
- 外研版(2024)八年级上册英语Unit 1 This is me 教案(共6课时)
- 2025年GCP考试试题库含答案
- 消保化解案例课件
- 2025浙江省知识产权研究与服务中心编外招聘12人考试备考试题及答案解析
- 2025年度东营市专业技术人员继续教育公需科目试卷及答案
- 用浪浪山正确打开开学第一课~课件
- 2025年幼儿园膳食工作计划
- 贵州省黔东南苗族侗族自治州2024-2025学年七年级下学期7月期末考试地理试卷含答案
- 2025年中国电信校招试题及答案
- 【课件】重生之我是学霸 2025-2026学年高二上英语开学第一课
- 锦绣中国课件教学
评论
0/150
提交评论