OC第七讲容器类——通讯录

第三题 通讯录
定义联系人类Person

  成员变量:中文姓名、性别、电话号码、住址、分组名称。       

  方法:初始化方法(姓名、电话号码)、显示联系人信息

定义通讯录类AddressBook

1、管理所有联系人。

2、添加新联系人对象,如果姓名或电话号码为空,输出添加失败。
3、获取某个分组下的所有联系人。
4、根据电话号码搜索联系人。
5、获取所有女性联系人
6、根据姓名删除联系人
7、删除某个分组全部联系人
8、展示通讯录中所有联系人的姓名


// 创建person类
// person.h
#import <Foundation/Foundation.h>

@interface Person : NSObject

@property(nonatomic, retain) NSString *name;
@property(nonatomic, retain) NSString *sex;
@property(nonatomic, assign) long number;
@property(nonatomic, retain) NSString *address;
@property(nonatomic, retain) NSString *groupName;

///初始化(姓名,电话号码)
- (id)initWithName:(NSString *)name
               sex:(NSString *)sex
            number:(long)number
           address:(NSString *)address
         groupName:(NSString *)groupName;
///便利构造器
+ (id)personWithName:(NSString *)name
                 sex:(NSString *)sex
              number:(long)number
             address:(NSString *)address
           groupName:(NSString *)groupName;
///显示联系人信息
- (void)introduce;
@end

// person.m
#import "Person.h"

@implementation Person
///初始化(姓名,电话号码)
- (id)initWithName:(NSString *)name
               sex:(NSString *)sex
            number:(long)number
           address:(NSString *)address
         groupName:(NSString *)groupName
{
    self = [super init];
    if (self) {
        _name = name;
        _sex = sex;
        _number = number;
        _address = address;
        _groupName = groupName;
    }
    return self;
}
///便利构造器
+ (id)personWithName:(NSString *)name
                 sex:(NSString *)sex
              number:(long)number
             address:(NSString *)address
           groupName:(NSString *)groupName
{
    return [[Person alloc] initWithName:name sex:sex number:number address:address groupName:groupName];
}
///显示联系人信息
- (void)introduce
{
    NSLog(@"姓名:%@,性别:%@,电话号码:%ld,住址:%@,分组名:%@",
          _name, _sex, _number, _address, _groupName);
}
@end

// 创建AddressBook类
// AddressBook.h
#import "Person.h"

@interface AddressBook : NSObject

@property(nonatomic, retain) NSMutableArray *addressBook;

///初始化
- (id)initWithAddressBook:(NSMutableArray *)addressBook;
///便利构造器
+ (id)addressBookWithAddressBook:(NSMutableArray *)addressBook;

///添加联系人
- (void)add:(Person *)person;
///某个分组下的所有人
- (void)groupAll:(NSString *)p;
///根据电话号码搜索联系人
- (void)searchNumber:(long)n;
///获取所有女性联系人
- (void)womanContact;
///根据姓名删除联系人
- (void)deleteContact:(NSString *)p;
///删除某个分组全部联系人
- (void)deleteGroupAll:(NSString *)p;
///打印所有联系人的姓名
- (void)printContact;
///打印所有联系人的姓名
- (void)printContactName;
@end

// AddressBook.m
#import "AddressBook.h"

