当前位置:首页 > JavaScript

js实现自动售卖机

2026-01-31 05:33:34JavaScript

实现自动售卖机的基本逻辑

自动售卖机的核心功能包括商品展示、投币、选择商品、出货和找零。以下是一个简化的JavaScript实现示例。

商品库存管理

使用对象数组存储商品信息,包括名称、价格和库存数量:

const products = [
  { name: '可乐', price: 3, stock: 10 },
  { name: '雪碧', price: 3, stock: 8 },
  { name: '矿泉水', price: 2, stock: 15 }
];

投币系统

维护当前投入金额和总金额:

let currentAmount = 0;
let totalAmount = 0;

function insertCoin(amount) {
  if (amount > 0) {
    currentAmount += amount;
    updateDisplay();
  }
}

商品选择逻辑

检查余额和库存后出货:

js实现自动售卖机

function selectProduct(index) {
  const product = products[index];
  if (!product || product.stock <= 0) {
    alert('商品已售罄');
    return;
  }

  if (currentAmount >= product.price) {
    product.stock--;
    totalAmount += product.price;
    currentAmount -= product.price;
    dispenseProduct(product.name);
    updateDisplay();
  } else {
    alert('金额不足');
  }
}

出货和找零

function dispenseProduct(productName) {
  console.log(`出货:${productName}`);
}

function returnChange() {
  if (currentAmount > 0) {
    console.log(`找零:${currentAmount}元`);
    currentAmount = 0;
    updateDisplay();
  }
}

界面更新

function updateDisplay() {
  document.getElementById('display').innerText = 
    `当前金额:${currentAmount}元 | 总收入:${totalAmount}元`;
}

HTML结构示例

<div id="display"></div>
<div id="products"></div>
<button onclick="insertCoin(1)">投1元</button>
<button onclick="insertCoin(5)">投5元</button>
<button onclick="returnChange()">退币</button>

初始化商品按钮

function initProducts() {
  const container = document.getElementById('products');
  products.forEach((product, index) => {
    const btn = document.createElement('button');
    btn.textContent = `${product.name} (${product.price}元)`;
    btn.onclick = () => selectProduct(index);
    container.appendChild(btn);
  });
}

window.onload = initProducts;

扩展功能建议

  • 添加管理员界面管理库存
  • 实现硬币识别和纸币识别
  • 添加交易记录功能
  • 支持多种支付方式(扫码支付)
  • 添加商品图片展示

这个实现包含了自动售卖机的基本功能,可以根据实际需求进一步扩展和完善。

标签: 售卖机js
分享给朋友:

相关文章

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…