实现中等通讯录(OC)

//实现中等难度通讯录。需求:

//1、定义联系⼈类Contact。实例变量:姓名(拼⾳音,首字母⼤大写)、性别、电话号码、 住址、分组名称、年龄。方法:⾃定义初始化方法(姓名、电话号码)、显示联系人信息 

//2、在main.m中定义字典,分组管理所有联系人。分组名为26个大写的英文字母。 

//3、可以添加联系⼈对象,如果姓名或电话号码为空,添加失败。添加联系人到匹配的分 组。

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

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

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

//7、根据姓名删除某个联系人。 8、删除某个分组的全部联系人。



Person.h

//
//  Person.h
//  中级通讯录(OC版)
//
//  Created by lanou3g on 15/11/12.
//  Copyright (c) 2015年 SH. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    NSString *_name;
    NSString *_sex;
    NSString *_address;
    NSString *_tel;
    NSString *_group;
    NSInteger _age;
}

//初始化方法
-(instancetype)initWithName:(NSString *)name
                        sex:(NSString *)sex
                    address:(NSString *)address
                        tel:(NSString *)tel;



//setter
-(void)setName:(NSString *)name;
-(void)setSex:(NSString *)sex;
-(void)setAddress:(NSString *)address;
-(void)setTel:(NSString *)tel;
-(void)setGroup:(NSString *)group;
-(void)setAge:(NSInteger)age;
//getter
-(NSString *)name;
-(NSString *)sex;
-(NSString *)address;
-(NSString *)tel;
-(NSString *)group;
-(NSInteger )age;

//方法
//按姓名排序,得到分组下的联系人
-(NSComparisonResult)sortUsingName:(Person *)aperson;



Person.m

//
//  Person.m
//  中级通讯录(OC版)
//
//  Created by lanou3g on 15/11/12.
//  Copyright (c) 2015年 SH. All rights reserved.
//

#import "Person.h"

@implementation Person
//初始化方法
-(instancetype)initWithName:(NSString *)name
                        sex:(NSString *)sex
                    address:(NSString *)address
                        tel:(NSString *)tel
{
    if(self = [super init])
    {
        _name = name;
        _sex = sex;
        _address = address;
        _tel = tel;
    }
    return self;
}



//setter
-(void)setName:(NSString *)name
{
    _name = name;
}
-(void)setSex:(NSString *)sex;
{
    _sex = sex;
}
-(void)setAddress:(NSString *)address
{
    _address =address;
}
-(void)setTel:(NSString *)tel
{
    _tel = tel;
}
-(void)setGroup:(NSString *)group
{
    _group = group;
}
-(void)setAge:(NSInteger)age
{
    _age = age;
}
//getter
-(NSString *)name
{
    return _name;
}
-(NSString *)sex
{
    return _sex;
}
-(NSString *)address
{
    return _address;
}
-(NSString *)tel
{
    return _tel;
}
-(NSString *)group
{
    return _group;
}
-(NSInteger )age
{
    return _age;
}




//重写父类的description方法  --->
- (NSString *)description
{
    NSString *s = [[NSString alloc]initWithFormat:@"name:%@,sex:%@,address:%@,tel:%@,group:%@,age:%ld",_name,_sex,_address,_tel,_group,_age];
    return s;
}



//方法
//按姓名排序,得到分组下的联系人
-(NSComparisonResult)sortUsingName:(Person *)aperson
{
    //aperson  是我们外部传入的参数  [self name]是我们自身的
    if([[self name] compare:[aperson name]]==NSOrderedSame){//aperson是传进来的参数
        return NSOrderedSame;
    }else if ([[self name]compare:[aperson name]]==NSOrderedDescending){//NSOrderedDescending  降序
        return NSOrderedDescending;
    }else {
        return NSOrderedAscending;
    }
}

@end



PhoneBook.h

//
//  PhoneBook.h
//  中级通讯录(OC版)
//
//  Created by lanou3g on 15/11/12.
//  Copyright (c) 2015年 SH. All rights reserved.
//

#import <Foundation/Foundation.h>

@class Person;
@interface PhoneBook : NSObject
{
    //
    NSMutableDictionary *_phoneBookDict;
    
}

-(instancetype)initWithPhoneBookDict:(NSMutableDictionary *)phoneBookDict;

//setter
-(void)setPhoneBookDict:(NSMutableDictionary *)phoneBookDict;
//getter
-(NSMutableDictionary *)phineBookDict;


//添加联系人
-(void)addPerson:(Person *)aperson;
//显示联系人
-(void)allShow;
//对姓名升序排列
-(void)sortByName:(Person *)aperson;
//根据电话号码搜索联系人
-(void)personByTel:(NSString *)tel;
//根据性别搜索联系人
-(void)personBySex:(NSString *)sex;
//根据姓名删除联系人
-(void)removePersonByName:(NSString *)name;
//删除某个分组
-(void)removeBygroup:(NSString *)group;

@end

PhoneBook.m

///
//  PhoneBook.m
//  中级通讯录(OC版)
//
//  Created by lanou3g on 15/11/12.
//  Copyright (c) 2015年 SH. All rights reserved.
//

#import "PhoneBook.h"
#import "Person.h"

@implementation PhoneBook
//初始化
-(instancetype)initWithPhoneBookDict:(NSMutableDictionary *)phoneBookDict
{
    if(self = [super init]){
        _phoneBookDict = phoneBookDict;
    }
    return self;
}

//setter
-(void)setPhoneBookDict:(NSMutableDictionary *)phoneBookDict
{
    _phoneBookDict = phoneBookDict;
}
//getter
-(NSMutableDictionary *)phineBookDict;
{
    return _phoneBookDict;
}


//添加联系人
-(void)addPerson:(Person *)aperson
{
    BOOL flag1 =[[aperson name] isEqualTo:nil];
    BOOL flag2 = [[aperson tel] isEqualTo:nil];
    if(flag1 || flag2){
        NSLog(@"添加失败");
    }else{
        NSString *str = [aperson name];
        //截取首字母
        NSString *firstChar = [str substringWithRange:NSMakeRange(0, 1)];
        if(![_phoneBookDict objectForKey:firstChar]){
            //建立一个空的数组,装下联系人
            NSMutableArray *arr = [NSMutableArray arrayWithObject:aperson];
            //将我们数组名为firstChar的数组放到字典中
            [_phoneBookDict setObject:arr forKey:firstChar];
        }else{
            //如果已经存在分组,将名字放到对应的数组当中
            [[_phoneBookDict objectForKey:firstChar] addObject:aperson];
        }
    }
    NSLog(@"添加成功!!");
}
//显示联系人
-(void)allShow
{
    NSLog(@"显示联系人");
    for (NSString *key in _phoneBookDict) {
        NSLog(@"分组%@",key);
        
        for (Person *p in [_phoneBookDict objectForKey:key]) {
            NSLog(@"%@",p);
        }
    }
}
//对姓名升序排列
-(void)sortByName:(Person *)aperson;
{
    NSLog(@"对姓名排序");
    NSString *str= [aperson name];
    //获取首字母
    NSString *firstChar = [str substringWithRange:NSMakeRange(0, 1)];
    [[_phoneBookDict objectForKey:firstChar] sortUsingSelector:@selector(sortUsingName:)];//这里的sortUsingName:  是一个方法名,不能写东西
    for (str in [_phoneBookDict objectForKey:firstChar]) {
        NSLog(@"姓名排序:%@",str);
    }
    
}
//根据电话号码搜索联系人
-(void)personByTel:(NSString *)tel
{
    NSLog(@"根据电话搜索联系人:%@",tel);
    for (NSString *k in _phoneBookDict) {
        for (Person *p in [_phoneBookDict objectForKey:k]) {
            if([p.tel isEqualToString:tel]){
                NSLog(@"%@",p);
            }
        }
    }
}
//根据性别搜索联系人
-(void)personBySex:(NSString *)sex
{
    NSLog(@"根据性别搜索联系人:%@",sex);
    for (NSString *k in _phoneBookDict) {
        for (Person *p in [_phoneBookDict objectForKey:k]) {
            if([p.sex isEqualToString:sex]){
                NSLog(@"%@",p);
            }
        }
    }
}
//根据姓名删除联系人
-(void)removePersonByName:(NSString *)name
{
    NSLog(@"根据姓名删除联系人:%@",name);
    //这里
    NSMutableArray *arr = [NSMutableArray arrayWithCapacity:0];
    Person *p1 = nil;
    for (NSString *n in _phoneBookDict) {
        for (Person *p in [_phoneBookDict objectForKey:n]) {
            if ([p.name isEqualToString:name]) {
                arr = [_phoneBookDict objectForKey:n];
                p1 = p;
                
            }
        }
    }
    [arr removeObject:p1];
}
//删除某个分组
-(void)removeBygroup:(NSString *)group
{
    NSLog(@"删除%@分组",group);
    [_phoneBookDict removeObjectForKey:group];
}

@end


main.m

//
//  main.m
//  中级通讯录(OC版)
//
//  Created by lanou3g on 15/11/12.
//  Copyright (c) 2015年 SH. All rights reserved.


#import <Foundation/Foundation.h>
#import "Person.h"
#import "PhoneBook.h"
int main(int argc, const char * argv[]) {

    
    Person *p1 = [[Person alloc]initWithName:@"zhangsan" sex:@"man" address:@"shandong" tel:@"1111111"];
    Person *p2 = [[Person alloc]initWithName:@"lisi" sex:@"man" address:@"shandong" tel:@"2222222"];
    Person *p3 = [[Person alloc]initWithName:@"wangwu" sex:@"man" address:@"shandong" tel:@"3333333"];
    Person *p4 = [[Person alloc]initWithName:@"maliu" sex:@"man" address:@"shandong" tel:@"4444444"];
    Person *p5 = [[Person alloc]initWithName:@"zhangsi" sex:@"man" address:@"shandong" tel:@"5555555"];
    Person *p6 = [[Person alloc]initWithName:@"wangqi" sex:@"man" address:@"shandong" tel:@"6666666"];
//创建一个空的字典
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    //初始化空字典
    PhoneBook *phoneB = [[PhoneBook alloc]initWithPhoneBookDict:dict];
    //添加联系人
    [phoneB addPerson:p1];
    [phoneB addPerson:p2];
    [phoneB addPerson:p3];
    [phoneB addPerson:p4];
    [phoneB addPerson:p5];
    [phoneB addPerson:p6];
    
    
    //显示所有联系人
    [phoneB allShow];
    NSLog(@"------------------------------------------");
    //对姓名进行排序
    [phoneB sortByName:p1];
    NSLog(@"------------------------------------------");
    [phoneB personByTel:@"1111111"];
    NSLog(@"------------------------------------------");
    [phoneB personBySex:@"man"];
    NSLog(@"------------------------------------------");
    [phoneB removePersonByName:@"wangqi"];
    NSLog(@"------------------------------------------");
    [phoneB removeBygroup:@"m"];
    NSLog(@"------------------------------------------");
    [phoneB allShow];

   return 0;
}

程序结果如下:



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值