Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einführung
2 Grundlagen
3 Fehlerbehandlung
4 Erweiterte Grundlagen
5 Objektorientierte Programmierung
6 Wichtige Klassen in .NET
7 Weitere Elemente eines Windows-Programms
8 Datenbank-Anwendungen mit ADO.NET
9 Internet-Anwendungen mit ASP.NET
10 Zeichnen mit GDI+
11 Beispielprojekte
A Installation und technische Hinweise
B Lösungen der Übungsaufgaben
Stichwort

Download:
- ZIP, ca. 7,8 MB
Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Einstieg in Visual Basic 2010 von Thomas Theis
Inkl. Visual Studio Express Editions
Buch: Einstieg in Visual Basic 2010

Einstieg in Visual Basic 2010
2., akt. und erw. Aufl., Klappbroschur, mit DVD
467 S., 24,90 Euro
Galileo Computing
ISBN 978-3-8362-1541-1
Pfeil 11 Beispielprojekte
Pfeil 11.1 Spielprogramm Tetris
Pfeil 11.1.1 Spielablauf
Pfeil 11.1.2 Programmbeschreibung
Pfeil 11.1.3 Steuerelemente
Pfeil 11.1.4 Initialisierung des Programms
Pfeil 11.1.5 Erzeugen eines neuen Panels
Pfeil 11.1.6 Benutzer klickt auf Panel
Pfeil 11.1.7 Der Zeitgeber
Pfeil 11.1.8 Panel löschen
Pfeil 11.1.9 Panel seitlich bewegen
Pfeil 11.1.10 Panel nach unten bewegen
Pfeil 11.1.11 Pause
Pfeil 11.2 Lernprogramm Vokabeln
Pfeil 11.2.1 Benutzung des Programms
Pfeil 11.2.2 Erweiterung des Programms
Pfeil 11.2.3 Initialisierung des Programms
Pfeil 11.2.4 Ein Test beginnt
Pfeil 11.2.5 Zwei Hilfsprozeduren
Pfeil 11.2.6 Die Antwort prüfen
Pfeil 11.2.7 Das Benutzermenü


Galileo Computing - Zum Seitenanfang

11.2 Lernprogramm Vokabeln Zur nächsten ÜberschriftZur vorigen Überschrift

In diesem Abschnitt wird ein kleines, erweiterungsfähiges Vokabel-Lernprogramm (Projekt Vokabeln) vorgestellt. Es beinhaltet:

  • eine Datenbank als Basis
  • ein Hauptmenü
  • die Nutzung einer ArrayList
  • einen Zufallsgenerator
  • eine Benutzerführung, abhängig vom Programmzustand
  • Lesen einer Textdatei

Galileo Computing - Zum Seitenanfang

11.2.1 Benutzung des Programms Zur nächsten ÜberschriftZur vorigen Überschrift

Nach dem Start erscheint die Benutzeroberfläche (siehe Abbildung 11.2).

Abbildung 11.2 Benutzeroberfläche

Hauptmenü

Das Hauptmenü besteht aus:

  • Menü Allgemein, dieses Menü wiederum besteht aus
    • Menüpunkt Test beenden: vorzeitiger Testabbruch
    • Menüpunkt Programm beenden
  • Menü Richtung: zur Auswahl und Anzeige der Richtung für Frage und Antwort
    • Menüpunkt deutsch – englisch
    • Menüpunkt englisch – deutsch (dies ist die Voreinstellung)
    • Menüpunkt deutsch – französisch
    • Menüpunkt französisch – deutsch
  • Menü Hilfe
    • Menüpunkt Anleitung: eine kurze Benutzer-Anleitung

Der Benutzer kann entweder die Richtung für Frage und Antwort wählen oder sofort einen Vokabeltest in der Voreinstellung englisch – deutsch starten.

Start

Nach der Betätigung des Buttons Test starten erscheint die erste Vokabel, der Button wird deaktiviert, und der Button Prüfen/Nächster wird aktiviert, wie in Abbildung 11.3 zu sehen.

Abbildung 11.3 Test läuft, eine Vokabel erscheint

