VB - Übung 5
"Transomat"
Eigene Funktion, Const, Not, Len(), array(), Chr$(10), Chr$(13)

  1. Erzeuge im vorhandenen Form ein Frame (Caption: Ausgabe). Erzeuge darin eine große Textbox (Name: Ausgabe; Enabled:False)

  2. Erzeuge darunter ein Frame (Caption: Eingabe). Erzeuge darin horizontal eine Textbox (Name: Eingabe; Enabled:False), einen Button (Name:Aktion; Caption: Eingabe; Enabled: False) und einen weiteren Button (Name: Abbruch; Caption: Abbruch; Enabled: False).

  3. Erzeuge darunter ein Frame (Caption: Funktionen). Erzeuge darin einen Button (Name: Einzahlung; Caption: Einzahlung; Enabled: False) und horizontal dazu einen weiteren Button (Name: ueberweisung; Caption: Überweisung; Enabled: False) und noch einen Button (Name: Beleg; Caption: Beleg ausgeben; Enabled: False)

  4. Erzeuge im vorhandenen Form rechts unten einen Button (Name: einaus; Caption: Anmelden/Abmelden; Enabled: True).

  5. Zuerst werden alle erforderlichen globalen Variablen und Konstanten definiert.
    <<< Erzeuge eine Konstante sInfoBeginn vom Datentyp String mit dem Wert "Bitte gültigen PIN-Code eingeben und <Eingabe>-Taste betätigen." >>>
    <<< Erzeuge eine Konstante sFehlerCode vom Datentyp mit dem Wert "Der eingegebene PIN-Code ist ungültig. " >>>
    <<< Erzeuge eine Konstante sInfoAnmeldungOk vom Datentyp String mit dem Wert "Sie wurden erfolgreich am Transomat angemeldet. " >>>
    <<< Erzeuge eine Konstante sInfoNeueFunktion vom Datentyp String mit dem Wert "Bitte wählen Sie eine neue Funktion oder melden Sie sich ab." >>>
    <<< Erzeuge eine Konstante sInfoUeberweisung vom Datentyp String mit dem Wert "Bitte geben Sie Betrag in EURO, Kontonummer, Bankleitzahl, Name des Empfängers ein." >>>
    <<< Erzeuge eine Konstante sInfoEinzahlung vom Datentyp String mit dem Wert "Bitte geben Sie den auf Ihr Konto einzuzahlenden Betrag in EURO ein. " >>>
    <<< Erzeuge eine Konstante sInfoGeldeingabe vom Datentyp String mit dem Wert "Bitte stecken Sie das Geld in die Einzahlungsöffnung." >>>
    <<< Erzeuge eine Konstante sInfoEingabe vom Datentyp String mit dem Wert "Bitte die <Eingabe>-Taste drücken." >>>
    <<< Erzeuge eine Konstante sInfoAbmelden vom Datentyp String mit dem Wert "Bitte melden Sie sich ab." >>>
    ' Erzeuge eine modulglobale Array-Variable saTransaktionsZeile[1 bis 5] vom Datentyp String
    Private saTransaktionsZeile(1 To 5) As String
    <<< Erzeuge eine modul-globale Variable iBelegIndex vom Datentyp Integer >>>
    <<< Erzeuge eine öffentlich-globale Variable iZustProg vom Datentyp Integer >>> 'Die Zustände des Programmes sind:
    '0: ausgeschaltet
    '1: eingeschaltet
    '2: angemeldet
    '3: Einzahlung
    '4: Ueberweisung

  6. Zum "Enablen" und "Disablen" der Zustandsbuttons wird eine eigene Funktion ButtonsEnable() implementiert.
    Private Sub ButtonsEnable(bOn As Boolean)
    <<< Setze die Eigenschaft Enabled des Objektes einzahlung auf den Wert bOn >>>
    <<< Setze die Eigenschaft Enabled des Objektes ueberweisung auf den Wert bOn >>>
    <<< Setze die Eigenschaft Enabled des Objektes Beleg auf den Wert bOn >>>
    'Setze die Eigenschaft Enabled des Objektes eingabe auf den negierten Wert bOn
    eingabe.Enabled = Not bOn
    End Sub

  7. Wird der Button Anmelden/Abmelden gedrückt, wird der Programmzustand entsprechend verändert und entsprechende Informationen an den Benutzer ausgegeben.
    Private Sub einaus_Click()
    <<< (Beginn von "Select Case" ) Im Fall, dass die Variable iZustProg folgenden Wert hat... >>>
    <<< ... den Wert 0 >>> 'wenn ausgeschaltet
    <<< Setze die Variable iZustProg auf den Wert 1 >>> 'eingeschaltet
    <<< Setze die Eigenschaft Text des Objektes ausgabe auf den Wert der Variablen sInfoBeginn >>>
    <<< Setze die Eigenschaft Enabled des Objektes aktion auf den Wert True >>>
    <<< Setze die Eigenschaft Enabled des Objektes eingabe auf den Wert True >>>
    Case Else 'andernfalls
    <<< Setze den Wert der Variagblen iZustProg auf den Wert 0 >>>'ausgeschaltet
    <<< Setze die Eigenschaft Text des Objektes ausgabe auf einen Leerstring >>>
    <<< Setze die Eigenschaft Text des Objektes eingabe auf einen Leerstring >>>
    ButtonsEnable (False) 'Rufe die Funktion ButtonsEnable() mit dem Parameter False auf
    <<< Setze die Eigenschaft Enabled des Objektes eingabe auf den Wert False >>>
    <<< Setze die Eigenschaft Enabled des Objektes aktion auf den Wert False >>>
    <<< Setze die Eigenschaft Enabled des Objektes Abbruch auf den Wert False
    <<< (Ende von "Select Case") >>>
    End Sub

  8. Wird der Button Einzahlung gedrückt, wird der Programmzustand entsprechend verändert und entsprechende Informationen an den Benutzer ausgegeben.
    Private Sub einzahlung_Click()
    <<< Wenn der Wert der Variablen iBelegIndex kleiner gleich 5 ist, dann >>>
    <<< Rufe die Funktion ButtonsEnable() mit dem Parameter False auf >>>
    <<< Setze die Eigenschaft Text des Objektes ausgabe auf nachfolgenden Wert: sInfoEinzahlung + Chr$(13) + Chr$(10) + sInfoGeldeingabe >>>
    <<< Füge der Eigenschaft Text des Objektes ausgabe nachfolgenden Wert dazu: Chr$(13) + Chr$(10) + sInfoEingabe>>>
    <<< Setze die Variable iZustProg auf den Wert 3 >>>'Einzahlung
    <<< Setze die Eigenschaft Text des Objektes eingabe auf einen Leerstring.
    <<< andernfalls >>>
    <<< Setze die Eigenschaft Text des Objektes ausgabe auf den Wert "Das Maximum der Transaktionen wurde erreicht." >>>
    <<< Füge der Eigenschaft Text des Objektes ausgabe nachfolgenden Wert dazu: Chr$(13) + Chr$(10) + sInfoAbmelden >>>
    <<< Ende von "Wenn">>>
    End Sub

  9. Wird der Button Überweisung gedrückt, wird der Programmzustand entsprechend verändert und entsprechende Informationen an den Benutzer ausgegeben.
    Private Sub ueberweisung_Click()
    <<< Wenn der Wert der Variablen iBelegIndex kleiner gleich 5 ist, dann >>>
    <<< Rufe die Funktion ButtonsEnable() mit dem Parameter False auf >>>
    <<< Setze die Eigenschaft Text des Objektes ausgabe auf nachfolgenden Wert :sInfoUeberweisung + Chr$(13) + Chr$(10) + sInfoEingabe >>>
    <<< Setze die Variable iZustProg auf den Wert 4 >>>'Ueberweisung
    <<< Setze die Eigenschaft Text des Objektes eingabe auf einen Leerstring >>>
    <<< andernfalls>>>
    <<< Setze die Eigenschaft Text des Objektes ausgabe auf den Wert "Das Maximum der Transaktionen wurde erreicht." >>>
    <<< Füge der Eigenschaft Text des Objektes ausgabe nachfolgenden Wert dazu: Chr$(13) + Chr$(10) + sInfoAbmelden >>>
    <<< Ende von "Wenn" >>>
    End Sub

  10. Wird der Button Beleg ausgeben gedrückt, werden alle Transaktionsinformationen der aktuellen Sitzung an den Benutzer ausgegeben.
    Private Sub Beleg_Click()
    <<< Setze die Eigenschaft Text des Objektes ausgabe auf nachfolgenden Wert: "Beleg am: " + CStr(Date) + " Beginn" + Chr$(13) + Chr$(10) >>>
    <<< Beginn einer For-Schleife, die Variable i durchläuft die Werte von 1 bis iBelegIndex - 1 >>>
    <<< Füge der Eigenschaft Text des Objektes ausgabe nachfolgenden Wert dazu: saTransaktionsZeile(i) + Chr$(13) + Chr$(10) >>>
    <<< Ende der "For-Schleife" >>>
    <<< Füge der Eigenschaft Text des Objektes ausgabe nachfolgenden Wert dazu: "Beleg am: " + CStr(Date) + " Ende" >>>
    End Sub

  11. Im Zustand Einzahlung werden in der Textbox Eingabe nur Zahlen zugelassen.
    Private Sub eingabe_Change()
    <<< Definiere die Variable dZahl vom Datentyp Double, welche am Ende der Funktion zerstört wird >>>
    <<< Wenn der Wert der Variablen gleich 3 ist , dann >>> 'wenn Einzahlung
    dZahl = Val(eingabe.Text)
    'Val() günstiger als CDbl()
    <<< Wenn der Wert der Variablen dZahl gleich 0 ist, dann >>>
    <<< Setze die Eigenschaft Text des Objektes eingabe auf einen Leerstring >>>
    <<< andernfalls >>>
    eingabe.Text = CStr(dZahl)
    <<< Ende von "Wenn" >>>
    <<< Ende von "Wenn" >>>
    End Sub

  12. Wird der Button Abbruch gedrückt, wird die aktuelle Funktion (Transaktion) abgebrochen.
    Private Sub abbruch_Click()
    <<< Setze den Wert der variablen iZustProg auf den Wert 2 >>>'angemeldet
    <<< Rufe die Funktion ButtonsEnable() mit dem Parameter True auf >>>
    <<< Setze die Eigenschaft Text des Objektes ausgabe auf den Wert "Funktion wurde abgebrochen" >>>
    <<< Füge der Eigenschaft Text des Objektes ausgabe nachfolgenden Wert dazu: ausgabe.Text + Chr$(13) + Chr$(10) + sInfoNeueFunktion >>>
    <<< Setze die Eigenschaft Text des Objektes eingabe auf einen Leerstring. >>>
    End Sub

  13. Wird der Button Eingabe gedrückt, wird je nach aktueller Funktion (=nach aktuellem Zustand) die entsprechende Transaktion durchgeführt.
    Private Sub aktion_Click()
    <<< Definiere die Variable dCode vom Datentyp Double, welche am Ende der Funktion zerstört wird. >>>
    <<<(Beginn von "Select Case") Im Falle, dass die Variable iZustProg die nachfolgenden Werte hat >>>
    Case 1 >>> 'eingeschaltet
    dCode = Val(eingabe.Text)
    'Val() günstiger als CDbl()
    <<< Wenn der Ausdruck (Len(eingabe.Text) = 5 And (dCode = 12345)) stimmt, dann >>> 'Initialisierung
    <<< Setze den Wert der Variablen iZustProg auf den Wert 2 >>> 'angemeldet
    <<< Setze den Wert der Variablen iBelegIndex auf den Wert 1 >>>
    <<< Rufe die Funktion ButtonsEnable() mit dem Parameter True auf >>>
    <<< Setze die Eigenschaft Enabled des Objektes Abbruch auf den Wert True >>>
    <<< Setze die Eigenschaft Text des Objektes eingabe auf einen Leerstring. >>>
    <<< Setze die Eigenschaft Text des Objektes ausgabe auf nachfolgenden Wert: sInfoAnmeldungOk + Chr$(13) + Chr$(10) + sInfoNeueFunktion >>>
    <<< andernfalls >>> 'Anmeldung fehlgeschlagen
    <<< Setze die Eigenschaft Text des Objektes eingabe auf einen Leerstring >>>
    <<< Setze die Eigenschaft Text des Objektes ausgabe auf nachfolgenden Wert: sFehlerCode + Chr$(13) + Chr$(10) + sInfoBeginn >>>
    <<< Ende von "Wenn" >>>
    Case 3 ' Einzahlung
    saTransaktionsZeile(iBelegIndex) = "Einzahlung des Eigenerlags in EURO: " + CStr(Val(eingabe.Text))
    <<< Erhöhe die Variable iBelegIndex um den Wert 1 >>>
    <<< Setze die Eigenschaft Text des Objektes eingabe auf einen Leerstring >>>
    <<< Setze die Eigenschaft Text des Objektes ausgabe auf den Wert "Ihre Einzahlung wurde durchgeführt.">>>
    <<< Füge der Eigenschaft Text des Objektes ausgabe nachfolgenden Wert dazu: Chr$(13) + Chr$(10) + sInfoNeueFunktion >>>
    <<< Setze die Variable iZustProg auf den Wert 2 >>>'angemeldet
    <<< Rufe die Funktion ButtonsEnable() mit dem Parameter True auf >>>
    Case 4 ' Ueberweisung
    saTransaktionsZeile(iBelegIndex) = "Weiterleitung der Überweisung in EURO: " + eingabe.Text
    <<< Erhöhe die Variable iBelegIndex um den Wert 1 >>>
    <<< Setze die Eigenschaft Text des Objektes eingabe auf einen Leerstring >>>
    <<< Setze die Eigenschaft Text des Objektes ausgabe auf den Wert "Ihre Ueberweisung wurde weitergeleitet." >>>
    <<< Füge der Eigenschaft Text des Objektes ausgabe nachfolgenden Wert hinzu: Chr$(13) + Chr$(10) + sInfoNeueFunktion >>>
    <<< Setze die Variable iZustProg auf den Wert 2 >>> 'angemeldet
    <<< Rufe die Funktion ButtonsEnable() mit dem Parameter True auf >>>
    <<< Ende von "Select Case " >>>
    End Sub