OC语言实现中等难度通讯录

简介:

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

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

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

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

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

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

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

7、根据姓名删除某个联系⼈人。

8、删除某个分组的全部联系⼈人。

Contact.h

#import


@interface Contact : NSObject

@property (nonatomic, retain)NSString *name;

@property (nonatomic, assign)NSInteger age;

@property (nonatomic, retain)NSString *sex;

@property (nonatomic, retain)NSString *phoneNumber;

@property (nonatomic, retain)NSString *addr;

@property (nonatomic, retain)NSString *group;


- (id)initWithName:(NSString *)name

age:(NSInteger)age

sex:(NSString *)sex

phoneNumber:(NSString *)phone;


+ (id)contactWithName:(NSString *)name

age:(NSInteger)age

sex:(NSString *)sex

phoneNumber:(NSString *)phone

addr:(NSString *)addr;


- (NSComparisonResult)sortContactByAge:(Contact *)otherCont;



- (NSComparisonResult)sortContactByName:(Contact *)otherCont;


- (void)info;


@end


Contact.m

#import "Contact.h"


@implementation Contact


- (id)initWithName:(NSString *)name

age:(NSInteger)age

sex:(NSString *)sex

phoneNumber:(NSString *)phone

{

self = [super init];

if (self) {

_name = name;

_age = age;

_sex = sex;

_phoneNumber = phone;

}

return self;

}


+ (id)contactWithName:(NSString *)name

age:(NSInteger)age

sex:(NSString *)sex

phoneNumber:(NSString *)phone

addr:(NSString *)addr

{

Contact *con = [[Contact alloc]initWithName:name age:age sex:sex phoneNumber:phone];

con.addr = addr;

con.group = [[con.name substringToIndex:1]uppercaseString];

return con;

}


- (NSComparisonResult)sortContactByAge:(Contact *)otherCont


{

if (self.age > otherCont.age) {

return NSOrderedDescending;

}

else if (self.age < otherCont.age){

return NSOrderedAscending;

}

else

return NSOrderedSame;

}

- (NSComparisonResult)sortContactByName:(Contact *)otherCont

{

if ([self.name compare:otherCont.name] > 0) {

return NSOrderedAscending;

}

else if ([self.name compare:otherCont.name] < 0){

return NSOrderedDescending;

}

else

return NSOrderedSame;

}

- (void)info

{

NSLog(@"name:%@, age:%ld, sex:%@, phone:%@, addr:%@, group:%@", _name, _age, _sex, _phoneNumber, _addr, _group);

}

@end


AddressBook.h

//

// AddressBook.h

// 07_字典实现通讯录

//

// Created by zhangzhipeng on 15/4/15.

// Copyright (c) 2015年 www.lanou3g.com蓝欧3G. All rights reserved.

//


#import

#import "Contact.h"



@interface AddressBook : NSObject


@property (nonatomic, retain) NSMutableDictionary *conDic;


- (id)init;


- (void)addContactPersonName:(NSString *)name

age:(NSInteger)age

sex:(NSString *)sex

phoneNumber:(NSString *)phone

addr:(NSString *)addr;


- (void)getAllContactByGroupAndSortByNameAsceding:(NSString*)group;


- (void)searchContactByPhoneNumber:(NSString *)phoneNumber;


- (void)getAllContactBySexAndSortByNameDescding:(NSString *)sex;


- (void)deleteContactByName:(NSString *)name;


- (void)deleteContactByGroup:(NSString *)group;


- (void)listAllContact;

@end



AddressBook.m

//

// AddressBook.m

// 07_字典实现通讯录

//

// Created by zhangzhipeng on 15/4/15.

// Copyright (c) 2015年 www.lanou3g.com蓝欧3G. All rights reserved.

//


#import "AddressBook.h"


@implementation AddressBook


- (id)init

{

self = [super init];

if (self) {

self.conDic = [NSMutableDictionary dictionary];

}

return self;

}


- (void)addContactPersonName:(NSString *)name

age:(NSInteger)age

sex:(NSString *)sex

phoneNumber:(NSString *)phone

addr:(NSString *)addr


