用OC語言完成簡(jiǎn)易通訊錄(實(shí)現(xiàn)增刪改查)功能

(注:使用MRC)

一、功能描述:

main函數(shù)中通過使用Person類和AddressBook類俯在,創(chuàng)建對(duì)象粒督、調(diào)用方法,實(shí)現(xiàn)以下8個(gè)功能:

1).使用便利構(gòu)造器創(chuàng)建四個(gè)Person類的實(shí)例(聯(lián)系人).

姓名:Lucy 性別:女 電話:123 年齡:21

姓名:Joe 性別:男 電話:456 年齡:17

姓名:Baby 性別:女 電話:789 年齡:27

姓名:Linda 性別:女 電話:000 年齡:21

2).創(chuàng)建一個(gè)AddressBook類的實(shí)例對(duì)象(通訊錄).

3).使用AddressBook類中定義的方法實(shí)現(xiàn):添加聯(lián)系人,將四個(gè)聯(lián)系人添加到通訊錄中.

4).使用AddressBook類中定義的方法實(shí)現(xiàn):根據(jù)電話查找聯(lián)系人,并打印(查找電話:456);

5).使用AddressBook類中定義的方法實(shí)現(xiàn):根據(jù)性別查找聯(lián)系人,并將查到的聯(lián)系人按照年齡升序排序,并打印(查找性別:女)

6).使用AddressBook類中定義的方法實(shí)現(xiàn):根據(jù)姓名,更改聯(lián)系人信息.(修改Linda的信息: 性別:女 電話:012 年齡:25);

7).使用AddressBook類中定義的方法實(shí)現(xiàn):按照姓名刪除聯(lián)系人,并展示通信錄中所有人信息.(刪除聯(lián)系人:Baby)

8).使用AddressBook類中定義的方法實(shí)現(xiàn):刪除一個(gè)分組,并展示通信錄中所有人信息.(刪除L組)

9).使用AddressBook類中定義的方法實(shí)現(xiàn):實(shí)現(xiàn)3~8之間每個(gè)功能后牙丽,輸出通訊錄中所有聯(lián)系人信息简卧。

二、功能實(shí)現(xiàn)提示:

1烤芦、功能一

定義Person類

1)聲明屬性:姓名,年齡,性別,電話,分組举娩。注:年齡是int類型,其余屬性時(shí)NSString類型构罗;分組是姓名首字母(大寫)铜涉,使用提供的類目:NSString+Characters中的方法獲取。(3分)

2)重寫description方法遂唧,輸出Person對(duì)象的信息芙代。例如: “姓名:張三 性別:男 年齡:22 電話:123456789”.(2分)

3)定義Person類的便利構(gòu)造器方法,方法包含參數(shù):姓名盖彭、年齡纹烹、性別事甜、電話.(5分)

2、功能二

定義AddressBook類.

1)聲明屬性:allPersonDic(字典類型)滔韵。使用聲明的字典作為容器逻谦,分組管理通訊錄中所有聯(lián)系人;字典的Key值為分組名(姓名首字母陪蜻,大寫),value值為數(shù)組,數(shù)組中存放聯(lián)系人(Person實(shí)例).(5分)

2)在AddressBook的初始化方法中邦马,初始化allPersonDic。(5分)

3)重寫dealloc方法宴卖,在dealloc方法中實(shí)現(xiàn)AddressBook類的內(nèi)存管理滋将。(5分)

3、功能三

添加聯(lián)系人.要求(15分)

a.在AddressBook類中定義方法:

  • (BOOL)addPerson:(Person *)aPerson;

b.判斷姓名和電話不能為空否則添加失敗.

c.判斷是否已經(jīng)存在分組,存在直接存儲(chǔ).不存在創(chuàng)建分組后再存儲(chǔ).(注:聯(lián)系人不能有重名).

d.添加成功返回YES,姓名為空或者有重名的添加失敗返回NO.

e.數(shù)據(jù)使用Person存儲(chǔ).

4症昏、功能四

根據(jù)電話查找某個(gè)聯(lián)系人.(10分)

a:在AddressBook類中定義方法:

-(Person *)findPersonWithPhoneNum:(NSString *)aPhoneNum;

b:如果找到返回該聯(lián)系人,否則返回nil.

c.忽略電話重復(fù)問題随闽,只返回第一個(gè)查找到的聯(lián)系人。

5肝谭、功能五

根據(jù)性別查找聯(lián)系人,并將查到的聯(lián)系人按照年齡升序排序(15分)

