在C#中添加先前金额的数字

时间:2014-10-19 06:37:32

标签: c# loops

我正在尝试使用C#创建一个简单的销售点,用户要求选择带有价格的产品并要求输入他们想要购买的数量。之后,系统会询问用户是否要购买其他产品,因为用户选择是,我想添加从先前交易中购买的产品数量(价格*数量)和从新交易中购买的金额。如果用户最终选择“否”,系统将显示使用“消息”框购买的产品的总量。我正在考虑循环,但我不知道从哪里开始。任何建议将不胜感激。谢谢!

这是我的代码:

try
{
    priceData = double.Parse(txtPR.Text);
    qty = double.Parse(txtQty.Text);

    answer = priceData * qty;

    lblTotal.Text = "You have to pay " + answer.ToString();

    MessageBox.Show("You have to pay a total of:" + answer.ToString());
    writeFile();

    DialogResult result = MessageBox.Show("Do you want to buy other products?", "BUY", 
                             MessageBoxButtons.YesNo, MessageBoxIcon.Question);

    if (result == DialogResult.Yes)
    {

    }

    else if (result == DialogResult.No)
    {

        MessageBox.Show("Thank you for shopping! Kindly get your receipt.");                        
        System.Diagnostics.Process.Start(@"c:\Add\Receipt.txt");
    }
}

2 个答案:

答案 0 :(得分:0)

当前的应用程序设计方法存在一些问题,应用程序逻辑直接出现在UI中(如果您对此有所了解,请查看“MVC”)。然而,有一种相当简单的方法可以完成你所要求的。

Form课程中,添加名为Subtotal的新媒体资源。您可以使用它来保留值

例如:

public partial class YourFormName : Form
{
    double Subtotal;
}

现在在您的方法中:

try
{
    priceData = double.Parse(txtPR.Text);
    qty = double.Parse(txtQty.Text);
    answer = priceData * qty;

    Subtotal += answer;

    lblTotal.Text = "You have to pay " + Subtotal.ToString();
    MessageBox.Show("You have to pay a total of:" + Subtotal.ToString());
    writeFile();
    DialogResult result = MessageBox.Show("Do you want to buy other products?", "BUY", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    if(result == DialogResult.No)
    {
        Subtotal = 0;
        MessageBox.Show("Thank you for shopping! Kindly get your receipt.");
        System.Diagnostics.Process.Start(@"c:\Add\Receipt.txt");
    }
}

通过将answer值添加到小计来跟踪DialogResult.No值。当用户拒绝购买其他产品(Subtotal)时,主表单将再次激活。此时,用户输入新的数量/价格,并且必须激活该事件以再次更新{{1}}。

正如您所说,您也可以使用循环,但这些循环必须启动新的UI窗口以捕获新的数量和价格。

因为我看不到你的其余代码,所以我认为你的方法是通过'更新'按钮点击事件或类似事件直接调用的。

答案 1 :(得分:0)

你必须把你的"询问"循环中的代码,该条件是MessageBox的结果。

这将是:

[Initialize the variables]
qtyPrd1 = 0;
pricePrd1 = 0;

qtyPrd2 = 0;
pricePrd2 = 0;
...

[Main loop]
do {

[Present the user the products]
[Get the choice (product, quantity)]

[Add the value to the product variable]
if (choice == 1)
    qtyPrd1++;
if (choice == 2)
    qtyPrd2++;

subtotal = qtyPrd1 * pricePrd1 + qtyPrd1 * pricePrd2 + ...;
[Present the subtotal]

} while (result == DialogResult.Yes);

[Compute total]
total = qtyPrd1 * pricePrd1 + qtyPrd1 * pricePrd2 + ...;
[Present total result of cart]

请注意,[]只是注释,请参考您当前的代码填写空白,您就拥有了所有需要。