| |

VB.NET - Ein- und UmsteigerBuchung simulieren | |  | Autor: Moglie | Datum: 10.12.13 23:20 |
| Guten Abend,
a) erstellen Sie die Klasse Konto
Sie enthält folgende ReadOnly Eigenschaften: Kontonr (String), Kontostand (Decimal) und Dispo (Decimal)
Sie deklarieren folgende private Felder: m_Konto (String), m_Dispo (Decimal) und m_Kontostand as Decimal).
b) Erstellen Sie den Konstruktor. Beim Erstellen eines Kontoobjekts sollen die zwei Argumente Kontonr und
Dispo übergeben werden.
c) Die Klasse enthält die Methode Buchung (ByVal Betrag as Decimal). Mit dieser Methode wird der angegebene
Betrag (positiv oder negativ) dem Kontostand aufaddiert. Sollte dabei der Dispo Überschritten werden, wird
das Ereignis DispoGrenze ausgeworfen.
d) Die Klasse Konto enthält weiterhin eine Methode Ausgabe, mit welcher Kontonr, Kontostand und Dispo in der
Konsole ausgegeben werden.
e) Erstellen Sie eine Klasse Test und in ihr eine Variable k vom Typ Konto. Ergänzen Sie die Main-Prozedur in
der Klasse Test um einige Anweisungen zum Test der Klasse Konto.
f) Schreiben Sie die Ereignisprozedur k_DispoGrenze. In ihr wird das abgebildete Meldungsfester ausgegeben:
Konsolenfenster zeigt:
Kontonr: 123, Kontostand: 2000,00, Disporahmen: -3000
Kontonr: 123, Kontostand: -1000,00, Disporahmen: - 3000
Ereignismeldung:
Der gewünschte Betrag kann nicht abgehoben werden,
da der Dispositionsrahmen überschritten wurde.
Sie können noch 2000 Euro
abheben.
Betrag abheben (ja), Abbruch (Nein)
-----------------
Ich bin auf untenstehenden Code gekommen.
Beim MessageBox-Fenster bekomme ich aber nicht das gewünschte Resultat. Er rechnet mir nicht den aktuellen Kontostand - die Angaben der Buchung. Er bringt mir den letzten Stand des Kontostandes der ausgewiesen wurde. ist ja auch richtig da ich das da so hinterlegt habe in der Ereignismeldung.
Wie bekomme ich es aber hin, dass er mir da richtig rechnet?
dann habe ich auch das Gefühl, dass ich die Aufgabe b nicht so ganz richtig gelöst habe. Hier sollten ja eigentlich nur die zwei Argumente Kontonr. und Dispo übergeben werde, eine Variante nimmt aber auch Kontostand dazu.
Wie muss ich da anders vorgehen, resp. wo liegt meine Überlegungsfehler. soll ich den Betrag bei der Class Konto / Private m_Kontostand as Decimal = 2000 hinterlegen oder in der Sub eine Variable deklarieren und mit dem Wert hinterlegen?
Danke für eure Ausführungen.
Class Konto
Private m_Kontonr As String
Private m_Kontostand As Decimal
Private m_Dispo As Decimal
Public Event DispoGrenze(ByVal sender As Object, ByRef Abbrechen As Boolean)
ReadOnly Property Kontonr() As String
Get
Return m_Kontonr
End Get
End Property
ReadOnly Property Kontostand() As Decimal
Get
Return m_Kontostand
End Get
End Property
ReadOnly Property Dispo As Decimal
Get
Return m_Dispo
End Get
End Property
Public Sub New(ByVal Kontonr As String, ByVal Kontostand As Decimal, ByVal _
Dispo As Decimal)
m_Kontonr = Kontonr
m_Kontostand = Kontostand
m_Dispo = Dispo
End Sub
Sub Buchung(ByVal Betrag As Decimal)
If Betrag + m_Kontostand >= m_Dispo Then
m_Kontostand = Betrag + Kontostand
Else
Dim Abbrechen As Boolean = True
RaiseEvent DispoGrenze(Me, Abbrechen)
If Abbrechen = False Then
m_Kontostand = Betrag + Kontostand
End If
End If
End Sub
Sub Ausgabe()
Dim s As String = _
"Kontonr: " & Kontonr & ", Kontostand: " & Kontostand & "," & _
"Disporahmen: " & Dispo
WriteLine(s)
End Sub
End Class
Class Test
Shared WithEvents k As Konto
Shared Sub Main()
k = New Konto(123, 2000, -3000)
k.Ausgabe()
WriteLine()
k.Buchung(-3000)
k.Ausgabe()
WriteLine()
k.Buchung(-3000)
k.Ausgabe()
End Sub
Private Shared Sub k_DispoGrenze(ByVal sender As Object, ByRef Abbrechen As _
Boolean) Handles k.DispoGrenze
Dim s As String = _
"Der gewünschte Betrag kann nicht abgehoben werden," _
& " da der Dispositionsrahmen überschritten wurde." _
& vbCrLf & vbCrLf _
& " Sie können noch " & CType(sender, Konto).Kontostand & "" & _
"abheben." _
& vbCrLf _
& "Betrag abheben (Ja), Abbruch (Nein)."
Dim Antwort As DialogResult
Antwort = MessageBox.Show(s, "Buchung", MessageBoxButtons.YesNo, _
MessageBoxIcon.Error, _
MessageBoxDefaultButton.Button2)
If Antwort = DialogResult.OK Then
Abbrechen = False
End If
End Sub
End Class |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|