littlebot
Published on 2025-04-14 / 0 Visits
0

【源码】基于Elma框架的自动售货机系统

项目简介

本项目是基于Elma框架开发的自动售货机系统。Elma是专为嵌入式系统和反应式系统编程设计的事件循环管理器。项目展示了如何利用Elma框架实现自动售货机的核心功能,涵盖状态管理、事件处理以及用户交互,能让用户模拟商品购买、硬币投入和获取找零等操作。

项目的主要特性和功能

  1. 商品购买:顾客可通过按键选择购买零食、水或果汁等商品。
  2. 硬币投入:支持25分、50分和1美元等多种面额硬币投入。
  3. 余额计算:系统自动计算顾客投入金额,并显示剩余金额。
  4. 金额验证:验证投入金额是否足够购买所选商品,不足则提示继续投币。
  5. 重复购买:顾客能多次购买商品,直至选择退出。
  6. 状态机管理:利用状态机管理自动售货机的不同状态,如空闲(IDLE)、准备(READY)和售卖(VENDING)等。

安装使用步骤

1. 复制项目仓库

bash cd vending-machine

2. 构建和运行项目

使用Docker容器环境构建和运行项目: bash docker run -v $PWD:/source -it klavins/elma:latest bash 在容器环境中,执行以下命令构建项目并生成文档: bash make make docs

3. 运行自动售货机系统

构建完成后,运行以下命令启动系统: bash bin/vendingmachine

4. 使用说明

系统启动后,可通过以下键盘按键操作: - a:投入25分硬币 - b:投入50分硬币 - c:投入1美元硬币 - r:退回剩余金额 - 1:选择零食 - 2:选择水 - 3:选择果汁 - y:选择继续购买 - n:选择结束购买 - q:退出系统

5. 状态机说明

系统通过状态机管理自动售货机的不同状态: - IDLE:初始状态,等待顾客投入硬币。 - READY:顾客投入硬币后,系统进入准备状态,等待顾客选择商品。 - VENDING:顾客选择商品后,系统进入售卖状态,若金额足够则出货,否则提示继续投入硬币。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】