Menu
CoddyTech

借阅系统

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

challenge icon

挑战

简单

在上一课中,你创建了 Book 和 User 类,并添加了基本属性。现在,你要创建一个 Library 类来管理整个借阅流程,构建一个完整的借阅系统。

你将创建一个新文件,并更新现有文件来实现借阅逻辑:

  • book.dart:保留现有的 Book 类及其 isbn、title、author、isAvailable 和 toString()。
  • user.dart:保留现有的 User 类及其 id、name、borrowedBooks 和 toString()。
  • library.dart:创建一个新的 Library 类来管理书籍和用户。它应包含两个列表,一个用于存储 books,另一个用于存储 users。添加以下方法:
    • addBook(Book book):将一本书添加到图书馆的藏书中
    • registerUser(User user):将一名用户添加到图书馆
    • borrowBook(String isbn, String userId):查找书籍和用户。如果书籍存在且可借,并且用户存在,则将书籍标记为不可借,将它添加到用户的借阅书籍中,并打印 userId borrowed "title"。如果书籍不存在,则打印 Book not found。如果书籍不可借,则打印 Book not available。如果用户不存在,则打印 User not found。
    • returnBook(String isbn, String userId):查找书籍和用户。如果两者都存在,并且用户借有这本书,则将书籍标记为可借,将它从用户的借阅书籍中移除,并打印 userId returned "title"。如果书籍不存在,则打印 Book not found。如果用户不存在,则打印 User not found。
  • main.dart:导入所有文件,并演示借阅系统。创建一个 Library,添加两本书(978-0-13-468599-1、The Pragmatic Programmer、David Thomas 和 978-0-596-51774-8、JavaScript: The Good Parts、Douglas Crockford),并注册一名用户(U001、Alice Johnson)。然后:
    1. 为 Alice 借阅第一本书
    2. 尝试再次借阅同一本书(应失败)
    3. 为 Alice 借阅第二本书
    4. 打印 Alice 的信息,显示她借阅的书籍数量
    5. 归还第一本书
    6. 再次打印 Alice 的信息,显示更新后的数量

预期输出:

U001 borrowed "The Pragmatic Programmer"
Book not available
U001 borrowed "JavaScript: The Good Parts"
User U001: Alice Johnson (2 books borrowed)
U001 returned "The Pragmatic Programmer"
User U001: Alice Johnson (1 books borrowed)

亲手试试

import 'book.dart';
import 'user.dart';
import 'library.dart';

void main() {
  // TODO: 创建一个 Library 实例
  
  // TODO: 创建两本书:
  // 第 1 本书:isbn 为 '978-0-13-468599-1',title 为 'The Pragmatic Programmer',author 为 'David Thomas'
  // 第 2 本书:isbn 为 '978-0-596-51774-8',title 为 'JavaScript: The Good Parts',author 为 'Douglas Crockford'
  
  // TODO: 将两本书添加到库中
  
  // TODO: 创建一个 id 为 'U001'、name 为 'Alice Johnson' 的用户
  
  // TODO: 在库中注册该用户
  
  // TODO: 让 Alice 借阅第一本书
  
  // TODO: 尝试再次借阅同一本书(应该失败,并显示 'Book not available')
  
  // TODO: 让 Alice 借阅第二本书
  
  // TODO: 输出 Alice,显示她借阅的书籍数量
  
  // TODO: 归还第一本书
  
  // TODO: 再次打印 Alice,显示更新后的数量
}

面向对象编程中的所有课

自己练习: Dart 在线编译器