iOS-简单实现通讯录

网上看到OC 通讯录,就写了一下

功能描述:

main函数中通过使用Person类和AddressBook类,创建对象、调用方法,实现以下8个功能:

1).使用便利构造器创建四个Person类的实例(联系人).

姓名:Lucy性别:女电话:123年龄:21

姓名:Joe性别:男电话:456年龄:17

姓名:Baby性别:女电话:789年龄:27

姓名:Linda性别:女电话:000年龄:21

2).创建一个AddressBook类的实例对象(通讯录).

3).使用AddressBook类中定义的方法实现:添加联系人,将四个联系人添加到通讯录中.

4).使用AddressBook类中定义的方法实现:根据电话查找联系人,并打印(查找电话:456);

5).使用AddressBook类中定义的方法实现:根据性别查找联系人,并将查到的联系人按照年龄升序排序,并打印(查找性别:女)

6).使用AddressBook类中定义的方法实现:根据姓名,更改联系人信息.(修改Linda的信息:性别:女电话:012年龄:25);

7).使用AddressBook类中定义的方法实现:按照姓名删除联系人,并展示通信录中所有人信息.(删除联系人:Baby)

8).使用AddressBook类中定义的方法实现:删除一个分组,并展示通信录中所有人信息.(删除L组)

9).使用AddressBook类中定义的方法实现:实现3~8之间每个功能后,输出通讯录中所有联系人信息。

二、功能实现提示:

1、功能一

定义Person类

1)声明属性:姓名,年龄,性别,电话,分组。注:年龄是int类型,其余属性时NSString类型;分组是姓名首字母(大写),使用提供的类目:NSString+Characters中的方法获取。(3分)

2)重写description方法,输出Person对象的信息。例如:“姓名:张三性别:男年龄:22电话:123456789”.(2分)

3)定义Person类的便利构造器方法,方法包含参数:姓名、年龄、性别、电话.(5分)

2、功能二

定义AddressBook类.

1)声明属性:allPersonDic(字典类型)。使用声明的字典作为容器,分组管理通讯录中所有联系人;字典的Key值为分组名(姓名首字母,大写),value值为数组,数组中存放联系人(Person实例).(5分)

2)在AddressBook的初始化方法中,初始化allPersonDic。(5分)

3)重写dealloc方法,在dealloc方法中实现AddressBook类的内存管理。(5分)

3、功能三

添加联系人.要求(15分)

a.在AddressBook类中定义方法:

-(BOOL)addPerson:(Person*)aPerson;

b.判断姓名和电话不能为空否则添加失败.

c.判断是否已经存在分组,存在直接存储.不存在创建分组后再存储.(注:联系人不能有重名).

d.添加成功返回YES,姓名为空或者有重名的添加失败返回NO.

e.数据使用Person存储.

4、功能四

根据电话查找某个联系人.(10分)

a:在AddressBook类中定义方法:

-(Person*)findPersonWithPhoneNum:(NSString*)aPhoneNum;

b:如果找到返回该联系人,否则返回nil.

c.忽略电话重复问题,只返回第一个查找到的联系人。

5、功能五

根据性别查找联系人,并将查到的联系人按照年龄升序排序(15分)

a:在AddressBook类中定义方法:

-(NSArray*)findPersonsWithSex:(NSString*)aSex;

b:查找到联系人放入数组,排序的时候使用block.

6、功能六

根据姓名,更改联系人信息.(10分)

a:在AddressBook类中定义方法:

-(BOOL)changePersonWithName:(NSString*)name phoneNum:(NSString*)aNum sex:(NSString*)aSex age:(NSUInteger) aAge;

b:找到该联系人并修改该成功返回YES,否则返回NO

c.修改电话、性别、年龄,参数不能为空。

7、功能七

按照姓名删除联系人.(15分)

a.在AddressBook类中定义方法:

-(BOOL)deletePersonWithName:(NSString*)aPersonName;

b.删除成功返回YES,否则返回NO;

c.当删除联系人后分组为空时,需要删除该分组。

8、功能八

删除一个分组.(5分)

a.在AddressBook类中定义方法:

-(BOOL)deleteGroup:(NSString*)aGroupName;

b.删除成功返回YES,否则返回NO;

9、功能九

展示通讯录中的所有联系人信息(5分)

a:在AddressBook类中定义方法:

-(void)showAll;

b.通过重写description方法展示联系人信息。

Person.h文件如下

@interfacePerson :NSObject

{

NSString*_groupName;

}

@property(nonatomic,retain)NSString*name,*gender,*num;

@property(nonatomic,assign)NSIntegerage;

-(void)setGroupName;

-(NSString*)groupName;

-(instancetype)initWithName:(NSString*)name

age:(NSInteger)age

gender:(NSString*)gender

num:(NSString*)num;

+(instancetype)personWithName:(NSString*)name

age:(NSInteger)age

gender:(NSString*)gender

num:(NSString*)num;

@end

Person.m文件如下

@implementationPerson

//分组名的setter方法

-(void)setGroupName

{

if(_name&& ![_nameisEqualToString:@""])

{

_groupName= [[self.namesubstringToIndex:1]uppercaseString];

}else

{

_groupName=nil;

}

}

-(NSString*)groupName

{

return_groupName;

}

//重新描述方法

-(NSString*)description

{

return[NSStringstringWithFormat:@"姓名:%@年龄:%ld性别:%@电话:%@",self.name,self.age,self.gender,self.num];

}

//初始化方法同时建组名方法调用一下 初始化name有值groupName就有值

-(instancetype)initWithName:(NSString*)name

age:(NSInteger)age

gender:(NSString*)gender

num:(NSString*)num

{

if(self=[superinit])

{

_name=name;

_age=age;

_gender=gender;

_num=num;

[selfsetGroupName];

}

returnself;

}

//便利构造方法

+(instancetype)personWithName:(NSString*)name

age:(NSInteger)age

gender:(NSString*)gender

num:(NSString*)num

{

return[[Personalloc]initWithName:nameage:agegender:gendernum:num];

}

@end

AddressBook.h文件如下

#import"Person.h"

@interfaceAddressBook :NSObject

@property(nonatomic,retain)NSMutableDictionary*TongXunLu;

//初始化方法

-(instancetype)initWithTongXunLu;

//3)添加联系人

-(BOOL)addPerson:(Person*)aPerson;

//4)根据电话查找联系人

-(Person*)findPersonByNumber:(NSString*)number;

//5)根据性别查找联系人 并按年龄升序排序

-(NSArray*)findPersonsBySex:(NSString*)aSex;

//6)根据姓名,更改联系人信息

-(BOOL)changePersonWithName:(NSString*)name

phoneNum:(NSString*)aNum sex:(NSString*)aSex

age:(NSInteger)aAge;

//7)姓名删除联系人

-(BOOL)deletePersonWithName:(NSString*)aPersonName;

//8)删除一个分组

-(BOOL)deleteGroup:(NSString*)aGroupName;

//9)显示所有联系人

-(void)showAll;

@end

AddressBook.m文件如下

//初始化方法

-(instancetype)initWithTongXunLu

{

self=[superinit];

if(self)

{

_TongXunLu= [NSMutableDictionarydictionaryWithCapacity:0];

}

returnself;

}

//功能三:添加联系人

-(BOOL)addPerson:(Person*)aPerson

{

if((aPerson.name==nil)||(aPerson.num==nil))

{

NSLog(@"姓名或电话为空添加失败!!!");

return0;

}else

{

NSString*newKey

=nil;//判断是在已有分组添加和还是创建新组

for(NSString*keyTempin[_TongXunLuallKeys])

{

if((aPerson.groupName== keyTemp)||[aPerson.groupNameisEqualToString:keyTemp])

{

for(Person*nameTempin[_TongXunLuobjectForKey:keyTemp])

{//是否重名

if([aPerson.nameisEqualToString:nameTemp.name])

{

NSLog(@"已经存在了这个姓名,添加联系人失败!!!");

return0;

}

}

newKey=keyTemp;

break;

}

}

if(newKey==nil)

{

NSMutableArray*newArray=[NSMutableArrayarrayWithCapacity:0];

[newArrayaddObject:aPerson];

[_TongXunLusetObject:newArrayforKey:[aPersongroupName]];

NSLog(@"添加成功!!");

return1;

}else

{

[[_TongXunLuvalueForKey:aPerson.groupName]addObject:aPerson];

NSLog(@"添加成功到已存在分组!!");

return1;

}

}

}

//功能四:根据电话查找联系人

-(Person*)findPersonByNumber:(NSString*)number

{

Person*perTemp=nil;

for(NSString*keyin[_TongXunLuallKeys])

{

for(Person*perTin[_TongXunLuobjectForKey:key])

{

if([perT.numisEqualToString:number])

{

perTemp = perT;

break;

}

}

}

if(perTemp==nil)

{

NSLog(@"没有这个号码哦!!");

return0;

}else

{

NSLog(@"根据号码你找的联系人是%@",perTemp);

returnperTemp;

}

}

//功能五:根据性别查找联系人并按年龄升序排序

-(NSArray*)findPersonsBySex:(NSString*)aSex

{

BOOLresult=0;

NSMutableArray*arrayT=[NSMutableArrayarrayWithCapacity:0];

for(NSString*keyin[_TongXunLuallKeys])

{

for(Person*perTin[_TongXunLuobjectForKey:key])

{

if([perT.genderisEqualToString:aSex])

{

[arrayTaddObject:perT];

result=1;

}

}

}

if((result=0))

{

NSLog(@"联系人里面没有性别为%@",aSex);

returnnil;

}else

{

NSSortDescriptor*sortAge

=[[NSSortDescriptoralloc]initWithKey:@"age"ascending:1];

[arrayTsortedArrayUsingDescriptors:[NSArrayarrayWithObjects:sortAge,nil]];

returnarrayT;

}

}

//功能六:根据姓名,更改联系人信息

