字典管理通讯录的增删改查分组

这个博客介绍了一个用Objective-C编写的通讯录管理系统,通过字典和数组存储和管理联系人信息,包括增删改查和按分组管理。系统包括AddressContact对象模型,实现了联系人信息的描述、设置和获取方法,以及AddressBook类,提供添加、搜索、删除联系人以及按分组管理的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//
//  AddressContact.h
//  OCHomeWorkSet
//
//  Created by lanouhn on 14-8-8.
//  Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface AddressContact : NSObject {
    NSString *_name;//姓名
    NSString *_gender;//性别
    NSString *_phoneNumber;//电话号码
    NSString *_address;//住址
    NSString *_groupName;//分组名称
    NSInteger _age;//年龄
}
//自定义初始化方法
- (id)initWithName:(NSString *)name phoneNumber:(NSString *)phoneNumber;
//显示联系人信息
- (NSString *)description;
//setter
- (void)name:(NSString *)name;
- (void)gender:(NSString *)gender;
- (void)phoneNumber:(NSString *)phoneNumber;
- (void)address:(NSString *)address;
- (void)groupName:(NSString *)groupName;
//getter
- (NSString *)name;
- (NSString *)gender;
- (NSString *)phoneNumber;
- (NSString *)address;
- (NSString *)groupName;


@end
//
//  AddressContact.m
//  OCHomeWorkSet
//
//  Created by lanouhn on 14-8-8.
//  Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//

#import "AddressContact.h"

@implementation AddressContact
//自定义初始化方法
- (id)initWithName:(NSString *)name phoneNumber:(NSString *)phoneNumber {
    self = [super init];
    if (self) {
        _name = name;
        _phoneNumber = phoneNumber;
    }
    return self;
}
//显示联系人信息
- (NSString *)description
{
    return [NSString stringWithFormat:@"name:%@, phoneNumber:%@", _name, _phoneNumber];
}
//setter
- (void)name:(NSString *)name {
    _name = name;
}
- (void)gender:(NSString *)gender {
    _gender = gender;
}
- (void)phoneNumber:(NSString *)phoneNumber {
    _phoneNumber = phoneNumber;
}
- (void)address:(NSString *)address {
    _address = address;
}
- (void)groupName:(NSString *)groupName {
    _groupName = groupName;
}
//getter
- (NSString *)name {
    return _name;
}
- (NSString *)gender {
    return _gender;
}
- (NSString *)phoneNumber {
    return _phoneNumber;
}
- (NSString *)address {
    return _address;
}
- (NSString *)groupName {
    return _groupName;
}

@end
//
//  AddressBook.h
//  OCHomeWorkSet
//
//  Created by lanouhn on 14-8-8.
//  Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "AddressContact.h"
@interface AddressBook : NSObject
//添加联系人对象,如果姓名或电话号码为空,添加失败。添加联系人到匹配的分组
- (void)addAddressContact:(AddressContact *)addressContact dic:(NSMutableDictionary *)dic;
//从通讯录中根据电话号码搜索联系人
- (void)searchAddressContact:(NSString *)tempPhoneNumber dic:(NSMutableDictionary *)dic;
//根据姓名删除某个联系人
- (void)removeAddressContactByName:(NSString *)tempName dic:(NSMutableDictionary *)dic;
//删除某个分组的全部联系人
- (void)removeAddressContactByGroupName:(NSString *)tempGroupName dic:(NSMutableDictionary *)dic;
@end
//
//  AddressBook.m
//  OCHomeWorkSet
//
//  Created by lanouhn on 14-8-8.
//  Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//

#import "AddressBook.h"

