初级通讯录

实现简单通讯录操作。

?1、定义联系人类AddressPerson。实例变量:姓名、性别、电话号码、住址、分组名称。方法:自定义初始化方法(姓名、电话号码)、显示联系人信息

?2、在main.m中定义可变数组,管理所有联系人。可以添加新联系人对象,如果姓名或电话号码为空,打印添加失败。?

3、获取某个分组下的所有联系人。?

4、根据电话号码搜索联系人。

?5、获取所有女性联系人?

6、根据姓名删除联系人?

7、删除某个分组全部联系人 ?

8、展示通讯录中所有联系人

?9、选做:定义AddressBook类,封装上述功能。

AddressPerson.h

#import <Foundation/Foundation.h>
// 1、定义联系人类AddressPerson。实例变量:姓名、性别、电话号码、住址、分组名称。方法:自定义初始化方法(姓名、电话号码)、显示联系人信息
@interface AddressPerson : NSObject
{
    NSString *_name; //姓名
    NSString *_gender; //性别
    NSString *_phoneNumber; //电话号码
    NSString *_address; //地址
    NSString *_groupName; //分组名称
}
//setter and getter
- (void)setName:(NSString *)name;
- (NSString *)name;

- (void)setGender:(NSString *)gender;
- (NSString *)gender;

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

- (void)setAddress:(NSString *)address;
- (NSString *)address;

- (void)setGroupName:(NSString *)groupName;
- (NSString *)groupName;
// init method
- (id)initWithName:(NSString *)name gender:(NSString *)gender phoneNumber:(NSString *)phoneNumber address:(NSString *)address groupName:(NSString *)groupName;
//sayHi
- (void)sayHi;
@end

AddressPerson.m

#import "AddressPerson.h"

@implementation AddressPerson
//setter and getter
- (void)setName:(NSString *)name
{
    _name = name;
}
- (NSString *)name
{
    return _name;
}

- (void)setGender:(NSString *)gender
{
    _gender = gender;
}
- (NSString *)gender
{
    return _gender;
}

- (void)phoneNumber:(NSString *)phoneNumber
{
    _phoneNumber = phoneNumber;
}
- (NSString *)phoneNumber
{
    return _phoneNumber;
}

- (void)setAddress:(NSString *)address
{
    _address = address;
}
- (NSString *)address
{
    return _address;
}

- (void)setGroupName:(NSString *)groupName
{
    _groupName = groupName;
}
- (NSString *)groupName
{
    return _groupName;
}
// init method
- (id)initWithName:(NSString *)name gender:(NSString *)gender phoneNumber:(NSString *)phoneNumber address:(NSString *)address groupName:(NSString *)groupName
{
    self = [super init];
    if (self) {
        _name = name;
        _gender = gender;
        _phoneNumber = phoneNumber;
        _address = address;
        _groupName = groupName;
    }
    return self;
}
//sayHi
- (void)sayHi
{
    NSLog(@"name:%@, gender:%@m, phoneNumber:%@, address:%@, groupName:%@", _name, _gender, _phoneNumber, _address, _groupName);
}
@end

AddressBook.h

#import <Foundation/Foundation.h>
@class AddressPerson;
@interface AddressBook : NSObject
{
    //实例变量可变数组,用来存储所有的联系人
    NSMutableArray *_allPerson;
}
//1.获取所有联系人。
- (NSMutableArray *)allPerson;
//2.可以添加新联系人对象
- (void)addAddressPerson:(AddressPerson *)person;
//3、获取某个分组下的所有联系人。
- (NSMutableArray *)getAllAddressPersonByGroupName:(NSString *)groupName;
//4、根据电话号码搜索联系人。
- (AddressPerson *)getAddressPersonByPhoneNumber:(NSString *)phoneNumber;
//5、获取所有女性联系人
- (NSMutableArray *)getAllGirlAddressPerson;
//6、根据姓名删除联系人
- (void)deleteAddressPersonByName:(NSString *)name;
//7、删除某个分组全部联系人
- (void)deleteAddressPersonByGroupName:(NSString *)groupName;
//8、展示通讯录中所有联系人
- (void)displayAllAddressPersonInfo;
@end

AddressBook.m

#import "AddressBook.h"
#import "AddressPerson.h"
@implementation AddressBook
//重写从父类继承过来的init初始化方法,在初始化时为数组添加多个联系人.
- (id)init
{
    self = [super init];
    if (self) {
        AddressPerson *chaoQun = [[AddressPerson alloc] initWithName:@"常超群" gender:@"男" phoneNumber:@"383838" address:@"中国" groupName:@"C"];
        AddressPerson *qingCheng = [[AddressPerson alloc] initWithName:@"周青城" gender:@"男" phoneNumber:@"1111111" address:@"大陆" groupName:@"Z"];
        AddressPerson *yanYan = [[AddressPerson alloc] initWithName:@"王艳艳" gender:@"女" phoneNumber:@"333333" address:@"河南" groupName:@"W"];
        AddressPerson *zhangBo = [[AddressPerson alloc] initWithName:@"张博" gender:@"男" phoneNumber:@"4444444" address:@"日本" groupName:@"Z"];
        AddressPerson *duBo = [[AddressPerson alloc] initWithName:@"杜博" gender:@"男" phoneNumber:@"222222" address:@"美国" groupName:@"D"];
        AddressPerson *yuFeng = [[AddressPerson alloc] initWithName:@"赵玉凤" gender:@"女" phoneNumber:@"8888888" address:@"中国" groupName:@"Z"];
        //2.将联系人对象存储在可变数组中
        _allPerson = [[NSMutableArray alloc] initWithObjects:chaoQun, qingCheng, yanYan, zhangBo, duBo, yuFeng, nil];
    }
    return self;
}
//1.获取所有联系人。
- (NSMutableArray *)allPerson
{
    return _allPerson;
}
//2.可以添加新联系人对象
- (void)addAddressPerson:(AddressPerson *)person
{
    //获取姓名
    NSString *name = [person name];
    //获取电话号码
    NSString *phoneNumber = [person phoneNumber];
    //可以添加新联系人对象,如果姓名或电话号码为空,打印添加失败。
    if (!name || !phoneNumber) {
        NSLog(@"联系人添加失败");
    } else {
        [_allPerson addObject:person]; //王力添加到数组中
        NSLog(@"联系人添加成功");
    }
}
//3、获取某个分组下的所有联系人。
- (NSMutableArray *)getAllAddressPersonByGroupName:(NSString *)groupName
{
    //查找整个数组,找到分组为Z的联系人对象,然后添加到另外一个数组中.
    //创建数组存储获取到的联系人,因为分组为Z的联系人可能不止一个.
    NSMutableArray *groupArr = [NSMutableArray arrayWithCapacity:1];
    //对数组allPerson进行快速遍历,查找分组为Z的联系人
    for (AddressPerson *peron in _allPerson) {
        //获取分组名
        NSString *newGroupName = [peron groupName];
        if ([newGroupName isEqualToString:groupName]) {
            [groupArr addObject:peron];
        }
    }
    return groupArr;
}
//4、根据电话号码搜索联系人。
- (AddressPerson *)getAddressPersonByPhoneNumber:(NSString *)phoneNumber
{
    for (AddressPerson *person in _allPerson) {
        NSString *newPhoneNumber = [person phoneNumber];
        if ([newPhoneNumber isEqualToString:phoneNumber]) {
            return person;
        }
    }
    return nil;  //如果不存在返回空
}
//5、获取所有女性联系人
- (NSMutableArray *)getAllGirlAddressPerson
{
    //查找整个数组(所有联系人),找到性别为女的联系人对象,然后添加到另外一个数组中.
    //创建数组存储获取到的联系人,因为性别为女的联系人可能不止一个.所以用数组存储
    NSMutableArray *grilArr = [[NSMutableArray alloc] initWithCapacity:1];
    for (AddressPerson *person in _allPerson) {
        NSString *gender = [person gender]; //获取到性别
        if ([gender isEqualToString:@"女"]) {
            [grilArr addObject:person];
        }
    }
    return grilArr;
}
//6、根据姓名删除联系人
- (void)deleteAddressPersonByName:(NSString *)name
{
    for (int i = 0; i < [_allPerson count];) {
        AddressPerson *person = _allPerson[i];
        NSString *newName = [person name];
        if ([newName isEqualToString:name]) {
            [_allPerson removeObjectAtIndex:i];
        } else {
            i++;
        }
    }
}

