Простая банковская программа. Не уверен, как сделать только для чтения / создать поле ввода / отмечены другие основные ошибки

Я предоставлю прилагаемую форму и код (который, я надеюсь, в основном завершен). Я боролся весь день, поскольку я новичок в этом. Был навсегда, так как я работал с VB. Спасибо за любую помощь или руководство.

Классы должны быть доступны только для чтения. Свойства класса:

  • • Баланс: содержит баланс текущего счета. ReadOnly, Double. Нужна переменная-член для сохранения значения, которое я использовал (dblBalance) •IntRate: удерживает процентную ставку за период. Нужна переменная-член: (dblIntRate)

• Проценты: содержит проценты, заработанные за текущий период. ReadOnly, (dblInterest)

• Транзакции: содержит количество транзакций за текущий период. ReadOnly. используя e intTrans+=1.

Необходимые методы: начисление процентов, снятие средств, депозиты. Видимо, первый шаг - получить данные о процентной ставке. Я думаю, что это должно быть в событии form_load с полем ввода.

1) Позволяет вклады

2) Позволяет снятие

3) Рассчитайте процентную ставку, которую я предполагаю (dblInterestEarned = dblBalance * (dblIntRate / 12))

4) Сообщает текущее количество транзакций в любое время - intTrans+=1. и, очевидно, выход

*Edit Я просто думаю, что я облажался очень плохо и сделал это сложнее, чем следовало бы. Так устал, я прошу прощения. Любой шаг в правильном направлении приветствуется. Я хотел бы выяснить это сегодня ***

Форма [1] http://imgur.com/35Adk2G (может быть не так?)

Public Class Class1
'Create member variables for properties

Private dblBalance As Double
Private dblIntRate As Double
Private dblInterest As Double
Private intTrans As Integer
Private dblMakeWithdrawal As Double
Private dblMakeDeposit As Double
Private dblInterestEarned As Double




'Create property procedures
Public Property Balance As Double
    Get
        Return dblBalance
    End Get

    Set(value As Double)
        dblBalance = value
    End Set
End Property

Public Property IntRate As Double
    Get
        Return dblIntRate
    End Get

    Set(value As Double)
        dblIntRate = value
    End Set
End Property

Public Property InterestTotal As Double
    Get
        Return InterestTotal
    End Get
    Set(value As Double)
        InterestTotal = value '''''''*expression recursively calls property interest total error
    End Set
End Property


''trying to 
'''calculate the amount of interest for the current period, 
''' stores this value in the Interest property, and adds it to the Balance property.
Public Sub addInterest(ByVal addInterest As Integer)
    dblInterestEarned = dblBalance * (dblIntRate / 12)
End Sub


''trying to add deposit
Public Sub addDeposit(ByVal addDeposit As Double)
    dblMakeDeposit += addDeposit

End Sub

'''''to withdraw
Public Sub subtractWithdrawl(ByVal subtractWithdrawal As Double)
    If dblMakeWithdrawal >= subtractWith() Then
        dblMakeWithdrawal -= subtractWith()
    Else
        MessageBox.Show("No sufficient balance")
    End If
End Sub

Private Function subtractWith() As Double
    Throw New NotImplementedException
End Function

End Class



Imports System.IO

Public Class Form1

Dim dblMakeWithdrawal As Double

Private Sub btnDeposit_Click(sender As Object, e As EventArgs) Handles btnDeposit.Click
    Dim dblMakeDeposit As Double


    '''''how to capture inputs from the form load??
    'Add Deposit
    dblMakeDeposit = CDbl(InputBox("Please enter deposit if you have any"))

End Sub

Private Sub btnWithdraw_Click(sender As Object, e As EventArgs) Handles btnWithdraw.Click
    Dim dblBalance As Integer

    dblMakeWithdrawal = CDbl(InputBox("Please enter an amount to withdraw")
    If dblBalance <= 0 Then
        MessageBox.Show("Insufficient funds")
    End If
End Sub





Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
    Me.Close()
End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    '''This is where to put the input box when the form loads? 
    MessageBox.Show"Please enter current interest")
    ''how to store?





End Sub

Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
    Dim dblInterTrans As Integer

     dblInterest = dblintTrans+=1.
End Sub

Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
Me.Close()

End Sub

Private Function dblintTrans() As Object
    Throw New NotImplementedException
End Function

End Class

1 ответ

Решение

Вот одно исправление:

Private dblInterest As Double
'...
Public Property InterestTotal As Double
    Get
        Return InterestTotal
    End Get
    Set(value As Double)
        InterestTotal = value   
        'expression recursively calls property interest total error
    End Set
End Property

Конечно, это повторяется: InterestTotal это имя свойства, поэтому, когда вы пытаетесь вернуть его в Getter, он вызывает Getter, который вызывает Getter, который... То же самое с Setter.

Вы, вероятно, хотели сделать то, что вы сделали с другими, то есть использовать backing field:

Get
    Return dblInterest  
End Get
Set(value As Double)
    dblInterest  = value   
End Set

Но это еще не все. Если вы используете VS2010+, все, что вам нужно, это:

Public Property InterestTotal As Double

Это называется автоматически реализованным свойством. С их помощью VS/VB создает скрытое вспомогательное поле с именем _InterestTotal и делает получение и настройку для вас. Наконец, если это деньги, Decimal может быть лучше использовать тип данных.

Другие вопросы по тегам