{

if (name == nil || [name isEqualToString:@" "] || phone ==nil || [phone isEqualToString:@" "]) {

NSLog(@"增加联系人失败");

}

else

{

Contact *con = [Contact contactWithName:name age:age sex:sex phoneNumber:phone addr:addr];

NSMutableArray *conArr = [self.conDicvalueForKey:con.group];

if (conArr == nil) {

conArr = [NSMutableArray array];

[conArr addObject:con];

[self.conDic setObject:conArr forKey:con.group];

}

else{

[conArr addObject:con];

}

}

}


- (void)getAllContactByGroupAndSortByNameAsceding:(NSString*)group

{

NSMutableArray *mArr = [self.conDic valueForKey:group];

[mArr sortUsingSelector:@selector(sortContactByName:)];

for (Contact *cont in mArr) {

[cont info];

}

}


- (void)searchContactByPhoneNumber:(NSString *)phoneNumber

{

NSMutableArray *arrPhoneNumber = [NSMutableArray array];

for (NSString *key in self.conDic) {

NSMutableArray *mArr = [self.conDic objectForKey:key];

for (Contact *cont in mArr) {

if ([cont.phoneNumber isEqualToString:phoneNumber]) {

[arrPhoneNumber addObject:cont];

}

}

}

for (Contact *cont in arrPhoneNumber) {

[cont info];

}

}


- (void)getAllContactBySexAndSortByNameDescding:(NSString *)sex

{

NSMutableArray *arrSex = [NSMutableArray array];

for (NSString *key in self.conDic) {

NSMutableArray *arr = [self.conDic valueForKey:key];

for (Contact *cont in arr) {

if ([cont.sex isEqualToString:sex]) {

[arrSex addObject:cont];

}

}

}

[arrSex sortUsingSelector:@selector(sortContactByAge:)];

for (Contact *cont in arrSex) {

[cont info];

}

}


- (void)deleteContactByName:(NSString *)name

{

NSMutableArray *arrDelete = [NSMutableArray array];

for ( NSString *key in self.conDic) {

NSMutableArray *arr = [self.conDic valueForKey:key];

for (Contact *cont in arr) {

if ([cont.name isEqualToString:name]) {

[arrDelete addObject:cont];

}

}

[arr removeObjectsInArray:arrDelete];

}

}


- (void)deleteContactByGroup:(NSString *)group

{

[self.conDic removeObjectForKey:group];

}


- (void)listAllContact

{

for (NSString *key in self.conDic) {

NSMutableArray *mArr = [self.conDic valueForKey:key];

for (Contact *con in mArr) {

[con info];

}

}

}


@end



转自:http://blog.csdn.net/qq_31810357

相关文章
|
3月前
|
存储 C语言
探索C语言数据结构:利用顺序表完成通讯录的实现
本文介绍了如何使用C语言中的顺序表数据结构实现一个简单的通讯录,包括初始化、添加、删除、查找和保存联系人信息的操作,以及自定义结构体用于存储联系人详细信息。
44 2
|
3月前
|
存储 C语言
手把手教你用C语言实现通讯录管理系统
手把手教你用C语言实现通讯录管理系统
|
5月前
|
存储 搜索推荐 算法
【C语言】C语言—通讯录管理系统(源码)【独一无二】
【C语言】C语言—通讯录管理系统(源码)【独一无二】
|
5月前
|
存储 数据可视化 C语言
【C语言】C语言 手机通讯录系统的设计 (源码+数据+论文)【独一无二】
【C语言】C语言 手机通讯录系统的设计 (源码+数据+论文)【独一无二】
|
7月前
|
机器学习/深度学习 搜索推荐 程序员
C语言实现个人通讯录(功能优化)-2
C语言实现个人通讯录(功能优化)
|
7月前
|
存储 C语言 索引
C语言实现个人通讯录(功能优化)-1
C语言实现个人通讯录(功能优化)
C语言实现个人通讯录(功能优化)-1
|
7月前
|
存储 人机交互 C语言
【C语言项目实战】使用单链表实现通讯录
【C语言项目实战】使用单链表实现通讯录
|
机器学习/深度学习 人工智能 C语言
C语言简单实现14个例题(谭浩强第四版)
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396241 1、仅供学习交流参考。
1168 0
|
1月前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
69 10
|
1月前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
52 9