Rheinwerk Computing < openbook > Rheinwerk 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
12 Windows Presentation Foundation
13 Windows Store-Apps für Windows 8
A Installation und technische Hinweise
B Lösungen der Übungsaufgaben
C Inhalt der Buch-DVD
D Der Autor
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
Einstieg in Visual Basic 2012 von Thomas Theis
Ideal für Programmiereinsteiger geeignet
Buch: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Rheinwerk Computing
579 S., 3., aktualisierte und erweiterte Auflage 2013, brosch., mit DVD
24,90 Euro, ISBN 978-3-8362-1959-4
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 Der Zeitgeber
Pfeil 11.1.7 Panel löschen
Pfeil 11.1.8 Panel seitlich bewegen
Pfeil 11.1.9 Panel nach unten bewegen
Pfeil 11.1.10 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ü

Rheinwerk Computing - Zum Seitenanfang

11.2 Lernprogramm VokabelnZur nächsten Ü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

Rheinwerk Computing - Zum Seitenanfang

11.2.1 Benutzung des ProgrammsZur nächsten ÜberschriftZur vorigen Überschrift

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

Abbildung

Abbildung 11.2 Benutzeroberfläche

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.

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

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:

  • Falls er die richtige Übersetzung eingegeben hat, wird diese Vokabel aus den Listen entfernt. Er wird in diesem Test nicht mehr danach gefragt.
  • 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

Abbildung 11.4 Falsche Antwort

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.


Rheinwerk Computing - Zum Seitenanfang

11.2.2 Erweiterung des ProgrammsZur 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.


Rheinwerk Computing - Zum Seitenanfang

11.2.3 Initialisierung des ProgrammsZur 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.8 Projekt »Vokabeln«, Initialisierung

Zur Erläuterung:

  • 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.
  • 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.

Rheinwerk Computing - Zum Seitenanfang

11.2.4 Ein Test beginntZur 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.ACE.OLEDB.12.0;" &
"Data Source=C:\Temp\lernen.accdb"

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.9 Projekt »Vokabeln«, Testbeginn

Zur Erläuterung:

  • Eine Verbindung zur Access-Datenbank C:\Temp\lernen.accdb wird geöffnet.
  • Es wird eine Auswahlabfrage gesendet, die alle Datensätze der Tabelle vokabel anfordert.
  • 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.
  • 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.
  • Die Prozedur Nächste_Vokabel() dient zum Aufruf einer zufällig ausgewählten Vokabel aus der Liste frage.

Rheinwerk Computing - Zum Seitenanfang

11.2.5 Zwei HilfsprozedurenZur 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.10 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.
  • 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.
  • 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.

Rheinwerk Computing - Zum Seitenanfang

11.2.6 Die Antwort prüfenZur 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.11 Projekt »Vokabeln«, Eingabe prüfen

Zur Erläuterung:

  • 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.
  • Es erfolgt eine Meldung. Frage und Antwort werden mithilfe der Methode RemoveAt() aus ihren jeweiligen Listen gelöscht, sodass die Listen irgendwann leer sind.
  • 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.

Rheinwerk Computing - Zum Seitenanfang

11.2.7 Das BenutzermenüZur 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.12 Projekt »Vokabeln«, Benutzermenü

Zur Erläuterung:

  • 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.
  • 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.
  • 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.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Visual Basic 2012






 Visual Basic 2012


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Rheinwerk-Shop: Einstieg in Python






 Einstieg in Python


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern