Простая банковская программа. Не уверен, как сделать только для чтения / создать поле ввода / отмечены другие основные ошибки
Я предоставлю прилагаемую форму и код (который, я надеюсь, в основном завершен). Я боролся весь день, поскольку я новичок в этом. Был навсегда, так как я работал с 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
может быть лучше использовать тип данных.