@implementation AddressBook
///初始化
- (id)initWithAddressBook:(NSMutableArray *)addressBook
{
    self = [super init];
    if (self) {
        _addressBook = addressBook;
    }
    return self;
}
///便利构造器
+ (id)addressBookWithAddressBook:(NSMutableArray *)addressBook
{
    return [[AddressBook alloc] initWithAddressBook:addressBook];
}
///添加联系人
- (void)add:(Person *)person
{
    if (nil == person.name || 0 == person.number) {
        NSLog(@"姓名或电话为空,添加失败。。。。。");
    } else {
        [_addressBook addObject:person];
        [person introduce];
    }
}
///某个分组下的所有人
- (void)groupAll:(NSString *)p
{
    for (Person *dic in _addressBook) {
        if ([p compare:[dic groupName]] == 0) {
            [dic introduce];
//            NSLog(@"name : %@", [dic name]);
//            NSLog(@"sex : %@", [dic sex]);
//            NSLog(@"number : %ld", [dic number]);
//            NSLog(@"address : %@", [dic address]);
//            NSLog(@"groupName : %@", [dic groupName]);
        }
    }
}
///根据电话号码搜索联系人
- (void)searchNumber:(long)n
{
    for (Person *dic in _addressBook) {
            if (n == [dic number]) {
                NSLog(@"name : %@", [dic name]);
                NSLog(@"number : %ld", [dic number]);
            }
    }
}
///获取所有女性联系人
- (void)womanContact
{
    for (Person *dic in _addressBook) {
            if ([@"女" compare:[dic sex]] == 0) {
                [dic introduce];
            }
    }

}
///根据姓名删除联系人
- (void)deleteContact:(NSString *)p
{
    for (Person *dic in _addressBook) {
        if ([p compare:[dic name]] == 0) {
            [_addressBook removeObject:dic];
            break;
        }
    }
    [self printContact];
}
///删除某个分组全部联系人
- (void)deleteGroupAll:(NSString *)p
{
    for (int i = 0; i < [_addressBook count]; i++) {
        if ([p compare:[_addressBook[i] groupName]] == 0) {
            [_addressBook removeObject:_addressBook[i]];
            i--;
        }
    }
    [self printContact];
}
///打印所有联系人
- (void)printContact
{
    for (Person *dic in _addressBook) {
        NSLog(@"name : %@", [dic name]);
        NSLog(@"sex : %@", [dic sex]);
        NSLog(@"number : %ld", [dic number]);
        NSLog(@"address : %@", [dic address]);
        NSLog(@"groupName : %@", [dic groupName]);
    }
}
///打印所有联系人的姓名
- (void)printContactName
{
    for (Person *dic in _addressBook) {
        NSLog(@"name : %@", [dic name]);
    }
}
@end


主函数main.m
#import <Foundation/Foundation.h>
#import "Person.h"
#import "AddressBook.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        Person *p1 = [Person personWithName:@"刘莉" sex:@"女" number:15142387282 address:@"辽师西山" groupName:@"好朋友"];
        Person *p2 = [Person personWithName:@"荃荃" sex:@"女" number:13591758846 address:@"辽师西山" groupName:@"好朋友"];
        Person *p3 = [Person personWithName:@"刘畅" sex:@"男" number:13372861970 address:@"东软三期" groupName:@"同桌"];
        Person *p4 = [Person personWithName:@"于东海" sex:@"男" number:11012011912 address:@"黑石礁" groupName:@"蓝鸥同学"];
        Person *p5 = [Person personWithName:@"张恒" sex:@"男" number:78945613115 address:@"东软三期" groupName:@"蓝鸥同学"];
        NSMutableArray *person = [NSMutableArray arrayWithObjects:p1, p2, p3, p4, p5, nil];
        AddressBook *addressBook = [AddressBook addressBookWithAddressBook:person];
        
        NSLog(@"。。。。。添加新联系人。。。。。");
        Person *p6 = [Person personWithName:nil sex:@"女" number:45540025 address:@"地球人" groupName:@"蓝鸥同学"];
        Person *p7 = [Person personWithName:@"刘伟" sex:@"男" number:45631299 address:@"大连海事" groupName:@"蓝鸥同学"];
        [addressBook add:p6];
        [addressBook add:p7];
        
        NSLog(@"。。。。。获取某个分组下的所有联系人。。。。。");
        [addressBook groupAll:@"同桌"];
        
        NSLog(@"。。。。。根据电话号码搜索联系人。。。。。");
        [addressBook searchNumber:78945613115];
        
        NSLog(@"。。。。。获取所有女性联系人。。。。。");
        [addressBook womanContact];
        
        NSLog(@"。。。。。根据姓名删除联系人。。。。。");
        [addressBook deleteContact:@"于东海"];
        
        NSLog(@"。。。。。删除某个分组全部联系人。。。。。");
        [addressBook deleteGroupAll:@"蓝鸥同学"];
        
        NSLog(@"。。。。。打印通讯录中所有联系人的姓名。。。。。");
        [addressBook printContactName];
        
    }
    return 0;
}






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值