0

ガス代を計算するプログラムを書いています。

ユーザーは次のように入力します。

  • ガスの価格
  • 車が保持できるガロン数
  • 現在タンクに入っているガスの量 (0、.25、.5、.75 の推定値)。

計算が行われ、次に表示されるのは次のとおりです。

  • 現在の合計 (この充填ガスの価格)
  • 月間合計(月2.5回給油した場合)
  • 年間合計 (月額 * 12)

私がこれからやろうとしているのは、「新しい車を作成しますか?」というプロンプトを作成することです。または「現在の車を使用」:

  • 新しい車を作成する場合、合計は 0 から始まります。
  • 現在の車を使用している場合、合計は保存された場所から取得する必要があります。

プログラムを起動して閉じるたびに合計を追跡できるように、入力をデータベースに保存する方法を探しています(またはファイルの方がうまくいくでしょうか?)。

たとえば、ガソリンを満タンにして現在の合計が 32.54 ドルの場合、月間および年間の合計を 0.00 から 32.54 ドルに変更します。次にそれを開くと、別の現在の合計を追加するまで、月次および年次は $32.54 と表示されます。

「計算」というボタンがクリックされたときの私の現在のコード:

// 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");

これが理解しにくい、または質問の「初心者」である場合は申し訳ありませんが、C# で何かを行ってから少なくとも 1 年が経ちました。プログラマーとして大学を出てすぐの最初の仕事。

4

2 に答える 2

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 ect) によって異なります。

これは複数の車などでは機能しません。これらの詳細についてはあなたにお任せしますが、これが一般的な考え方です。

代わりにデータベースの場合は、これらの IO 呼び出しをデータベース呼び出しに置き換えます。

于 2013-06-07T17:08:33.497 に答える