Nachdem der Benutzer eine Übersetzung eingegeben und den Button betätigt hat, wird seine Eingabe geprüft und es erscheint ein Kommentar:

Richtig

  • Falls er die richtige Übersetzung eingegeben hat, wird diese Vokabel aus den Listen entfernt. Er wird in diesem Test nicht mehr danach gefragt.

Falsch

  • Falls er nicht die richtige Übersetzung eingegeben hat, wird mit dem Kommentar die korrekte Übersetzung angezeigt, sodass der Benutzer sie erlernen kann, siehe auch Abbildung 11.4.

Abbildung 11.4 Falsche Antwort

Nächste Vokabel

Anschließend erscheint die nächste Vokabel. Diese wird aus der Liste der noch vorhandenen Vokabeln ausgewählt. Enthalten die Listen keine Vokabeln mehr, weil alle Vokabeln einmal richtig übersetzt wurden, ist der Test beendet. Der Button Test starten wird wieder aktiviert und der Button Prüfen/Nächster wird deaktiviert.

Der Benutzer kann eine andere Richtung wählen und wiederum einen Test beginnen.


Galileo Computing - Zum Seitenanfang

11.2.2 Erweiterung des Programms Zur nächsten ÜberschriftZur vorigen Überschrift

Dieses Programm kann als Basis für ein größeres Projekt dienen. Es gibt viele Möglichkeiten zur Erweiterung des Programms:

  • Der Benutzer soll die Möglichkeit zur Eingabe weiterer Vokabeln haben.
  • Der Entwickler fügt weitere Sprachen und Richtungen für Frage und Antwort hinzu.
  • Der Benutzer kann die Test-Auswahl auf eine bestimmte Anzahl an Vokabeln begrenzen.
  • Der Entwickler kann die Vokabeln in Kategorien unterteilen.
  • Der Benutzer kann Tests nur noch mit Fragen aus einer (oder mehreren) Kategorien machen.
  • Es kann zu einer Frage mehrere richtige Antworten geben.
  • Der Entwickler kann das Programm als ASP.NET Anwendung internetfähig machen.
  • Der Entwickler fügt eine Zeitsteuerung per Timer hinzu. Der Benutzer hat dann nur noch eine bestimmte Zeitspanne für seine Antwort.

Viele andere Erweiterungen sind denkbar.


Galileo Computing - Zum Seitenanfang

11.2.3 Initialisierung des Programms Zur nächsten ÜberschriftZur vorigen Überschrift

Zu Beginn werden die klassenweit gültigen Variablen vereinbart und die Form1_Load-Prozedur durchlaufen:

Imports System.IO
Public Class Form1
    ' Liste der Fragen
    Dim frage As New ArrayList

    ' Liste der Antworten
    Dim antwort As New ArrayList

    ' Zufallszahl für ein Element der beiden Listen
    Dim zufallszahl As Integer

    ' Richtung der Vokabel-Abfrage
    Dim richtung As Integer

    Private Sub Form1_Load(...) Handles MyBase.Load
        ' Initialisierung des Zufallsgenerators
        Randomize()

        ' Startrichtung Englisch – Deutsch
        richtung = 2
    End Sub
[...]
End Class

Listing 11.9 Projekt »Vokabeln«, Initialisierung

Zur Erläuterung:

Zwei Listen

  • Die beiden Listen frage und antwort beinhalten im weiteren Verlauf des Programms die Fragen und zugehörigen Antworten je nach gewählter Testrichtung. Die Zusammengehörigkeit von Frage und Antwort ergibt sich daraus, dass die beiden zusammengehörigen Elemente der beiden Listen mit dem gleichen Index angesprochen werden.

Zufallsgenerator

  • Der jeweils aktuelle Index wird im weiteren Verlauf des Programms per Zufallsgenerator bestimmt und in der Variablen zufallszahl gespeichert.
  • Die Richtung für Frage und Antwort kann der Benutzer über das Benutzermenü auswählen.
  • Der Zufallsgenerator wird initialisiert, damit er nicht immer mit dem gleichen Wert beginnt.
  • Falls der Benutzer keine andere Richtung für Frage und Antwort auswählt, wird mit der Richtung englisch – deutsch begonnen.

Galileo Computing - Zum Seitenanfang

11.2.4 Ein Test beginnt Zur nächsten ÜberschriftZur vorigen Überschrift

Nachdem der Benutzer den Button Start betätigt hat, beginnt der Test. Der Code der zugehörigen Ereignisprozedur lautet:

Public Class Form1
[...]
    Private Sub cmdStart_Click(...) Handles ...
        Dim con As New OleDb.OleDbConnection
        Dim cmd As New OleDb.OleDbCommand
        Dim reader As OleDb.OleDbDataReader

        con.ConnectionString =
           "Provider=Microsoft.Jet.OLEDB.4.0;" &
           "Data Source=C:\Temp\lernen.mdb"

        cmd.Connection = con
        cmd.CommandText = "select * from vokabel"

        frage.Clear()
        antwort.Clear()

        Try
            con.Open()
            reader = cmd.ExecuteReader()

            ' Speicherung in den Listen gemäß
            ' der ausgewählten Richtung
            Do While reader.Read()
                If richtung = 1 Or richtung = 3 Then
                    frage.Add(reader("deutsch"))
                ElseIf richtung = 2 Then
                    frage.Add(reader("englisch"))
                Else
                    frage.Add(reader("französisch"))
                End If

                If richtung = 2 Or richtung = 4 Then
                    antwort.Add(reader("deutsch"))
                ElseIf richtung = 1 Then
                    antwort.Add(reader("englisch"))
                Else
                    antwort.Add(reader("französisch"))
                End If
            Loop

            reader.Close()
            con.Close()

            ' Buttons und Menü (de)aktivieren
            cmdStart.Enabled = False
            cmdPrüfen.Enabled = True
            mnuRichtung.Enabled = False
            txtAntwort.Enabled = True

            ' Erste Vokabel erscheint
            Nächste_Vokabel()

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
[...]
End Class

Listing 11.10 Projekt »Vokabeln«, Testbeginn

Zur Erläuterung:

Datenbank

  • Eine Verbindung zur Access-Datenbank C:\Temp\lernen.mdb wird geöffnet.
  • Es wird eine Auswahlabfrage gesendet, die alle Datensätze der Tabelle vokabel anfordert.

OleDbReader

  • Die zurückgegebenen Datensätze werden einem OleDbReader übergeben. Beim Auslesen des Readers werden die beiden Listen frage und antwort mithilfe der Methode Add() mit den Inhalten der jeweiligen Felder gefüllt, abhängig von der jeweils eingestellten Richtung für Frage und Antwort.

Button deaktivieren

  • Der Button Test starten und das Menü für die Richtung werden deaktiviert, damit sie nicht versehentlich während eines Tests bedient werden können.
  • Der Button Prüfen/Nächster und das Eingabetextfeld werden aktiviert, damit der Benutzer seine Antwort eingeben und überprüfen lassen kann.

Nächste Vokabel

  • Die Prozedur Nächste_Vokabel() dient zum Aufruf einer zufällig ausgewählten Vokabel aus der Liste frage.

Galileo Computing - Zum Seitenanfang

11.2.5 Zwei Hilfsprozeduren Zur nächsten ÜberschriftZur vorigen Überschrift

Die beiden Hilfsprozeduren Nächste_Vokabel() und Test_Init() werden von verschiedenen Stellen des Programms aufgerufen:

Public Class Form1
 [...]
    Sub Nächste_Vokabel()
        ' Falls keine Vokabel mehr in der Liste: Ende
        ' Falls noch Vokabeln in der Liste: Nächste
        If frage.Count < 1 Then
            MessageBox.Show(
                "Gratuliere! Alles geschafft")
            Test_Init()
        Else
            zufallszahl = Rnd() * (frage.Count – 1)
            lblFrage.Text = frage(zufallszahl)
            txtAntwort.Text = ""
        End If
    End Sub

    Sub Test_Init()
        ' Buttons und Menü (de)aktivieren
        cmdStart.Enabled = True
        cmdPrüfen.Enabled = False
        mnuRichtung.Enabled = True
        txtAntwort.Enabled = False

        ' Felder leeren
        lblFrage.Text = ""
        txtAntwort.Text = ""
    End Sub
[...]
End Class

Listing 11.11 Projekt »Vokabeln«, Hilfsprozeduren

Zur Erläuterung der Prozedur Nächste_Vokabel():

  • Bei einer richtigen Antwort werden Frage und Antwort aus der jeweiligen Liste gelöscht. Daher sind die Listen nach einiger Zeit leer. Mithilfe der Eigenschaft Count wird dies geprüft.

Test bestanden

  • Sind die Listen leer, so erscheint eine Erfolgsmeldung über den bestandenen Test. Der Startzustand der Benutzeroberfläche wird wiederhergestellt.
  • Sind die Listen noch nicht leer, wird eine Zufallszahl ermittelt. Der zugehörige Begriff wird eingeblendet, und das Eingabefeld wird gelöscht.

Zur Erläuterung der Prozedur Test_Init():

  • Die Prozedur dient zum Wiederherstellen des Startzustands der Benutzeroberfläche.

Button (de)aktivieren

  • Der Button Test starten und das Menü für die Richtung werden aktiviert, damit ein Test gestartet bzw. eine neue Richtung gewählt werden kann.
  • Der Button Prüfen/Nächster und das Eingabetextfeld werden deaktiviert, damit sie nicht versehentlich außerhalb eines Tests bedient werden können.
  • Die alten Einträge werden aus den beiden Feldern für Frage und Antwort gelöscht.

Galileo Computing - Zum Seitenanfang

11.2.6 Die Antwort prüfen Zur nächsten ÜberschriftZur vorigen Überschrift

Nachdem der Benutzer den Button Prüfen/Nächster betätigt hat, wird die eingegebene Antwort überprüft. Der Code der zugehörigen Ereignisprozedur lautet wie folgt:

Public Class Form1
[...]
    Private Sub cmdPrüfen_Click(...) Handles ...
        ' Falls richtig beantwortet:
        ' Vokabel aus Liste nehmen
        If txtAntwort.Text = antwort(zufallszahl) Then
            MessageBox.Show("Richtig")
            frage.RemoveAt(zufallszahl)
            antwort.RemoveAt(zufallszahl)

            ' Falls falsch beantwortet:
            ' richtige Antwort nennen
        Else
            MessageBox.Show(
                "Falsch, richtige Antwort ist " &
                vbCrLf & "'" &
                antwort(zufallszahl) & "'")
        End If

        ' Nächste Vokabel erscheint
        Nächste_Vokabel()
    End Sub
[...]
End Class

Listing 11.12 Projekt »Vokabeln«, Eingabe prüfen

Zur Erläuterung:

Richtige Antwort

  • Steht im Text-Eingabefeld dasselbe wie in dem Element der Liste antwort, das zum Element der Liste frage gehört, so war die Antwort korrekt.

Elemente löschen

  • Es erfolgt eine Meldung. Frage und Antwort werden mithilfe der Methode RemoveAt() aus ihren jeweiligen Listen gelöscht, sodass die Listen irgendwann leer sind.

Falsche Antwort

  • Bei einer falschen Antwort erfolgt eine Meldung, die auch die richtige Übersetzung beinhaltet. Frage und Antwort werden nicht gelöscht. Auf diese Weise kann die gleiche Frage später erneut gestellt werden.
  • Es wird die nächste Frage gestellt, und die beschriebene Prozedur beginnt von vorn.

Galileo Computing - Zum Seitenanfang

11.2.7 Das Benutzermenü topZur vorigen Überschrift

In insgesamt sieben kurzen Ereignisprozeduren und mithilfe einer Hilfsprozedur wird die Bedienung des Benutzermenüs realisiert:

Public Class Form1
    Private Sub mnuEndeTest_Click(...) Handles ...
        ' Abbruch mit Rückfrage
        If MessageBox.Show(
            "Test wirklich abbrechen?",
            "Vokabel", MessageBoxButtons.YesNo,
            MessageBoxIcon.Question) =
            DialogResult.Yes Then
            Test_Init()
        End If
    End Sub

    Private Sub mnuEndeProgramm_Click(...) Handles ...
        ' Beenden mit Rückfrage
        If MessageBox.Show(
            "Programm wirklich beenden?",
            "Vokabel", MessageBoxButtons.YesNo,
            MessageBoxIcon.Question) =
            DialogResult.Yes Then
            Me.Close()
        End If
    End Sub

    Private Sub mnuDE_Click(...) Handles ...
        ' Richtung wird geändert
        richtung = 1
        Check_False()
        mnuDE.Checked = True
        lblRichtung.Text = "deutsch/englisch"
    End Sub

    Private Sub mnuED_Click(...) Handles ...
        richtung = 2
        Check_False()
        mnuED.Checked = True
        lblRichtung.Text = "englisch/deutsch"
    End Sub

    Private Sub mnuDF_Click(...) Handles ...
        richtung = 3
        Check_False()
        mnuDF.Checked = True
        lblRichtung.Text = "deutsch/französisch"
    End Sub

    Private Sub mnuFD_Click(...) Handles ...
        richtung = 4
        Check_False()
        mnuFD.Checked = True
        lblRichtung.Text = "französisch/deutsch"
    End Sub

    Sub Check_False()
        mnuDE.Checked = False
        mnuED.Checked = False
        mnuDF.Checked = False
        mnuFD.Checked = False
    End Sub

    Private Sub mnuAnleitung_Click(...) Handles ...
        Dim fs As FileStream
        Dim sr As StreamReader
        Dim dateiname As String = "hilfe.txt"
        Dim ausgabe As String

        If Not File.Exists(dateiname) Then
            MessageBox.Show("Die Datei " &
                dateiname & " existiert nicht")
            Exit Sub
        End If

        fs = New FileStream(dateiname,
            FileMode.Open)
        sr = New StreamReader(fs)

        ausgabe = ""
        Do Until sr.Peek() = –1
            ausgabe &= sr.ReadLine() & vbCrLf
        Loop
        sr.Close()

        MessageBox.Show(ausgabe)
    End Sub
End Class

Listing 11.13 Projekt »Vokabeln«, Benutzermenü

Zur Erläuterung:

Beenden

  • Im Hauptmenü Allgemein besteht die Möglichkeit, einen Test abzubrechen bzw. das Programm zu beenden. Zur Sicherheit wird in beiden Fällen noch einmal eine Rückfrage gestellt, damit kein Test versehentlich abgebrochen wird.

Sprachen wählen

  • Im Hauptmenü Richtung können insgesamt vier Ereignisprozeduren zur Auswahl der Richtung von Frage und Antwort aufgerufen werden.
    • Es wird jeweils die klassenweit gültige Variable richtung auf einen neuen Wert gesetzt. Beim nächsten Start eines Tests werden dann die entsprechenden Inhalte aus der Datenbank in den beiden Listen frage und antwort gespeichert.
    • Anschließend wird dafür gesorgt, dass nur die soeben ausgewählte Richtung im Benutzermenü mit einem Häkchen versehen ist.

Anleitung

  • Im Hauptmenü Hilfe wird über den Menüpunkt Anleitung eine kleine Benutzeranleitung eingeblendet. Dabei wird der Text der Anleitung aus einer Datei gelesen. Die Existenz der Datei wird zuvor geprüft.


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






<< zurück
  Zum Katalog
Zum Katalog: Einstieg in Visual Basic 2010

Einstieg in Visual Basic 2010
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Visual Basic 2010






 Visual Basic 2010


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Silverlight 4






 Silverlight 4


Zum Katalog: Einstieg in Visual C# 2010






 Einstieg in
 Visual C# 2010


Zum Katalog: Visual C# 2010






 Visual C# 2010


Zum Katalog: Einstieg in PHP 5.3 und MySQL 5.4






 Einstieg in PHP 5.3
 und MySQL 5.4


Zum Katalog: PHP 5.3 und MySQL 5.4






 PHP 5.3 und
 MySQL 5.4


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2010
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de