编辑代码

// 1. 定义菜单字典
var menu1: [String: Double] = ["家用品1": 10.0, "家用品2": 15.0, "家用品3": 20.0]
var menu2: [String: Double] = ["食品1": 5.0, "食品2": 8.0, "食品3": 12.0]
var menu3: [String: Double] = ["办公用品1": 3.0, "办公用品2": 6.0, "办公用品3": 9.0]

// 存储个人点单信息的字典
var mymenu: [String: Int] = [:]

// 2. 无限循环直到用户输入字符"y"
while true {
    print("请输入'y'退出循环,其他任意字符继续:")
    let user = readLine() ?? ""
    if user == "y" {
        break
    }
    
    // 输出菜单供用户选择
    print("菜单1:家用品")
    for (key,value) in menu1{
        print("\(key):\(value)")
    }
    print("菜单2:食品")
     for (key,value) in menu2{
        print("\(value)")
    }
    print("菜单3:办公用品")
     for (key,value) in menu3{
        print("\(value)")
    }
    print("请输入菜单类型(1:家用品、2:食品、3:办公用品):")
    
    // 3. 提示用户输入商品编号和数量
    let choice = Int(readLine() ?? "") ?? 0
    var selectedMenu: [String: Double] = [:]
    
    // 根据用户选择的菜单类型,获取对应的菜单字典
    switch choice {
    case 1:
        selectedMenu = menu1
    case 2:
        selectedMenu = menu2
    case 3:
        selectedMenu = menu3
    default:
        print("无效的菜单类型")
        continue
    }
    
    // 输出商品规格供用户选择
    print("商品规格:")
    for (index, item) in selectedMenu.enumerated() {
        print("\(index + 1): \(item.key) - ¥\(item.value)")
    }
    
    print("请输入商品名称:")
    let itemName = readLine() ?? ""
    print("请输入购买数量:")
    let numb = Int(readLine() ?? "") ?? 0
    
    // 更新个人点单信息
    mymenu[itemName] = numb
}

// 4. 打印小票
print("-------- 小票 --------")
print("名称\t数量\t*\t单价\t=\t价格")
print("----------------------")

// 5. 计算总价
var totalPrice: Double = 0.0
for (item, quantity) in mymenu {
    if let price = menu1[item] ?? menu2[item] ?? menu3[item] {
        let itemPrice = price * Double(quantity)
        print("\(item)\t\(quantity)\t*\t\(price)\t=\t\(itemPrice)")
        totalPrice += itemPrice
}
}

// 输出总价和致谢信息
print("----------------------")
print("总价:¥\(totalPrice)")
print("感谢您的购买!")