OC: 用OC语言完成简易通讯录(实现增删改查)功能.
来源:互联网 发布:淘宝的甲醛测试仪准吗 编辑:程序博客网 时间:2024/05/21 18:46
要求描述:用OC语言完成简易通讯录(实现增删改查)功能.
(注:使用MRC)
1.创建AddressBook类.
1)使用字典作为容器,字典的Key值为分组名(姓名首字母,大写),value值为数组,数组中存放联系人(Person实例).(5分)
2)添加联系人.要求(20分)
a.判断姓名和电话不能为空否则添加失败.
b.判断是否已经存在分组,存在直接存储.不存在创建分组后再存储.(注:联系人不能有重名).
c.添加成功返回YES,姓名为空或者有重名的添加失败返回NO.
d.数据使用Person存储.
e.方法:- (BOOL)addPerson:(Person *)aPerson;
3)按照姓名删除联系人.(15分)
a.方法:- (BOOL)deletePersonWithName:(NSString*)aPersonName;
b.删除成功返回YES,否则返回NO;
c.当删除联系人后分组为空时,需要删除该分组。
4)删除一个分组.(10分)
a:方法:- (BOOL)deleteGroup:(NSString *)aGroupName;
b.删除成功返回YES,否则返回NO;
5)根据电话查找某个联系人.(10分)
a:方法:-(Person *)findPersonWithPhoneNum:(NSString *)aPhoneNum;
b:如果找到返回该联系人,否则返回nil.
c.忽略电话重复问题,只返回第一个查找到的联系人。
6)根据性别查找联系人,并将查到的联系人按照年龄升序排序(15分)
a:方法:-(NSArray *)findPersonsWithSex:(NSString *)aSex;
b:查找到联系人放入数组,排序的时候使用block.
7)根据姓名,更改联系人信息.(10分)
a:方法:-(BOOL)changePersonWithName:(NSString *)name phoneNum:(NSString *)aNum sex:(NSString *)aSex age:(NSUInteger) aAge;
b:找到该联系人并修改该成功返回YES,否则返回NO
c.修改电话、性别、年龄,参数不能为空。
8)展示通讯录中的所有联系人信息(5分)
a:方法:-(void)showAll;
b.通过重写description方法展示联系人信息 。
2.使用Person类.(属性:姓名,年龄,性别,电话)
1)重写description方法,输出 “姓名:张三 性别:男 年龄:22 电话:123456789”.(5分)
AddressBook.m
Person.h
Person.m
main.m
(注:使用MRC)
1.创建AddressBook类.
1)使用字典作为容器,字典的Key值为分组名(姓名首字母,大写),value值为数组,数组中存放联系人(Person实例).(5分)
2)添加联系人.要求(20分)
a.判断姓名和电话不能为空否则添加失败.
b.判断是否已经存在分组,存在直接存储.不存在创建分组后再存储.(注:联系人不能有重名).
c.添加成功返回YES,姓名为空或者有重名的添加失败返回NO.
d.数据使用Person存储.
e.方法:- (BOOL)addPerson:(Person *)aPerson;
3)按照姓名删除联系人.(15分)
a.方法:- (BOOL)deletePersonWithName:(NSString*)aPersonName;
b.删除成功返回YES,否则返回NO;
c.当删除联系人后分组为空时,需要删除该分组。
4)删除一个分组.(10分)
a:方法:- (BOOL)deleteGroup:(NSString *)aGroupName;
b.删除成功返回YES,否则返回NO;
5)根据电话查找某个联系人.(10分)
a:方法:-(Person *)findPersonWithPhoneNum:(NSString *)aPhoneNum;
b:如果找到返回该联系人,否则返回nil.
c.忽略电话重复问题,只返回第一个查找到的联系人。
6)根据性别查找联系人,并将查到的联系人按照年龄升序排序(15分)
a:方法:-(NSArray *)findPersonsWithSex:(NSString *)aSex;
b:查找到联系人放入数组,排序的时候使用block.
7)根据姓名,更改联系人信息.(10分)
a:方法:-(BOOL)changePersonWithName:(NSString *)name phoneNum:(NSString *)aNum sex:(NSString *)aSex age:(NSUInteger) aAge;
b:找到该联系人并修改该成功返回YES,否则返回NO
c.修改电话、性别、年龄,参数不能为空。
8)展示通讯录中的所有联系人信息(5分)
a:方法:-(void)showAll;
b.通过重写description方法展示联系人信息 。
2.使用Person类.(属性:姓名,年龄,性别,电话)
1)重写description方法,输出 “姓名:张三 性别:男 年龄:22 电话:123456789”.(5分)
2)使用便利构造器创建对象.(5分)
AddressBook.h
#import <Foundation/Foundation.h>#import "Person.h"@interface AddressBook : NSObject// 1.声明一个有可变字典实例变量的属性,用来按组存放通讯录信息@property (nonatomic,retain)NSMutableDictionary * personDic;// 2.添加联系人-(BOOL)addPerson:(Person *)newPerson;// 3.按照姓名删除联系人-(BOOL)deletePersonWithName:(NSString*)aPersonName;// 4.删除一个分组-(BOOL)deleteGroup:(NSString *)aGroupName;// 5.根据电话查找某个联系人-(Person *)findPersonWithPhoneNum:(NSString *)aPhoneNum;// 6.根据性别查找联系人,并将查到的联系人按照姓名排序-(NSArray *)findPersonsWithSex:(NSString *)aSex;// 7.根据姓名,更改联系人的信息-(BOOL)changePersonWithName:(NSString *)name phoneNum:(NSString *)aNum sex:(NSString *)aSex age:(NSUInteger) aAge;// 8.显示通讯录中所有联系人-(void)showAll;@end
AddressBook.m
#import "AddressBook.h"@implementation AddressBook// 重写init方法,给 personDic 在堆区分配一个空间-(id)init{ if (self = [super init]) { self.personDic = [[NSMutableDictionary alloc]init]; } return self;}// 2.添加联系人-(BOOL)addPerson:(Person *)newPerson{ // a.判断姓名和电话不能为空否则添加失败. if (newPerson.name == nil || newPerson.tel == nil) { NSLog(@"姓名或电话为空,添加失败!"); return NO; } // 判断是否有重名,如果有添加失败。 for (NSString *key in _personDic) { for (Person *person in _personDic[key]) { if (person.name == newPerson.name) { NSLog(@"姓名重复,添加失败"); return NO; } } } // 判断是否存在分组,不存在,创建之后再存储,存在就直接存储。 NSMutableArray *array = _personDic[newPerson.groupName]; if (array == nil) { array = [[NSMutableArray alloc]init]; [_personDic setValue:array forKey:newPerson.groupName]; } [array addObject:newPerson]; NSLog(@"添加联系人成功 !!! "); return YES;}// 3.按照姓名删除联系人- (BOOL)deletePersonWithName:(NSString*)aPersonName{/* for (NSString *key in _personDic) {// for (int i = 0; i < [_personDic[key] count]; i++) {// if ([[_personDic[key][i] name] isEqualToString:aPersonName]) {// [_personDic[key] removeObject:_personDic[key][i]];// NSLog(@"delete Person %@ success",aPersonName);// if ([_personDic[key] count] == 0) {// [_personDic removeObjectForKey:key];// }// return YES;// }// }// }*/ for (NSString * key in _personDic) { for (Person * p in _personDic[key]) { if ([p.name isEqualToString:aPersonName]) { //p.name == aPersonName 也行 研究下 NSLog(@"删除联系人 %@ 成功",aPersonName); [_personDic[key] removeObject:aPersonName]; // 如果删除联系人之后分组为空,则把分组删掉。 if ([_personDic[key] count] == 0) { [_personDic removeObjectForKey:key]; } return YES; } } } NSLog(@"没有这个人,无需删除!"); return NO;}// 4.删除一个分组- (BOOL)deleteGroup:(NSString *)aGroupName{ if (_personDic[aGroupName]) { [_personDic removeObjectForKey:aGroupName]; NSLog(@"删除分组成功!!!"); return YES; } NSLog(@"没有该分组,无需删除 !!!"); return NO;}// 5.根据电话查找某个联系人-(Person *)findPersonWithPhoneNum:(NSString *)aPhoneNum{ for (NSString *key in _personDic) { for (Person *person in _personDic[key]) { if ([person.tel isEqualToString:aPhoneNum]) { NSLog(@"根据电话号码找到了这个联系人:"); return person; } } } NSLog(@"根据电话号码没有找到这个人!!!"); return nil;}// 6.根据性别查找联系人,并将查到的联系人按照姓名排序-(NSArray *)findPersonsWithSex:(NSString *)aSex{ NSMutableArray *array = [NSMutableArray array]; for (NSString *key in _personDic) { for (Person *person in _personDic[key]) { if ([person.sex isEqualToString:aSex]) { [array addObject:person]; } } } // [array sortUsingSelector:@selector(compareByAge:)];// [array sortUsingComparator:^NSComparisonResult(Person* obj1, Person* obj2) {// return obj1.age>obj2.age;// }]; [array sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { return obj1>obj2; }]; return array;}// 7.根据姓名,更改联系人的信息-(BOOL)changePersonWithName:(NSString *)name phoneNum:(NSString *)aNum sex:(NSString *)aSex age:(NSUInteger) aAge{ for (NSString * key in _personDic) { for (Person * person in _personDic[key]) { if ([person.name isEqualToString:name]) { if (aNum == nil || aSex == nil || aAge == 0) { NSLog(@"修改参数为空,添加失败"); return NO; }else{ person.tel = aNum; person.sex = aSex; person.age = aAge; NSLog(@"修改成功"); return YES; } } } } NSLog(@"没有找到该联系人,修改失败"); return NO;}// 8.显示通讯录中所有联系人-(void)showAll{ NSLog(@"%@",_personDic);}@end
Person.h
#import <Foundation/Foundation.h>@interface Person : NSObject// 声明属性(包含姓名、年龄、性别、电话)@property (nonatomic,copy)NSString *name;@property (nonatomic,assign)NSInteger age;@property (nonatomic,copy)NSString *sex;@property (nonatomic,copy)NSString *tel;// 声明属性(分组名)@property(nonatomic,copy)NSString * groupName;//初始化方法-(id)initWithName:(NSString *)name age:(NSInteger)age sex:(NSString *)sex tel:(NSString *)tel;// 2.2 便利构造器+(Person *)personWithName:(NSString *)name age:(NSInteger)age sex:(NSString *)sex tel:(NSString *)tel;// 2.1 重写description-(NSString *)description;// 通过年龄进行排序-(NSComparisonResult)compareByAge:(Person *)person;@end
Person.m
#import "Person.h"@implementation Person-(id)initWithName:(NSString *)name age:(NSInteger)age sex:(NSString *)sex tel:(NSString *)tel{ if ([super init]) { _name = name; _age = age; _sex = sex; _tel = tel; _groupName = [[name substringToIndex:1]uppercaseString]; } return self;}+(Person *)personWithName:(NSString *)name age:(NSInteger)age sex:(NSString *)sex tel:(NSString *)tel{ Person *per = [[Person alloc]initWithName:name age:age sex:sex tel:tel]; return per ;}-(NSString *)description{ return [NSString stringWithFormat:@"name: %@ age: %ld sex: %@ tel: %@",self.name,self.age,self.sex,self.tel];}//通过年龄进行排序-(NSComparisonResult)compareByAge:(Person *)person{ if (self.age > person.age) { return 1; }else if (self.age < person.age){ return -1; }else { return 0; }}@end
main.m
#import <Foundation/Foundation.h>#import "Person.h"#import "AddressBook.h"int main(int argc, const char * argv[]) { @autoreleasepool { //创建通讯录 AddressBook *newPersonBook = [[AddressBook alloc]init]; //创建联系人 Person *p1 = [Person personWithName:@"Zhangsan" age:22 sex:@"m" tel:@"158"]; Person *p2 = [Person personWithName:@"Lisi" age:18 sex:@"f" tel:@"131"]; Person *p3 = [Person personWithName:@"Wangwu" age:19 sex:@"m" tel:@"187"]; Person *p4 = [Person personWithName:@"Zhaoliu" age:21 sex:@"f" tel:@"167"]; Person *p5 = [Person personWithName:@"Qianqi" age:20 sex:@"f" tel:@"199"]; Person *p6 = [Person personWithName:@"Wangwang" age:17 sex:@"m" tel:@"101"]; Person *p7 = [Person personWithName:@"Hejiu" age:18 sex:@"m" tel:@"103"]; Person *p8 = [Person personWithName:@"Jan" age:20 sex:@"m" tel:@"102"]; // 2.添加联系人到通讯录 [newPersonBook addPerson:p1]; [newPersonBook addPerson:p2]; [newPersonBook addPerson:p3]; [newPersonBook addPerson:p4]; [newPersonBook addPerson:p5]; [newPersonBook addPerson:p6]; [newPersonBook addPerson:p7]; [newPersonBook addPerson:p8]; // 3.按照姓名删除某个联系人 [newPersonBook deletePersonWithName:@"Lisi"]; // 4.删除某个分组 [newPersonBook deleteGroup:@"Z"]; // 5.根据电话查找某个联系人 Person *findper = [newPersonBook findPersonWithPhoneNum:@"102"]; NSLog(@"%@",findper); // 6.根据性别查找联系人,并将查到的联系人按照年龄升序排序 NSLog(@"%@",[newPersonBook findPersonsWithSex:@"f"]); // 7.修改联系人信息 [newPersonBook changePersonWithName:@"Wangwu" phoneNum:@"100" sex:@"m" age:99]; // 8.显示全部 [newPersonBook showAll]; } return 0;}
1 0
- OC: 用OC语言完成简易通讯录(实现增删改查)功能.
- 用OC语言完成简易通讯录(实现增删改查)功能.
- 用OC语⾔言完成简易通讯录(实现增删改查)功 能. (注:使用MRC)
- 实现用数据库存储通讯录 实现“增删改查”的功能
- OC简易通讯录
- 数据库存储通讯录,实现“增删改查”
- 增删改查通讯录
- 通讯录增删改查
- 通讯录----- 增删改查
- 增删改查通讯录
- JDBC+Servlet+JSP实现基本的增删改查(简易通讯录)
- Swift4.0实现简单通讯录功能,FMDB框架实现联系人的增删改查
- XML“数据库”:简单的通讯录系统(用dom4j完成增删改查)
- OC语言__实现中等难度通讯录
- OC语言实现中等难度通讯录
- OC中简易通讯录框架
- iOS 源生SQLite3 “增删改查”(Swift-OC混编)
- iOS 通讯录(OC 语言)
- pdf编辑器怎么使用
- mapreduce 将hdfs数据逐行写入mysql
- PowerPC 交叉编译工具链 创建脚本
- Android如何动态更新菜单项
- oracle更新时间遇到ORA-01849
- OC: 用OC语言完成简易通讯录(实现增删改查)功能.
- linux shell bash 内置变量参考
- LearningStorm第8章(2)
- WPF 新线程中使用Invoke操作页面控件
- 二维树状数组模板题 poj 1195 Mobile phones
- 黑马程序员 多线程通信
- 浏览器内部工作原理
- Chrome实验版可同时检查多种语言拼写错误
- WordPress解决上传图片使用中文名不显示的问题