C++实现的自动售货机源代码解析

3星 · 超过75%的资源 需积分: 50 101 下载量 178 浏览量 更新于2024-09-16 8 收藏 6KB TXT 举报
"这是一个简单的C++实现的自动售货机模拟程序,包含了商品信息类`goodsinfo`和货币处理类`money`。" 在自动售货机系统中,`goodsinfo`类是用于存储和展示商品信息的核心部分。它包含了以下几个关键属性: 1. `name`: 商品的名称,类型为字符指针,用于存储商品的名字。 2. `price`: 商品的单价,类型为浮点数,表示每件商品的价格。 3. `count`: 商品的库存量,类型为整数,表示当前自动售货机中该商品的数量。 4. `length`: 商品名称的长度,用于动态分配内存存储商品名称。 `goodsinfo`类提供了以下方法: - 构造函数:接收商品名称、价格和库存作为参数,动态分配内存存储商品名称,并初始化其他属性。 - `shown()`:用于显示商品信息,包括欢迎语和商品列表的布局,但具体商品数据并未在此处填充,可能需要在外部完成。 - 析构函数:释放存储商品名称的内存,遵循C++中的内存管理原则。 另一方面,`money`类则处理与货币相关的操作,如投币、找零等。它包含以下方法: 1. `enter(float ps)`:检查用户投币的有效性。如果投币金额为10元、5元、2元、1元或5角,返回`'t'`表示有效,否则返回`'f'`。 2. `select(goodsinfo& ob)`:根据商品实例判断用户选择的商品是否还有库存。如果有库存,返回`'t'`,否则返回`'f'`。 3. `compare(float p, goodsinfo& ob)`:比较投币金额`p`与商品价格`ob.price`,如果投币金额大于或等于商品价格,返回`'t'`,否则返回`'f'`。 4. `zhaoling(float p, goodsinfo& ob)`:计算找零金额,将投币金额`p`减去商品价格,返回找零的浮点数值。 5. `addmoney(float p)`:用于用户再次投币,直接返回新的投币总额。 这个C++程序的基本工作流程可能是这样的:首先,用户通过控制台界面选择商品,然后投币,系统会检查投币金额是否足够购买所选商品,如果足够,执行交易并更新商品库存,找零后结束交易;如果不足,则提示用户继续投币。整个过程由这两个类的实例协同完成,体现了面向对象编程的思想,将商品信息和货币处理逻辑封装在各自的对象中,提高了代码的可读性和可维护性。