OC语言__实现中等难度通讯录
来源:互联网 发布:知识竞赛软件免费版 编辑:程序博客网 时间:2024/05/16 00:33
main.m中的代码:
#import <Foundation/Foundation.h>
#import "Contact.h"
#import "AddressPerson.h"
int main(int argc,constchar * argv[]) {
@autoreleasepool {
Contact *contact6 = [ContactcontactWithName:@"Xiaodidi"gender:@"女"address:@"北京"groupName:@"X"number:@"12530"age:18];
Contact *contact7 = [ContactcontactWithName:@"Piaodidi"gender:@"女"address:@"北京"groupName:@"X"number:@"12530"age:18];
Contact *contact = [[Contactalloc]initWithName:@"xiaopihai"gender:@"男"address:@"郑州"groupName:@"X"number:@"0000"age:18];
Contact *contact1 = [[Contactalloc]initWithName:@"xiaomeimei"gender:@"女"address:@"郑州"groupName:@"X"number:@"0001"age:18];
Contact *contact2 = [[Contactalloc]initWithName:@"laonvren"gender:@"女"address:@"河北"groupName:@"L"number:@"0002"age:40];
Contact *contact3 = [[Contactalloc]initWithName:@"laonanren"gender:@"男"address:@"河北"groupName:@"L"number:@"0003"age:40];
AddressPerson *addressPerson = [[AddressPersonalloc]init];
//添加联系人
[addressPersonaddContacts:contact];
[addressPersonaddContacts:contact1];
[addressPersonaddContacts:contact2];
[addressPersonaddContacts:contact3];
[addressPersonaddContacts:contact6];
[addressPersonaddContacts:contact7];
//输出所有的联系人
[addressPersonshowContacts];
//获取x分组的联系人并升序
[addressPersonobtainGroupName:@"x"];
//通过号码找联系人
[addressPersonobtainGroupNumber:@"0001"];
//获取女联系人并降序
[addressPersonobtainGender:@"女"];
//删除指定联系人
[addressPersondeletesName:@"xiaomeimei"];
//删除指定分组
[addressPersondeletesGroupName:@"L"];
//打印所有联系人
[addressPersonshowContacts];
//释放内存
[addressPersonrelease];
[contactrelease];
[contact1release];
[contact1release];
[contact2release];
[contact2release];
[contact3release];
[contact6release];
[contact7release];
#import <Foundation/Foundation.h>
//1、定义联系人类Contact。实例变量:姓名(拼音,首字母大写)、性别、电话号码、住址、分组名称、年龄。方法:自定义初始化方法(姓名、电话号码)、显示联系人信息
@interface Contact :NSObject
//字符串类型:姓名性别住址分组名称
@property (nonatomic,retain)NSString *name, *gender, *address, *groupName, *number;
//整型:电话号码 年龄
@property (nonatomic)NSInteger age;
//自定义初始化方法
-(id)initWithName:(NSString *)name
gender:(NSString *)gender
address:(NSString *)address
groupName:(NSString *)groupName
number:(NSString *)number
age:(NSInteger)age;
//便利构造器
+(id)contactWithName:(NSString *)name
gender:(NSString *)gender
address:(NSString *)address
groupName:(NSString *)groupName
number:(NSString *)number
age:(NSInteger)age;
-(void)show;
//比较姓名(升序)
-(NSComparisonResult)comperByName:(Contact *)anotherContact;
//年龄比较(降序)
-(NSComparisonResult)comperByAge:(Contact *)anotherContact;
@end
#import "Contact.h"
@implementation Contact
//自定义初始化方法
-(id)initWithName:(NSString *)name
gender:(NSString *)gender
address:(NSString *)address
groupName:(NSString *)groupName
number:(NSString *)number
age:(NSInteger)age{
if (self = [superinit]) {
self.name = [namecapitalizedString];//把name的首字母改成大写
self.gender = gender;
self.address = address;
self.groupName = groupName;
self.number = number;
self.age = age;
}
return self;
}
//便利构造器
+(id)contactWithName:(NSString *)name
gender:(NSString *)gender
address:(NSString *)address
groupName:(NSString *)groupName
number:(NSString *)number
age:(NSInteger)age{
return [[[Contactalloc]initWithName:name
gender:gender
address:address
groupName:groupName
number:number
age:age]autorelease];
}
//重写dealloc
- (void)dealloc
{
NSLog(@"%@内存已被释放",self.name);
self.name =nil;
self.gender =nil;
self.address =nil;
self.groupName =nil;
self.number =nil;
[superdealloc];
}
//重写description
- (NSString *)description
{
return [NSStringstringWithFormat:@"name:%@ gender:%@ address:%@ groupName:%@ number:%@ age:%ld",_name,_gender,_address,_groupName,_number,_age];
}
//显示联系人信息
-(void)show{
NSLog(@"name:%@ gender:%@ address:%@ groupName:%@ number:%@ age:%ld",_name,_gender,_address,_groupName,_number,_age);
}
//比较姓名(升序)
-(NSComparisonResult)comperByName:(Contact *)anotherContact{
//比较相邻俩个的名字
return [self.namecompare:anotherContact.name];
}
//年龄比较(降序)
-(NSComparisonResult)comperByAge:(Contact *)anotherContact{
if (self.age > anotherContact.age) {
returnNSOrderedAscending;
}elseif (self.age < anotherContact.age){
returnNSOrderedDescending;
}
returnNSOrderedSame;
}
@end
#import <Foundation/Foundation.h>
@class Contact;
@interface AddressPerson :NSObject
@property (nonatomic,retain)NSMutableDictionary *dic;
//添加联系人
-(void)addContacts:(Contact *)contacts;
//获取某个分组的所有联系人
-(void)obtainGroupName:(NSString *)groupName;
//输出所有联系人
-(void)showContacts;
//通过号码搜联系人
-(void)obtainGroupNumber:(NSString *)number;
//获取所有性别为女的联系人并降序输出
-(void)obtainGender:(NSString *)gender;
//根据姓名删除某人
-(void)deletesName:(NSString *)name;
//删除某个分组的全部联系人
-(void)deletesGroupName:(NSString *)groupName;
@end
#import "AddressPerson.h"
//引入
#import "Contact.h"
@implementation AddressPerson
//自定义初始化
-(id)init {
self = [superinit];
if (self) {
//初始化添加一个人的联系
Contact *contact4 = [[Contactalloc]initWithName:@"Zhangsan"gender:@"男"address:@"郑州"groupName:@"Z"number:@"1834803"age:21];
//将这个人的信息添加到groupName1中
NSMutableArray *groupName1 = [NSMutableArrayarrayWithObject:contact4];
_dic = [[NSMutableDictionaryalloc]initWithObjectsAndKeys:groupName1,@"Z",nil];
[contact4release];
}
return self;
}
-(NSMutableDictionary *)dic{
return_dic;
}
//添加联系人
-(void)addContacts:(Contact *)contacts{
//判断name的长度是否为0和number的字符串是否为空(两种方法都可以)
if ([contacts.namelength] ==0 || [contacts.numberisEqualToString:@""]) {
NSLog(@"添加失败(你输入的名字或者号码是空的)");
}else{
//提取联系人名字首字母用firstContact接收
NSString *firstContact = [contacts.namesubstringToIndex:1];
//把联系人名字首字母放到groupArr中
NSMutableArray *groupNameArr =_dic[firstContact];
//判断groupArr中是否有添加的联系人名字的首字母那一个分组
if (!groupNameArr) {
//如果没有建一个其首字母的分组
groupNameArr = [NSMutableArrayarrayWithCapacity:1];
//将联系人的信息和分组存到dic可变数组中
[_dicsetObject:groupNameArrforKey:firstContact];
}
//把groupArr添加到contacts参数名中
[groupNameArraddObject:contacts];
NSLog(@"恭喜你添加成功,添加信息为:%@",contacts);
}
}
//输出所有联系人
-(void)showContacts{
NSLog(@"------所有联系人得信息:----------");
//遍历key值
for (id keyin_dic) {
//通过key值找到对应的value值
NSMutableArray *value = [_dicobjectForKey:key];
//遍历value并放在show中
for (NSString *showin value) {
NSLog(@"%@",show);
}
}
}
//获取某个分组的所有联系人
-(void)obtainGroupName:(NSString *)groupName{
NSLog(@"--------获取某个分组的所有联系人-----------");
//设定一个可变数组wGroup来接受可变字典中的分组名
NSString *groupName1 = [groupNamecapitalizedString];
NSMutableArray *wGroup =_dic[groupName1];
//把分组名中名字进行排序
[wGroupsortUsingSelector:@selector(comperByName:)];
//遍历wGroup并把值放在show中
for (id showin wGroup) {
NSLog(@"%@分组下的联系人:%@", groupName1, show);
}
}
//通过号码搜联系人
-(void)obtainGroupNumber:(NSString *)number{
NSLog(@"------根据号码搜人---------");
//遍历dic字典找到所有的key值
for (id keyin_dic) {
//通过key找到value值
NSMutableArray *value = [_dicobjectForKey:key];
//遍历value值
for (id showin value) {
//找到value中的号码那个字符串
if ([[shownumber]isEqualToString:number]) {
NSLog(@"搜索的%@号码匹配的联系人信息是:%@", number, show);
}
}
}
}
//获取所有性别为女的联系人并降序输出
-(void)obtainGender:(NSString *)gender{
NSLog(@"--------获取女性联系人并降序------------");
//定义一个array并初始化
NSMutableArray *array = [[NSMutableArrayalloc]init];
//遍历字典中的key值
for (id keyin_dic) {
//通过key找到value的所有值
NSMutableArray *value = [_dicobjectForKey:key];
for (id showin value) {
if ([[showgender]isEqualToString:gender]) {
[arrayaddObject:show];
}
}
}
//对性别为女的联系人排序,并存放与array中
[arraysortUsingSelector:@selector(comperByAge:)];
for (id showin array) {
NSLog(@"性别为%@的联系人:%@", gender, show);
}
}
//根据姓名删除某人
-(void)deletesName:(NSString *)name{
NSLog(@"------根据姓名删除人-------");
NSInteger count =0;//计数
//把输入的name值换成大写
NSString *name1 = [namecapitalizedString];
//key值中的元素1
NSString *key = [name1substringToIndex:1];
//通过key找到对应的value
NSMutableArray *value =_dic[key];
//遍历vanlue
for (int i =0; i < [valuecount]; i++) {
Contact *temp = value[i];
//找到需求的名字,定位除i的值
if ([temp.nameisEqualToString:name1]) {
//删除value中的i元素
[valueremoveObjectAtIndex:i];
count++;
i--;
NSLog(@"需要删除%@的信息",name);
NSLog(@"联系人%@已经被成功删除", name);
}
}
if (count ==0) {
NSLog(@"没有找到该联系人");
}
}
//删除某个分组的全部联系人
-(void)deletesGroupName:(NSString *)groupName{
NSLog(@"---------删除某个分组的全部联系人---------");
//在字典中查找需求分组
NSMutableArray *Group =_dic[groupName];
//删除该分组的全部分组
[Group removeAllObjects];
NSLog(@"需要删除的分组为:%@",groupName);
NSLog(@"分组%@的联系人已被删除",groupName);
}
//dealloc
- (void)dealloc
{
NSLog(@"dic内存已被释放");
self.dic =nil;
[superdealloc];
}
@end
- OC语言__实现中等难度通讯录
- OC语言实现中等难度通讯录
- OC实现中等难度通讯录
- OC实现中等难度的通讯录
- 实现中等通讯录(OC)
- OC 用字典数组等方式实现中等难度的通讯录的实现
- 实现中等难度通讯录(字典,属性,…
- 实现中等难度通讯录(字典,属性,…
- 蓝欧iOS3G学院OC课后作业练习----实现中等难度通讯录
- 中等难度通讯录
- OC(实现中等通讯录的操作)
- 实现(简单 和中等) 难度通讯录 操作 - 猎人猫
- 中等难度的通讯录.字典 动态分组法
- 中等难度
- iOS 通讯录(OC 语言)
- OC实现简单通讯录
- OC----通讯录实现
- OC实现通讯录
- C++ Primer Plus 学习笔记(第六章)
- 中天华易业务范围
- php设计模式之适配器模式
- WI-FI定位算法原理与介绍
- hal的调试基础
- OC语言__实现中等难度通讯录
- 在CentOS 6.0 安装R语言
- Java --------百思不得其解
- Button和Textfield 及其控件
- 既然抓不住,何不送一程!(一篇让数万人开悟的文章)
- 枚举定义的两种方法
- 查询技术
- iOS 判断GPS是否开启
- mysql 解决数据库连接变慢