咖啡店牛奶库存管理:代码实现、问题分析与改进建议
以下是用 C++ 实现的代码示例: ```cpp #include <iostream> #include <vector> struct Milk { int brand; int quantity; int purchaseDay; int expirationDay; }; std::vector<Milk> stocks; void purchase(int brand, int quantity) { Milk newMilk; newMilk.brand = brand; newMilk.quantity = quantity; newMilk.purchaseDay = stocks.size() + 1; if (brand == 1) { newMilk.expirationDay = newMilk.purchaseDay + 7; } else { newMilk.expirationDay = newMilk.purchaseDay + 15; } stocks.push_back(newMilk); } void consume(int quantity) { int remaining = quantity; for (int i = 0; i < stocks.size(); ++i) { if (stocks[i].quantity > 0 && stocks[i].purchaseDay <= stocks.size() && stocks[i].expirationDay >= stocks.size() + 1) { if (stocks[i].quantity <= remaining) { remaining -= stocks[i].quantity; stocks[i].quantity = 0; } else { stocks[i].quantity -= remaining; remaining = 0; break; } } } } void check() { int aStock = 0, aCost = 0, aWaste = 0; int bStock = 0, bCost = 0, bWaste = 0; for (const auto& milk : stocks) { if (milk.brand == 1) { if (milk.purchaseDay + 7 < stocks.size() + 1) { aWaste += milk.quantity; } else { aStock += milk.quantity; } aCost += milk.quantity; } else { if (milk.purchaseDay + 15 < stocks.size() + 1) { bWaste += milk.quantity; } else { bStock += milk.quantity; } bCost += milk.quantity; } } std::cout << "a stock:" << aStock << " cost:" << aCost << " waste:" << aWaste << std::endl; std::cout << "b stock:" << bStock << " cost:" << bCost << " waste:" << bWaste << std::endl; } int main() { int n; std::cin >> n; for (int i = 0; i < n; ++i) { std::string op; std::cin >> op; if (op == "purchase") { int brand, quantity; std::cin >> brand >> quantity; purchase(brand, quantity); } else if (op == "cost") { int quantity; std::cin >> quantity; consume(quantity); } else if (op == "check") { check(); } } return 0; } ``` 以下是三个可行的改进建议: 1. 可以添加错误处理机制,例如输入不合法时给出提示。 2. 对代码进行模块化,将不同的功能封装成单独的函数,提高代码的可读性和可维护性。 3. 考虑使用更高效的数据结构,如优先队列来处理牛奶的使用顺序。 ######[AI写代码神器 | 811点数解答 | 2024-12-29 17:09:47]
- Python 代码:合并食品与家居清单,巧妙去除重复物品!(字节豆包 | 89点数解答 | 2025-03-13 09:12:59)197
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)338
- 工程师必备!10 种工程日常易用管理工具大揭秘(百度文心 | 346点数解答 | 2023-11-09 18:26:09)288
- bookmanage 数据库表创建、测试数据添加及多需求 SQL 操作全解析(GPT | 909点数解答 | 2024-06-22 22:25:19)406
- WinForm实现图书管理系统:数据库操作、界面设计与功能全解析(GPT | 1163点数解答 | 2024-06-22 22:26:42)362
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)306
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)448
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)350
- Java 实现:轻松生成 5 位数字、大小写字母混合验证码( | 266点数解答 | 2024-03-06 17:39:10)325
- 深度剖析:游戏中两个 Buff 效果的触发条件、逻辑及注意要点 (阿里通义 | 566点数解答 | 2024-11-26 14:24:12)256
- 深度剖析 Vue 2 插槽:从基础使用到高级玩法(字节豆包 | 165点数解答 | 2024-11-29 11:25:06)211
- C++实现支持四则运算的简单计算器,处理除数为0和无效操作(字节豆包 | 241点数解答 | 2025-10-29 20:21:29)57