第三题 通讯录
定义联系人类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;
}