OC语言写通讯录.docx

上传人:b****5 文档编号:6921469 上传时间:2023-01-12 格式:DOCX 页数:13 大小:18.79KB
下载 相关 举报
OC语言写通讯录.docx_第1页
第1页 / 共13页
OC语言写通讯录.docx_第2页
第2页 / 共13页
OC语言写通讯录.docx_第3页
第3页 / 共13页
OC语言写通讯录.docx_第4页
第4页 / 共13页
OC语言写通讯录.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

OC语言写通讯录.docx

《OC语言写通讯录.docx》由会员分享,可在线阅读,更多相关《OC语言写通讯录.docx(13页珍藏版)》请在冰豆网上搜索。

OC语言写通讯录.docx

OC语言写通讯录

//

//AddressContact.h

//通讯录练习

//

//Createdbyxaloon15/10/6.

//Copyright(c)2015年xalo.Allrightsreserved.

//

//实例变量:

姓名(拼⾳,⾸字⺟大写)、性别、电话号码、住址、分组名称、年龄。

方法:

⾃定义初始化方法(姓名、电话号码)、显示联系⼈信息

#import

@interfaceAddressContact:

NSObject

{

NSString*_name;

NSString*_gender;

NSString*_number;

NSString*_address;

NSString*_groupName;

NSString*_age;

}

@property(nonatomic,retain)NSString*name,*gender,*number,*address,*groupName,*age;

-(id)initWithName:

(NSString*)namegender:

(NSString*)gendernumber:

(NSString*)numberaddress:

(NSString*)addressgroupName:

(NSString*)groupNameage:

(NSString*)age;

-(id)initWithName:

(NSString*)namenumber:

(NSString*)numbergroupName:

(NSString*)groupName;

+(id)addressContactWithName:

(NSString*)namegender:

(NSString*)gendernumber:

(NSString*)numberaddress:

(NSString*)addressgroupName:

(NSString*)groupNameage:

(NSString*)age;

-(void)contactInformation;

//按姓名排

-(NSComparisonResult)compareByName:

(AddressContact*)aContact;

//按照年龄

-(NSComparisonResult)compareByAge:

(AddressContact*)aContact;

 

-(NSString*)description;

@end

 

#import"AddressContact.h"

@implementationAddressContact

//@synthesizename=_name,gender=_gender,address=_address,groupName=_groupName,number=_number,age=_age;

-(id)initWithName:

(NSString*)namegender:

(NSString*)gendernumber:

(NSString*)numberaddress:

(NSString*)addressgroupName:

(NSString*)groupNameage:

(NSString*)age{

self=[superinit];

if(self){

_name=name;

_groupName=groupName;

_gender=gender;

_address=address;

_age=age;

_number=number;

}

returnself;

}

-(id)initWithName:

(NSString*)namenumber:

(NSString*)numbergroupName:

(NSString*)groupName{

self=[superself];

if(self){

_name=name;

_number=number;

_groupName=groupName;

}

returnself;

}

+(id)addressContactWithName:

(NSString*)namegender:

(NSString*)gendernumber:

(NSString*)numberaddress:

(NSString*)addressgroupName:

(NSString*)groupNameage:

(NSString*)age{

AddressContact*p=[[AddressContactalloc]initWithName:

namegender:

gendernumber:

numberaddress:

addressgroupName:

groupNameage:

age];

returnp;

}

-(void)contactInformation{

NSLog(@"%@%@%@%@%@%@",_name,_gender,_number,_address,_groupName,_age);

}

//按姓名排

-(NSComparisonResult)compareByName:

(AddressContact*)aContact

{

return[_namecompare:

[aContactname]];

}

//按照年龄

-(NSComparisonResult)compareByAge:

(AddressContact*)aContact

{

if(_age<[aContactage]){

returnNSOrderedDescending;

}elseif(_age==[aContactage]){

returnNSOrderedSame;

}else{

returnNSOrderedAscending;

}

}

-(NSString*)description{

return[NSStringstringWithFormat:

@"%@%@%@%@%@%@",_name,_gender,_number,_address,_groupName,_age];

}

@end

 

#import

#import"AddressContact.h"

@interfaceAddressBook:

NSObject

{

NSMutableDictionary*_addressBook;

}

@property(nonatomic,retain)NSMutableDictionary*addressBook;

//添加联系人到_addressBook中

-(void)addContact:

(AddressContact*)aContact;

//获取某个分组的所有联系人并且按姓名升序排序

-(NSArray*)contactsWithGroupName:

(NSString*)groupName;

//根据电话搜索联系人

-(AddressContact*)searhContactByPhoneNum:

(NSString*)phoneNum;

//按性别找人

-(NSArray*)contactsWithGender:

(NSString*)gender;

//删除某个分组的全部联系人。

-(NSMutableDictionary*)RemoveGropPerson:

(NSString*)strGrup;

//根据姓名删除某个联系人。

-(NSMutableDictionary*)removeOneContact:

(AddressContact*)oneContact;

@end

 

#import"AddressBook.h"

@implementationAddressBook

-(id)init

{

self=[superinit];

if(self){

//将字典初始化,

_addressBook=[NSMutableDictionarydictionary];

}

returnself;

}

#pragmamark添加联系人

-(void)addContact:

(AddressContact*)aContact

{

//判断名字,电话号是否为空

if((aContact.name==nil)||(aContact.number==nil)){

NSLog(@"联系人添加失败");

return;

}else{

//取首字母,当做key值

NSString*first=[aContact.namesubstringToIndex:

1];

//判断首字母

if([_addressBookobjectForKey:

first]==nil){

//如果通过first在字典中取不到Value说明没有这个分组存在,那么创建一个分组

//创建可变数组,添加首字母相同的person到数组中

NSMutableArray*tempArr=[[NSMutableArrayalloc]init];

tempArr=[NSMutableArrayarrayWithObject:

aContact];

//添加到字典中,以首字母当做Key值,可变数组当做Value,存入管理字典中

[_addressBooksetObject:

tempArrforKey:

first];

}else{

//如果存在这个分组的Value,那么直接添加。

//直接添加联系人

[[_addressBookobjectForKey:

first]addObject:

aContact];

}

}

}

//获取某个分组的所有联系人并且按姓名升序排序,【这里面可以改为用block排序】

-(NSArray*)contactsWithGroupName:

(NSString*)groupName

{

NSArray*temp=[_addressBookobjectForKey:

groupName];

//排序compareByName方法已经在联系人类中实现

return[tempsortedArrayUsingSelector:

@selector(compareByName:

)];

}

//通过电话号码查找联系人。

返回一个联系人的对象。

【改为用block排序】

-(AddressContact*)searhContactByPhoneNum:

(NSString*)phoneNum

{

//这里的group就是遍历Key的值。

for(NSString*groupin_addressBook){

//AddressContact对象遍历数组[_addressBookobjectForKey:

group]

NSArray*arr=[_addressBookobjectForKey:

group];

for(AddressContact*cinarr){

//判断电话

if([phoneNumisEqualToString:

[cnumber]]){

returnc;

}

}

}

//没有返回nil

returnnil;

}

//按性别找人

-(NSArray*)contactsWithGender:

(NSString*)gender{

//定义可变数组

NSMutableArray*arr=[NSMutableArrayarray];

for(NSString*groupin_addressBook){

for(AddressContact*cin[_addressBookobjectForKey:

group]){

//判断性别

if([genderisEqualToString:

[cgender]]){

[arraddObject:

c];

}

}

}

//排序方法compareByAge已经写在了AddressContact中。

[arrsortUsingSelector:

@selector(compareByAge:

)];

returnarr;

}

-(NSMutableDictionary*)RemoveGropPerson:

(NSString*)strGrup

{

NSArray*temp=[_addressBookallKeys];

for(NSString*keyintemp)

{

if([keyisEqualToString:

strGrup])

{

[_addressBookremoveObjectForKey:

key];

}

}

return_addressBook;

}

-(NSMutableDictionary*)removeOneContact:

(AddressContact*)oneContact{

for(NSString*keyin_addressBook){

NSMutableArray*arr=[_addressBookobjectForKey:

key];

for(AddressContact*oneinarr){

if([one.nameisEqualToString:

oneContact.name]){

[arrremoveObject:

one];

}

}

}

return_addressBook;

}

@end

 

#import

#import"AddressBook.h"

#import"NSString+Characters.h"

/*

作业:

实现中等难度通讯录。

需求:

1、定义联系⼈人类AddressContact。

实例变量:

姓名(拼⾳,⾸字⺟大写)、性别、电话号码、住址、分组名称、年龄。

方法:

⾃定义初始化方法(姓名、电话号码)、显示联系⼈信息

2、在main.m中定义字典,分组管理所有联系人。

分组名为26个⼤写的英⽂字⺟。

3、可以添加联系人对象,如果姓名或电话号码为空,添加失败。

添加联系⼈到匹配的分组。

4、获取某个分组名称下所有联系⼈,并且按照姓名升序排列。

5、从通讯录中根据电话号码搜索联系人。

6、获取所有女性的联系人,并且按照年龄的降序排列。

7、根据姓名删除某个联系人。

8、删除某个分组的全部联系人。

*/