-(BOOL)changePersonWithName:(NSString*)name

phoneNum:(NSString*)aNum sex:(NSString*)aSex

age:(NSInteger)aAge

{

Person*perTemp=nil;

for(NSString*keyin[_TongXunLuallKeys])

{

//

NSMutableDictionary *dicT =[_TongXunLu mutableCopy];

for(Person*perTin[_TongXunLuobjectForKey:key])

{

if([perT.nameisEqualToString:name])

{

perTemp=perT;

break;

}

}

}

if(perTemp==nil)

{

NSLog(@"联系人里面没有这个( %@ )名字",name);

return0;

}else

{

perTemp.gender=aSex;

perTemp.age=aAge;

perTemp.num=aNum;

NSLog(@"修改成功!!!!!");

return1;

}

}

//功能七:姓名删除联系人

-(BOOL)deletePersonWithName:(NSString*)aPersonName

{

Person*perTemp=nil;

NSString*keyTemp=nil;

for(NSString*keyin_TongXunLu)

{

for(Person*perTin[_TongXunLuobjectForKey:key])

{

if([aPersonNameisEqualToString:perT.name])

{

keyTemp =key;

perTemp=perT;

break;

}

}

}

if(perTemp==nil)

{

NSLog(@"没有找到你要删除的姓名");

return0;

}else

{

[[_TongXunLuobjectForKey:keyTemp]removeObject:perTemp];

NSLog(@"成功删除%@",perTemp);

return1;

}

}

//功能八:删除一个分组

-(BOOL)deleteGroup:(NSString*)aGroupName

{

NSString*keyTemp=nil;

for(NSString*keyin_TongXunLu)

{

if([aGroupNameisEqualToString:key])

{

keyTemp=key;

break;

}

}

if(keyTemp==nil)

{

NSLog(@"没有找到该分组");

}else

{

[_TongXunLuremoveObjectForKey:keyTemp];

NSLog(@"成功删除%@",keyTemp);

}

return1;

}

//功能九:显示所有联系人

-(void)showAll

{

for(NSString*keyin[_TongXunLuallKeys])

{

NSLog(@"\n************联系人通讯录************\n");

for(Person*perTin[_TongXunLuobjectForKey:key])

{

NSLog(@"联系人信息:%@",perT);

}

NSLog(@"上面是%@组",key);

}

}

@end

主函数如下:

#import"Person.h"

#import"AddressBook.h"

intmain(intargc,constchar*argv[]) {

@autoreleasepool{

// insert code

here...

NSLog(@"Hello,

World!");

}

//便利构造器创建四个Person类的实例

NSLog(@"*****使用便利构造器创建四个Person类的实例(联系人)*****\n\n");

Person*per1 =[PersonpersonWithName:@"Lucy"age:21gender:@"女"num:@"123"];

Person*per2 =[PersonpersonWithName:@"Joe"age:17gender:@"男"num:@"456"];

Person*per3 =[PersonpersonWithName:@"Baby"age:27gender:@"女"num:@"789"];

Person*per4 =[PersonpersonWithName:@"Linda"age:21gender:@"女"num:@"000"];

Person*ChongMingPer5=[PersonpersonWithName:@"Linda"age:22gender:@"男"num:@"1000"];

Person*KongHaoPer6=[PersonpersonWithName:@"Linda"age:21gender:@"女"num:nil];

//创建一个通讯录

AddressBook*tongXunLu1 =[[AddressBookalloc]initWithTongXunLu];

//添加联系人

NSLog(@"*********下面添加联系人 展示********\n\n");

[tongXunLu1addPerson:per1];

[tongXunLu1addPerson:per2];

[tongXunLu1addPerson:per3];

[tongXunLu1addPerson:per4];

[tongXunLu1addPerson:ChongMingPer5];

[tongXunLu1addPerson:KongHaoPer6];

//展示所有人

[tongXunLu1showAll];

//查找电话456

NSLog(@"***下面查找电话456的联系人***\n\n");

[tongXunLu1findPersonByNumber:@"456"];

//查找性别 女 年龄升序 打印

NSLog(@"*******下面通讯录里面的女性按照年龄排序*****\n\n");

for(Person*perTempin[tongXunLu1findPersonsBySex:@"女"])

{

NSLog(@"\n**%@**\n",perTemp);

}

//更改联系人信息 根据名字

NSLog(@"***更改联系人信息 根据名字***\n\n");

[tongXunLu1changePersonWithName:@"Linda"phoneNum:@"012"sex:@"女"age:25];

NSLog(@"**检查更改效果,展示所有联系人**");

[tongXunLu1showAll];

//删除Baby

NSLog(@"***下面删除baby**并展示结果**\n\n");

[tongXunLu1deletePersonWithName:@"Baby"];

[tongXunLu1showAll];

//删除L组联系人信息

NSLog(@"***删除L组联系人信息***分组联系人全部没有了***\n\n");

[tongXunLu1deleteGroup:@"L"];

return0;

}

完毕打印!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值