js实现自动售卖机
实现自动售卖机的基本逻辑
自动售卖机的核心功能包括商品展示、投币、选择商品、出货和找零。以下是一个简化的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();
}
}
商品选择逻辑
检查库存和余额是否足够购买选定商品。
function selectProduct(index) {
const product = products[index];
if (!product || product.stock <= 0) {
alert('商品已售罄');
return;
}
if (currentAmount >= product.price) {
currentAmount -= product.price;
product.stock--;
totalAmount += product.price;
dispenseProduct(product.name);
updateDisplay();
} else {
alert('余额不足');
}
}
出货和找零功能
模拟出货过程并提供找零。
function dispenseProduct(productName) {
alert(`出货:${productName}`);
if (currentAmount > 0) {
alert(`找零:${currentAmount}元`);
currentAmount = 0;
updateDisplay();
}
}
界面更新函数
实时显示当前状态信息。
function updateDisplay() {
console.log(`当前余额: ${currentAmount}元`);
console.log('商品列表:');
products.forEach((prod, i) => {
console.log(`${i+1}. ${prod.name} - ${prod.price}元 (剩余${prod.stock})`);
});
}
完整示例调用
模拟用户操作流程。
// 初始状态
updateDisplay();
// 用户投币
insertCoin(5);
// 用户选择商品
selectProduct(0); // 选择可乐
扩展功能建议
对于更完整的实现,可以考虑以下增强功能:
- 支持多种货币面额
- 添加管理员功能补充库存
- 实现交易历史记录
- 增加图形用户界面
- 添加商品售罄的视觉提示
这个基础实现可以运行在Node.js环境或浏览器控制台中,通过调用相应函数模拟自动售卖机的操作流程。实际应用中需要根据具体需求调整商品数据和交互方式。







