移动智能平台iOS的多功能电子通讯录设计项目可行性方案.docx
- 文档编号:24144398
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:36
- 大小:2.06MB
移动智能平台iOS的多功能电子通讯录设计项目可行性方案.docx
《移动智能平台iOS的多功能电子通讯录设计项目可行性方案.docx》由会员分享,可在线阅读,更多相关《移动智能平台iOS的多功能电子通讯录设计项目可行性方案.docx(36页珍藏版)》请在冰豆网上搜索。
移动智能平台iOS的多功能电子通讯录设计项目可行性方案
移动智能平台iOS的多功能电子通讯录设计项目可行性方案
第一章系统概述
1.1研究背景
如今互联网通讯以及智能手机行业如此发达,移动智能平台已经在人们的生活中随处可见;移动智能平台正处于一个走向成熟的阶段,在此基础上,移动智能平台拥有的独立操作系统,可以让手机能像个人电脑一样自定义安装各种功能的软件,而且,还可以通过这些对手机的那些基本功能进行扩充,从而使用户得到更好的体验以及满足用户的对移动智能操作系统日益增多的需求,这是iOS操作系统的一种优势,也是移动操作系统Android、iOS等赢得市场的主要原因。
具有夸时代性与领先性的移动操作系统iOS手机平台,从2007年乔布斯发布了第一代iPhone以来,发展非常地迅速,iPhone手机市场份额占比不断上涨。
[7]其中iOS系统的稳定性、智能性、和非常好的用户体验,让我们可以看到iOS拥有一个更宽广的未来。
1.2研究意义
iOS系统不断的更新,不断的成长,使其功能变得越来越多用性,但通讯是永远不会被抛弃的一种基础功能之一,而手机拥有通讯,通讯录也必不可少。
基于iOS的多功能通讯录的设计与实现也会包含这些基本功能,这些功能包括:
联系人信息的添加、修改、删除和输出等功能,在完成这些功能的基础上扩展了一些其他功能,例如为用户可以为联系人添加头像、将联系人进行分组等。
还有一些功能的扩展,该系统可以代发邮件,或者拨打联系人电话及给联系人发送手机短信等,使通讯录拥有更友好的界面、拥有更好的体验以及功能更人性化。
通过这次多功能通讯录的设计与实现,我对iOS的项目开发更加的熟练,对iOS的软件开发流程更加熟悉。
这能让我的就业能力得到拓展。
1.3研究方法及设计思路
本项目设计将会以iOS应用开发规范为其基础进行相应的研究,遵守项目研发基本要求,使用统一编程的风格,提高代码的可读性和编码效率,为后期代码维护提供便利。
在研究过程中多多查阅开发资料,理清编程的具体思路以及开发的流程处理,如果遇到问题自行查阅资料解决或向指导教师请教,争取尽量完善本课题的开发,交出一份满意的答卷。
提高自身对于Object—C基础知识的更完全了解,提高资深对于网络请求、数据缓存、数据解析、项目性能优化等不同知识的掌握,力争完全掌握对于UITableView、UICollectionView等UI控件的熟练使用能力,提高自身的编程水平、逻辑思维以及独立开发项目的能力。
[15]
第二章开发环境及相关技术介绍
2.1开发工具Xcode
2.1.1Xcode简介
Xcode是在MacOSX操作系统上运行的集成开发工具,由苹果公司进行开发,是iOS与OSX开发的一种非常快捷与方便的开发工具,它负责处理从最开始到工程的最终部署这一过程中的大多数细节[1]。
我们可以通过Xcode来完成下面的工作:
1.创建iOS项目和管理项目,可以指定项目的的需求、项目的规格及开发语言、项目代码管理工具等。
2.指定关键字染色,利用系统方法代码联想来快速编写源代码,自动缩进功能可以管理代码格式等。
3.在同一个项目的不同组件中进行漫游和检索,项目里的头文件以及其中的文档。
4.源代码管理与连编工程
5.可以以图形化的形式调试项目工程,并可以逐步运行源代码及其调用的方法
Xcode可以连编由C、C++、Objective-C、和Java等语言编写的源代码组成的项目工程,可以把这些源码编译生成MacOSX支持的执行代码,其中包括命令行工具、框架、插件、内核扩展、程序包、和应用程序[5]。
Xcode支持几个源代码管理系统,其中包括有:
SVN、Git,是我们可以更轻松便捷的管理我们所写的源代码,特别是在团队开发合作时,我们可以随时更新队友新提交的代码,或者把自己的代码提交到服务器上,我们也可以获取其中每一个版本的代码以及进行代码的比较。
2.1.2Xcode特点
Xcode特别适合用于Cocoa开发。
在创建工程时,Xcode可以通过对应于Cocoa工程类型的工程模板,为您建立一个初始的开发环境。
Cocoa工程类型有:
应用程序(Objective-C或Java)、基于文档的应用程序(Objective-C或Java)、工具、程序包、和框架。
Xcode使用GNUC编译器(gcc)来编译Cocoa软件,使用GNU源代码级调试器(gdb)来调试软件。
在Cocoa开发中使用gcc和gdb从它还是NeXTSTEP(参见"一点历史"部分)的时代就开始了。
对Cocoa二进制代码的编译和调试经过多年的精化、扩展、和调优。
[12]
Xcode也有一个类浏览的功能,可以查看所有导入的Cocoa框架类和您自己的定制类,还有它们的继承关系;从类浏览器中,您可以请求查看任何类的文档。
Xcode还包含一些设计工具,其中有一个工具可以用于设计CoreData程序中使用的数据实体的属性和关系。
Xcode和另外一个主要的开发工具InterfaceBuilder良好地集成在一起。
在InterfaceBuilder中,您可以定义一个类(包括超类,插座变量,和动作),并为工程中的每个类生成源代码文件的框架。
在Xcode中,您可以为定制类添加插座变量和动作,然后让InterfaceBuilder将这些实体导入到nib文件中。
[4]
2.2Objective-C语言
2.2.1Objective-C语言简介
Objective-C,通常写作ObjC和较少用的ObjectiveC或Obj-C,是扩充C的面向对象编程语言。
它主要使用于MacOSX和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。
Objective-C可以在gcc运作的系统写和编译,因为gcc含Objective-C的编译器。
[11]
Objective-C是非常“实际”的语言。
它使用一个用C写成、很小的运行库,只会令应用程序的大小增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。
ObjC写成的程序通常不会比其原始码大很多。
而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。
[13]Objective-C的最初版本并不支持垃圾回收。
在当时这是争论的焦点之一,很多人考虑到Smalltalk回收时有漫长的“死亡时间”,令整个系统失去功用。
Objective-C为避免此问题才不拥有这个功能。
虽然某些第三方版本已加入这个功能(尤是GNUstep),Apple在其MacOSX10.3中仍未引入这个功能。
[14]另一个问题是ObjC不包括命名空间机制(namespacemechanism)。
取而代之的是程序设计师必须在其类别名称加上前缀,时常引致冲突。
在2004年,在Cocoa编程环境中,所有MacOSX类别和函式均有“NS”作为前缀,例如NSObject或NSButton来清楚分别它们属于MacOSX核心;使用“NS”是由于这些类别的名称在NeXTSTEP开发时定下。
虽然Objective-C是C的母集,但它也不视C的基本型别为第一级的对象。
和C++不同,Objective-C不支援运算子多载(它不支持ad-hoc多型)。
亦与C++不同,但和Java相同,Objective-C只容许对象继承一个类别(不设多重继承)。
[7]Categories和protocols不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。
2.2.2Objective-C与C++的比较
1.单一继承:
Objective-C不支持多重继承,(同Java和Smalltalk),而C++语言支持多重继承。
[8]
2.动态:
Objective-C是动态定型(dynamicalytyped)所以它的类库比C++要容易操作。
Objective-C在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。
C++跟从面向对象编程里的Simula67(一种早期OO语言)学派,而Objecive-C属于Smalltalk学派。
在C++里,对象的静态类型决定你是否可以发送消息给它,而对Objective-C来说,由动态类型来决定。
Simula67学派更安全,因为大部分错误可以在编译时查出。
[3]而Smalltalk学派更灵活,比如一些Smalltalk看来无误的程序拿到Simualr67那里就无法通过。
2.3Cocoa框架
2.3.1Cocoa简介
Cocoa是苹果公司为MacOSX所创建的原生面向对象的API,是MacOSX上五大API之一。
Cocoa应用程序一般在苹果公司的开发工具Xcode(前身为ProjectBuilder)和InterfaceBuilder上用Objective-C写成。
不过,通过Javabridge、PasCocoa、PyObjC、CamelBones以及RubyCocoa等桥接技术,Java、ClozureCL、LispWorks、ObjectPascal、Python、Perl、Ruby等其它工具或者语言也可以用来开发Cocoa应用。
也有一些其它语言的Cocoa实现无须桥接,比如苹果公司开发的MacRuby和类似Lisp的Nu语言。
不使用Xcode和InterfaceBuilder,仅仅通过文本编辑器、GCC和GNUmake工具也可以用Objective-C语言开发Cocoa应用。
2.3.2Cocoa两大核心框架
1.Foundation框架
(1)Foundation框架设计目标:
为诸如内存管理、对象改变和通告这样的事物定义基本的对象行为和引入一直的规则。
通过程序包技术和Unicode字符串支持国际化和本地化。
支持对象的持久保存和分发。
在一定程度上独立于OS,以支持移植。
为编程的元类型提供对象封装或价物,数值、字符串、集合以及端口、线程、文件系统等为访问底层系统实体和服务提供的工具类。
(2)Foundation的几个范式和策略:
对象所有权和对象的清除。
建立一个对象所有权策略以代替垃圾收集机制。
指定对象需要释放自己创建、拷贝、显示保留的其他对象。
自动释放池(NSAutoreleasePool类中定义)实现一种迟缓释放(delayed-release)机制。
变体,很多值和容器类的不可变类都有一个可以修改的变体。
可变类的实例从不可变类中继承过来。
类簇,是一个抽象类以及一组私有的具体子类的组合。
抽象类是这些子类的雨伞接口。
根据不同情况,类簇可以返回适当优化的类实例,比如NSString和NSMutableString就是针对不同的存储需要进行优化的各种私有子类实例的经纪类。
[9]通告是Cocoa主要设计模式,它基于广播机制,使一个对象可以在另一个对象进行某种任务或遇到某情况时,以用户或系统事件的方式得到通告。
同步、异步和分布式通告。
有NSNotification、NSNotificationCenter、NSNotificationQueue和NSDistributeNotificationCenter类实现。
2.AppKit框架
AppliactionKit框架包含实现图形、事件驱动的用户界面需要的所有对象:
窗口、对话框、按键、菜单、滚动条、文本输入框等的。
AppKit处理所有细节。
高效的进行屏幕描画、营建设备和屏幕缓冲区进行通讯,描画前清除屏幕上的区域已经视图裁剪。
大多数AppKit类都是支持类,可以不用直接使用。
用IB创建用户界面对象到应用程序控制器对象的连接,控制器对象负责管理用户界面,协调用户界面和内部数据之间的数据流。
可能用到off-the-shelf控制器对象,可能需要实现一个或多个定制控制器类(特别是使用那些类的动作和委托方法)。
如果我们都AppKit类和协议熟悉,我们可以以编程方式控制用户界面。
也可以通过子类化NSView或在其他类实现自己的对象。
第三章需求分析
3.1功能需求分析
3.1.1功能设计
该多功能通讯录系统使用MVC的设计模式,进行手机基本通讯录的设计与开发,同时,在此基础上按照大多数人的使用习惯与需求对手机通讯录进行优化与管理,并把一些常用的功能加入其中,使该体统更符合人性化,使用起来更加舒畅与便捷。
此系统主要设计功能如下:
1.添加联系人,用户可以添加把联系人添加入通讯录;
2.搜索联系人,用户可以通过手机号,姓名简拼、全拼、汉子等搜索联系人;
3.发送短信,用户可以直接点击联系人信息里的短信发送;
4.拨打电话,用户可以直接拨打联系人的手机或者固定电话;
5.联系人分组,联系人可以像QQ联系人列表一样进行分组;
6.删除联系人,用户可以单个删除联系人和批量删除联系人;
7.备忘录,在基础通讯录的基础上增加一个备忘录的功能,使用户能更方便的使用备忘录等。
3.2性能需求分析
对iOS手机软件的开发,首先要有良好的用户体验,而良好的用户体验可以从以下的几个方面入手:
(1)搭建友好的界面
对于一个iOS手机软件来说,界面友好很重要,用户的界面要直观、简洁,设计要合理,方便用户进行操作,让用户操作起来比较流畅、舒服,并且UI视觉效应好。
(2)能够非常流畅的快速响应
用户的输入或查询等的请求快速处理,对算法就行优化,对于某些需要时间稍微长点处理的部分,在其处理时可以给用户一个提示,让用户知道该软件正在运行状态。
(3)无缝性
一个常见的应用无缝问题,就是在后台进程中对某事件作出响应而弹出对话框,这看起来似乎并没有多大的妨碍,特别是当自己在虚拟机上单独地构建和测试该应用时。
但是,当我们的应用在真机上运行时,后台线程显示对话框,我们的应用当时可能就没有获得用户焦点,这就会出现应用在活动的应用后面显示对话框,或者从当前应用中获得焦点并显示对话框的情况,而不管当时用户正在做什么(如正在发短信等);那样的行为可能对应用或用户不起作用。
所以,为了避免此类问题的出现,我们的应用应该利用适当的系统资源——Notification类,来通知用户。
利用通知,我们可以在状态条上显示一个图标,来告诉用户该应用的事件已经发生,而不是获得焦点或者打断用户的操作。
3.3系统用例分析
用例分析处于需求与设计之间,是连接两者之间的桥梁,当我们进行用例分析之后,我们可以清晰的看到系统多需要的用例以及该用例在系统之中的作用,而在本系统之中,主要的用例是用户对通讯录的一些操作与管理用例,用户可以添加联系人(在添加联系人时可以通过系统授权读取相册图片添加用户的头像)、搜索联系人、删除联系人、修改联系人的信息等,还可以对其他扩展功能进行操作与管理,通过这些用例分析了解该用例在系统中对应的作用。
系统用户用例图如图3.1所示:
图3.1系统用户用例图
Fig.3.1Systemuserusecasediagram
3.4本章总结
本章主要是对系统需求进行分析,从系统的功能需求分析,对系统一些功能需求进行分析;到系统性能需求分析,包括搭建友好的界面、非常流畅的快速响应以及无缝性;对最后再到对本系统的用例进行分析,包括添加联系人(在添加联系人时可以通过系统授权读取相册图片添加用户的头像)、搜索联系人、删除联系人、修改联系人的信息等,还可以对其他扩展功能进行操作与管理等。
充分考虑到系统在设计时需要实现的内容,需要在性能方面需要达到的要求以及系统涉及的用例。
在设计系统时所需要考虑到用户的一些需求内容。
第四章系统概要设计
4.1系统设计结构及说明
本系统为基于iOS操作系统的多功能通讯录,主体结构划分为:
(1)搜索
用户可以在搜索界面,对联系人进行搜索。
我们可以通过手机号、联系人姓名全拼、联系人简拼等进行搜索,也可以模糊搜索,搜索到的联系人我们可以查看详细信息,修改联系人信息,可以发送短信、拨打电话。
(2)通讯录
在通讯录主功能页面我对通讯录所有联系人进行了类似QQ好友界面一样进行分组,我们可以点击每一个分组展开该分组,从而能够快速的找到自己想要找到的联系人,同时也可以对联系人进行操作与管理
(3)其他功能
在其他功能里,我对通讯录外的一些常用功能进行了整合,我们可以在里面查看日历,或者写备忘录等。
系统结构图如图4.1所示:
图4.1系统结构图
Fig.4.1Systemarchitecturediagram
4.2数据库设计
4.2.1系统数据表的设计
数据库表的设计是根据系统的需求来进行设计的,充分考虑了各种数据表之间的划分与关联,保证用户的数据正确且有效,本系统共有三张表:
1、联系人信息表(contact)
联系人表用于记录通讯录里的联系人,包括编号(contact_id)、姓名(contact_name)、手机号(contact_phone)、电话号码(contact_tel)、邮箱(contact_email)、地址(contact_address)、头像(contact_photo)、分组(group_id),用户可以对其进行增加联系人信息、删除联系人、修改联系人信息、查询联系人等操作。
表具体信息如表4.1所示:
表4.1联系人信息表
Table4.1contactinformationsheet
字段名
中文含义
数据类型及长度
关键字
是否可空
contact_id
联系人编号
int
主键
否
contact_name
联系人姓名
nvarchar(20)
是
contact_phone
手机号码
varchar(11)
否
contact_tel
电话号码
varchar(20)
是
contact_email
电子邮箱
varchar(50)
是
contact_address
联系人地址
nvarchar(200)
是
contact_photo
联系人头像
nvarchar(100)
是
group_id
联系人分组编号
int
外键
否
2、联系人分组表(group)
联系人分组表主要用于记录用户设定的联系人的分组,包括分组编号(group_id)、分组名(group_name)、分组备注(group_identy),用户可以通过分组编号查询出组名把联系人进行分组,在添加联系人的时候可以选择给新添加的联系人进行分组,在修改联系人信息的时候也可以给联系人修改分组。
具体表信息如表4.2所示:
表4.2联系人分组表
Table4.2contactgroupsheet
字段名
中文含义
数据类型及长度
关键字
是否可空
group_id
分组编号
int
主键
否
group_name
分组名
nvarchar(20)
否
group_identy
分组备注
nvarchar(50)
是
3、备忘录表(memorandum)
备忘录表是为了便于用户在录通讯录里使用备忘录而设计的,包括备忘录编号(memorandum_id)、备忘录标题(memorandum_title)、备忘录内容(memorandum_detail)、记录时间(memorandum_time)、已经完成(memorandum_isdone),用户可以对其进行增加备忘录、删除备忘录、记录是否完成等操作。
表具体信息如表4.3所示:
表4.3联系人分组表
Table4.3contactgroupsheet
字段名
中文含义
数据类型及长度
关键字
是否可空
memorandum_id
备忘录编号
int
主键
否
memorandum_title
备忘录标题
varchar(20)
否
memorandum_detail
备忘录详细内容
nvarchar(200)
否
memorandum_time
备忘录记录时间
datatime
否
memorandum_isdone
是否已经完成
bit
否
4.3数据表关系
根据以上表的结构与对应的关系,列出各表之间的关系如图4.2所示:
图4.2系统类图
Fig.4.2classofsystemdiagram
4.4数据库物理结构
4.4.1用Objective-C创建sqllite数据库
//建库
-(void)createDB{
NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString*documentDirectory=[pathsobjectAtIndex:
0];
NSString*dbPath=[documentDirectorystringByAppendingPathComponent:
@"AddressBookDB.db"];
_db=[FMDatabasedatabaseWithPath:
dbPath];
if(!
[_dbopen]){
NSLog(@"Couldnotopenthedb!
");
return;
}
}
4.4.2用Objective-C创建联系人信息表
//建表
-(void)createTable{
//判断表是否存在
if(!
[_dbtableExists:
@"contact"]){
[_dbexecuteUpdate:
@"CREATETABLEcontact(contact_idINTEGERPRIMARYKEYAUTOINCREMENT,contact_nametext,contact_phonetext,contact_teltext,contact_emailtext,contact_addresstext,contact_phototext,group_idtext)"];
}
}
4.4.3用Objective-C创建联系人分组表
//建表
-(void)createTable{
//判断表是否存在
if(!
[_dbtableExists:
@"group"]){
[_dbexecuteUpdate:
@"CREATETABLEgroup(group_idINTEGERPRIMARYKEYAUTOINCREMENT,group_nametext,group_identytext)"];
}
}
4.4.4用Objective-C创建备忘录表
//建表
-(void)createTable{
//判断表是否存在
if(!
[_dbtableExists:
@"memorandum"]){
[_dbexecuteUpdate:
@"CREATETABLEmemorandum(memorandum_idINTEGERPRIMARYKEYAUTOINCREMENT,memorandum_titletext,memorandum_detailtext,memorandum_timetext,memorandum_isdonebit)"];
}
}
4.5数据流图
在此多功能通讯录系统中,由于是面向用户单人操
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 移动 智能 平台 iOS 多功能 电子 通讯录 设计 项目 可行性 方案
![提示](https://static.bdocx.com/images/bang_tan.gif)