a:在AddressBook類中定義方法:

-(NSArray *)findPersonsWithSex:(NSString *)aSex;

b:查找到聯(lián)系人放入數(shù)組,排序的時(shí)候使用block.

6掘宪、功能六

根據(jù)姓名,更改聯(lián)系人信息.(10分)

a:在AddressBook類中定義方法:

-(BOOL)changePersonWithName:(NSString *)name phoneNum:(NSString *)aNum sex:(NSString *)aSex age:(NSUInteger) aAge;

b:找到該聯(lián)系人并修改該成功返回YES,否則返回NO

c.修改電話、性別攘烛、年齡魏滚,參數(shù)不能為空。

7坟漱、功能七

按照姓名刪除聯(lián)系人.(15分)

a.在AddressBook類中定義方法:

  • (BOOL)deletePersonWithName:(NSString*)aPersonName;

b.刪除成功返回YES,否則返回NO;

c.當(dāng)刪除聯(lián)系人后分組為空時(shí)鼠次,需要?jiǎng)h除該分組。

8芋齿、功能八

刪除一個(gè)分組.(5分)

a.在AddressBook類中定義方法:

  • (BOOL)deleteGroup:(NSString *)aGroupName;

b.刪除成功返回YES,否則返回NO;

9腥寇、功能九

展示通訊錄中的所有聯(lián)系人信息(5分)

a:在AddressBook類中定義方法:

-(void)showAll;

b.通過重寫description方法展示聯(lián)系人信息 。

Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject
//一觅捆、定義聯(lián)系人類Person
//實(shí)例變量:姓名赦役、性別、電話號(hào)碼惠拭、住址扩劝、分組名稱庸论。
//方法:初始化方法(姓名职辅、電話號(hào)碼)、顯示聯(lián)系人信息
@property(nonatomic,retain)NSString *name;
@property(nonatomic,retain)NSString *sex;
@property(nonatomic,retain)NSString *phoneNum;
@property(nonatomic,assign)int age;
@property(nonatomic,retain)NSString *address;
@property(nonatomic,retain)NSString *group;

- (instancetype)initWithName:(NSString *)name
                         sex:(NSString *)sex
                    phoneNum:(NSString *)phoneNum
                         age:(int)age;

// 便利構(gòu)造器
+ (instancetype)personWithName:(NSString *)name
                         sex:(NSString *)sex
                    phoneNum:(NSString *)phoneNum
                         age:(int)age;

@end

Person.m

#import "Person.h"

@implementation Person
//Person類的實(shí)現(xiàn):1.初始化方法 2.重寫description函數(shù)
- (instancetype)initWithName:(NSString *)name
                         sex:(NSString *)sex
                    phoneNum:(NSString *)phoneNum
                         age:(int)age
                    {
    self = [super init];
    if (self) {
        self.name = name;
        self.sex = sex;
        self.phoneNum = phoneNum;
        self.age = age;
       
       
    }
    //判斷首字母,給組名稱賦值
    if ([name length] > 0) {
        NSString *firstname = [name substringToIndex:1];
        self.group = [firstname uppercaseString];
    }
//    NSLog(@"%@",self.group);
    return self;
}


// 便利構(gòu)造器
+ (instancetype)personWithName:(NSString *)name
                         sex:(NSString *)sex
                    phoneNum:(NSString *)phoneNum
                         age:(int)age{
    Person *person = [[Person alloc]initWithName:name sex:sex phoneNum:phoneNum  age:age];
    return [person autorelease];
}





- (NSString *)description{
    return [NSString stringWithFormat:@"姓名:%@ 性別:%@ 年齡:%d 電話:%@",_name,_sex,_age,_phoneNum];
}


- (void)dealloc{
    NSLog(@"空間釋放");
    [_name release];
    [_sex release];
    [_phoneNum release];
    [_group release];
    [super dealloc];
}

@end

AddressBook.h

#import <Foundation/Foundation.h>
#import "NSString+Character.h"
@class Person;
//AddressBook類的聲明:
/*
  1.重寫init方法,初始化字典
  2.可以添加新聯(lián)系人對(duì)象
  3.根據(jù)姓名刪除聯(lián)系人
  4.刪除某分組的所有聯(lián)系人
  5.根據(jù)電話號(hào)碼搜索聯(lián)系人
  6.獲取所有某性聯(lián)系人聂示,并將查到的聯(lián)系人按照年齡升序排序
  7.根據(jù)姓名域携,更改聯(lián)系人信息
  8.展示通訊錄中的所以聯(lián)系人信息
 */
@interface AddressBook : NSObject

//創(chuàng)建一個(gè)字典存儲(chǔ)數(shù)據(jù)
@property(nonatomic,retain)NSMutableDictionary *dic;
//1.重寫init方法,初始化字典
- (id)initWithMutableDic:(NSMutableDictionary *)dic;

//2.可以添加新聯(lián)系人對(duì)象
- (BOOL)addPerson:(Person *)aPerson;
//3.根據(jù)姓名刪除聯(lián)系人
- (BOOL)deletePersonWithName:(NSString*)aPersonName;
//4.刪除某分組的所有聯(lián)系人
- (BOOL)deleteGroup:(NSString *)aGroupName;
//5.根據(jù)電話號(hào)碼搜索聯(lián)系人
-(Person *)findPersonWithPhoneNum:(NSString *)aPhoneNum;
//6.獲取所有某性聯(lián)系人,并將查到的聯(lián)系人按照年齡升序排序
-(NSArray *)findPersonsWithSex:(NSString *)aSex;
//7.根據(jù)姓名鱼喉,更改聯(lián)系人信息
-(BOOL)changePersonWithName:(NSString *)name phoneNum:
(NSString *)aNum sex:(NSString *)aSex age:(int) aAge;
//8.展示通訊錄中的所以聯(lián)系人信息
-(void)showAll;
@end

AddressBook.m

#import "AddressBook.h"
#import "Person.h"
@implementation AddressBook

//1.重寫init方法,初始化字典
//- (instancetype)init{
//    self = [super init];
//    _dic = [NSMutableDictionary dictionaryWithCapacity:1];//創(chuàng)建一個(gè)可變?cè)~典初始指定它的長(zhǎng)度為1.秀鞭,動(dòng)態(tài)的添加數(shù)據(jù)如果超過1這個(gè)詞典長(zhǎng)度會(huì)自動(dòng)增加趋观,所以不用擔(dān)心數(shù)組越界。
//    if (self) {
//        for (int i = 65; i < 91; i++) {
//            NSString *key = [NSString stringWithFormat:@"%c",i];
//            [_dic setObject:[NSMutableArray arrayWithCapacity:1]forKey:key];
//        }
//    }
//    NSLog(@"%@",_dic);
//    return self;
//}


//1.重寫init方法,初始化字典
- (id)initWithMutableDic:(NSMutableDictionary *)dic{
    if (self = [super init]) {
        _dic = dic;
    }
    return self;
}
//- (void)dealloc{
//    [_dic release];
//    [super dealloc];
//}

//2.可以添加新聯(lián)系人對(duì)象
- (BOOL)addPerson:(Person *)aPerson{
    BOOL isAdd = NO;
    if ((aPerson.name == nil || aPerson.phoneNum == nil ) || ([aPerson.name isEqualToString:@""] || [aPerson.phoneNum isEqualToString:@""])) {
        
        
        NSLog(@"信息不完整锋边,添加失敗");
        return isAdd;
    }
    
    //獲取名字的首字母皱坛,并且大寫。當(dāng)作字典的key(鍵)
    NSString *key = [aPerson.name  uppercaseFirstLetter];
    //通過鍵來查找數(shù)組
    NSMutableArray *tempArray = [_dic objectForKey:key];
    if (! tempArray) {
        //給數(shù)組分配空間
        tempArray = [[[NSMutableArray alloc]init]autorelease];
        //創(chuàng)建鍵值對(duì)
        [_dic setObject:tempArray forKey:key];
    }
    //檢查一下是否有重名的
    for (int i = 0; i < [tempArray count]; i ++) {
        if ([aPerson.name isEqualToString:[tempArray[i] name]]) {
            NSLog(@"有重名的,添加失敗");
            return isAdd;
        }
    }
    //把聯(lián)系人加進(jìn)創(chuàng)建好的數(shù)組里面
    
    [tempArray addObject:aPerson];
    isAdd = YES;
    
    
    return isAdd;
}
//3.根據(jù)姓名刪除聯(lián)系人
- (BOOL)deletePersonWithName:(NSString*)aPersonName{
    for (NSString *key in _dic) {
        
        NSMutableArray *tempArray = [_dic objectForKey:key];
        
        //遍歷數(shù)組
        for (Person *person in tempArray) {
            if ([person.name isEqualToString:aPersonName]) {
                [tempArray removeObject:person];
                NSLog(@"找到要?jiǎng)h除的人了");
                //如果這個(gè)人豆巨,是分組里面最后一個(gè)剩辟,就把分組也刪除
                if ([tempArray count] == 0) {
                    //在字典里面刪除鍵值對(duì)
                    [_dic removeObjectForKey:key];
                    NSLog(@"數(shù)組已經(jīng)被刪除");
                }
                return YES;
            }
        }
    }
    NSLog(@"沒有找到");
    return NO;
    
}


