#********************* BMI RECHNER ******************************************** # VERSION: V1.4 # AUTOR: Felix Muster # DATUM: 4. April 2020 # ZWECK: Berechnet den BMI anhand von Groesse und Gewicht. # Die Eingabedaten werden mittels einem Formular erfasst. # Mit dem Button Abbruch kann das Programm beendet werden. # Mit dem Button Berechnen wird der BMI inkl. Analyse ausgegeben. # Danach kann eine weitere Berechnung durchgefuehrt werden. #****************************************************************************** set-strictmode -version latest # Codierungsregeln verschaerfen cls write-host "PROTOKOLL BMI V1.4" write-host "==================" #.Net Bibliothek Forms laden [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") #******************* Variablen-Deklaration & Initialisierung ****************** [Single] $sngGewicht = 0 # Gewicht in kg [Single] $sngGroesse = 0 # Groesse in m [single] $sngBMI = 0 # BMI Wert [string] $strKlass = "" # Klassifizierung [string] $result = "" # Ausgabetext mit BMI und Klassifizierung # #Fenster Raster [Int32] $fBreite = 350 #Fenster Breite [Int32] $fAbstand = 30 #Standard Abstand Raster [Int32] $fHoehe = 30 #Button Höhe # # Aktueller Scriptpfad einlesen und als akt. Pfad setzen [String] $scriptpath = Split-Path $MyInvocation.MyCommand.Path Set-Location $scriptpath #******************* BMI-Funktion ********************************************* function berechnen () { # Eingabewerte in korrekten Typ umwandeln; falls Fehleingabe wird Resultat 0 $sngGewicht = $Tb_Gewicht.Text -as [Int32] $sngGroesse = $Tb_Groesse.Text -as [single] #Fehlerabfrage der drei Eingaben: Anzeige des Fehlers und beenden der Berechnung if (($Tb_Gesch.Text -ne "m") -and ($Tb_Gesch.Text -ne "w")) { [System.Windows.Forms.MessageBox]::Show("Bitte korrektes Gewicht eingeben!","FEHLER",0) return } if ( ($sngGewicht -lt 20) -or ($sngGewicht -gt 150) ){ [System.Windows.Forms.MessageBox]::Show("Bitte korrektes Gewicht eingeben!","FEHLER",0) return } if ( ($sngGroesse -lt 0.5) -or ($sngGroesse -gt 2.0) ){ [System.Windows.Forms.MessageBox]::Show("Bitte korrekte Groesse eingeben!","FEHLER",0) return } #BMI Berechnen und runden $sngBMI = $sngGewicht / ($sngGroesse * $sngGroesse) $sngBMI =[Math]::Round($sngBMI,6) #Klassierung bestimmen if ($Tb_Gesch.Text -eq "m") { #Männlich: if ($sngBMI -lt 18) { #FEHLER, Soll: 20 $strKlass = "Untergewicht!" } else { if ($sngBMI -lt 25) { $strKlass = "Normalgewicht!" } else {if ($sngBMI -lt 30) { $strKlass = "Übergewicht!" } else {if ($sngBMI -lt 40) { $strKlass = "ADIPOSITAS!" } else { $strKlass = "MASSIVE ADIPOSITAS!" }}}} } else { #Weiblich: if ($sngBMI -lt 19) { $strKlass = "Nicht Normalgewicht!" } else { if ($sngBMI -lt 24) { $strKlass = "Normalgewicht!" } else {if ($sngBMI -lt 30) { $strKlass = "Übergewicht!" } else {if ($true) { $strKlass = "ADIPOSITAS!" } else { $strKlass = "MASSIVE ADIPOSITAS!" }}}} } #BMI und Klassifizierung ins Formular schreiben $BMI.Text = "Ihr BMI: $sngBMI" $Klass.Text = "Bedeutung: $strKlass" # Resultat auf Konsole ausgeben $result = $BMI.Text + " (" + $Tb_Gesch.Text + ")`n" + $Klass.Text + "`n" Write-Host $result } #******************* Fenster Aufbauen ***************************************** [Object] $Form = New-Object System.Windows.Forms.Form $Form.Text = "BMI V1.4" #Fenstergrösse 12 plus 2 Zeilen hoch $Form.Size = New-Object System.Drawing.Size($fBreite, ((13+2)*$fAbstand)) $Form.StartPosition = "CenterScreen" #Anzeigetext Gschlecht 1.Zeile $Gesch = New-Object System.Windows.Forms.Label $Gesch.Location = New-Object System.Drawing.Size($fAbstand, (1*$fAbstand)) $Gesch.Size = New-Object System.Drawing.Size(($fBreite - 2*$fAbstand),$fHoehe) $Gesch.Text = "Geschlecht [m/w]" $Form.Controls.Add($Gesch) #Textbox Geschlecht 2.Zeile $Tb_Gesch = New-Object System.Windows.Forms.TextBox $Tb_Gesch.Location = New-Object System.Drawing.Size($fAbstand, (2*$fAbstand)) $Tb_Gesch.Size = New-Object System.Drawing.Size(40,$fHoehe) $Tb_Gesch.Text = "m" #Vorgabe $Form.Controls.Add($Tb_Gesch) #Anzeigetext Gewicht $Gewicht = New-Object System.Windows.Forms.Label $Gewicht.Location = New-Object System.Drawing.Size($fAbstand, (3*$fAbstand)) $Gewicht.Size = New-Object System.Drawing.Size(($fBreite - 2*$fAbstand),$fHoehe) $Gewicht.Text = "Gewicht [kg]:" $Form.Controls.Add($Gewicht) #Textbox Gewichteingabe $Tb_Gewicht = New-Object System.Windows.Forms.TextBox $Tb_Gewicht.Location = New-Object System.Drawing.Size($fAbstand, (4*$fAbstand)) $Tb_Gewicht.Size = New-Object System.Drawing.Size(100,$fHoehe) $Form.Controls.Add($Tb_Gewicht) #Anzeigetext Groesse $Groesse = New-Object System.Windows.Forms.Label $Groesse.Location = New-Object System.Drawing.Size($fAbstand, (5*$fAbstand)) $Groesse.Size = New-Object System.Drawing.Size(($fBreite - 2*$fAbstand),$fHoehe) $Groesse.Text = "Groesse [m]:" $Form.Controls.Add($Groesse) #Textbox Groesseneingabe $Tb_Groesse = New-Object System.Windows.Forms.TextBox $Tb_Groesse.Location = New-Object System.Drawing.Size($fAbstand, (6*$fAbstand)) $Tb_Groesse.Size = New-Object System.Drawing.Size(100,$fHoehe) $Form.Controls.Add($Tb_Groesse) #Anzeigetext BMI $BMI = New-Object System.Windows.Forms.Label $BMI.Location = New-Object System.Drawing.Size($fAbstand, (8*$fAbstand)) $BMI.Size = New-Object System.Drawing.Size(200,$fHoehe) $BMI.Text = "Ihr BMI: ......................." $Form.Controls.Add($BMI) #Anzeigetext Klassierung $Klass = New-Object System.Windows.Forms.Label $Klass.Location = New-Object System.Drawing.Size($fAbstand, (9*$fAbstand)) $Klass.Size = New-Object System.Drawing.Size(($fBreite - 2*$fAbstand),$fHoehe) $Klass.Text = "Bedeutung: ................." $Form.Controls.Add($Klass) #Berechnen-Button 7.Zeile Links $BButton = New-Object System.Windows.Forms.Button $BButton.Location = New-Object System.Drawing.Size($fAbstand,(11*$fAbstand)) $BButton.Size = New-Object System.Drawing.Size(100,$fHoehe) $BButton.Text = "Berechnen" $BButton.Add_Click({ Berechnen }) #Berechnung starten $Form.Controls.Add($BButton) #Cancel-Button 7.Zeile rechts $CancelButton = New-Object System.Windows.Forms.Button $CancelButton.Location = New-Object System.Drawing.Size(($fAbstand + 120),(11*$fAbstand)) $CancelButton.Size = New-Object System.Drawing.Size(80,$fHoehe) $CancelButton.Text = "Abbruch" $CancelButton.Add_Click({$Form.Close()}) $Form.Controls.Add($CancelButton) #Initialisirung und starten des Formulars $Form.Add_Shown({$Form.Activate()}) #Falls Abbruch mit [X]... $answer="Cancel" $Form.ShowDialog() | Out-Null write-host "BMI V1.4 beendet!" #******************* HIER ENDET MEIN PROGRAMM **********************************