OC 简单实现图书馆功能

先创建一个Book的类, Book.h
#import <Foundation/Foundation.h>

@interface Book : NSObject
{
    NSString *_bookName;// 书名
    NSString *_bookAuthor;// 作者
    NSString *_bookPublicHouse; // 出版社
    CGFloat _bookPrice; // 价格
    
}
#pragma mark 初始化方法
-(id)initWithBookName : (NSString *)bookName
       withBookAuthor : (NSString *)bookAuthor
  withBookPublicHouse : (NSString *)bookPublicHouse
        withBookPrice : (CGFloat )bookPrice;

#pragma mark 便利构造器
+(id)bookWithBookName : (NSString *)bookName
       withBookAuthor : (NSString *)bookAuthor
  withBookPublicHouse : (NSString *)bookPublicHouse
        withBookPrice : (CGFloat )bookPrice;

#pragma mark 设置器
-(void)setBOOKName:(NSString *)bookName;
-(void)setBookAuthor:(NSString *)bookAuthor;
-(void)setBOOKPublicHouse:(NSString *)bookPublicHouse;
-(void)setBookPrice:(CGFloat )bookPrice;

#pragma mark 访问器

-(NSString *)getterBookName;
-(NSString *)getterBookAuthor;
-(NSString *)getterBookPublicHouse;
-(CGFloat )getterBookPrice;
@end

// Book 类的实现文件.m文件

#import "Book.h"

@implementation Book

#pragma mark 初始化方法
-(id)initWithBookName : (NSString *)bookName
       withBookAuthor : (NSString *)bookAuthor
  withBookPublicHouse : (NSString *)bookPublicHouse
        withBookPrice : (CGFloat )bookPrice
{
    self = [super init];
    if (self) {
        _bookName = bookName;
        _bookAuthor = bookAuthor;
        _bookPublicHouse = bookPublicHouse;
        _bookPrice = bookPrice;
    }
    return self;
}

#pragma mark 便利构造器
+(id)bookWithBookName : (NSString *)bookName
       withBookAuthor : (NSString *)bookAuthor
  withBookPublicHouse : (NSString *)bookPublicHouse
        withBookPrice : (CGFloat )bookPrice
{
    Book *book = [[Book alloc] initWithBookName:bookName withBookAuthor:bookAuthor withBookPublicHouse:bookPublicHouse withBookPrice:bookPrice];
    return book;
}

#pragma mark 设置器
-(void)setBOOKName:(NSString *)bookName
{
    _bookName = bookName;
}
-(void)setBookAuthor:(NSString *)bookAuthor
{
    _bookAuthor = bookAuthor;
}
-(void)setBOOKPublicHouse:(NSString *)bookPublicHouse
{
    _bookPublicHouse = bookPublicHouse;
}
-(void)setBookPrice:(CGFloat )bookPrice
{
    _bookPrice = bookPrice;
}

#pragma mark 访问器

-(NSString *)getterBookName
{
    return _bookName;
}
-(NSString *)getterBookAuthor
{
    return _bookAuthor;
}
-(NSString *)getterBookPublicHouse
{
    return _bookPublicHouse;
}
-(CGFloat )getterBookPrice
{
    return _bookPrice;
}



-(NSString *)description
{
    return [NSString stringWithFormat:@"书名:%@ 作者:%@ 出版社:%@ 价格:%.2f",_bookName,_bookAuthor,_bookPublicHouse,_bookPrice];
}


@end
#import <Foundation/Foundation.h>
@class Book; // 声明 book 是一个类

@interface Library : NSObject

{
    NSString *_libraryName; // 图书馆名字
    NSMutableArray *_libraryArray; // 存放图书的地方.
}


#pragma mark 便初始化方法

-(id)initWithLibraryName:(NSString *)name;
#pragma mark 设置图书馆名字

-(void)setLibraryName:(NSString *)libraryName;
#pragma mark 访问器
-(NSString *)getterLibrary;

#pragma mark 添加图书
-(BOOL)addBookToLibrary:(Book *)book;


#pragma mark 删除图书
-(BOOL)deletedBookFromLibrary:(Book *)book;
#pragma mark 根据图书的作者来删除图书
-(BOOL)deleteBookFromLibraryByBookAuthor:(NSString *)bookAuthor;

#pragma mark 按照图书馆名字来查找图书
-(NSArray *)findBookFormLibraryByName:(NSString *)bookName;

#pragma mark 按照价格来查找图书
-(NSArray *)findBookFormLibraryByPrice:(CGFloat )bookPrice;

#pragma mark 按照作者来查找图书
-(NSArray *)findBookFormLibraryByAuthor:(NSString *)bookAuthor;

#pragma mark 按照出版社查找图书,
-(NSArray *)findBookFormLibraryByPublicHouse:(NSString *)publicHouse;
#pragma mark 展示输出所有的书
-(void)showAllBooks;
@end

#import "Library.h"
#import "Book.h"
@implementation Library

#pragma mark 初始化方法

//-(id)initWithLibraryName:(NSString *)name;
- (instancetype)initWithLibraryName:(NSString *)name
{
    self = [super init];
    if (self) {
        _libraryName = name;
        _libraryArray = [NSMutableArray arrayWithCapacity:10];
        
    }
    return self;
}


#pragma mark 设置图书馆名字

-(void)setLibraryName:(NSString *)libraryName
{
    _libraryName = libraryName;
}
#pragma mark 访问器
-(NSString *)getterLibrary
{
    return _libraryName;
}

#pragma mark 添加图书
-(BOOL)addBookToLibrary:(Book *)book
{
    [_libraryArray addObject:book];
    return YES;
}

#pragma mark 删除图书
-(BOOL)deletedBookFromLibrary:(Book *)book
{
    [_libraryArray removeObject:book];
    return YES;
}

// 在for 循环中找到东西,不要直接删除,会造成崩溃,.

#pragma mark 根据图书的作者来删除图书
-(BOOL)deleteBookFromLibraryByBookAuthor:(NSString *)bookAuthor
{
    NSMutableArray *deleteArray = [NSMutableArray array];
    for (Book *temp in _libraryArray) {
        if ([[temp getterBookAuthor]isEqualToString:bookAuthor]) {
//            判断两个字符串是否相等.
            
//    [_libraryArray removeObject:temp] // 这个做法不可取,容易造成崩溃
            [deleteArray addObject:temp];
            
        }
    }
    
    [_libraryArray removeObjectsInArray:deleteArray];
    return YES;
}

#pragma mark 按照图书名字来查找图书
-(NSArray *)findBookFormLibraryByName:(NSString *)bookName
{
    NSMutableArray *array = [NSMutableArray array];
    
    for (Book *temp in _libraryArray) {
        if ([[temp getterBookName] isEqualToString:bookName]) {
            [array addObject:temp];

        }
    }
    return array;
    
    
    
}

#pragma mark 按照价格来查找图书
-(NSArray *)findBookFormLibraryByPrice:(CGFloat )bookPrice
{
    NSMutableArray *array = [NSMutableArray array];
    for (Book *temp in _libraryArray) {
        if ([temp getterBookPrice]-bookPrice < 0.000001 && [temp getterBookPrice]-bookPrice > -0.000001 ) {
            [array addObject:temp];
        }
    }
    return array;
}

#pragma mark 按照作者来查找图书
-(NSArray *)findBookFormLibraryByAuthor:(NSString *)bookAuthor
{
    NSMutableArray *array = [NSMutableArray array];
    for (Book *temp in _libraryArray) {
        if ([[temp getterBookAuthor] isEqualToString:bookAuthor]) {
            [array addObject:temp];
        }
    }
    return array;
    
}

#pragma mark 按照出版社查找图书,
-(NSArray *)findBookFormLibraryByPublicHouse:(NSString *)publicHouse
{
    NSMutableArray *array = [NSMutableArray array];
    
    for (Book *temp in _libraryArray) {
        if ([[temp getterBookPublicHouse] isEqualToString:publicHouse]) {
            [array addObject:temp];
        }
    }
    return array;
}

#pragma mark 展示所有的书籍
-(void)showAllBooks
{
    for (Book *temp in _libraryArray) {
        NSLog(@"%@ %@ %@ %.2f",[temp getterBookName],[temp getterBookAuthor],[temp getterBookPublicHouse],[temp getterBookPrice]);
    }
    
}

@end

//  主函数 main 函数中的实现
#import <Foundation/Foundation.h>
#import "Book.h"
#import "Library.h"
int main(int argc, const char * argv[])
{
    Book *Book1 = [Book bookWithBookName:@"西游记" withBookAuthor:@"吴承恩" withBookPublicHouse:@"唐僧出版社" withBookPrice:22.3];
    NSLog(@"%@",Book1);
    
    Book *book2 = [Book bookWithBookName:@"大宋的智慧" withBookAuthor:@"孑雨" withBookPublicHouse:@"长江出版社" withBookPrice:50];
    Book *book3 = [Book bookWithBookName:@"狂人日记" withBookAuthor:@"鲁迅" withBookPublicHouse:@"内蒙古出版社" withBookPrice:88];
    Book *book4 = [Book bookWithBookName:@"平凡的时间" withBookAuthor:@"路瑶" withBookPublicHouse:@"盗版" withBookPrice:5];
    Book *book5 = [Book bookWithBookName:@"小时代" withBookAuthor:@"郭敬明" withBookPublicHouse:@"长江文艺出版社" withBookPrice:36];
    Book *book6 = [Book bookWithBookName:@"梦里花落知多少" withBookAuthor:@"郭敬明" withBookPublicHouse:@"长江文艺出版社" withBookPrice:2.5];
    Book *book7 = [Book bookWithBookName:@"梦里花落知多少1" withBookAuthor:@"郭敬明" withBookPublicHouse:@"长江文艺出版社" withBookPrice:2.5];
//    创建一个图书馆
    Library *library = [[Library alloc] initWithLibraryName:@"0407"];
    [library addBookToLibrary:Book1];
    [library addBookToLibrary:book2];
    [library addBookToLibrary:book3];
    [library addBookToLibrary:book4];
    [library addBookToLibrary:book5];
    [library addBookToLibrary:book6];
    [library addBookToLibrary:book7];


    [library showAllBooks];
    printf("\n");
//    [library deleteBookFromLibraryByBookAuthor : @"郭敬明"];
//
//    [library showAllBooks];
    NSArray *array = [library findBookFormLibraryByPrice:2.5];
    
    for (Book *temp in array) {
        NSLog(@"%@",temp);
    }

    
    
    return 0;
}

猜你喜欢

转载自blog.csdn.net/HarderFortunate/article/details/45398609