我正在尝试使用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");
}
}
答案 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]
请注意,[]只是注释,请参考您当前的代码填写空白,您就拥有了所有需要。