//4.刪除某分組的所有聯(lián)系人
- (BOOL)deleteGroup:(NSString *)aGroupName{
    //先判斷,有么有這個(gè)分組
    for (NSString *key in _dic) {
        if ([key isEqualToString:aGroupName]) {
            
            
            //先通過傳進(jìn)來的鍵往扔,來獲取字典里面的值(數(shù)組)
            NSMutableArray *tempArray = [_dic objectForKey:aGroupName];
            //刪完這個(gè)數(shù)組里面的所有元素
            [tempArray removeAllObjects];
            //刪除字典里面的鍵值對(duì),通過鍵來刪除
            [_dic removeObjectForKey:aGroupName];
            
            NSLog(@"找到分組贩猎,刪除成功");
            return YES;
            
            
        }
    }
    
    
    
    NSLog(@"沒有這個(gè)分組");
    return NO;
    
}
//5.根據(jù)電話號(hào)碼搜索聯(lián)系人
-(Person *)findPersonWithPhoneNum:(NSString *)aPhoneNum{
    //第一步,把字典里面的鍵拿出來,通過鍵來取值
    for (NSString *key in _dic) {
        //通過objectForKey: 這個(gè)方法萍膛,把字典里面的數(shù)組拿出來
        NSMutableArray *tempArray = [_dic objectForKey:key];
        //遍歷拿出來的數(shù)組吭服,讓數(shù)組里面每一個(gè)人的號(hào)碼,和 形參的值進(jìn)行比較蝗罗。
        for (Person *p in tempArray) {
            
            if ([p.phoneNum isEqualToString:aPhoneNum]) {
                
                NSLog(@"人找到了");
                NSLog(@"%@",p);
                return p;
            }
        }
    }
    
    NSLog(@"沒有找到該聯(lián)系人");
    return nil;
}
//6.獲取所有某性聯(lián)系人艇棕,并將查到的聯(lián)系人按照年齡升序排序
-(NSArray *)findPersonsWithSex:(NSString *)aSex{
    //聲明數(shù)組,用來儲(chǔ)存性別相同的人
    NSMutableArray *mutableArray = [[NSMutableArray alloc]init];
    
    //然后再開始串塑,遍歷字典欠肾,拿到鍵值,遍歷數(shù)組
    
    for (NSString *key in _dic) {
        NSMutableArray *array = [_dic objectForKey:key];
        for (Person *person in array) {
            //跟上一方法不同的地方
            if ([person.sex isEqualToString:aSex]) {
                
                [mutableArray addObject:person];
                
            }
        }
    }
    
    [mutableArray sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        
        Person *per1 = (Person *)obj1;
        Person *per2 = (Person *)obj2;
        
        if ( per1.age  > per2.age ) {
            return NSOrderedDescending;
        }
        else if (per1.age < per2.age){
            return NSOrderedAscending;
        }
        return NSOrderedSame;
    }];
    
//     [mutableArray sortUsingSelector:@selector(compare:)];
//    NSLog(@"%@",mutableArray);
    return mutableArray;
}
//7.根據(jù)姓名拟赊,更改聯(lián)系人信息
-(BOOL)changePersonWithName:(NSString *)name phoneNum:
(NSString *)aNum sex:(NSString *)aSex age:(int)aAge{
    //第一步刺桃,先遍歷
    
    for (NSString *key  in _dic) {
        //通過key來取值
        NSMutableArray *tempArray = [_dic objectForKey:key];
        
        //開始遍歷數(shù)組
        for (Person *person in tempArray) {
            if ([person.name isEqualToString:name]) {
                //找到人后,開始修改吸祟,把傳進(jìn)來的新的信息賦值給這個(gè)人
                person.phoneNum = aNum;
                person.sex = aSex;
                person.age = aAge;
                
                NSLog(@"賦值成功");
                NSLog(@"%@",person);
                return YES;
                
            }
        }
        
    }
    
    
    return NO;
    
}
//8.展示通訊錄中的所有聯(lián)系人信息
-(void)showAll{
    NSLog(@"%@",_dic);
}
@end

NSString+Character.h

#import <Foundation/Foundation.h>

@interface NSString (Character)
- (NSString *)uppercaseFirstLetter;

@end

NSString+Character.m

#import "NSString+Character.h"

@implementation NSString (Character)
- (NSString *)uppercaseFirstLetter{
    
    return [[self uppercaseString] substringToIndex:1];
    
}

@end

main.m


#import <Foundation/Foundation.h>
#import "Person.h"
#import "AddressBook.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // 1.創(chuàng)建一個(gè)AdderssBook類的實(shí)例
        AddressBook *book = [[AddressBook alloc]initWithMutableDic:[NSMutableDictionary dictionary]];
       //  2.使用便利構(gòu)造器創(chuàng)建四個(gè)Person的實(shí)例
        Person *person1 = [Person personWithName:@"Lucy" sex:@"女" phoneNum:@"123" age:21];
        Person *person2 = [Person personWithName:@"Joe" sex:@"男" phoneNum:@"456" age:17];
        Person *person3 = [Person personWithName:@"Boby" sex:@"女" phoneNum:@"789" age:27];
        Person *person4 = [Person personWithName:@"Linda" sex:@"女" phoneNum:@"000" age:21];
        Person *person5 = [Person personWithName:@"Lili" sex:@"女" phoneNum:@"110" age:12];
        // 3.調(diào)用添加聯(lián)系人的方法瑟慈,將四個(gè)聯(lián)系人添加到通訊錄中
        [book addPerson:person1];
        [book addPerson:person2];
        [book addPerson:person3];
        [book addPerson:person4];
        [book addPerson:person5];
        [book showAll];
        
        // 4.根據(jù)電話查找聯(lián)系人,并打游葚啊(查找電話:456)
        [book findPersonWithPhoneNum:@"456"];
        // 5.根據(jù)性別查找聯(lián)系人葛碧,并將查找的聯(lián)系人按照年齡的升序排序,并打庸恰(查找性別:女)
        [book findPersonsWithSex:@"女"];
        // 6.根據(jù)姓名进泼,更改聯(lián)系人信息。(修改Linda的信息:性別:女電話:012年齡:25)
        [book changePersonWithName:@"Linda" phoneNum:@"012" sex:@"女" age:25];
        // 7.按照姓名刪除聯(lián)系人纤虽,并展示通訊錄中所有的人信息(刪除聯(lián)系人:Baby)
        [book deletePersonWithName:@"Boby"];
        // 8.刪除一個(gè)分組乳绕,并展示通訊錄中所有的人。(刪除L組)
        [book deleteGroup:@"L"];
        [book autorelease];
    }
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逼纸,一起剝皮案震驚了整個(gè)濱河市洋措,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌杰刽,老刑警劉巖菠发,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件王滤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡滓鸠,警方通過查閱死者的電腦和手機(jī)雁乡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糜俗,“玉大人蔗怠,你說我怎么就攤上這事》园希” “怎么了寞射?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)锌钮。 經(jīng)常有香客問我桥温,道長(zhǎng),這世上最難降的妖魔是什么梁丘? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任侵浸,我火速辦了婚禮,結(jié)果婚禮上氛谜,老公的妹妹穿的比我還像新娘掏觉。我一直安慰自己,他們只是感情好值漫,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布澳腹。 她就那樣靜靜地躺著,像睡著了一般杨何。 火紅的嫁衣襯著肌膚如雪酱塔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天危虱,我揣著相機(jī)與錄音羊娃,去河邊找鬼。 笑死埃跷,一個(gè)胖子當(dāng)著我的面吹牛蕊玷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播弥雹,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼垃帅,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了缅糟?” 一聲冷哼從身側(cè)響起挺智,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤祷愉,失蹤者是張志新(化名)和其女友劉穎窗宦,沒想到半個(gè)月后赦颇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赴涵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年媒怯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片髓窜。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扇苞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出寄纵,到底是詐尸還是另有隱情鳖敷,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布程拭,位于F島的核電站定踱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏恃鞋。R本人自食惡果不足惜崖媚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望恤浪。 院中可真熱鬧畅哑,春花似錦、人聲如沸水由。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砂客。三九已至直秆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鞭盟,已是汗流浹背圾结。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留齿诉,地道東北人筝野。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像粤剧,于是被迫代替她去往敵國和親歇竟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容