Codename One: Notenrechner: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Asnan (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
FOS Noten Berechnung App: Schritt-für-Schritt Anleitung | == FOS Noten Berechnung App: Schritt-für-Schritt Anleitung == | ||
Überblick | Überblick | ||
Die "FOS Noten Berechnung" App ist eine mobile Anwendung, die mit dem Codename One Framework entwickelt wurde. Sie ermöglicht es den Benutzern, ihre Durchschnittsnoten in verschiedenen Fächern zu berechnen und zu bestimmen, ob sie bestanden haben oder nicht. Die App ist benutzerfreundlich gestaltet und bietet eine einfache Oberfläche zur Eingabe von Noten und zur Berechnung des Notendurchschnitts. | Die "FOS Noten Berechnung" App ist eine mobile Anwendung, die mit dem Codename One Framework entwickelt wurde. Sie ermöglicht es den Benutzern, ihre Durchschnittsnoten in verschiedenen Fächern zu berechnen und zu bestimmen, ob sie bestanden haben oder nicht. Die App ist benutzerfreundlich gestaltet und bietet eine einfache Oberfläche zur Eingabe von Noten und zur Berechnung des Notendurchschnitts. | ||
Zeile 10: | Zeile 10: | ||
NoteForm: Die Klasse, die die Benutzeroberfläche der App definiert. | NoteForm: Die Klasse, die die Benutzeroberfläche der App definiert. | ||
GradeCalculator: Eine Hilfsklasse zur Berechnung der Durchschnittsnoten. | GradeCalculator: Eine Hilfsklasse zur Berechnung der Durchschnittsnoten. | ||
Klassenerklärungen | Klassenerklärungen | ||
Main.java | Main.java |
Version vom 12. Juni 2024, 14:48 Uhr
FOS Noten Berechnung App: Schritt-für-Schritt Anleitung
Überblick Die "FOS Noten Berechnung" App ist eine mobile Anwendung, die mit dem Codename One Framework entwickelt wurde. Sie ermöglicht es den Benutzern, ihre Durchschnittsnoten in verschiedenen Fächern zu berechnen und zu bestimmen, ob sie bestanden haben oder nicht. Die App ist benutzerfreundlich gestaltet und bietet eine einfache Oberfläche zur Eingabe von Noten und zur Berechnung des Notendurchschnitts.
Aufbau der App Die App besteht aus mehreren Klassen, die jeweils eine spezifische Funktionalität bereitstellen:
Main: Der Einstiegspunkt der Anwendung. Note: Die Hauptklasse, die die Lebenszyklus-Methoden der App verwaltet. NoteForm: Die Klasse, die die Benutzeroberfläche der App definiert. GradeCalculator: Eine Hilfsklasse zur Berechnung der Durchschnittsnoten.
Klassenerklärungen Main.java
package com.asnan.note;
public class Main {
public static void main(String[] args) { new Note().runApp(); }
Die Main Klasse enthält die main Methode, die den Einstiegspunkt der Anwendung darstellt. Sie erstellt eine Instanz der Note Klasse und ruft deren runApp Methode auf, um die App zu starten.
Note.java
package com.asnan.note;
import com.codename1.system.Lifecycle; import com.codename1.ui.Form;
public class Note extends Lifecycle {
@Override public void runApp() { Form mainForm = new NoteForm().getForm(); mainForm.show(); }
Die Note Klasse erweitert die Lifecycle Klasse von Codename One und überschreibt die runApp Methode, um die Hauptform (NoteForm) der App anzuzeigen. Dies ist die zentrale Klasse, die die App initialisiert und die Benutzeroberfläche anzeigt.
NoteForm.java
package com.asnan.note;
import com.codename1.ui.*; import com.codename1.ui.layouts.BoxLayout; import com.codename1.ui.plaf.RoundRectBorder;
class NoteForm {
private Form form; private TextField mathe, deutsch, englisch, schwerpunktfach; private TextField physik, biologie, reli, powi, sport; private Label ergebnisLabel; private Button berechnen;
public NoteForm() { form = new Form("FOS Noten Berechnung", new BoxLayout(BoxLayout.Y_AXIS)); form.getAllStyles().setBgColor(0xE0F7FA); // Hellblauer Hintergrund form.getAllStyles().setBgTransparency(255);
initializeFields(); initializeButton(); initializeLabel();
form.addAll(mathe, deutsch, englisch, schwerpunktfach, physik, biologie, reli, powi, sport, berechnen, ergebnisLabel); }
public Form getForm() { return form; }
private void initializeFields() { mathe = createTextField("Mathe (Hauptfach)"); deutsch = createTextField("Deutsch (Hauptfach)"); englisch = createTextField("Englisch (Hauptfach)"); schwerpunktfach = createTextField("Schwerpunktfach (Hauptfach)");
physik = createTextField("Physik (Nebenfach)"); biologie = createTextField("Biologie (Nebenfach)"); reli = createTextField("Reli (Nebenfach)"); powi = createTextField("PoWi (Nebenfach)"); sport = createTextField("Sport (Nebenfach)"); }
private void initializeButton() { berechnen = new Button("Durchschnitt berechnen"); berechnen.getAllStyles().setFgColor(0x000000);
berechnen.addActionListener(e -> { if (mathe.getText().isEmpty() || deutsch.getText().isEmpty() || englisch.getText().isEmpty() || schwerpunktfach.getText().isEmpty()) { ergebnisLabel.setText("Bitte alle Hauptfächer eintragen!"); ergebnisLabel.getAllStyles().setFgColor(0xFF0000); // Rot für Fehlermeldung } else { double durchschnitt = GradeCalculator.calculateAverage( mathe.getText(), deutsch.getText(), englisch.getText(), schwerpunktfach.getText(), physik.getText(), biologie.getText(), reli.getText(), powi.getText(), sport.getText()); String bestanden = durchschnitt >= 5.0 ? "Bestanden" : "Nicht bestanden"; ergebnisLabel.setText("Durchschnitt: " + GradeCalculator.roundToTwoDecimals(durchschnitt) + " - " + bestanden); styleLabelForResult(bestanden); } form.revalidate(); // Aktualisiere die Form, um die Änderungen sofort anzuzeigen }); }
private void initializeLabel() { ergebnisLabel = new Label(""); ergebnisLabel.getAllStyles().setFgColor(0x000000); }
private TextField createTextField(String hint) { TextField tf = new TextField("", hint, 20, TextField.NUMERIC); tf.getAllStyles().setBgColor(0xFFFFFF); tf.getAllStyles().setFgColor(0x000000); tf.getAllStyles().setBorder(RoundRectBorder.create().cornerRadius(5).shadowColor(0x00796B)); tf.getAllStyles().setPadding(10, 10, 10, 10); tf.getAllStyles().setMargin(5, 5, 5, 5); return tf; }
private void styleLabelForResult(String result) { ergebnisLabel.getAllStyles().setFgColor("Bestanden".equals(result) ? 0x388E3C : 0xD32F2F); // Grün für Bestanden, Rot für Nicht bestanden }
Die NoteForm Klasse erstellt das Formular für die Noteneingabe und Berechnung. Es enthält Textfelder für die verschiedenen Fächer, einen Button zur Berechnung und ein Label zur Anzeige des Ergebnisses. Die Benutzeroberfläche ist einfach und intuitiv gestaltet, um die Eingabe der Noten und die Anzeige der Ergebnisse zu erleichtern.
GradeCalculator.java
package com.asnan.note;
class GradeCalculator {
public static double calculateAverage(String... grades) { double sum = 0; int count = 0; for (String grade : grades) { if (!grade.isEmpty()) { sum += Double.parseDouble(grade); count++; } } return count > 0 ? sum / count : 0; }
public static String roundToTwoDecimals(double value) { return String.valueOf(Math.round(value * 100.0) / 100.0); }
Die GradeCalculator Klasse enthält Methoden zur Berechnung des Durchschnitts und zur Rundung auf zwei Dezimalstellen. Sie verarbeitet die eingegebenen Noten und berechnet den Durchschnitt, der dann in der Benutzeroberfläche angezeigt wird.
Nutzung der App Schritt 1: Starten der App Die Main Klasse startet die App und zeigt das Hauptformular (NoteForm) an. Beim Starten der App wird die runApp Methode der Note Klasse aufgerufen, die das Hauptformular erstellt und anzeigt.
Schritt 2: Eingabe der Noten Geben Sie Ihre Noten in die entsprechenden Textfelder ein. Die App enthält Textfelder für Hauptfächer (Mathe, Deutsch, Englisch, Schwerpunktfach) und Nebenfächer (Physik, Biologie, Reli, PoWi, Sport). Jedes Textfeld ist mit einem Hinweis versehen, der angibt, welches Fach eingetragen werden soll.
Schritt 3: Berechnen des Durchschnitts Klicken Sie auf den Button "Durchschnitt berechnen". Die App überprüft zunächst, ob alle Hauptfächer ausgefüllt sind. Wenn nicht, wird eine Fehlermeldung angezeigt. Wenn alle Hauptfächer ausgefüllt sind, berechnet die App den Durchschnitt aller eingegebenen Noten und zeigt das Ergebnis an. Das Ergebnis wird in einem Label angezeigt, das den Durchschnitt und die Information "Bestanden" oder "Nicht bestanden" enthält.
Stil und Design Die App verwendet Codename One spezifische Stilelemente zur Anpassung des Erscheinungsbildes der Benutzeroberfläche. Die Hintergründe, Textfarben, Rahmen und Abstände sind so gestaltet, dass sie eine ansprechende und benutzerfreundliche Oberfläche bieten.