Menu
CoddyTech

管理员界面

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

challenge icon

挑战

简单

在上一课中,你为 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 Thomas
    • 978-0-596-51774-8,JavaScript: The Good Parts,Douglas Crockford
    • 978-0-13-235088-4,Clean Code,Robert Martin
    将图书数量打印为 Total books: X。然后尝试使用未注册的管理员 ID A999 添加一本书。使用已注册的管理员移除第二本书。打印最终的图书数量。

预期输出:

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