C++ 餐厅计费程序功能

C++ 餐厅计费程序功能,c++,function,billing,C++,Function,Billing,我需要制作一个餐馆账单计算器程序,允许人们从菜单项列表(一个函数)中进行选择,直到他们拥有想要点的所有东西,然后在完成从列表中选择后计算总数。然后取他们投标的金额,减去总额加上税金和小费,计算出变化 我在这里和其他地方发现了一些想法和类似的计划,但没有任何东西能让我对如何完成这一计划有足够好的了解。我对程序进行了编码,但我不知道如何计算运行总数并不断累积,直到用户输入“8”。我有一个功能正常的程序,但它在每次选择后都会计算总数,而不是在用户点击“8”键结束时保持一个运行总数并计算它 看看下面,如

我需要制作一个餐馆账单计算器程序,允许人们从菜单项列表(一个函数)中进行选择,直到他们拥有想要点的所有东西,然后在完成从列表中选择后计算总数。然后取他们投标的金额,减去总额加上税金和小费,计算出变化

我在这里和其他地方发现了一些想法和类似的计划,但没有任何东西能让我对如何完成这一计划有足够好的了解。我对程序进行了编码,但我不知道如何计算运行总数并不断累积,直到用户输入“8”。我有一个功能正常的程序,但它在每次选择后都会计算总数,而不是在用户点击“8”键结束时保持一个运行总数并计算它

看看下面,如果你愿意的话,看看你是否能为我指出正确的方向。基本上,这个作业是关于函数的,所以我们被要求使用函数来显示菜单和计算总数

#include <iostream>
#include <iomanip>
using namespace std;

// Function Prototypes
void showMenu();
void showFees(double, int);

int main()
{
    int choice; //To Hold Menu Choice
    double quantity = 1;




    //contants for menu choices
    const int hamburgerChoice = 1;
    const int hotdogChoice = 2;
    const int peanutsChoice = 3;
    const int popcornChoice = 4;
    const int sodaChoice = 5;
    const int chipsChoice = 6;
    const int waterChoice = 7;
    const int endOrderChoice = 8;

    //constants for menu prices
    const double hamburger = 6.00;
    const double hotdog = 4.50;
    const double peanuts = 3.75;
    const double popcorn = 5.50;
    const double soda = 2.80;
    const double chips = 1.00;
    const double water = 2.00;

    //set precision
    cout << fixed << showpoint << setprecision(2);

    do
    {
        //display menu and get user choice
        showMenu();
        cin >> choice;

        //validate choice
        while (choice < hamburgerChoice || choice > endOrderChoice)
        {
            cout << "Please enter a valid menu choice: ";
            cin >> choice;
        }

        //if the user does not want to quit proceed
        if (choice != endOrderChoice)
        {

            //display fees
            switch (choice)
            {
                case hamburgerChoice:
                    showFees(hamburger, quantity);
                    break;
                case hotdogChoice:
                    showFees(hotdog, quantity);
                    break;
                case peanutsChoice:
                    showFees(peanuts, quantity);
                    break;
                case popcornChoice:
                    showFees(popcorn, quantity);
                    break;
                case sodaChoice:
                    showFees(soda, quantity);
                    break;
                case chipsChoice:
                    showFees(chips, quantity);
                    break;
                case waterChoice:
                    showFees(water, quantity);
                    break;

            }
                    }
    }
    while (choice != endOrderChoice);
    system("pause");
    return 0;

}
//*************************************************************
//Definition of function showMenu which displays the menu    **
//*************************************************************

void showMenu()
{
    cout << "\n\t\tBaseball Game Snacks" << endl;
    cout << "1. Hamburger \t$6.00"<< endl;
    cout << "2. Hotdog \t\t$4.50" << endl;
    cout << "3. Peanuts \t\t$3.75" << endl;
    cout << "4. Popcorn \t\t$5.50" << endl;
    cout << "5. Soda \t\t$2.80" << endl;
    cout << "6. Chips \t\t$1.00"<< endl;
    cout << "7. Water \t\t$2.00" << endl;
    cout << "8. END ORDER" << endl;
    cout << "Please enter your menu choice: ";
}

