OC上机考试试题 ————通讯录
要求描述:⽤OC语言完成简易通讯录(实现增删改查)功 能.
(注:使⽤用MRC)
一、功能描述:
main函数中通过使用Person类和AddressBook类,创建对象、调⽤方法,实现以下要求 :
1).使⽤便利构造器创建四个Person类的实例(联系人).
姓名:Lucy 性别:⼥ 电话:123 年龄:21 姓名:Joe 性别:男 电话:456 年龄:17 姓名:Baby 性别:女 电话:789 年龄:27 姓名:Linda 性别:⼥ 电话:000 年龄:21
2).创建⼀一个AddressBook类的实例对象(通讯录). 3).使用AddressBook类中定义的⽅法实现:添加联系人,将四个联系人添加到通讯录
4).使⽤AddressBook类中定义的方法实现:根据电话查找联系人,并打印(查找电话456)
5).使用AddressBook类中定义的方法实现:根据性别查找联系人,并将查到的联系⼈按照年龄升序排序,并打印(查找性别:女)
6).使⽤AddressBook类中定义的方法实现:根据姓名,更改联系人信息.(修改Linda的 信息: 性别:女 电话:012 年龄:25);
7).使用AddressBook类中定义的⽅法实现:按照姓名删除联系人,并展示通信录中所 有人信息.(删除联系人:Baby)
8).使用AddressBook类中定义的方法实现:删除一个分组,并展示通信录中所有人信息.(删除L组) 所有联系人信息。
9).使用AddressBook类中定义的方法实现:实现3~8之间每个功能后,输出通讯录中所有联系人
以下代码是个人编写,不是按照题目中使用的联系人;
代码:
Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic,retain)NSString *name; //姓名
@property (nonatomic,assign)NSInteger age; //年龄
@property (nonatomic,retain)NSString *gender; //性别
@property (nonatomic,retain)NSString *phoneNumber; // 电话号码
@property (nonatomic,retain)NSString *groupName; // 分组名
-(void)description;
- (instancetype)initWithName:(NSString *)name
age:(NSInteger)age
gender:(NSString *)gender
phoneNuber:(NSString *)phoneNumber;
+ (instancetype)personWithName:(NSString *)name
age:(NSInteger)age
gender:(NSString *)gender
phoneNuber:(NSString *)phoneNumber;
Person.m
#import "Person.h"
@implementation Person
// 防止内存泄漏
-(void)dealloc
{
[_name release];
[_gender release];
[_phoneNumber release];
[_groupName release];
[super dealloc];
}
// 复写的话应该和父类的方名,应该和父类一样,但是这次我直接在这个方法打印结果,所以必须使用该方法,不是直接系统调用
-(void)description
{
NSLog(@"姓名:%@ 性别:%@ 年龄:%ld 电话:%@ 分组名:%@",self.name,self.gender,self.age,self.phoneNumber,self.groupName);
}
//这里没有初始化groupName是因为
- (instancetype)initWithName:(NSString *)name
age:(NSInteger)age
gender:(NSString *)gender
phoneNuber:(NSString *)phoneNumber
{
self = [super init];
if (self) {