您的位置:首页 > 其它

用OC语⾔言完成简易通讯录(实现增删改查)功 能. (注:使用MRC)

2015-08-28 17:32 691 查看
#import <Foundation/Foundation.h>

@interface Person : NSObject

@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *gender;
@property (nonatomic, copy) NSString *phone;
@property (nonatomic, copy) NSString *group;
@property (nonatomic, assign) int age;

- (instancetype)initWithName:(NSString *)name gender:(NSString *)gender phone:(NSString *)phone age:(int)age;

+ (id)personWithName:(NSString *)name gender:(NSString *)gender phone:(NSString *)phone age:(int)age;

@end

#import "Person.h"

@implementation Person

- (NSString *)description
{
return [NSString stringWithFormat:@"name:%@,age:%d,gender:%@,phone:%@", self.name,self.age,self.gender,self.phone];
}

- (instancetype)initWithName:(NSString *)name gender:(NSString *)gender phone:(NSString *)phone age:(int)age {
self = [super init];
if (self) {
self.name = name;
self.gender = gender;
self.phone = phone;
self.age = age;
}
return self;
}

+ (id)personWithName:(NSString *)name gender:(NSString *)gender phone:(NSString *)phone age:(int)age {
Person *p = [[Person alloc] initWithName:name gender:gender phone:phone age:age] ;
[p autorelease];
return p;
}

- (void)dealloc
{
[_name release];
[_gender release];
[_phone release];
[_group release];
NSLog(@"%@对象被销毁",self);
[super dealloc];
}
@end

#import <Foundation/Foundation.h>

@interface NSString (Characters)

+ (NSString *)firstCharWithName:(NSString *)name;

@end

#import "NSString+Characters.h"

@implementation NSString (Characters)

+ (NSString *)firstCharWithName:(NSString *)name {
return [[name substringToIndex:1] uppercaseString];
}

@end

#import <Foundation/Foundation.h>
#import "Person.h"
#import "NSString+Characters.h"
@interface AddressBook : NSObject

@property (nonatomic, retain) NSMutableDictionary *allPersonDic;

// 3.添加联系人
- (BOOL)addPerson:(Person *)aPerson;

// 4.根据电话查找某个联系人.
-(Person *)findPersonWithPhoneNum:(NSString *)aPhoneNum;

// 5.根据性别查找联系人,并将查到的联系人按照年龄升序排序
-(NSArray *)findPersonsWithSex:(NSString *)aSex;

// 6.根据姓名,更改联系人信息.
-(BOOL)changePersonWithName:(NSString *)name phoneNum:(NSString *)aNum sex:(NSString *)aSex age:(int)aAge;

// 7.按照姓名删除联系人
- (BOOL)deletePersonWithName:(NSString *)aPersonName;

// 8.删除一个分组
- (BOOL)deleteGroup:(NSString *)aGroupName;

// 9.展示通讯录中的所有联系人信息
-(void)showAll;

@end

#import "AddressBook.h"

@implementation AddressBook

- (instancetype)init {
self = [super init];
if (self) {
self.allPersonDic = [NSMutableDictionary dictionaryWithCapacity:1];
}
return self;
}

- (void)dealloc
{
[_allPersonDic release];
NSLog(@"%@对象被销毁",self);
[super dealloc];
}

// 3.添加联系人
- (BOOL)addPerson:(Person *)aPerson {
BOOL isAdd = NO;
if (aPerson.name == nil || aPerson.phone == nil) {
NSLog(@"添加失败");
}else {
NSString *firstChar = [NSString firstCharWithName:aPerson.name];
NSMutableArray *mArr = [self.allPersonDic valueForKey:firstChar];
if (mArr == nil) {
NSMutableArray *mArr = [NSMutableArray arrayWithCapacity:1];
[self.allPersonDic setObject:mArr forKey:firstChar];
[mArr addObject:aPerson];
}else {
[mArr addObject:aPerson];
}
isAdd = YES;
NSLog(@"添加成功");
}
return isAdd;
}

// 4.根据电话查找某个联系人.
-(Person *)findPersonWithPhoneNum:(NSString *)aPhoneNum {
for (id key in self.allPersonDic) {
for (Person *person in [self.allPersonDic valueForKey:key]) {
if ([aPhoneNum isEqualToString:person.phone]) {
return person;
}
}
}
return nil;
}

