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

@interface Book : NSObject
{NSString *_bookName;// 书名NSString *_bookAuthor;// 作者NSString *_bookPublicHouse; // 出版社CGFloat _bookPrice; // 价格}
#pragma mark 初始化方法
-(id)initWithBookName : (NSString *)bookNamewithBookAuthor : (NSString *)bookAuthorwithBookPublicHouse : (NSString *)bookPublicHousewithBookPrice : (CGFloat )bookPrice;#pragma mark 便利构造器
+(id)bookWithBookName : (NSString *)bookNamewithBookAuthor : (NSString *)bookAuthorwithBookPublicHouse : (NSString *)bookPublicHousewithBookPrice : (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 *)bookNamewithBookAuthor : (NSString *)bookAuthorwithBookPublicHouse : (NSString *)bookPublicHousewithBookPrice : (CGFloat )bookPrice
{self = [super init];if (self) {_bookName = bookName;_bookAuthor = bookAuthor;_bookPublicHouse = bookPublicHouse;_bookPrice = bookPrice;}return self;
}#pragma mark 便利构造器
+(id)bookWithBookName : (NSString *)bookNamewithBookAuthor : (NSString *)bookAuthorwithBookPublicHouse : (NSString *)bookPublicHousewithBookPrice : (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;
}

OC 简单实现图书馆功能相关推荐

  1. 实现一个简单的投票功能

    实现一个简单的投票功能 最近项目中需要用到一个投票功能,当时觉得简单,向都没想就动手开始做,没想到走了不少弯路. 后来才发现,是想的太过简单了.来看看改进后的功能. 第一步:数据库设计 两个表:一个主 ...

  2. android实现计算器功能吗,利用Android实现一个简单的计算器功能

    利用Android实现一个简单的计算器功能 发布时间:2020-11-20 16:25:01 来源:亿速云 阅读:90 作者:Leah 今天就跟大家聊聊有关利用Android实现一个简单的计算器功能, ...

  3. nodejs php web,nodejs实现的简单web服务器功能示例

    本文实例讲述了nodejs实现的简单web服务器功能.分享给大家供大家参考,具体如下: 前端js代码: $.ajax({ url:'http://192.168.0.114:3000',//服务器地址 ...

  4. php实现简单验证码的功能

    php实现简单验证码的功能 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta c ...

  5. linux脚本石英钟,原生JS实现的简单小钟表功能示例

    本文实例讲述了原生JS实现的简单小钟表功能.分享给大家供大家参考,具体如下: 先来看看运行效果: 完整代码: www.jb51.net 钟表 body { background-color:#00A2 ...

  6. 基于bootstrap实现简单用户管理功能

    基于bootstrap实现简单用户管理功能,包括增删改以及列表分页展示功能. 1.web.xml配置servlet映射: <servlet><servlet-name>User ...

  7. 验证码实现php 难点,php实现简单的验证码功能

    php实现简单的验证码功能<?php //简单的验证码 //随机数 //为什么要循环0-15之间的数呢? //因为要实现最简单的字母和数字混搭 //十六进制0-9 a-f //dechex -- ...

  8. 一步一步学Silverlight 2系列(5):实现简单的拖放功能

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  9. powergrep linux版本,PowerShell实现简单的grep功能

    在PowerShell中,无法像*nix中一样使用grep命令,直接对一个目录下的所有文件进行内容查找,下面的PS脚本针对目录和文件进行了区分,借用Select-String命令,实现了内容查找,并显 ...

最新文章

  1. linux驱动:i2c驱动(四)流程图之注册驱动
  2. 网络学习:VLAN和独臂路由
  3. 如何让程序运行在所有CPU核心上
  4. STM32F103 CAN中断发送功能的再次讨论
  5. Linux(UOS) Qt不能播放音频的问题
  6. NYOJ737 石子合并(一)区间动态规划
  7. 初学 Delphi 嵌入汇编[10] - 函数返回值与寄存器
  8. 第三方登录接入-qq,weibo-java
  9. 【渝粤教育】国家开放大学2019年春季 0408-22T管理学基础 参考试题
  10. Mybatis+Tomcat使用JNDI配置数据源入门
  11. 一张图展示一段js代码的一生,变量对象、作用域链、闭包、this
  12. CodeForces 521D nice贪心
  13. php算法不大于n的质数,php求不大于n的质数
  14. python壁球小游戏——pygame之旅
  15. MyBatis官方文档——动态SQL部分
  16. Python处理txt文件
  17. 常用iOS开发网站资源
  18. Netty创建upd服务端
  19. ios 越狱后常见的源添加
  20. 开发板连续显示图片 | BAD APPLE 万耦中的二次元世界

热门文章

  1. JPA简单入门以及IDEA第一个JPA程序
  2. 了解角度和弧度的概念和转换关系
  3. 计算机组成原理学习笔记之机器字长、存储字长和指令字长
  4. 科目二 坐得高低 对看点的影响
  5. Linux命令之修改文件所属组chgrp
  6. 为什么上班只能养家,不能发家?
  7. 以新增用户为例子解释前后端整体连接方式详解(Service、Mapper、Controller、Entity)
  8. 【Word及其他文本工具快捷键大全】
  9. 上路新手自动挡友好驾驶总结
  10. root用户启动后,用户名显示1000