JavaScript做一个简易的自动售货系统,售货柜中有若干种商品,每种商品有名称(name)、价格(price)、 库存(stock) 三个属性。

实现以下功能。

  1. 售货柜可以列出当前的所有商品,每种商品显示各自的名称、库存和价格。
  2. 给售货柜补货,即给指定名称的商品添加一定数量的库存。
  3. 销售商品,给定商品的名称和数量以及顾客预支配金额,判断金额是否足够,若不够则进行提醒,若足够则减库存并找零。

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>

    <script>

        class Product{

            constructor(name,price,stock){

                this.name = name

                this.price = price

                this.stock = stock

            }

            show(){

                console.log(`当前货物有${this.name},单价是${this.price},库存有${this.stock}`)

            }

            add(nums){

                // 这里需要实现库存累加

                this.stock += nums

            }

        }

        class SellingMachine{

            constructor(){

                this.Products = [

                    new Product('可乐',3,10),

                    new Product('雪碧',3,10),

                    new Product('酸奶',5,10),

                ]

            }

            list(){

                console.log('当前货物有:')

                //这里如何实现显示当前货物

                for(let product of this.Products){

                    product.show()

                }

            }

            add_stock(name,nums){

                if(nums<=0){

                    console.log('数量不足以添加库存')

                    return 0

                }

                // 这里对货物名称作判断

                let product = this.Products.find(x=>x.name == name)

                if (product === undefined){

                    console.log('库存商品不对')

                    return 0

                }

                product.add(nums) //添加库存

                console.log(`当前${name}商品的库存为:${product.stock}`)

            }

            sell(name,nums,money){

                let product = this.Products.find(x=>x.name == name)

                if (product === undefined){

                    console.log('没有这个商品')

                    return 0

                }

                // 这里计算总消费多少

                let all_spend = nums * product.price

                if (all_spend>money){ // 对总消费情况作判断

                    console.log('钱不够')

                }else{

                    //找补的钱的计算方法 = 给的钱-总消费

                    let rest = money-all_spend

                    product.add(-nums)

                    console.log(`当前消费花费${all_spend}元,收您${money}元,找您${rest}元`)

                    return rest

                }

            }

        }

        let machine_0 = new SellingMachine()

        // 请测试显示当前售货机里面的内容

        machine_0.list()

        // 请测试使用50元,购买3瓶可乐的情况

        machine_0.sell('可乐',3,50)

        // 请测试补货10瓶可乐的情况

        machine_0.add_stock('可乐',10)

        // 请测试补货5瓶咖啡的情况

        machine_0.add_stock('咖啡',5)

    </script>

</body>

</html>

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是用JS实现的简易自动售货系统的代码: ```javascript class Product { constructor(name, price, stock) { this.name = name; this.price = price; this.stock = stock; } } class SellingMachine { constructor() { this.products = []; } addProduct(product) { this.products.push(product); } listProducts() { console.log("当前商品清单:"); this.products.forEach((product) => { console.log( `${product.name} - 库存:${product.stock} - 价格:${product.price} 元` ); }); } restockProduct(name, amount) { const product = this.products.find((product) => product.name === name); if (product) { product.stock += amount; console.log(`${name} 已加入 ${amount} 件库存。`); } else { console.log(`未找到名称为 ${name} 的商品。`); } } sellProduct(name, amount, payment) { const product = this.products.find((product) => product.name === name); if (product) { if (product.stock < amount) { console.log(`${name} 库存不足。`); } else if (product.price * amount > payment) { console.log(`金额不足,购买 ${name} ${amount} 件需要 ${product.price * amount} 元。`); } else { product.stock -= amount; const change = payment - product.price * amount; console.log(`购买 ${name} ${amount} 件成功,找零 ${change} 元。`); } } else { console.log(`未找到名称为 ${name} 的商品。`); } } } // 测试 const machine = new SellingMachine(); const coke = new Product("可口可乐", 3, 10); const sprite = new Product("雪碧", 2.5, 5); const chips = new Product("薯片", 5, 3); machine.addProduct(coke); machine.addProduct(sprite); machine.addProduct(chips); machine.listProducts(); machine.restockProduct("可口可乐", 5); machine.sellProduct("雪碧", 2, 5); ``` 上面的代码中,我们创建了两个类:`Product`(商品类)和`SellingMachine`(售货柜类)。`Product`类有三个属性名称价格库存;`SellingMachine`类有一个属性`products`,存储了所有的商品,以及三个方法:`addProduct`(添加商品)、`listProducts`(列出所有商品)和`sellProduct`(商品)。其中`addProduct`和`listProducts`比较简单,`sellProduct`的实现比较复杂,需要判断商品是否存在、库存是否足够以及付款是否足够等。另外,我们还添加了一个`restockProduct`方法,用于给指定名称商品添加库存。最后,我们进行了一些简单的测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_69595107

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值