// 5.根据性别查找联系人,并将查到的联系人按照年龄升序排序
-(NSArray *)findPersonsWithSex:(NSString *)aSex {
NSMutableArray *mArrSort = [NSMutableArray arrayWithCapacity:1];
for (id key in self.allPersonDic) {
NSMutableArray *mArr = [self.allPersonDic valueForKey:key];
for (Person *person in mArr) {
if ([aSex isEqualToString:person.gender]) {
[mArrSort addObject:person];
}
}
}
[mArrSort sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 age] > [obj2 age];
}];
return mArrSort;
}

// 6.根据姓名,更改联系人信息.
-(BOOL)changePersonWithName:(NSString *)name phoneNum:(NSString *)aNum sex:(NSString *)aSex age:(int)aAge {
BOOL isChange = NO;
if (aNum == nil || aSex == nil || aAge == 0) {
NSLog(@"更新失败");
}else {
for (id key in self.allPersonDic) {
for (Person *person in [self.allPersonDic valueForKey:key]) {
if ([name isEqualToString:person.name]) {
[person initWithName:name gender:aSex phone:aNum age:aAge];
isChange = YES;
}
}
}
NSLog(@"更新成功");
}
return isChange;
}

// 7.按照姓名删除联系人
- (BOOL)deletePersonWithName:(NSString *)aPersonName {
BOOL isDeletePerson = NO;
for (id key in self.allPersonDic) {
NSMutableArray *mArr = [self.allPersonDic valueForKey:key];
for (NSInteger i = [mArr count]; i > 0 ; i--) {
if ([aPersonName isEqualToString:[[mArr objectAtIndex:i-1] name]]) {
[mArr removeObjectAtIndex:i-1];
// 当删除联系⼈后分组为空时,需要删除该分组
if ([self.allPersonDic[key] count] == 0) {
[self.allPersonDic removeObjectForKey:key];
}
isDeletePerson = YES;
}
}
}
return isDeletePerson;
}

// 8.删除一个分组
- (BOOL)deleteGroup:(NSString *)aGroupName {
BOOL isDeleteGroup = NO;
for (id key in self.allPersonDic) {
if ([aGroupName isEqualToString:key]) {
isDeleteGroup = YES;
}
}
[self.allPersonDic removeObjectForKey:aGroupName];
return isDeleteGroup;
}

// 9.展示通讯录中的所有联系人信息
-(void)showAll {
NSLog(@"%@",self.allPersonDic);
}

- (NSString *)description
{
return [NSString stringWithFormat:@"%@", self.allPersonDic];
}
@end

#import <Foundation/Foundation.h>
#import "Person.h"
#import "AddressBook.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *p1 = [Person personWithName:@"Lucy" gender:@"woman" phone:@"123" age:21];
Person *p2 = [Person personWithName:@"Joe" gender:@"man" phone:@"456" age:17];
Person *p3 = [Person personWithName:@"Baby" gender:@"woman" phone:@"789" age:27];
Person *p4 = [Person personWithName:@"Linda" gender:@"woman" phone:@"000" age:21];

AddressBook *book = [[[AddressBook alloc] init] autorelease];

// 3.添加联系人
[book addPerson:p1];
[book addPerson:p2];
[book addPerson:p3];
[book addPerson:p4];
[book showAll];

// 4.根据电话查找某个联系人.
Person *findPerson = [book findPersonWithPhoneNum:@"456"];
NSLog(@"%@",findPerson);

// 5.根据性别查找联系人,并将查到的联系人按照年龄升序排序
NSArray *arrSort = [book findPersonsWithSex:@"woman"];
NSLog(@"%@",arrSort);

// 6.根据姓名,更改联系人信息.
BOOL isChange = [book changePersonWithName:@"Linda" phoneNum:@"012" sex:@"woman" age:25];
if (isChange) {
[book showAll];
}

// 7.按照姓名删除联系人
BOOL isDeletePerson = [book deletePersonWithName:@"Baby"];
if (isDeletePerson) {
NSLog(@"删除成功");
[book showAll];
}

// 8.删除一个分组
BOOL isDeleteGroup = [book deleteGroup:@"L"];
if (isDeleteGroup) {
NSLog(@"删除成功");
[book showAll];
}

// 9.展示通讯录中的所有联系人信息
[book showAll];

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: