BMI: Body Mass Index ausrechnen

    • VB.NET

    Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Load-soft.ch.vu.

      BMI: Body Mass Index ausrechnen

      Hallo Leute,
      Ich will euch zeigen wie ihr in einer Konsolen-Anwendung den BMI (Body Mass Index) eines Menschen ausrechnen könnt.
      Erstellt einfach ein neues Projekt als Konsolen-Anwendung.
      Fügt diesen Code ein:

      VB.NET-Quellcode

      1. Option Strict On
      2. Option Explicit On
      3. Module Module1
      4. Dim gewicht As Integer
      5. Dim körpergröße As Integer
      6. Dim alter As Integer
      7. Dim bmi As Short
      8. Dim strGewicht As String
      9. Dim strGröße As String
      10. Dim strAlter As String
      11. Sub Main()
      12. Console.BackgroundColor = ConsoleColor.Black
      13. Console.ForegroundColor = ConsoleColor.White
      14. Console.Clear()
      15. Console.Title = "Berechnung Ihres BMI"
      16. Console.WriteLine("Willkommen zu der Berechnung Ihres BMI (Body Mass Index)" & vbNewLine)
      17. Console.WriteLine("Dieser Test ist nur für Personen über 18 Jahre gedacht!" & vbNewLine)
      18. Console.WriteLine("Bitte geben Sie Ihr Körpergewicht in kg ein!")
      19. Do While (IsNumeric(strGewicht) = False)
      20. strGewicht = Console.ReadLine()
      21. Loop
      22. gewicht = CInt(strGewicht)
      23. Console.WriteLine("Nun geben Sie bitte Ihre Körpergröße in cm ein!")
      24. Do While (IsNumeric(strGröße) = False)
      25. strGröße = Console.ReadLine()
      26. Loop
      27. körpergröße = CInt(strGröße)
      28. Console.WriteLine("Zum Schluss geben Sie bitte Ihr Alter ein!")
      29. Do While (IsNumeric(strAlter) = False)
      30. strAlter = Console.ReadLine()
      31. Loop
      32. alter = CInt(strAlter)
      33. Console.WriteLine("Ihr BMI beträgt:")
      34. Try
      35. bmi = CShort(gewicht / ((körpergröße / 100) ^ 2))
      36. Console.WriteLine(CStr(bmi) & vbNewLine)
      37. Select Case alter
      38. Case 18 To 24
      39. Select Case bmi
      40. Case 19 To 24
      41. Console.WriteLine("Ihr BMI-Wert ist im normalen Bereich!")
      42. Case Is < 19
      43. Console.WriteLine("Sie neigen zur Untergewichtigkeit!!")
      44. Case Is > 24
      45. Console.WriteLine("Sie neigen zur Übergewichtigkeit!")
      46. End Select
      47. Case 25 To 34
      48. Select Case bmi
      49. Case 20 To 25
      50. Console.WriteLine("Ihr BMI-Wert ist im normalen Bereich!")
      51. Case Is < 20
      52. Console.WriteLine("Sie neigen zur Untergewichtigkeit!!")
      53. Case Is > 25
      54. Console.WriteLine("Sie neigen zur Übergewichtigkeit!")
      55. End Select
      56. Case 35 To 44
      57. Select Case bmi
      58. Case 21 To 26
      59. Console.WriteLine("Ihr BMI-Wert ist im normalen Bereich!")
      60. Case Is < 21
      61. Console.WriteLine("Sie neigen zur Untergewichtigkeit!!")
      62. Case Is > 26
      63. Console.WriteLine("Sie neigen zur Übergewichtigkeit!")
      64. End Select
      65. Case 45 To 54
      66. Select Case bmi
      67. Case 22 To 27
      68. Console.WriteLine("Ihr BMI-Wert ist im normalen Bereich!")
      69. Case Is < 22
      70. Console.WriteLine("Sie neigen zur Untergewichtigkeit!!")
      71. Case Is > 27
      72. Console.WriteLine("Sie neigen zur Übergewichtigkeit!")
      73. End Select
      74. Case 55 To 64
      75. Select Case bmi
      76. Case 23 To 28
      77. Console.WriteLine("Ihr BMI-Wert ist im normalen Bereich!")
      78. Case Is < 23
      79. Console.WriteLine("Sie neigen zur Untergewichtigkeit!!")
      80. Case Is > 28
      81. Console.WriteLine("Sie neigen zur Übergewichtigkeit!")
      82. End Select
      83. Case Is > 64
      84. Select Case bmi
      85. Case 24 To 29
      86. Console.WriteLine("Ihr BMI-Wert ist im normalen Bereich!")
      87. Case Is < 24
      88. Console.WriteLine("Sie neigen zur Untergewichtigkeit!!")
      89. Case Is > 29
      90. Console.WriteLine("Sie neigen zur Übergewichtigkeit!")
      91. End Select
      92. Case Is < 18
      93. Console.WriteLine("Sie müssen volljährig sein um diesen BMI-Test durchzuführen!")
      94. Case Else
      95. Console.WriteLine("Es ist ein Fehler aufgetreten!")
      96. End Select
      97. Console.WriteLine(vbNewLine)
      98. Console.WriteLine("Vielen Dank für Ihren BMI-Test!")
      99. Catch ex As Exception
      100. Console.WriteLine("Ihr BMI konnte NICHT berechnet werden! Bitte starten sie das Programm neu!")
      101. End Try
      102. Console.ReadLine()
      103. Console.Read()
      104. End Sub
      105. End Module


      //EDIT:
      - Überprüfung von Zahlen-Eingaben durch Do/Loop Schleife
      - Titel der Konsole
      - Auswertung und Berechnung des BMI mit Try/Catch Block

      Weitere Ideen:
      - Veränderung der Font
      - BMI-Berechnung für Kinder

      Ich hoffe ich konnte euch helfen!
      Viel Spaß! :)

      Verbesserungen des Codes sind erwünscht


      Edit by LaMa5:
      - passt hier besser rein
      -->*moved* (Tipps&Tricks => SourceCodeAustausch)


      Download des Projektes:
      Dateien
      • BMI.zip

        (56,87 kB, 414 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von „Mouse-Maze“ ()

      Wenn ich da noch meinen Senf dazu geben darf:


      VB.NET-Quellcode

      1. Option Strict On
      2. Option Explicit On
      3. Module Module1
      4. Dim gewicht As Integer
      5. Dim körpergröße As Integer
      6. Sub Main()
      7. Console.WriteLine("Willkommen zu der Berechnung Ihres BMI (Body Mass Index)" & vbNewLine)
      8. Console.WriteLine("Bitte geben Sie Ihr Körpergewicht in kg ein!")
      9. Gewicht:
      10. Try
      11. gewicht = CInt(Console.ReadLine())
      12. Catch ex As Exception
      13. Console.WriteLine("Nur Zahlen erlaubt...")
      14. GoTo Gewicht
      15. End Try
      16. Console.WriteLine("Nun geben Sie bitte Ihre Körpergröße in cm ein!")
      17. Größe:
      18. Try
      19. körpergröße = CInt(Console.ReadLine())
      20. Catch ex As Exception
      21. Console.WriteLine("Nur Zahlen erlaubt...")
      22. GoTo Größe
      23. End Try
      24. Console.WriteLine("Ihr BMI beträgt:")
      25. Console.WriteLine(CStr(gewicht / ((körpergröße / 100) ^ 2)))
      26. Console.ReadLine()
      27. End Sub
      28. End Module



      MFG
      Hmm.

      Man könnte vielleicht noch das Textdesign ein wenig verschönern, wobei das nur eine Nebensache ist.
      Ich würde noch eine Auswerung des errechneten Betrags einfügen. Also in welchem Gewichtsbereich man liegt.



      MFG
      Das mit der Auswertung werd ich noch machen!
      Weiß jemand wie man die Farbe der Console verändern kann?
      Mit ForegroundColor und Backgroundcolor kann man ja nur die Schriftfarbe verändern.
      Oder macht man das mit ConsoleColor und wenn ja wie?
      Also ich habe jetzt mal meine Vorschläge selbst umgesetzt:

      VB.NET-Quellcode

      1. Module Module1
      2. Dim gewicht As Integer
      3. Dim körpergröße As Integer
      4. Dim BMI As Short
      5. Dim BMIBereich As String
      6. Sub Main()
      7. Console.Title = "BMI - Rechner"
      8. Console.ForegroundColor = ConsoleColor.White
      9. Console.WriteLine("╔══════════════════════════════════════════════════════════╗")
      10. Console.WriteLine("║ Willkommen zu der Berechnung Ihres BMI (Body Mass Index) ║")
      11. Console.WriteLine("╚══════════════════════════════════════════════════════════╝" & vbNewLine)
      12. Console.WriteLine("Bitte geben Sie Ihr Körpergewicht in kg ein!")
      13. Gewicht:
      14. Try
      15. gewicht = CInt(Console.ReadLine())
      16. Console.WriteLine(vbNewLine)
      17. Catch ex As Exception
      18. Console.WriteLine("Nur Zahlen erlaubt...")
      19. GoTo Gewicht
      20. End Try
      21. Console.WriteLine("Nun geben Sie bitte Ihre Körpergröße in cm ein!")
      22. Größe:
      23. Try
      24. körpergröße = CInt(Console.ReadLine())
      25. Console.WriteLine(vbNewLine)
      26. Catch ex As Exception
      27. Console.WriteLine("Nur Zahlen erlaubt...")
      28. GoTo Größe
      29. End Try
      30. BMI = CUShort(gewicht / ((körpergröße / 100) ^ 2))
      31. Select Case BMI
      32. Case Is < 20
      33. BMIBereich = "Untergewicht"
      34. Case 20 To 25
      35. BMIBereich = "Normalgewicht"
      36. Case 25 To 30
      37. BMIBereich = "Übergewicht"
      38. Case Is > 30
      39. BMIBereich = "Extremes Übergewicht"
      40. Case Else
      41. MsgBox("Schwerwiegender Fehler")
      42. End
      43. End Select
      44. Console.Beep()
      45. Console.WriteLine(vbNewLine)
      46. Console.WriteLine("Ihr BMI beträgt: " & CStr(BMI))
      47. Console.WriteLine("Das heißt Sie haben " & BMIBereich & vbNewLine)
      48. Console.WriteLine("Zum Beenden Taste drücken...")
      49. Console.ReadLine()
      50. End Sub
      51. End Module




      MFG
      Aua..
      GoTo ist total veraltet und unsauber! Man kann sowas fast immer anders Lösen!

      Hier zB mit einer Schleife:

      VB.NET-Quellcode

      1. Do
      2. Dim strGewicht As String
      3. strGewicht = Console.ReadLine()
      4. Loop While IsNumeric(strGewicht) = False
      5. gewicht = CInt(strGewicht)


      Das selbe noch mit der Größe.
      Ja fällt mir auch gerade ein.

      Habe sowas nur vor paar Tagen in Batch gemacht.

      Und da ist Goto halt oft vorhanden ^^

      MFG
      Hast du dir die Source gedownloadet?
      Ich glaube da ist noch ne ältere Version, auf jeden Fall ist im gezeigten Code die Abfrage mit IsNummeric!
      Ich werde auch noch den BMI-Rechner für Kinder posten, bin nur noch nicht dazu gekommen.
      @Carl
      Du kannst ja ein Programm machen, dass das Gewicht berechnet wird, wenn man seine Körpergröße angiebt!

      Außerdem ist der BMI dazu da zu schauen "wie man so mit seiner Gewichtslage steht" und ob man übergewichtig ist etc.
      Wagen geben nur das Gewicht an und nicht ob man zu dick oder zu dünn ist! :P