可变 Map 实现图书馆管理系统

73 阅读2分钟

实训内容

图书馆书籍管理系统相关的练习。

内容要求:

  1. 创建一个可变 Map,用于存储图书馆中的书籍信息(键为书籍编号,值为包含书籍名称、作者、库存数量的元组),初始化为包含几本你喜欢的书籍信息。

  2. 使用 += 操作符添加两本新的书籍到图书馆集合中。

  3. 根据书籍编号查询某一本特定的书籍信息,使用 get 方法,并输出结果。

  4. 修改某本书籍的库存数量(假设可以通过键找到对应的元组并修改其中的值,这里体现可变 Map 的特性)。

  5. 使用 -= 操作符从图书馆集合中删除一本书。

  6. 遍历图书馆书籍 Map,并打印出每本书的信息。

[巡班并及时解决学生问题]

代码展示

package 实训内容

import scala.collection.mutable

object base34 {
  def main(args: Array[String]): Unit = {
    // 1. 创建可变 Map,存储书籍信息
    val library = mutable.Map[String, (String, String, Int)](
      "B001" -> ("Scala 编程", "Martin Odersky", 5),
      "B002" -> ("Java 核心技术", "Cay Horstmann", 3),
      "B003" -> ("Python 学习手册", "Mark Lutz", 7)
    )

    println("=== 初始图书馆书籍 ===")
    library.foreach { case (id, (name, author, stock)) =>
      println(s"编号: $id, 书名: $name, 作者: $author, 库存: $stock")
    }

    // 2. 添加两本新书
    library += ("B004" -> ("数据结构与算法", "严蔚敏", 4))
    library += ("B005" -> ("设计模式", "Erich Gamma", 6))

    println("\n=== 添加新书后 ===")
    library.foreach { case (id, (name, author, stock)) =>
      println(s"编号: $id, 书名: $name, 作者: $author, 库存: $stock")
    }

    // 3. 根据编号查询书籍
    val bookId = "B002"
    val bookInfo = library.get(bookId)
    println(s"\n=== 查询编号为 $bookId 的书籍 ===")
    bookInfo match {
      case Some((name, author, stock)) =>
        println(s"找到书籍: $name, 作者: $author, 库存: $stock")
      case None =>
        println(s"未找到编号为 $bookId 的书籍")
    }

    // 4. 修改库存数量
    val updateId = "B001"
    library.get(updateId) match {
      case Some((name, author, stock)) =>
        library(updateId) = (name, author, stock + 2) // 增加2本库存
        println(s"\n=== 修改编号 $updateId 的库存 ===")
        println(s"修改后: ${library(updateId)}")
      case None =>
        println(s"未找到要修改的书籍")
    }

    // 5. 删除一本书
    val removeId = "B003"
    library -= removeId
    println(s"\n=== 删除编号为 $removeId 的书籍后 ===")

    // 6. 遍历打印所有书籍
    library.foreach { case (id, (name, author, stock)) =>
      println(s"编号: $id, 书名: $name, 作者: $author, 库存: $stock")
    }
  }
}

结果展示

34.png

关键知识点总结

  1. 可变集合mutable.Map

  2. Map 操作

    • 添加:+= 或 put
    • 删除:-= 或 remove
    • 查询:get 方法返回 Option 类型
    • 修改:直接赋值更新值