管理员界面
本课属于 Coddy Dart 学习旅程的“面向对象编程”单元。第 105 课,共 110 课。
挑战
简单在上一课中,你为 Library 类添加了搜索功能。现在,让我们创建一个管理员界面,让拥有特权的用户管理图书馆的藏书,包括添加新书和移除现有图书。
你将创建一个新的 Admin 类,并为 Library 添加管理功能:
book.dart:保留现有的Book类,不做更改。user.dart:保留现有的User类,不做更改。admin.dart:创建一个新的Admin类,用来表示图书馆管理员。管理员有一个id(String)和一个name(String)。重写toString(),使其返回Admin [id]: name。library.dart:为Library类添加管理功能:- 添加一个列表,用来保存已注册的管理员
registerAdmin(Admin admin):将管理员添加到图书馆addBookAsAdmin(String adminId, Book book):如果管理员存在,就添加图书并打印adminId added "title"。如果管理员不存在,就打印Unauthorized。removeBook(String adminId, String isbn):如果管理员和图书都存在,就从图书馆中移除该图书并打印adminId removed "title"。如果管理员不存在,就打印Unauthorized。如果图书不存在,就打印Book not found。getBookCount():返回图书馆中的图书总数
main.dart:演示管理员界面。创建一个Library,并注册一名管理员(A001,Sarah Admin)。使用该管理员添加三本书: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 Martin
Total books: X。然后尝试使用未注册的管理员 IDA999添加一本书。使用已注册的管理员移除第二本书。打印最终的图书数量。
预期输出:
A001 added "The Pragmatic Programmer"
A001 added "JavaScript: The Good Parts"
A001 added "Clean Code"
Total books: 3
Unauthorized
A001 removed "JavaScript: The Good Parts"
Total books: 2亲手试试
import 'book.dart';
import 'user.dart';
import 'library.dart';
import 'admin.dart';
void main() {
// TODO: 创建一个 Library
// TODO: 创建并注册一名管理员(A001, Sarah Admin)
// TODO: 使用管理员添加三本书:
// - 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
// TODO: 按 "Total books: X" 的格式输出书籍数量
// TODO: 尝试使用未注册的管理员 ID A999 添加一本书
// TODO: 使用已注册的管理员移除第二本书(978-0-596-51774-8)
// TODO: 输出最终的书籍数量
}
面向对象编程中的所有课
自己练习: Dart 在线编译器