//7、删除某个分组全部联系人
- (void)deleteAddressPersonByGroupName:(NSString *)groupName
{
    for (int i = 0; i < [_allPerson count];) {
        AddressPerson *person = _allPerson[i];
        NSString *newGroupName = [person groupName];
        if ([newGroupName isEqualToString:groupName]) {
            [_allPerson removeObjectAtIndex:i];
        } else {
            i++;
        }
    }
}
//8、展示通讯录中所有联系人
- (void)displayAllAddressPersonInfo
{
    for (AddressPerson *person in _allPerson) {
        [person sayHi];
    }
}
@end

main.m

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

    @autoreleasepool {
        //1.创建一个通讯录对象
        AddressBook *addBook = [[AddressBook alloc] init];
        //2.获取所有联系人
        NSMutableArray *allPerson = [addBook allPerson];
        NSLog(@"%@", allPerson);
        //输出所有联系人信息
        [addBook displayAllAddressPersonInfo];
        //3.添加联系人
        AddressPerson *wangLi = [[AddressPerson alloc] initWithName:@"王力" gender:@"男" phoneNumber:@"0000000" address:@"日本" groupName:@"W"];
        [addBook addAddressPerson:wangLi];
        NSLog(@"添加联系人之后的所有联系人");
        //输出所有联系人信息
        [addBook displayAllAddressPersonInfo];
        //4.获取某个分组下的所有联系人. (获取Z分组下的所有联系人).
        NSMutableArray *groupArr = [addBook getAllAddressPersonByGroupName:@"Z"];
        NSLog(@"%@",groupArr);
        //5.根据电话号码搜索联系人. 搜索电话号码为0000000的联系人
        AddressPerson *person = [addBook getAddressPersonByPhoneNumber:@"0000000"];
        NSLog(@"%@",person);
        //6、获取所有女性联系人.
        NSMutableArray *grilArr = [addBook getAllGirlAddressPerson];
        NSLog(@"%@", grilArr);
        //7、根据姓名删除联系人 查找姓名为王力的学生,然后删除掉
        [addBook deleteAddressPersonByName:@"王力"];
        //8、删除某个分组全部联系人, 删除分组为Z的联系人
        [addBook deleteAddressPersonByGroupName:@"Z"];
        //9、展示通讯录中所有联系人
        NSLog(@"输出所有联系人信息");
        [addBook displayAllAddressPersonInfo];
    }
    return 0;
}
时间: 2024-11-25 17:32:41

初级通讯录的相关文章

iOS企业级开发初级课程-表视图(13集)

首先了解了表视图的组成.表视图类的构成.表视图的分类以及表视图的两个重要协议(委托协议和数据源协议),对表视图有了一个整体上的认识.接下来我们掌握了如何实现简单表视图和分节表视图,以及表视图中索引.搜索栏.分组的使用.然后我们学习了如何对表视图单元格进行删除.插入.移动等操作.最后本章向大家介绍了表视图UI设计模式方面的内容. 序号 技术点 1 表视图-1-表视图介绍 2 表视图-2-简单表视图 3 表视图-3-简单表视图下 4 表视图-4-自定义单元格 5 表视图-5-搜索栏-1 6 表视图-

最简单的通讯录,实现了联系人的 增删该查

