Menu
CoddyTech

搜索功能

本课属于 Coddy Dart 学习旅程的“面向对象编程”单元。第 104 课,共 110 课。

challenge icon

挑战

简单

在上一课中,你创建了一个具有借书和还书功能的 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 Thomas
    • 978-0-596-51774-8、JavaScript: The Good Parts、Douglas Crockford
    • 978-0-13-235088-4、Clean Code、Robert Martin
    • 978-0-20-161622-4、The Pragmatic Programmer、Andrew Hunt
    注册一个用户(U001、Alice),并让他借阅第一本图书。然后:
    1. 搜索标题中含有 pragmatic 的图书,并打印 Title search 'pragmatic': X found,其中 X 是图书数量
    2. 搜索作者为 david 的图书,并打印 Author search 'david': X found
    3. 获取可借阅的图书,并打印 Available books: X
    4. 将每本可借阅的图书单独打印在一行上

预期输出:

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 在线编译器