C语言就将要结束了所以我找了个通信录的小工程写一写
这里面实现了 :1根据年龄的排序
2.根据姓名的首字母分组排序
3.联系人的添加和删除;
话不多说上代码
首先是创建一个叫做Penson的类
Penson.h
@property (nonatomic ,retain)NSString*name;
@property(nonatomic,retain)NSString*sex;
@property(nonatomic,retain)NSString*phoneNum;
@property(nonatomic,assign)NSUInteger age;
-(id)initWithName:(NSString*)name sex:(NSString *)sex
phoneNum:(NSString *)phoneNum Age:(NSUInteger)age;
+(Penson *)pensonWithName:(NSString*)name sex:(NSString *)sex
phoneNum:(NSString *)phoneNum Age:(NSUInteger)age;
//排序
-(NSComparisonResult)compByage:(Penson *)penson;
-(NSComparisonResult)compByname:(Penson *)penson;
-(NSString *)description;
Penson.m
@implementation Penson
-(id)initWithName:(NSString *)name sex:(NSString *)sex phoneNum:(NSString *)phoneNum Age:(NSUInteger)age
{
self=[super init];
if (self!=nil) {
_age=age;
_name=name;
_sex=sex;
_phoneNum=phoneNum;
}
return self;
}
+(Penson *)pensonWithName:(NSString *)name sex:(NSString *)sex phoneNum:(NSString *)phoneNum Age:(NSUInteger)age
{
Penson *aw=[[Penson alloc] initWithName:name sex:sex phoneNum:phoneNum Age:age];
return aw;
}
- (NSString *)description
{
NSString *str=[NSString stringWithFormat:@"name:%@,sex:%@,phoneNum:%@,age:%lu",self.name,self.sex,self.phoneNum,(unsigned long)self.age];
return str;
}
-(NSComparisonResult)compByage:(Penson *)penson
{
if (self.age>penson.age) {
return 1;
}else if (self.age<penson.age)
{
return -1;
}else
{
return 0;
}
}
-(NSComparisonResult)compByname:(Penson *)penson
{
NSComparisonResult res=[self.name compare:penson.name];
if (res>0) {
return 1;
}else if (res<0)
{
return -1;
}else
{
return 0;
}
}
创建AdressBook.h
导入头文件 <#import " Penson.h">
#import <Foundation/Foundation.h>
#import "Penson.h"
@interface AdressBook : NSObject
@property (nonatomic,retain)NSMutableDictionary*mDictionary;
//便利构造器
+(instancetype)addressBookWithDictionary:(NSMutableDictionary*)mDictionary;
//添加联系人
-(BOOL)addPerson : (Penson*)person;
//获取某个分组下名称下所有联系人,并且按排序
-(void)personByGroupName : (NSString *)groupName;
//根据号码搜索
-(void)searchByPhoneNum:(NSString *)phoneNum;
//获取女性联系人,并排序
-(void)getfemalePersonSortByAgeDown;
//根据姓名删除联系人
-(void)removeByName : (NSString *)name;
//删除某个分组的全部联系人
-(void)removeall:(NSString *)groupName;
-(void)showAll;
@end
创建AdressBook.m
#import "AdressBook.h"
@implementation AdressBook
//初始化
-(instancetype)initWhitDictionary: (NSMutableDictionary *)mDictionary
{
if (self =[super init]) {
_mDictionary=mDictionary;
}
return self;
}
//便利构造器
+(instancetype)addressBookWithDictionary:(NSMutableDictionary *)mDictionary
{
AdressBook *addressBook =[[AdressBook alloc] initWhitDictionary:mDictionary];
return addressBook;
}
-(BOOL)addPerson:(Penson *)person
{
BOOL res=YES;
if ([person name]!=nil && [person phoneNum]!=nil) {
char cha=[[[person name]capitalizedString]characterAtIndex:0];
NSString *string=[NSString stringWithFormat:@"%c",cha];
if ([_mDictionary objectForKey:string]!=nil) {
for (id obj in [_mDictionary objectForKey:string]) {
if ([person.name isEqualToString:[obj name]] ) {
res =NO;
break;
}
}
if (res == NO) {
NSLog(@"该联系人已存在");
}
else
{
[[_mDictionary objectForKey:string]addObject:person];
}
}
else
{
NSMutableArray *mArray=[[NSMutableArray alloc] init];
[mArray addObject:person];
[_mDictionary setObject:mArray forKey:string];
}
}
else{
NSLog(@"添加失败!");
}
return res;
}
-(void)personByGroupName:(NSString *)groupName
{
if ([groupName length]!=1) {
NSLog(@"分组错误");
}
else
{
[[_mDictionary valueForKey:groupName]sortedArrayUsingSelector:@selector(compByname:)];
for (id obj in [_mDictionary valueForKey:groupName]) {
NSLog(@"%@",obj);
}
}
}
-(void)searchByPhoneNum:(NSString *)phoneNum
{
for (id obj in [_mDictionary allValues]) {
for (id obj1 in obj) {
if ([[obj1 phoneNum]isEqualToString:phoneNum]) {
NSLog(@"%@",obj1);
}
}
}
}
-(void)getfemalePersonSortByAgeDown
{
NSMutableArray *mArray=[[NSMutableArray alloc] init];
for (id obj in [_mDictionary allValues]) {
for (id obj1 in obj) {
if ([[obj1 sex]isEqualToString:@"女"]) {
[mArray addObject:obj1];
}
}
}
[mArray sortedArrayUsingSelector:@selector(compByage:)];
for (id obj2 in mArray) {
NSLog(@"%@",obj2);
}
}
-(void)removeByName:(NSString *)name
{
NSString *string =[[name substringToIndex: 1]capitalizedString ];
for (int i=0; i<[[_mDictionary valueForKey:string] count]; i++) {
if ([[[_mDictionary valueForKey:string] objectAtIndex:i] isEqualToString:name]) {
[[_mDictionary valueForKey:string] removeObjectAtIndex:i];
}
}
}
-(void)removeall:(NSString *)groupName
{
if ([groupName length]!=1) {
NSLog(@"没有该分组");
}
else
{
[[_mDictionary valueForKey:groupName]removeAllActions];
}
}
-(void)showAll
{
NSLog(@"%@",_mDictionary);
}
@end
最后是在在main.m中实现调用
先导入头文件AdressBook.h
Penson.h
#import <Foundation/Foundation.h>
#import "Penson.h"
#import "AdressBook.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
AdressBook *t=[AdressBook addressBookWithDictionary:[[NSMutableDictionary alloc] init]];
Penson *p1=[Penson pensonWithName:@"Lucy" sex:@"女" phoneNum:@"123" Age:74];
Penson *p2=[Penson pensonWithName:@"Qfy" sex:@"男" phoneNum:@"144" Age:22];
Penson *p3=[Penson pensonWithName:@"Sonjian" sex:@"女"phoneNum:@"133" Age:21];
Penson *p4=[Penson pensonWithName:@"Wwas" sex:@"女" phoneNum:@"977" Age:23];
[t addPerson:p1];
[t addPerson:p2];
[t addPerson:p3];
[t addPerson:p4];
Penson *p5=[Penson pensonWithName:@"Luay" sex:@"na" phoneNum:@"544" Age:20];
// [add addPenson:p5];
[t addPerson:p5];
// [t getFemalePersonSortByAgeDown];
[t personByGroupName:@"L"];
[t searchByPhoneNum:@"947"];
[t getfemalePersonSortByAgeDown];
[t removeByName:@"0"];
[t removeall:@"0"];
[t showAll ];
NSLog(@"Hello, World!");
}
return 0;
}
以上:
希望对你作用