//************************************************************
//Definition of function showFees which caculates the total **
//bill                                                      **
//************************************************************

void showFees(double itemCost, int quantity)
{
    double amtTendered;
    double totalBill = (itemCost * quantity);
    double taxRate = .065;
    double tipRate = .20;
    double tip = (totalBill * tipRate);
    double tax = (totalBill * taxRate);
    double amountDue = (totalBill + tax + tip);
    cout << "Total Bill: $" << totalBill << endl;
    cout << "Tax: $" << tax << endl;
    cout << "Tip: $" << tip << endl;
    cout << "Total Amount Due: $" << amountDue << endl;
    cout << "Enter ammount tendered: $";
    cin >> amtTendered;
    double changeDue = amtTendered - amountDue;
    cout << "Change Due: $" << changeDue << endl;

}
#包括
#包括
使用名称空间std;
//功能原型
void showMenu();
无效展示费(双倍,整数);
int main()
{
int choice;//保留菜单选项
双倍数量=1;
//菜单选择的内容
汉堡选择常数=1;
常数int hotdogChoice=2;
const int peanutsChoice=3;
const int popcornChoice=4;
常数int sodaChoice=5;
常数int chipsChoice=6;
const int waterChoice=7;
const int endOrderChoice=8;
//菜单价格常数
常数双汉堡=6.00;
常数双热狗=4.50;
常数双花生=3.75;
const双爆米花=5.50;
常量双苏打=2.80;
常数双芯片=1.00;
常量双水=2.00;
//设定精度
cout背书人(选择)
{
选择;
}
//如果用户不想退出,请继续
if(choice!=endOrderChoice)
{
//展览费
开关(选择)
{
案例汉堡选择:
展示费(汉堡,数量);
打破
案例选择:
展示费(热狗、数量);
打破
个案学校:
展示费(花生、数量);
打破
案例爆米花选择:
展示费(爆米花、数量);
打破
案件索达乔伊斯:
展示费(苏打水、数量);
打破
案件:
展示费(筹码、数量);
打破
案例水上选择:
展示费(水、数量);
打破
}
}
}
while(choice!=endOrderChoice);
系统(“暂停”);
返回0;
}
//*************************************************************
//显示菜单的功能showMenu的定义**
//*************************************************************
void showMenu()
{
cout余额是通过showFees
函数计算的。因此,您的问题是需要维护状态(一些数据)在下面的调用中,在 Sturvivs中,您可以使用OOP的最佳方式。在C++中使用过程范式编程时,我将指向您在程序编程中可用的一些解决方案。
  • 全局变量
  • 你可以用一个全局变量来保存总数。这是最简单、最直观的解决方案。不要

  • 静态变量
  • 您可以在
    showFees
    中使用一个静态变量来存储当前总计。它比全局变量更好,但仍然有效

  • 将总数存储在主存储器中
  • <创建一个表示总数的变量,初始化它为0,创建一个第三代码,该代码使用一个指针,一个双变量。这样,在变量> > StaveCuff[/Cuff]函数调用结束之后,对该变量的修改将保留。在C++中,你也可以使用引用(这是C++中推荐的方法)。
  • 改进您的程序
  • 在编程中,有一个称为模块化的概念。使用函数,您不会有重复的代码。但是函数应该只做一件事,并尽可能做到最好。这样,您的函数更小,更易于管理。在
    showFees
    中,您可以做两件事:计算一些财务方面的事情并生成输出。这应该始终保持不变分开的。计算,或者,应该在一个函数中完成(可以以我上面描述的方式工作),输出生成,或者可视化逻辑,在另一个函数中完成


    当然,这是一个小程序,我所说的分离可能有点过分。但是,你可以想办法改进你的功能,使它们尽可能模块化。

    你说得对。我应该更好地校对它。“在每次选择之后,而不是保留一个运行总数,并在用户出现时进行计算”8“结束订单。在请求投标金额之前,用户是否应该先选择他想要的所有内容?然后在用户完成后,您执行
    showFees()
    功能?是的。这就是我遇到的问题。我不确定如何存储要在合计之前收回的选择。