原文:最简单的通讯录,实现了联系人的 增删该查 源代码下载地址:http://www.zuidaima.com/share/1550463724014592.htm omcat servlet jsp db 最简单的通讯录 实现了联系人的 增删该查 数据库在压缩包内 经验证该分享代码有乱码的问题,界面也很粗糙,导入db也会有乱码问题.大家可以酌情下载,不过对初级工程师有借鉴意义. 登陆页面 http://localhost:端口/项目名称/login.html 管理页面 jdbc的连接配置需要手

极客学院iOS开发工程师初级+中级+高级视频教程

下载地址:百度网盘下载 课程目录: 初级IOS开发工程师 19课程 7小时50分职业介绍1.iOS 开发的前世今生C语言基础 1.二级 C 流程控制 2.二级 C 函数与指针 3.二级 C 数组4.二级 C 字符串5.二级 C 作用域.预处理与存储 6.二级 C 结构体与共用体 7.二级 C 文件Swift语言基础1.Swift 语言基础2.Swift 中的字符串和集合 3.Swift 中的函数和闭包 4.Swift 面向对象基础(上)5.Swift 面向对象基础(中) 6.Swift 面向对象

作为一名初级前端小白,写在年初的一些话

刚开始,还是吐槽一下这个标题吧···原本是打算写在年末的(也就是昨天),奈何大年夜的太忙(2.6才在回家的路上,第二天就大年三十了,基本没什么时间写这篇吐槽了,又熬不动夜),所以就拖到今天了. 其实最初,还是想讲一下从大学刚毕业(2015.06滚出校园),到2016年,新的一年,这一段时间的感受吧. [不忘初心] 好吧,不管是学校里的经历,还是毕业后找工作多么多么辛苦就不废话了(毕竟高中没好好学习,大学是普通的二本,然后大学后又是没好好学习,讲好听点就是拖延症,讲实话就是懒,没长记性),回顾那4

ios-私人通讯录 页面间的跳转和传值

这个demo 有多个页面 并涉及顺传和逆传 而且还有一个第三方库的导入 来实现自定义提示消息的特效 利用代理来实现页面间的传值 一个页面代表一个controller 这次  ViewController  反而一句代码都没写 // // HMContact.h // 私人通讯录 // // Created by YaguangZhu on 15/9/6. // Copyright (c) 2015年 YaguangZhu. All rights reserved. // #import <Fou

ObjectC----实现简单的通讯录(增删改查)

// Created By 郭仔 2015年04月09日21:27:50 经过两天的低迷,状态在慢慢的回归了,生活还要继续,人生还需奋斗! 祝:好人一生平安!!! ======================================================================== 题目描述: 1.创建AddressBook类. 1)使?用字典作为容器,字典的Key值为分组名(姓名?首字?母,?大写),value值为数组,数组 中存放联系?人(Person实例).(5分

C语言写郑州大学校友通讯录

1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #define LEN sizeof(struct address_list) 5 6 /* 7 *************************通讯录结构体*********************************** 8 */ 9 10 struct address_list 11 { 12 char name[30]; /

Shell脚本初级练习篇

Shell脚本初级练习篇 脚本1 作用:创建10个1M的文件 [[email protected] script]# cat make_file.sh  #!/bin/bash # for i in $(seq 1 10);do     dd if=/dev/zero of=/data/test/test"${i}" bs=1M count=1 done 脚本2 作用:移走/data/test目录下大于100K的普通文件到/tmp目录下 [[email protected] scrip

Java企业微信开发_03_通讯录同步

一.本节要点 1.获取通讯录密钥 获取方式: 登录企业微信—>管理工具—>通讯录同步助手—>开启“API接口同步”  ; 开启后,即可看到通讯录密钥,也可设置通讯录API的权限:读取或者编辑通讯录. 获取通讯录密钥的目的: 通过企业ID(CorpId)和 通讯录密钥可以获取通讯录相关接口的使用凭证(AccessToken).有了AccessToken,就可以使用通讯录相关接口了. 凭证的获取方式有两种(此处暂时存疑,以待勘误): 通讯录AccessToken:CorpId+通讯录密钥 其