实训内容
图书馆书籍信息管理系统
内容要求:
使用scala编程,完成如下功能。
- 创建一个可变 Map,用于存储图书馆中的书籍信息(键为书籍编号,值为包含书籍名称、作者、库存数量的元组),初始化为包含几本你喜欢的书籍信息。
- 使用 += 操作符添加两本新的书籍到图书馆集合中。
- 根据书籍编号查询某一本特定的书籍信息,使用 get 方法,并输出结果。
- 修改某本书籍的库存数量(假设可以通过键找到对应的元组并修改其中的值,这里体现可变 Map 的特性)。
- 使用 -= 操作符从图书馆集合中删除一本书。
- 遍历图书馆书籍 Map,并打印出每本书的信息。
分解代码
- 创建一个可变 Map,用于存储图书馆中的书籍信息(键为书籍编号,值为包含书籍名称、作者、库存数量的元组),初始化为包含几本你喜欢的书籍信息。
val library = mutable.Map(
1001 -> ("狼王梦","沈石溪",15),
1002 -> ("西游记","吴承恩",10),
1003 -> ("三国演义","罗贯中",8)
)
println("==== 初始化后的书籍 ====")
println(library)
- 使用 += 操作符添加两本新的书籍到图书馆集合中。
library += 1004 -> ("红楼梦","曹雪芹",12)
library += 1005 -> ("平凡的世界","路遥",16)
println("\n==== 添加《红楼梦》后 ====")
println(library)
- 根据书籍编号查询某一本特定的书籍信息,使用 get 方法,并输出结果。
val ret = library.get(1001)
if(ret.isDefined) {
println(ret.get)
} else {
println("没有该图书")
}
- 修改某本书籍的库存数量(假设可以通过键找到对应的元组并修改其中的值,这里体现可变 Map 的特性)。
library(1004) = ("红楼梦", "曹雪芹", 8)
println("\n=== 修改《红楼梦》的库存后 ===")
println(library)
- 使用 -= 操作符从图书馆集合中删除一本书。
library -= 1004
println("\n==== 删除《红楼梦》后 ====")
println(library)
- 遍历图书馆书籍 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 本")
}
}
}