在自动售货机c ++程序中选择项目时出现问题

时间:2018-10-14 01:09:10

标签: c++

对不起,我确定这个问题有一个非常简单的解决方案,但是我对编程还不陌生,自上一堂课以来已经有一段时间了,所以我对语言一无所知。基本上,我的老师在课堂上引导我们完成了很多这个项目,但是我遇到了这个问题,我只是睡眠不足,压力很大。

我遇到一个问题,当我从自动售货机程序中选择一个项目时,我可以从该库存中购买项目,但是一旦我尝试选择另一个项目,它就选择了我选择的第一个项目再来一次。这是我的代码

unsigned int vendingMenu(const vector<Item>& items) 
{

// The code to display the menu of the Vending Machine
for (unsigned int i = 0; i < items.size(); i++) 
{

    Item it = items[i];
    cout << "#=========================================#" << endl;
    cout << "["  << (i + 1) << "] "  << it.itemName 
         << " (" << it.credits << " credits, "
         << it.stock << " in stock)" << endl;

}

cout << "Enter [0] to exit the vending machine" << endl;
cout << "Please select an item: ";

return reader.readInt(0, items.size());

}

void buyItem(unsigned int choice, vector<Item>& items, vector<ItemPurchase>& 
history) 
{

// If the user's option is out of stock, it will output 
// "Sorry, that item is out of stock"
// and bring them back to the menu.

// Otherwise, it'll prompt the user to select how many they want.

if (items[choice - 1].stock == 0) 
{

    cout << "Sorry, that item is out of stock" << endl;

} else 
{

    cout << "You have chosen " << items[choice - 1].itemName
         << " How many " << items[choice - 1].itemName
         << " would you like? (Choose a quantity 0 - " << items[choice - 
1].stock 
         << ")? ";

    unsigned int amount = reader.readInt(0, items[choice - 1].stock);

    if (amount > 0) 
    {

        items[choice - 1].stock -= amount;
        history.push_back(ItemPurchase(items[choice - 1 ].itemName, amount));

    }
}

}

int main() 
{
// A vector of all of the items in the vending machine.
vector<Item> items = 
{

    Item ("Doritos", 180, 11),
    Item ("Cheetos", 150, 14),
    Item ("Lays", 175, 17),
    Item ("Coke Cola", 140, 9),
    Item ("Pepsi", 100, 20),
    Item ("Rockstars", 250, 15),
    Item ("Test Item", 100, 1)

};

vector<ItemPurchase> history;

unsigned int choice = vendingMenu(items);

// When the user chooses '0', it will stop the purchase process.
while (1)
{

buyItem(choice, items, history);
vendingMenu(items);

if (choice == 0)
{
    cout << "Exiting Menu" << endl;
    break;
}

}

buyItem(choice, items, history);

return 0;
}

我们的教授给了我们一个名为“ CinReader”的文件,以防止用户执行诸如输入超出范围的数字或非整数值之类的事情。这就是所有读者的东西,如果需要的话,我也可以发布代码。

我知道还有其他一些事情需要解决,但是我只是想首先解决这个问题。

您看到的与购买历史有关的所有内容是因为我还需要使程序在用户退出后立即输出该会话中购买的所有商品的历史记录。我只是还没有真正做到这一点。

感谢您的阅读!任何帮助表示赞赏。

0 个答案:

没有答案