Programmbeispiel Waggonbedarf

Das Formular | Der Programmcode | Verbesserungen

Aufgabe (Fiktive Werte!): Ein modernes GUD-Elektrizitätswerk mit einem Wirkungsgrad von 49 % soll eine Dauerleistung von 2,8 GW abgeben. Die Dichte der Kohle beträgt 1300 kg/m3 und ihr Heizwert 8 GJ/t. Der später als Schlacke verbleibende Rest beträgt 36 Masse %, die Dichte 3,2 g/cm3. Die Spezialwaggons haben einen nutzbaren Innenraum von 2,8 m Breite, 13 m Länge und 3,5 m Höhe (= 127,4 m3) und eine Tragfähigkeit von 0,205 *106 kg, wieviele Waggons werden täglich für den Transport der Kohle, wieviele für die Schlacke benötigt?

(Ergebnisse: Kohlemenge täglich 61,714 kt, Asche täglich 22,217 kt, Kohlewaggons 372,62, Aschewaggons 108,38)

In der Praxis werden sich einige Werte von Zeit zu Zeit ändern. Wenn Sie den Waggonbedarf täglich berechnen müssen, ist eine Berechnungshilfe nützlich.


Das Formular

UserForm gestalten, Anfangswerte eintragen

Was man im Bild nicht sieht: Im Frame "Tagesbedarf" ist ein Label eingeordnet, dessen "Caption" gelöscht wurde. Es heißt hier Label9 und wird später die Ergebnisse anzeigen. Es muß deshalb ausreichend groß gezogen werden.


Der Programmcode

'Deklarationsteil
Option Explicit
Dim Leistung As Single, Wirkungsgrad As Single, Brennwert As Single
Dim Kohledichte As Single, Aschegehalt As Single, Aschedichte As Single
Dim Tragfähigkeit As Single, Volumen As Single
Dim Kohlewaggons As Single, Aschewaggons As Single
Dim Kohlenmenge As Single, Aschenmenge As Single


'Auswertung des Klick-Ereignisses auf dem Button "Rechne"
Private Sub Command1_Click()
'Auslesen der vom Nutzer evtl. veränderten Zahlenwerte
'Auf eine Überprüfung der Einträge wird zunächst verzichtet.
'Im schlimmsten Falle hagelt es Programmabbrüche!
Leistung = Text1.Text
Wirkungsgrad = Text2.Text
Brennwert = Text3.Text
Kohledichte = Text4.Text
Aschegehalt = Text5.Text
Aschedichte = Text6.Text
Tragfähigkeit = Text7.Text
Volumen = Text8.Text
'Rechenbasis Tag:
Kohlenmenge = Leistung * 1000000000# * 24 * 3600 / Brennwert / 1000 / (Wirkungsgrad / 100)
Label9.Caption = "Kohlemenge = " & Format$(Kohlenmenge, "Standard") & " t" & vbCrLf
Aschenmenge = Kohlenmenge * Aschegehalt / 100
Label9.Caption = Label9.Caption & "Aschenmenge = " & Format$(Aschenmenge, "Standard") & " t" & vbCrLf
Label9.Caption = Label9.Caption & vbCrLf
'Kohlewaggons
If Volumen * Kohledichte < Tragfähigkeit * 1000 Then
Kohlewaggons = Kohlenmenge / (Kohledichte / 1000) / Volumen
Else
Kohlewaggons = Kohlenmenge / Tragfähigkeit
End If
Label9.Caption = Label9.Caption & "Kohlewaggons = " & Format(Kohlewaggons, "Standard") & vbCrLf
'Aschenwaggons
If Volumen * Aschedichte < Tragfähigkeit * 1000 Then
Aschewaggons = Aschenmenge / (Aschedichte / 1000) / Volumen
Else
Aschewaggons = Aschenmenge / Tragfähigkeit
End If
Label9.Caption = Label9.Caption & "Aschewaggons = " & Format$(Aschewaggons, "Standard")
End Sub
'Auswertung des Klick-Ereignisses auf dem Button "Ende"
Private Sub Command2_Click()
End
End Sub

Anmerkung für (einige) Studenten der TFH Wildau: Das Wort 'Standard' schreibt sich auch nach den neuen Rechtschreibregeln hinten mit 'd', sonst klappt nämlich die Formatierung nicht.


Verbesserungen

Da es bestimmt mehrere Waggontypen gibt, deren Kennwerte feststehen, ist es günstiger, unter Typen auszusuchen und die Kennwerte der Typen vom Programm verwalten zu lassen.

Es empfehlen sich "Option-Buttons":

Formular

Zusätzlich vorgesehen ist ein neuer CommandButton, der den Druck einer Waggonbestellung auslösen soll. Er ist anfänglich deaktiviert, weil noch keine Berechnung erfolgt ist. Nach Berechnung soll er aktiviert werden.

Es gibt einige Veränderungen im Programmcode, zunächst im Deklarationsteil:

Dim Typ As Integer'ergänzende Dimensionierung

Veränderung in der Procedur PrivateSub CommandButton1_Click():

Aschedichte = TextBox5.Text'alter Programmtext
'neuer Programmcode

If Option1.Value Then Typ = 1'die Auswahl einer Variablen zuweisen
If Option2.Value Then Typ = 2
If Option3.Value Then Typ = 3
If Option4.Value Then Typ = 4
Select Case Typ
'Auswahlstruktur zur Zuweisung der Parameterwerte
Case 1
Tragfähigkeit = 205
Volumen = 127,4
Case 2
Tragfähigkeit = 55
Volumen = 136
Case 3
Tragfähigkeit = 43
Volumen = 114
Case 4
Tragfähigkeit = 88
Volumen = 232
End Select
'Erweiterung mit Druckoption
Command3.Enabled = True'Druck kann erfolgen, Druckroutine hier nicht ausgeführt!

Eine naheliegende Verbesserung sei nur erbeten: Um die komplizierten Formatierungsstrings zu umschiffen, wurde hier mit "Standard" formatiert. Die Folge ist, daß die Waggonzahlen mit zwei Nachkommastellen angezeigt werden. Dies sollte der Übende ändern, damit das Ergebnis nicht auf Dauer so blöd aussieht!


© R. Hirte * 1998/2004