/*

实现通讯录,需求:

1、创建联系人类AddressPerson,联系人可以存储姓名、地址、邮箱、电话号码。

2、创建通讯录AddressBook类。

3、通讯录可以添加联系人。

姓名不能为空。

4、通讯录输出所有联系人。

按照姓名首字母分组,使用字典按首字母存储信息。

5、可以按照姓名、电话号码进行联系人搜索。

6、联系人按姓名排序,要求使用block。

*/

intmain(intargc,constchar*argv[]){

@autoreleasepool{

//A组

AddressContact*per1=[AddressContactaddressContactWithName:

@"啊呀"gender:

@"f"number:

@"1111"address:

@"sdsd"groupName:

@"A"age:

@"13"];

AddressContact*per1_2=[AddressContactaddressContactWithName:

@"Andongni"gender:

@"f"number:

@"22222"address:

@"sdsd"groupName:

@"A"age:

@"15"];

AddressContact*per1_3=[AddressContactaddressContactWithName:

@"AoNil"gender:

@"m"number:

@"1111"address:

@"sdsd"groupName:

@"A"age:

@"20"];

AddressContact*per2=[AddressContactaddressContactWithName:

@"Bibo"gender:

@"f"number:

@"1414"address:

@"sdsd"groupName:

@"B"age:

@"9"];

AddressContact*per3=[AddressContactaddressContactWithName:

@"Cady"gender:

@"f"number:

@"1313"address:

@"sdsd"groupName:

@"C"age:

@"7"];

#pragmamark一、:

以下为存储的示例代码:

【我们通讯录的存储思想就是这样的^_^】

//第一步:

将同一分组的人添加到一个数组中

NSMutableArray*groupA=[NSMutableArrayarray];

//添加组名为A的数据到数组groupA中

[groupAaddObject:

per1];

[groupAaddObject:

per1_2];

[groupAaddObject:

per1_3];

//添加组名为B的数据到数组groupB中

NSMutableArray*groupB=[NSMutableArrayarray];

[groupBaddObject:

per2];

//添加组名为C的数据到数组groupC中

NSMutableArray*groupC=[NSMutableArrayarray];

[groupCaddObject:

per3];

//第二步:

//将各个数组中的值作为Value,分组名groupName作为Key值,存入字典中

NSMutableDictionary*contactDict=[NSMutableDictionarydictionary];

//[contactDictsetObject:

groupAforKey:

per1.groupName];

[contactDictsetObject:

groupAforKey:

@"A"];//跟上面一样;

[contactDictsetObject:

groupBforKey:

@"B"];

[contactDictsetObject:

groupCforKey:

@"C"];

//NSLog(@"contactDict=%@",contactDict);

#pragmamark二、我们开始封装添加,查找,删除,联系人的方法。

创建AdressBook类用来管理我们操作通讯录的方法。

//AddressBook是一个管理类,他负责对通讯录的操作,和信息的存取。

AddressBook*book=[[AddressBookalloc]init];

AddressContact*per4=[AddressContactaddressContactWithName:

@"Docter"gender:

@"f"number:

@"1212"address:

@"sgfhd"groupName:

@"D"age:

@"12"];

//存入通讯录。

[bookaddContact:

per4];

[bookaddContact:

per1];

[bookaddContact:

per1_2];

[bookaddContact:

per1_3];

[bookaddContact:

per2];

[bookaddContact:

per3];

//NSLog(@"%@",book.addressBook);

NSArray*ww=[bookcontactsWithGroupName:

@"A"];

NSLog(@"======%@",ww);

NSLog(@"C==%@",[contactDictobjectForKey:

@"C"]);

//通过电话号码查找联系人

AddressContact*dd=[booksearhContactByPhoneNum:

@"1111"];

NSLog(@"dd==%@",dd);

//按性别排序

AddressContact*per5=[AddressContactaddressContactWithName:

@"Demaxiya"gender:

@"f"number:

@"888888"address:

@"sgfhd"groupName:

@"D"age:

@"12"];

[bookaddContact:

per5];

NSArray*a=[bookcontactsWithGender:

@"f"];

NSLog(@"a==%@",a);

//获取某个分组的所有联系人并且按姓名升序排序

//NSArray*name=[bookcontactsWithGroupName:

per5.groupName];

NSArray*name1=[bookcontactsWithGroupName:

@"A"];

NSLog(@"%@",name1);

//NSMutableDictionary*dct=[bookRemoveGroupPerson:

@"D"];

//NSLog(@"dct=%@",dct);

NSMutableDictionary*d=[bookremoveOneContact:

per5];

NSLog(@"%@",d);

NSMutableDictionary*t=[bookRemoveGropPerson:

@"D"];

NSLog(@"%@",t);

}

return0;

}

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

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1