c#计算并显示正确的变化(货币)逻辑。 OOP

时间:2014-08-10 14:52:17

标签: c# loops if-statement

我正在尝试使用Visual Studio创建一个表单程序,其中用户插入一些硬币并选择饮料。在选择饮料之后,插入的量被饮料的价格扣除,并且向用户显示正确的格式变化。因此,如果用户插入£1并且所选饮料为60p,则程序计算40p的变化,但如果20p不可用,则将变化显示为两个20p或两个四个10p。我无法理解这种逻辑。到目前为止我有。

class cashBox
{
    public int[] coinHold = { 5, 5, 5 , 5  }; //{10p,20p,50p,£1}
}

以上是CashBox类,它在下面创建货币对象。

cashBox money = new Cashbox(); 
Soda coke = new Soda();    
public double totalmoney;
private void btn_pound_Click(object sender, EventArgs e)
    {
        double one_pound = 1.00;
        if (money.coinHold[0] <= 10)
        {
            totalmoney = one_pound + totalmoney;
            money.coinHold[3]++;
            lbl_total_money.Text = Convert.ToString(totalmoney);
        }
        else
        {

            lbl_total_money.Text = "sorry £1 Cashbox is full";
        }
    }

以上代码是供用户输入1英镑的硬币。我有相同的代码重复10p,20p,50p。

class Soda
{
    public int[] current_coke_cans = { 5 };
    public double[] price = { 0.60 };
    public int[] cansSold = { 0 };

}

上面是Soda的类,其中创建了焦炭对象。

    public int remainingCan;
    public double remaining;
    public int soldCans;
    private void btn_select_coke_Click(object sender, EventArgs e)
    {
        totalmoney = totalmoney - coke.price[0];

        //lbl_total_money.Text = Convert.ToString(totalmoney);

        remainingCan = coke.current_coke_cans[0]--;
        //money.coinHold[0]--;
        soldCans = coke.cansSold[0]++ + 1;
        while (totalmoney != 0)
        {
            if (totalmoney >= 1.00)
            {
                totalmoney = totalmoney - 1.00;
                money.coinHold[3]--;

            }
            else if (totalmoney >= 0.50 && totalmoney < 1.00)
            {
                totalmoney = totalmoney - 0.50;
                money.coinHold[2]--;
            }
            else if (totalmoney >= 0.20 && totalmoney < 0.50)
            {
                totalmoney = totalmoney - 0.20;
                money.coinHold[1]--;
            }
            else if (totalmoney >= 0.10 && totalmoney < 0.20)
            {
                totalmoney = totalmoney - 0.10;
                money.coinHold[0]--;
            }
            else {
                lbl_total_money.Text = Convert.ToString(totalmoney);
            }
        }
        lbl_total_money.Text = Convert.ToString(totalmoney);

这是令人困惑的部分。我已经设置了一个while循环和一个if else语句来检查硬币的值。我真的被这部分困住了。我不知道从哪里开始。 非常感谢你。

0 个答案:

没有答案