vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Buchung 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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Buchung simulieren3.950Moglie10.12.13 23:20
Re: Buchung simulieren2.926Manfred X11.12.13 06:51
Re: Buchung simulieren2.759Moglie16.12.13 17:23
Re: Buchung simulieren2.618Manfred X16.12.13 20:16
Re: Buchung simulieren2.742Struppi 201311.01.14 17:43

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel