2017-05-18 6 views
0

私は、現在のまたは貯蓄口座を追加するための基本的な銀行業務アプリケーションを作成することで、C#を学びました。現在の口座であれば、開始時の残高に0.2を掛け、貯蓄であれば0.6を掛けます。彼らがアカウントを追加するとき、アプリケーションはそれをリストに保存し、最後にすべてのアカウント名を表示する必要があります。これまではAddAccount.csという名前のアカウントをユーザーが追加できるようなフォームがあります。次に、アカウントを設定する必要があるAccount.csと、それをリストに追加するAccountList.csがあります。私は必要なものC#データを取得してリストに保存する

はと助ける:

  1. はどのように新しいアカウントの詳細を渡すとAccount.csでそれらを設定するのですか?
  2. どのようにしてアカウントをリストに追加し、アカウントの名前を表示しますか?

Account.cs:

abstract class Account 
    { 
     public string accName, accId, accType; 
     public double balance; 

     public void setValues(string name, string id, double bal, string type) 
     { 
      this.accName = name; 
      this.accId = id; 
      this.balance = bal; 
      this.accType = type; 
     } 
    } 

    class CurrentAccount : Account 
    { 
     public double interst() 
     { 
      return balance * 0.2; 
     } 
    } 

    class SavingsAccount : Account 
    { 
     public double interst() 
     { 
      return balance * 0.6; 
     } 
    } 

AddAccount.cs:

private void btn_AddAccount_Click(object sender, EventArgs e) 
     { 
      string name, id, type; 
      double balance; 

      name = input_AccountName.Text; 
      id = input_AccountNo.Text; 
      balance = Convert.ToDouble(input_StartBalance.Text); 

      if (radio_CurrentAccount.Checked) 
      { 
       type = "C"; 
      } 
      else 
      { 
       type = "S"; 
      } 

      //closes the form when clicked 
      this.Close(); 
     } 

AccountList.cs:

class AccountList 
    { 
     private List<Account> accountlst; 
     public List<Account> AccountLst 
     { 
      get { return accountlst; } 
     } 
    } 

私が間違っているかどうか教えてください。ちょっとでも助けて頂ければ幸いです。

+1

AddAccount.csでは、入力を抽出し、ローカル変数を設定します。コードが追加されたクリックから抜けると、すべての情報が失われます。アカウントタイプのクラスレベル変数が必要で、そのプロパティを設定してから、このアカウントをリストに追加してください。 – Steve

答えて

1

タイプが「C」の場合は、現行タイプのタイプのオブジェクトを作成し、タイプが「S」の場合、貯蓄口座を作成すると、このようなものになりますところで

if (type is C) 
    Create new CurrentAccount object 
    call setValues(name, id, bal, type) //these are the local variable you created in AddAccount.cs 
    getAccountlst().add(CurrentAccount object you created) //adds to list 
else 
    Create new SavingsAccount object 
    call setValues(name, id, bal, type) 
    getAccountlst().add(SavingsAccount object you created) //adds to list 

2つの問題は、新しい演算子を呼び出してAccountList.cs内部accountlstオブジェクトを初期化したことがないことから、それがnullに設定されているので、ときにgetAccountlstを(呼び出す)それ:)擬似コードでnullオブジェクトを返します。追加しようとすると、nullポインタ例外が発生します。すべてのあなたのリストに追加するには、[今すぐ

static class AccountList { 

    List<Account> accountList = new List<Account>(); 

    public List<Account> Accountlst { 

     get { 
      return accountList; 
     } 
    } 
} 

:あなたのAccountList.csは、new演算子を使用して初期化する必要があるためとpther問題は、あなたがあなたのリスト内のあなたの情報を失うことができ、あなたのような何かを行うことができます。この問題を解決するにはあなたはする必要がありますAccountList.Accountlst.add(Account object here);

+0

ありがとうございます! :) – TheGarrett

関連する問題