我正在编写一个计算燃气费用的程序。
用户输入:
完成计算,然后显示的是:
我现在要做的是创建一个询问“创建一辆新车?”的提示。或“使用当前的汽车”:
我正在寻找一种方法让输入存储在数据库中(或者文件能更好地工作吗?),这样它就可以在每次启动程序时跟踪总数并关闭它。
例如,如果我加油并且我目前的总额为32.54美元,我希望每月和每年的总数从0.00变为32.54美元。然后下次打开它时,每月和每年应显示32.54美元,直到我再添加一个当前总数。
单击名为“calculate”的按钮时的当前代码:
// Variables
double gasPrice;
double gasInTank; // How much gas is in the tank
double lessGas = 0.0; // Essentially, what needs to be filled up.
double currentTotal;
double monthlyExpense;
double annualExpense;
double maxGallons;
gasPrice = double.Parse(txtGasPrice.Text);
maxGallons = double.Parse(txtMaxGas.Text);
gasInTank = double.Parse(txtGasInTank.Text);
if (gasInTank == 0)
{
lessGas = maxGallons;
}
else if (gasInTank == .25)
{
lessGas = maxGallons * .75;
}
else if (gasInTank == .5)
{
lessGas = maxGallons / 2;
}
else if (gasInTank == .75)
{
lessGas = maxGallons * .25;
}
else
{
MessageBox.Show("Accepted values are : '0', '.25', '.5', and '.75'");
}
currentTotal = gasPrice * lessGas;
monthlyExpense = currentTotal * 2.5;
annualExpense = monthlyExpense * 12;
lblCurrentShow.Text = currentTotal.ToString("c");
lblMonthShow.Text = monthlyExpense.ToString("c");
lblAnnualShow.Text = annualExpense.ToString("c");
我很抱歉,如果这很难理解,或者对于一个问题的“noob”,但是至少已经有一年了,因为我已经用C#做了一些事情,而我正在努力改变我的思维方式作为一名程序员,我从大学毕业后开始了我的第一份工作。
答案 0 :(得分:1)
这实际上取决于几个因素,其中最重要的是有多少用户将使用此应用程序以及使用频率。此外,应用程序运行的位置很重要,这是桌面还是Web。 话虽如此,我认为它是一个桌面和一个用户。
存储信息的几个选项:
XmlSerializer
(XmlSerializer of Simple Object XmlSerializer example)System.Data.SQLite
(适用于SQLite的ADO.NET适配器)
(SQLite example)OutputCacheProvider
(System.Runtime.Caching.dll包含非Web应用程序的chaching API)
(OutputCacheProvider example)答案 1 :(得分:0)
首先,您需要将要保留的值提升为字段或属性
在这种情况下,我认为只有currentTotal
所以,
public class yourClass
{
public double CurrentTotal {get;set;}
protected void yourButtonClickCode()
{
// use the proeprty ref here instead of the local
}
}
现在退出时,您希望将其值保存到本地文件:
public class yourClass
{
public double CurrentTotal {get;set;}
protected void yourButtonClickCode()
{
// use the proeprty ref here instead of the local
}
protected void onExit()
{
System.IO.File.WriteAllText(@"your path.txt", this.CurrentTotal.ToString());
}
}
现在我们正在保存数据,我们也可以编写代码来加载它:
public class yourClass
{
public double CurrentTotal {get;set;}
protected void yourButtonClickCode()
{
// use the proeprty ref here instead of the local
}
public yourClass()
{
if(System.IO.File.Exists(@"your file.txt"))
{
this.CurrentTotal = double.Parse( System.IO.File.ReadAllText(@"your file.txt"));
}
else
{
this.CurrentTotal = 0d;
}
}
protected void onExit()
{
System.IO.File.WriteAllText(@"your path.txt", this.CurrentTotal.ToString());
}
}
如何让onExit
事件发挥作用取决于这是什么类型的项目(wpf / winforms / console等)
这不适用于多辆车等,我会留下您解决这些细节,但这是一般的想法。
如果它是数据库,则用数据库调用替换这些IO调用。