Hallo Zusammen,
wir haben die Aufgabe über die GUI 5 Punktzahlen einzugeben woraus der Mittelwert berechnet wird und dann eine Note vergeben nach einem festgelegten Notenspiegel. Das wird dann in eine SQL-Datenbank übertragen.
Eingabe, Berechung und Übertragung klappen. Das Problem ist: nach dem Senden werden die JTextfields geleert, so dass man einen neuen Datensatz eingeben kann. Nach dem ausführen werden wird aber die Berechung nicht neu ausgeführt und gesendet, sondern die alte einfach mit der alten addiert und dann übertragen. Sogar wenn ich keine Eingabe tätige und ausführe werden wird einfach die erste Berechnung an die DB gesendet.
Ich hab schon versucht alles was zur Berechnung da ist auf 0 zu setzen, aber dann wird nur eine 0 gesendet beim zweiten ausführen.
Ich weiss einfach nicht wo da der Fehler in der Logik ist
Danke schon mal.
Hauptklasse:
Klasse Berechnung
Verbindung zur Datenbank
wir haben die Aufgabe über die GUI 5 Punktzahlen einzugeben woraus der Mittelwert berechnet wird und dann eine Note vergeben nach einem festgelegten Notenspiegel. Das wird dann in eine SQL-Datenbank übertragen.
Eingabe, Berechung und Übertragung klappen. Das Problem ist: nach dem Senden werden die JTextfields geleert, so dass man einen neuen Datensatz eingeben kann. Nach dem ausführen werden wird aber die Berechung nicht neu ausgeführt und gesendet, sondern die alte einfach mit der alten addiert und dann übertragen. Sogar wenn ich keine Eingabe tätige und ausführe werden wird einfach die erste Berechnung an die DB gesendet.
Ich hab schon versucht alles was zur Berechnung da ist auf 0 zu setzen, aber dann wird nur eine 0 gesendet beim zweiten ausführen.
Ich weiss einfach nicht wo da der Fehler in der Logik ist
Danke schon mal.
Hauptklasse:
Java:
package notengui;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Programm extends JPanel {
static JLabel status = new JLabel("Status");
static JTextField in_punkte1 = new JTextField();
static JTextField in_punkte2 = new JTextField();
static JTextField in_punkte3 = new JTextField();
static JTextField in_punkte4 = new JTextField();
static JTextField in_punkte5 = new JTextField();
public Programm() {
setLayout(new GridLayout(10, 2));
String module[] = {"BWL", "Systempflege", "Netzwerktechnik", "Prozedurale Programmierung", "OOP"};
JLabel vorname = new JLabel("Vorname:");
JTextField in_vorname = new JTextField();
JLabel nachname = new JLabel("Nachname:");
JTextField in_nachname = new JTextField();
JLabel modul = new JLabel("Modul");
JComboBox in_modul = new JComboBox(module);
JLabel punkte1 = new JLabel("Klausur1:");
JLabel punkte2 = new JLabel("Klausur2:");
JLabel punkte3 = new JLabel("Klausur3:");
JLabel punkte4 = new JLabel("Klausur4:");
JLabel punkte5 = new JLabel("Klausur5:");
JButton senden = new JButton("Senden");
JButton anzeigen = new JButton("Daten anzeigen");
add(vorname);
add(in_vorname);
add(nachname);
add(in_nachname);
add(modul);
add(in_modul);
add(punkte1);
add(in_punkte1);
add(punkte2);
add(in_punkte2);
add(punkte3);
add(in_punkte3);
add(punkte4);
add(in_punkte4);
add(punkte5);
add(in_punkte5);
add(senden);
add(anzeigen);
senden.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Datenbank.neuVorname = in_vorname.getText();
Datenbank.neuNachname = in_nachname.getText();
in_punkte1.getText();
in_punkte2.getText();
in_punkte3.getText();
in_punkte4.getText();
in_punkte5.getText();
Berechnung.prozent();
Datenbank.neupunkte = Berechnung.punkte;
Berechnung.note();
Datenbank.neunote = Berechnung.note;
Datenbank.neumodul = in_modul.getSelectedItem().toString();
Datenbank.neudurchschnitt = Berechnung.durchschnitt;
try {
Datenbank.erstelleDatensatz();
if(Datenbank.erfolg = true) {
add(status);
status.setText("Erfolgreich");
status.setBackground(Color.green);
}else {
add(status);
status = new JLabel("Fehler bei der Übertragung");
status.setBackground(Color.red);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
in_vorname.setText(null);
in_nachname.setText(null);
in_punkte1.setText(null);
in_punkte2.setText(null);
in_punkte3.setText(null);
in_punkte4.setText(null);
in_punkte5.setText(null);
Berechnung.zwischen = null;
}
});
anzeigen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try {
Tabelle.main(null);
} catch(Exception e) {
e.printStackTrace();
}
}
});
}
public static void main(String[] args) {
JFrame grundgeruest = new JFrame("Eingabe Daten");
grundgeruest.add(new Programm());
// grundgeruest.setSize(300, 150);
grundgeruest.pack();
grundgeruest.setVisible(true);
grundgeruest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Klasse Berechnung
Java:
package notengui;
import java.text.NumberFormat;
public class Berechnung {
static int zwischen[] = {Integer.parseInt(Programm.in_punkte1.getText()), Integer.parseInt(Programm.in_punkte2.getText()), Integer.parseInt(Programm.in_punkte3.getText()), Integer.parseInt(Programm.in_punkte4.getText()), Integer.parseInt(Programm.in_punkte5.getText()) };
static int punkte;
static double prozent;
static int durchschnitt;
static String note;
static public double prozent() {
for (int i=0;i < 5;i++) {
punkte += zwischen[i] ;
}
durchschnitt = punkte / 5;
NumberFormat n = NumberFormat.getInstance();
n.setMaximumFractionDigits(2);
double max = 100.00;
prozent = (double)durchschnitt / max;
n.format(prozent);
return prozent;
}
static public String note() {
if(prozent >= 0.95) {
note = "1,0";
}
if(prozent <= 0.94 && prozent >= 0.89) {
note = "1,3";
}
if(prozent <= 0.88 && prozent >= 0.85) {
note = "1,7";
}
if(prozent <= 0.84 && prozent >= 0.81) {
note = "2,0";
}
if(prozent <= 0.80 && prozent >= 0.77) {
note = "2,3";
}
if(prozent <= 0.76 && prozent >= 0.73) {
note = "2,7";
}
if(prozent <= 0.72 && prozent >= 0.69) {
note = "3,0";
}
if(prozent <= 0.68 && prozent >= 0.65) {
note = "3,3";
}
if(prozent <= 0.64 && prozent >= 0.60) {
note = "3,7";
}
if(prozent <= 0.59 && prozent >= 0.55) {
note = "4,0";
}
if(prozent <= 0.54 && prozent >= 0.50) {
note = "4,3";
}
if(prozent <= 0.49) {
note = "nicht bestanden";
}
return note;
}
}
Verbindung zur Datenbank
Java:
package notengui;
import java.sql.*;
import java.util.Scanner;
import javax.swing.*;
public class Datenbank extends Programm{
static Statement befehl = null;
static ResultSet ausgabe = null;
static String neuVorname;
static String neuNachname;
static String neumodul;
static double neupunkte;
static double neudurchschnitt;
static String neunote;
static boolean erfolg;
public static Connection erstelleVerbindung() throws Exception {
try {
String treiber = "com.mysql.cj.jdbc.Driver";
Class.forName(treiber);
Connection verbindung = DriverManager.getConnection("jdbc:mysql://localhost:3306/notengui?useSSL=false&serverTimezone=UTC" , "root" , "");
System.out.println("Verbindung zur Datenbank comcave erstellt.");
return verbindung;
}catch(Exception abbruch){
abbruch.printStackTrace();
}//ENDE catch
return null;
}//ENDE erstelleVerbindung()
public static void erstelleDatensatz() throws Exception{
try {
Connection verbindung = erstelleVerbindung();
befehl = verbindung.createStatement();
String sql_insert = "INSERT INTO `noten`(`vorname` , `nachname` , `modul`, `punkte`, `durchschnitt`, `note`) VALUEs ('" + neuNachname + "', '" + neuVorname + "' , '" + neumodul + "' , '"+ neupunkte + "' , '" + neudurchschnitt + "' , '" + neunote + "')";
befehl.executeUpdate(sql_insert);
erfolg = true;
verbindung.close();
}catch(Exception ausnahmeinfo){
erfolg = false;
ausnahmeinfo.printStackTrace();
}//ENDE catch
}//ENDE erstelleDatensatz
public static void zeigeDatensatz() throws Exception {
try {
Connection verbindung = erstelleVerbindung();
befehl = verbindung.createStatement();
ausgabe = befehl.executeQuery("SELECT * FROM teilnehmer");
while(ausgabe.next()) {
System.out.println("\n" + ausgabe.getInt("id") + " " + ausgabe.getString("vorname") + " " + ausgabe.getString("nachname")
+ " " + ausgabe.getString("modul") + " " + ausgabe.getDouble("punkte") + " " + ausgabe.getDouble("durchschnitt") + " " + ausgabe.getDouble("note"));
}//ENDE while
System.out.println("\n" + "\n" + "Datenbankabfrage erfolgreich abgeschlossen");
verbindung.close();
}catch(Exception ausnahmeinfo){
System.out.println("Ausnahmefall eingetreten: " );
ausnahmeinfo.printStackTrace();
}//ENDE catch
}//ENDE zeigeDatensatz()
}//ENDE class