实现简单的通讯录(增删改查)

// Created By 郭仔 2015年04月09日21:27:50

经过两天的低迷,状态在慢慢的回归了,,生活还要继续,人生还需奋斗!

祝:好人一生平安!!!

========================================================================

题目描述:

1.创建AddressBook类. 1)使用字典作为容器,字典的Key值为分组名(姓名首字母,大写),value值为数组,数组

中存放联系人(Person实例).(5分) 2)添加联系人.要求(20分)不能有重名).a.判断姓名和电话不能为空否则添加失败. b.判断是否已经存在分组,存在直接存储.不存在创建分组后再存储.(注:联系人c.添加成功返回YES,姓名为空或者有重名的添加失败返回NO. d.数据使用Person存储.e.方法:- (BOOL)addPerson:(Person *)aPerson;3)按照姓名删除联系人.(15分)a.方法:- (BOOL)deletePersonWithName:(NSString*)aPersonName; b.删除成功返回YES,否则返回NO; c.当删除联系人后分组为空时,需要删除该分组。4)删除一个分组.(10分)a:方法:- (BOOL)deleteGroup:(NSString *)aGroupName; b.删除成功返回YES,否则返回NO;5)根据电话查找某个联系人.(10分)a:方法:-(Person *)findPersonWithPhoneNum:(NSString *)aPhoneNum; b:如果找到返回该联系人,否则返回nil. c.忽略电话重复问题,只返回第一个查找到的联系人。6)根据性别查找联系人,并将查到的联系人按照年龄升序排序(15分) a:方法:-(NSArray *)findPersonsWithSex:(NSString *)aSex; b:查找到联系人放入数组,排序的时候使用block.7)根据姓名,更改联系人信息.(10分) a:方法:-(BOOL)changePersonWithName:(NSString *)name phoneNum:(NSString *)aNum sex:(NSString *)aSex age:(NSUInteger) aAge; b:找到该联系人并修改该成功返回YES,否则返回NOc.修改电话、性别、年龄,参数不能为空。8)展示通讯录中的所有联系人信息(5分) a:方法:-(void)showAll;b.通过重写description方法展示联系人信息 。2.使用Person类.(属性:姓名,年龄,性别,电话,分组) 1)分组是姓名首字母(大写),使用提供的NSString类目中的方法获取。 2)重写description方法,输出“姓名:张三 性别:男 年龄:22 电话:123456789”.(5分) 3)定义Person类的便利构造器方法,方法包含参数:姓名、年龄、性别、电话.(5分)3.main函数中的实现 1).创建一个AddressBook类的实例(通讯录).2).使用便利构造器创建四个Person类的实例(联系人). 姓名:Lucy 性别:女 电话:123 年龄:21姓名:Joe 性别:男 电话:456 年龄:17姓名:Baby 性别:女 电话:789 年龄:27

姓名:Linda 性别:女 电话:000 年龄:21 3).调用添加联系人方法,将四个联系人添加到通讯录中. 4).根据电话查找联系人,并打印(查找电话:456); 5).根据性别查找联系人,并将查到的联系人按照年龄升序排序,并打印(查找性别:女) 6).根据姓名,更改联系人信息.(修改Linda的信息: 性别:女 电话:012 年龄:25); 7).按照姓名删除联系人,并展示通信录中所有人信息.(删除联系人:Baby) 8).删除一个分组,并展示通信录中所有人信息.(删除L组)

=========================================================================

AddressBook.h:

<span style="font-size:18px;">- (BOOL)addPerson:(Person *)aPerson;- (BOOL)isGroupExist:(NSString *)groupName;- (Person *)selectPersonWithName:(NSString *)name;- (BOOL)deletePersonWithName:(NSString *)aPersonName;- (BOOL)deleteGroup:(NSString *)aGroupName;- (Person *)findPersonWithPhoneNum:(NSString *)aPhoneNum;- (NSArray *)findPersonsWithSex:(NSString *)aSex;- (BOOL)changePersonWithName:(NSString *)name phone:(NSString *)aNum sex:(NSString *)aSex age:(NSUInteger)aAge;- (void)showAll;</span>AddressBook.m:

<span style="color:#333333;"><span style="font-size: 18px;">// 根据姓名查找对应的人</span><span style="font-size:18px;">- (Person *)selectPersonWithName:(NSString *)name{NSString * grup = [name uppercasePinYinFirstLetter];BOOL isGupExist = [self isGroupExist:grup];if (!isGupExist) {return nil;}else{NSMutableArray * arr = [_dic objectForKey:grup];for (Person * per in arr) {if ([per.name isEqualToString:name]) {return per;}}}return nil;}// 判断是否存在guoupName组- (BOOL)isGroupExist:(NSString *)groupName{for (NSString * key in _dic) {if ([key isEqualToString:groupName]) {return YES;}}return NO;}// 添加联系人- (BOOL)addPerson:(Person *)aPerson{Person * per = [self selectPersonWithName:aPerson.name];if (per) {NSLog(@"The Person is Exist!");return NO;}BOOL isGroupExt = [self isGroupExist:aPerson.group];if (!isGroupExt) {NSMutableArray *arr = [NSMutableArray array];[_dic setObject:arr forKey:aPerson.group];[arr addObject:aPerson];}else{NSMutableArray * arr = [_dic objectForKey:aPerson.group];[arr addObject:aPerson];}return YES;}// 按照姓名删除联系人- (BOOL)deletePersonWithName:(NSString *)aPersonName{Person * per = [self selectPersonWithName:aPersonName];if (per == nil) {NSLog(@"The Person Is Not Exist!");return NO;}NSMutableArray *arr = [_dic objectForKey:per.group];[arr removeObject:per];if (arr == nil) { // [arr count]==0[_dic removeObjectForKey:per.group];}return YES;}// 删除一个分组- (BOOL)deleteGroup:(NSString *)aGroupName{BOOL isGroubExt = [self isGroupExist:aGroupName];if (!isGroubExt) {NSLog(@"The Group Is Not Exist!");return NO;}[_dic removeObjectForKey:aGroupName];return YES;}// 根据电话查找某个联系人- (Person *)findPersonWithPhoneNum:(NSString *)aPhoneNum{for (NSString * key in _dic) {NSMutableArray * arr = [_dic objectForKey:key];for (Person * per in arr) {if ([per.phone isEqualToString:aPhoneNum]) {return per;}}}return nil;}// 根据性别查找联系人,并将查到的联系人按照年龄的升序排序- (NSArray *)findPersonsWithSex:(NSString *)aSex{NSMutableArray * result = [NSMutableArray array];for (NSString *key in _dic) {NSMutableArray *arr = [_dic objectForKey:key];for (Person *per in arr) {if ([per.sex isEqualToString:aSex]) {[result addObject:per];}}}NSArray * arr1 = [result sortedArrayUsingComparator:^NSComparisonResult(Person *obj1, Person *obj2) {if (obj1.age > obj2.age) {return NSOrderedDescending;}else if(obj1.age == obj2.age){return NSOrderedSame;}elsereturn NSOrderedAscending;}];return arr1;}// 根据姓名,更改练习人信息- (BOOL)changePersonWithName:(NSString *)name phone:(NSString *)aNum sex:(NSString *)aSex age:(NSUInteger)aAge{Person *per = [self selectPersonWithName:name];if (!per) {NSLog(@"NO Person!");return NO;}per.name = name;per.phone = aNum;per.sex = aSex;per.age = aAge;return YES;}// 展示通讯录中的所有联系人信息- (void)showAll{for (NSString *key in _dic) {NSMutableArray * arr = [_dic objectForKey:key];for (Person *per in arr) {NSLog(@"%@",per);}}}- (void)dealloc{[_dic release];[super dealloc];}// 单独给NSMutableDictiona类型的dic分配空间</span></span><span style="color:#333333;"><span style="font-size:18px;">// 也可在主函数中单独给dic分配NSMutableDictionary空间,这里就没用重定义了- (instancetype)init{self = [super init];if (self) {_dic = [[NSMutableDictionary alloc]init];}return self;}</span><span style="font-size: 18px;"></span></span>这里用到了一个uppercasePinYinFirstLetter方法,用来取出NSString类型字符串的首字母并把它转化为大写,这是在NSString的分类(类目)中实现的。

NSString+firstCapitalLetter.h中实现

但是至少可以为自己的荷包省钱可以支些招,这点还是很现实的。

实现简单的通讯录(增删改查)

相关文章:

你感兴趣的文章:

标签云: