Hausdach

Aufgabe:
Fertigen Sie ein VB-Programm an, das der Berechnung von Dachziegeln auf einer vorgegebenen Dachfläche dient.

Alle Größen werden in den entsprechenden Einheiten eingesetzt.
Bei verlassen jedes Eingabefeldes formatiert das Programm den Wert automatisch in die Anzeige mit 2 Nachkommastellen um.
Nach Betätigung der "Berechnung" Taste wird die benötigte Dachziegelmenge aufgerundet angezeigt. Die Ausgabe erfolgt in einem Lösungssatz. Bedenken Sie, dass die Dachfläche aus zwei symmetrischen Hälften besteht!
"Neu" löscht alle Eingabefelder. Ohne "Neu" ist keine weitere Berechnung / Eingabe möglich!
"Ende" beendet das Programm:

 

Oberfläche:

 

Quellcode:

Option Explicit
Dim
dblDachLänge As Double
Dim
dblDachBreite As Double
Dim
dblZiegelLänge As Double
Dim
dblZiegelBreite As Double
Dim
dblZiegelfürLänge As Double
Dim
dblZiegelfürBreite As Double
Dim
dblZiegelanzahltot As Double
Dim
dblZiegelanzahlopt As Double
Dim
dblZiegelanzahlmin As Double
Dim
strAusgabe As String


Private Sub commandoBerechnen_Click()
If IsNumeric(dblDachLänge) And IsNumeric(dblDachBreite) And IsNumeric(dblZiegelLänge) And IsNumeric(dblZiegelBreite) And dblDachLänge > 0 And dblDachBreite > 0 And dblZiegelLänge > 0 And dblZiegelBreite > 0 Then

'Totalberechnung##################################
dblZiegelfürLänge = dblDachLänge * 100 / dblZiegelLänge 'dblziegelfürLänge speichert Ziegelanzahl in Länge
'Runden oder nicht runden, das ist eine Frage
If dblZiegelfürLänge = Int(dblZiegelfürLänge) Then
dblZiegelfürLänge = dblZiegelfürLänge
Else
dblZiegelfürLänge = (Int(dblZiegelfürLänge)) + 1
End If

dblZiegelfürBreite = dblDachBreite * 100 / dblZiegelBreite 'dblziegelfürBreite speichert Ziegelanzahl in Breite
'Runden oder nicht runden, das ist eine Frage
If dblZiegelfürBreite = Int(dblZiegelfürBreite) Then
dblZiegelfürBreite = dblZiegelfürBreite
Else
dblZiegelfürBreite = (Int(dblZiegelfürBreite)) + 1
End If

dblZiegelanzahltot = dblZiegelfürLänge * dblZiegelfürBreite * 2
'##################################################



'Optimalberechnung HIER NOCH MACHEN !!!!!!!!!! <<<<-------
'dblZiegelanzahlopt =


'Minimalberechnung################################
dblZiegelanzahlmin = 2 * ((dblDachLänge * 100 * dblDachBreite * 100) / (dblZiegelLänge * dblZiegelBreite))
'Runden oder nicht runden, das ist eine Frage
If dblZiegelanzahlmin = Int(dblZiegelanzahlmin) Then
dblZiegelanzahlmin = dblZiegelanzahlmin
Else
dblZiegelanzahlmin = (Int(dblZiegelanzahlmin)) + 1
End If
'################################################


'Ausgabe des Ergebnisses als Text
lblausgabe.Caption = "Es werden minmal " & dblZiegelanzahlmin & " Ziegel benötigt. Ohne den überstehenden Rest zu verwenden werden " & dblZiegelanzahltot & " benötigt."

Else
MsgBox ("Bitte reale Angaben machen!")
End If


'Ende Durchlauf, erst wieder auf Neu klicken
commandoBerechnen.Enabled = False
commandoNeu.Enabled = True
End Sub

Private Sub commandoEnde_Click()
'ENDE !?!?!
End
End Sub


Private Sub commandoNeu_Click()
'Machen wir mal alles in den Ausgangszustand!
txtDachLänge.Text = "0"
txtDachBreite.Text = "0"
txtZiegelLänge.Text = "0"
txtZiegelBreite.Text = "0"
dblDachLänge = 0
dblDachBreite = 0
dblZiegelLänge = 0
dblZiegelBreite = 0
dblZiegelanzahltot = 0
dblZiegelanzahlopt = 0
dblZiegelanzahlmin = 0
commandoBerechnen.Enabled = True
commandoNeu.Enabled = False
End Sub


Private Sub Form_Load()
'Voreinstellungen
dblDachLänge = 0
dblDachBreite = 0
dblZiegelLänge = 0
dblZiegelBreite = 0
dblZiegelanzahltot = 0
dblZiegelanzahlopt = 0
dblZiegelanzahlmin = 0
End Sub


'### Alle Gleich!!
' Wenn es eine Zahl ist, wird diese Formatiert und in eine Cariable geschrieben, sonst gibts eine Fehlermeldung


Private Sub txtDachBreite_LostFocus()
If IsNumeric(txtDachBreite.Text) Then
dblDachBreite = Format(txtDachBreite.Text, "fixed")
txtDachBreite.Text = dblDachBreite
Else
MsgBox ("ZAHL!")
End If
End Sub


Private Sub txtDachLänge_LostFocus()
If IsNumeric(txtDachLänge.Text) Then
dblDachLänge = Format(txtDachLänge.Text, "fixed")
txtDachLänge.Text = dblDachLänge
Else
MsgBox ("ZAHL!")
End If
End Sub


Private Sub txtZiegelBreite_LostFocus()
If IsNumeric(txtZiegelBreite.Text) Then
dblZiegelBreite = Format(txtZiegelBreite.Text, "fixed")
txtZiegelBreite.Text = dblZiegelBreite
Else
MsgBox ("ZAHL!")
End If
End Sub


Private Sub txtZiegelLänge_LostFocus()
If IsNumeric(txtZiegelLänge.Text) Then
dblZiegelLänge = Format(txtZiegelLänge.Text, "fixed")
txtZiegelLänge.Text = dblZiegelLänge
Else
MsgBox ("ZAHL!")
End If
End Sub



Zu kompliziert??
  Dann Download als Projekt (4,5 KB)

  

Home << Schule << ITA-Mappe << Programmiertechnik Übersicht <<
Online: 1 | IP: | 19.11.2017 - 15:28:02  
©
Christian Klisch   - Alle Rechte vorbehalten - Impressum