@implementation AddressBook
//添加联系人对象,如果姓名或电话号码为空,添加失败。添加联系人到匹配的分组
- (void)addAddressContact:(AddressContact *)addressContact dic:(NSMutableDictionary *)dic {
    if ([[addressContact name] isEqualToString:@""] || [[addressContact phoneNumber] isEqualToString:@""]) {
        NSLog(@"添加失败");
    } else {
        unichar c = [[addressContact name] characterAtIndex:0];
        NSString *strKey = [NSString stringWithFormat:@"%c", c];
        [[dic objectForKey:strKey] addObject:addressContact];
        NSLog(@"添加%@成功", [addressContact name]);
    }
}
//从通讯录中根据电话号码搜索联系人
- (void)searchAddressContact:(NSString *)tempPhoneNumber dic:(NSMutableDictionary *)dic {
    for (NSString *key in dic) {
        NSMutableArray *arr = [dic objectForKey:key];
        for (AddressContact *addressContact in arr) {
            if ([[addressContact phoneNumber] isEqualToString: tempPhoneNumber]) {
                NSLog(@"%@", addressContact);
            }
        }
    }
}
//根据姓名删除某个联系人
- (void)removeAddressContactByName:(NSString *)tempName dic:(NSMutableDictionary *)dic {
    for (NSString *key in dic) {
        NSMutableArray *arr = [dic objectForKey:key];
        NSArray *tempArr = [NSArray arrayWithArray:arr];
        for (AddressContact *addressContact in tempArr) {
            if ([[addressContact name] isEqualToString: tempName]) {
                [arr removeObject:addressContact];
                NSLog(@"删除联系人%@成功",tempName);
            }
        }
    }
}
//删除某个分组的全部联系人
- (void)removeAddressContactByGroupName:(NSString *)tempGroupName dic:(NSMutableDictionary *)dic {
    NSDictionary *tempdic = [NSDictionary dictionaryWithDictionary:dic];
    for (NSString *key in tempdic) {
        if ([key isEqualToString: tempGroupName]) {
            [[dic objectForKey:key] removeAllObjects];
        }
    }
    NSLog(@"删除%@分组全部联系人成功", tempGroupName);
}
@end
//
//  main.m
//  OCHomeWorkSet
//
//  Created by lanouhn on 14-8-8.
//  Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "AddressContact.h"
#import "AddressBook.h"
#define kWork 4
int main(int argc, const char * argv[])
{

    @autoreleasepool {
        //创建联系人
        AddressContact *wangYi = [[AddressContact alloc] initWithName:@"WangYi" phoneNumber:@"15036894675"];
        AddressContact *songEr = [[AddressContact alloc] initWithName:@"SongEr" phoneNumber:@"15569894675"];
        AddressContact *zhangSan = [[AddressContact alloc] initWithName:@"ZhangSan" phoneNumber:@"15654894675"];
        AddressContact *liSi = [[AddressContact alloc] initWithName:@"LiSi" phoneNumber:@"15036894987"];
        AddressContact *wangWu = [[AddressContact alloc] initWithName:@"WangWu" phoneNumber:@"15036865478"];
        AddressContact *zhaoLiu = [[AddressContact alloc] initWithName:@"ZhaoLiu" phoneNumber:@"13486894675"];
        AddressContact *chenQi = [[AddressContact alloc] initWithName:@"ChenQi" phoneNumber:@"13056894675"];
        AddressContact *zhangJiu = [[AddressContact alloc] initWithName:@"ZhangJiu" phoneNumber:@"13566894987"];
        AddressContact *songBa = [[AddressContact alloc] initWithName:@"SongBa" phoneNumber:@"15036541275"];
        AddressContact *wuShi = [[AddressContact alloc] initWithName:@"WuShi" phoneNumber:@"15039812375"];
        //创建可变数组存储联系人
        NSMutableArray *arrC = [NSMutableArray arrayWithObjects:chenQi, nil];
        NSMutableArray *arrL = [NSMutableArray arrayWithObjects:liSi, nil];
        NSMutableArray *arrS = [NSMutableArray arrayWithObjects:songEr, songBa, nil];
        NSMutableArray *arrW = [NSMutableArray arrayWithObjects:wangYi, wangWu, nil];
        NSMutableArray *arrZ = [NSMutableArray arrayWithObjects:zhangSan, zhaoLiu, zhangJiu, nil];
        //创建字典分组和数组
        NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:arrC, @"C", arrL, @"L", arrS, @"S", arrW, @"W", arrZ, @"Z", nil];
//        NSLog(@"%@", dic);
        //创建一个AddressBook对象
        AddressBook *addressBook = [[AddressBook alloc] init];
#if kWork == 1
        //添加联系人对象,如果姓名或电话号码为空,添加失败。添加联系人到匹配的分组
        NSLog(@"添加联系人到匹配的分组");
        [addressBook addAddressContact:wuShi dic:dic];
        NSLog(@"%@", dic);
#elif kWork == 2
        //从通讯录中根据电话号码搜索联系人
        NSLog(@"从通讯录中根据电话号码搜索联系人");
        NSLog(@"请输入要查找的联系人的电话号码");
        char a[20] = {0};
        scanf("%s", a);
        NSString *str = [NSString stringWithUTF8String:a];
        [addressBook searchAddressContact:str dic:dic];
#elif kWork == 3
        //根据姓名删除某个联系人
        NSLog(@"根据姓名删除某个联系人");
        NSLog(@"请输入要删除联系人的姓名");
        char a[20] = {0};
        scanf("%s", a);
        NSString *str = [NSString stringWithUTF8String:a];
        [addressBook removeAddressContactByName:str dic:dic];
        NSLog(@"%@", dic);
#elif kWork == 4
        //删除某个分组的全部联系人
        NSLog(@"删除分组的全部联系人");
        NSLog(@"请输入要删除联系人的分组");
        char a[20] = {0};
        scanf("%s", a);
        NSString *str = [NSString stringWithUTF8String:a];
        [addressBook removeAddressContactByGroupName:str dic:dic];
        NSLog(@"%@", dic);
#endif
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值