实训内容
图书馆书籍管理系统相关的练习。
内容要求:
-
创建一个可变 Map,用于存储图书馆中的书籍信息(键为书籍编号,值为包含书籍名称、作者、库存数量的元组),初始化为包含几本你喜欢的书籍信息。
-
使用 += 操作符添加两本新的书籍到图书馆集合中。
-
根据书籍编号查询某一本特定的书籍信息,使用 get 方法,并输出结果。
-
修改某本书籍的库存数量(假设可以通过键找到对应的元组并修改其中的值,这里体现可变 Map 的特性)。
-
使用 -= 操作符从图书馆集合中删除一本书。
-
遍历图书馆书籍 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")
}
}
}
结果展示
关键知识点总结
-
可变集合:
mutable.Map -
Map 操作:
- 添加:
+=或put - 删除:
-=或remove - 查询:
get方法返回Option类型 - 修改:直接赋值更新值
- 添加: