借阅系统
本课属于 Coddy Dart 学习旅程的“面向对象编程”单元。第 103 课,共 110 课。
挑战
简单在上一课中,你创建了 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)。然后:- 为 Alice 借阅第一本书
- 尝试再次借阅同一本书(应失败)
- 为 Alice 借阅第二本书
- 打印 Alice 的信息,显示她借阅的书籍数量
- 归还第一本书
- 再次打印 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 在线编译器