搜索功能
本课属于 Coddy Dart 学习旅程的“面向对象编程”单元。第 104 课,共 110 课。
挑战
简单在上一课中,你创建了一个具有借书和还书功能的 Library 类。现在,我们来添加搜索功能,让用户能够在图书馆的藏书中查找图书。
你将为 Library 类添加 3 个新的搜索方法,帮助用户查找图书:
book.dart:保留现有的Book类,不作修改。user.dart:保留现有的User类,不作修改。library.dart:为Library类添加 3 个搜索方法:searchByTitle(String query):返回一个List<Book>,其中包含所有标题中含有查询字符串的图书(不区分大小写)searchByAuthor(String query):返回一个List<Book>,其中包含所有作者姓名中含有查询字符串的图书(不区分大小写)getAvailableBooks():返回一个List<Book>,其中只包含当前可以借阅的图书
main.dart:演示搜索功能。创建一个Library,并添加 4 本图书:978-0-13-468599-1、The Pragmatic Programmer、David Thomas978-0-596-51774-8、JavaScript: The Good Parts、Douglas Crockford978-0-13-235088-4、Clean Code、Robert Martin978-0-20-161622-4、The Pragmatic Programmer、Andrew Hunt
U001、Alice),并让他借阅第一本图书。然后:- 搜索标题中含有
pragmatic的图书,并打印Title search 'pragmatic': X found,其中 X 是图书数量 - 搜索作者为
david的图书,并打印Author search 'david': X found - 获取可借阅的图书,并打印
Available books: X - 将每本可借阅的图书单独打印在一行上
预期输出:
U001 borrowed "The Pragmatic Programmer"
Title search 'pragmatic': 2 found
Author search 'david': 1 found
Available books: 3
[978-0-596-51774-8] JavaScript: The Good Parts by Douglas Crockford
[978-0-13-235088-4] Clean Code by Robert Martin
[978-0-20-161622-4] The Pragmatic Programmer by Andrew Hunt亲手试试
import 'book.dart';
import 'user.dart';
import 'library.dart';
void main() {
// 创建一个 Library 对象
Library library = Library();
// TODO:向库中添加 4 本书:
// 1. 978-0-13-468599-1, The Pragmatic Programmer, David Thomas
// 2. 978-0-596-51774-8, JavaScript: The Good Parts, Douglas Crockford
// 3. 978-0-13-235088-4, Clean Code, Robert Martin
// 4. 978-0-20-161622-4, The Pragmatic Programmer, Andrew Hunt
// TODO:注册一个用户(U001, Alice)
// TODO:让用户借阅第一本书
// TODO:搜索书名中包含 'pragmatic' 的书
// 打印:Title search 'pragmatic': 找到 X 本
// TODO:搜索作者为 'david' 的书
// 打印:Author search 'david': 找到 X 本
// TODO:获取可借阅的书并打印:Available books: X
// TODO:将每本可借阅的书分别打印在单独一行
}
面向对象编程中的所有课
自己练习: Dart 在线编译器