Scala | Map 图书馆书籍信息管理

25 阅读3分钟

实训内容

图书馆书籍信息管理系统

内容要求:

使用scala编程,完成如下功能。

  1. 创建一个可变 Map,用于存储图书馆中的书籍信息(键为书籍编号,值为包含书籍名称、作者、库存数量的元组),初始化为包含几本你喜欢的书籍信息。
  2. 使用 += 操作符添加两本新的书籍到图书馆集合中。
  3. 根据书籍编号查询某一本特定的书籍信息,使用 get 方法,并输出结果。
  4. 修改某本书籍的库存数量(假设可以通过键找到对应的元组并修改其中的值,这里体现可变 Map 的特性)。
  5. 使用 -= 操作符从图书馆集合中删除一本书。
  6. 遍历图书馆书籍 Map,并打印出每本书的信息。

分解代码

  1. 创建一个可变 Map,用于存储图书馆中的书籍信息(键为书籍编号,值为包含书籍名称、作者、库存数量的元组),初始化为包含几本你喜欢的书籍信息。
val library = mutable.Map(
  1001 -> ("狼王梦","沈石溪",15),
  1002 -> ("西游记","吴承恩",10),
  1003 -> ("三国演义","罗贯中",8)
)
println("==== 初始化后的书籍 ====")
println(library)
  1. 使用 += 操作符添加两本新的书籍到图书馆集合中。
library += 1004 -> ("红楼梦","曹雪芹",12)
library += 1005 -> ("平凡的世界","路遥",16)

println("\n==== 添加《红楼梦》后 ====")
println(library)
  1. 根据书籍编号查询某一本特定的书籍信息,使用 get 方法,并输出结果。
val ret = library.get(1001)
if(ret.isDefined) {
  println(ret.get)
} else {
  println("没有该图书")
}
  1. 修改某本书籍的库存数量(假设可以通过键找到对应的元组并修改其中的值,这里体现可变 Map 的特性)。
library(1004) = ("红楼梦", "曹雪芹", 8)

println("\n=== 修改《红楼梦》的库存后 ===")
println(library)
  1. 使用 -= 操作符从图书馆集合中删除一本书。
library -= 1004

println("\n==== 删除《红楼梦》后 ====")
println(library)
  1. 遍历图书馆书籍 Map,并打印出每本书的信息。
for ((bookId, (name, author, stock)) <- library) {
  println(s"编号:$bookId → 书名:$name,作者:$author,库存:$stock 本")
}

完整代码

object test {
  def main(args: Array[String]): Unit = {
    // 1. 创建一个可变 Map,用于存储图书馆中的书籍信息
    val library = mutable.Map(
      1001 -> ("狼王梦","沈石溪",15),
      1002 -> ("西游记","吴承恩",10),
      1003 -> ("三国演义","罗贯中",8)
    )
    println("==== 初始化后的书籍 ====")
    println(library)

    // 2.使用 += 操作符添加两本新的书籍到图书馆集合中。
    library += 1004 -> ("红楼梦","曹雪芹",12)
    library += 1005 -> ("平凡的世界","路遥",16)

    println("\n==== 添加《红楼梦》后 ====")
    println(library)

    // 3. 根据书籍编号查询某一本特定的书籍信息,使用 get 方法,并输出结果
    val ret = library.get(1001)
    if(ret.isDefined) {
      println(ret.get)
    } else {
      println("没有该图书")
    }

    // 4.修改某本书籍的库存数量
    library(1004) = ("红楼梦", "曹雪芹", 8)

    println("\n=== 修改《红楼梦》的库存后 ===")
    println(library)

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

    println("\n==== 删除《红楼梦》后 ====")
    println(library)

    // 6. 遍历图书馆书籍 Map,并打印出每本书的信息。
    for ((bookId, (name, author, stock)) <- library) {
      println(s"编号:$bookId → 书名:$name,作者:$author,库存:$stock 本")
    }

  }
}