2012-12-04 41 views
0
public mainForm() 
    { 
     InitializeComponent(); 
    } 
    string[,] summary = new string[10, 4]; 


    private void exitButton_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
    } 

    private void calculateButton_Click(object sender, EventArgs e) 
    { 
      decimal monthlyInvestment = 
        Convert.ToDecimal (monthlyInvestmentTextBox.Text); 
      decimal yearlyInterestRate = 
        Convert.ToDecimal (interestRateTextBox.Text); 
      int years = 
       Convert.ToInt32(yearsTextBox.Text); 

      int months = years * 12; 
      decimal monthlyInterestRate = yearlyInterestRate/12/100; 

      decimal futureValue = 0; 
      for (int i = 0; i < months; i++) 
      { 
       futureValue = (futureValue + monthlyInvestment) 
         * (1 + monthlyInterestRate); 
      } 
      futureValueTextBox.Text = futureValue.ToString("c"); 
      monthlyInvestmentTextBox.Focus(); 
    } 

该程序根据费率和年数计算投资的未来值。一旦用户点击计算,我希望程序以10x4的数组形式存储多达10次计算。 4是投资,利率,年份和未来价值。点击退出按钮后,我想要一个消息框显示10个以前的计算。我会如何去做这件事?谢谢。使用矩形阵列存储值

+2

不要使用矩形数组,为投资,费率,年数和未来价值的属性创建一个'FutureInvestments'类。然后,如果您需要存储其中的10个,请使用“List ” –

回答

0
public class FutureInvestments 
{ 
public decimal monthlyInvestment {get;set;} 
public decimal yearlyInterestRate {get;set;} 
public decimal futureValue {get;set;} 
public decimal monthlyInterestRate {get;set;} 
public decimal monthlyInvestment {get;set;} 

    public string Calculate() 
    { 
    int months = years * 12; 
    monthlyInterestRate = yearlyInterestRate/12/100; 
    for (int i = 0; i < months; i++) 
    { 
    futureValue = (futureValue + monthlyInvestment) * (1 + monthlyInterestRate); 
    } 
    return futureValue.ToString("c"); 
    } 
} 

public mainForm() 
{ 
    InitializeComponent(); 
} 

List<FutureInvestments> summary = new List<FutureInvestments>(); 

private void calculateButton_Click(object sender, EventArgs e) 
{ 
    //Instantiate class - passing in ReadOnly parameters 
    var futureInv = new FutureInvestment() {monthlyInvestment = Convert.ToDecimal (monthlyInvestmentTextBox.Text), monthlyInvestment = Convert.ToDecimal(monthlyInvestmentTextBox.Text), yearlyInterestRate = Convert.ToDecimal (interestRateTextBox.Text) years = Convert.ToInt32(yearsTextBox.Text)); 

    futureInv.Calculate(); 

    //Store the calculation for showing user when application closes 
    summary.Add(futureInv); 
} 

private void exitButton_Click(object sender, EventArgs e) 
{ 
    foreach(var item in summary) 
    { 
     MessageBox.Show("Future value is: " + item.FutureValue.ToString()); 
    } 
    this.Close(); 
} 
0

@Jeremy Thompson是对的;保持你的课程专注于他们所做的事情 - 表单是面向用户界面的,投资课程处理所有其他事情。

public partial class mainForm : Form 
{ 
    private Stack<Investment> Investments; 

    public mainForm() 
    { 
     InitializeComponent(); 
     Investments = new Stack<Investment>(); 
    } 

    private void calculateButton_Click(object sender, EventArgs e) 
    { 
     Investment thisInvestment = new Investment(Convert.ToDecimal(monthlyInvestmentTextBox.Text), 
                Convert.ToDecimal(interestRateTextBox.Text), 
                Convert.ToInt32(yearsTextBox.Text)); 
     Investments.Push(thisInvestment); 
     futureValueTextBox.Text = thisInvestment.futureValue.ToString("c"); 
     monthlyInvestmentTextBox.Focus(); 

    } 

    private void exitButton_Click(object sender, EventArgs e) 
    { 
     int count = Math.Min(10, Investments.Count); 
     StringBuilder sb = new StringBuilder(); 
     for (int i = 1; i <= count; i++) 
     { 
      sb.AppendLine(Investments.Pop().ToString()); 
     } 
     MessageBox.Show(sb.ToString()); 
    } 
} 

public class Investment 
{ 
    public Investment(decimal monthlyInvestment, decimal yearlyInterestRate, int years) 
    { 
     this.monthlyInvestment = monthlyInvestment; 
     this.yearlyInterestRate = yearlyInterestRate; 
     this.years = years; 
    } 

    public decimal monthlyInvestment { get; set; } 
    public decimal yearlyInterestRate { get; set; } 
    public decimal monthlyInterestRate 
    { 
     get 
     { 
      return yearlyInterestRate/12/100; 
     } 
    } 
    public int years { get; set; } 
    public int months 
    { 
     get 
     { 
      return years * 12; 
     } 
    } 
    public decimal futureValue 
    { 
     get 
     { 
      decimal retVal = 0; 
      for (int i = 0; i < months; i++) 
      { 
       retVal = (futureValue + monthlyInvestment) 
         * (1 + monthlyInterestRate); 
      } 
      return retVal; 
     } 
    } 

    public override string ToString() 
    { 
     return string.Format("Investment of {0:c} for {1:n} years at {2:p} pa yields {3:c}", monthlyInvestment,years,monthlyInterestRate,futureValue); 
    } 
}