作业(1)

35 阅读1分钟
object library1 {
  def main(args: Array[String]): Unit = {
    // 1. 创建一个可变 Map,用于存储图书馆中的书籍信息(键为书籍编号,值为包含书籍名称、作者、库存数量的元组),初始化为包含几本你喜欢的书籍信息。
    val library = scala.collection.mutable.Map[String, (String, String, Int)](
      "B001" -> ("《三体》", "刘慈欣", 10),
      "B002" -> ("《活着》", "余华", 8),
      "B003" -> ("《哈利·波特与魔法石》", "J.K.罗琳", 15)
    )

    // 2. 使用 += 操作符添加两本新的书籍到图书馆集合中。
    println("\n=== 添加两本新书 ===")
    library += "B004" -> ("《百年孤独》", "加西亚·马尔克斯", 5)
    library += "B005" -> ("《月亮与六便士》", "毛姆", 7)
    println("添加后的图书馆书籍:")
    println(library)

    // 3. 根据书籍编号查询某一本特定的书籍信息,使用 get 方法,并输出结果。
    val book = "B001"
    val rst = library.get(book)
    if (!rst.isEmpty) {
      println(rst.get)
    } else {
      println("图书馆没有这本书")
    }

    // 4. 修改某本书的库存数量(元组不可变,需重新赋值整个元组)
    println("\n=== 修改书籍库存 ===")
    val updateBookId = "B002"
    library.get(updateBookId) match {
      case Some((name, author, oldStock)) =>
        val newStock = 12 // 新库存数量
        library(updateBookId) = (name, author, newStock) // 重新赋值元组
        println(s"已将编号 $updateBookId$name》的库存从 $oldStock 修改为 $newStock")
      case None =>
        println(s"未找到编号为 $updateBookId 的书籍,无法修改库存")
    }
    println(library)

    // 5. 使用 -= 操作符删除一本书
    println("\n=== 删除一本书 ===")
    val deleteBookId = "B004"
    library -= deleteBookId
    println(s"已删除编号为 $deleteBookId 的书籍")
    println(library)

    // 6. 遍历 Map 并打印每本书的详细信息
    println("\n=== 图书馆最终书籍清单 ===")
    library.foreach { case (bookId, (name, author, stock)) =>
      println(f"编号:$bookId%-6s 书名:$name%-20s 作者:$author%-15s 库存:$stock%2d 本")
    }
  }
}