diff --git a/Punkte-in-Noten/src/frame.java b/Punkte-in-Noten/src/frame.java index 1c29a17..dd133ba 100644 --- a/Punkte-in-Noten/src/frame.java +++ b/Punkte-in-Noten/src/frame.java @@ -1,6 +1,6 @@ -//Import der für die GUI benötigten Bibliotheken import java.awt.BorderLayout; import java.awt.EventQueue; + import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; @@ -23,21 +23,22 @@ import javax.swing.table.DefaultTableModel; import java.awt.Font; import javax.swing.event.ChangeListener; import javax.swing.SpinnerModel; - - +import java.awt.Color; +import javax.swing.UIManager; +import java.awt.SystemColor; +import javax.swing.border.LineBorder; public class frame extends JFrame { - //Deklaration von Content Pane, der Tabelle sowie des Scroll Panes; werden später gefüllt private JPanel contentPane; private JTable table; private JScrollPane scrollPane; - // Array mit den IHK-Noten. Das jeweilige Arrayfeld entspricht der Prozentanzahl. Schlüsselwort final entspricht const (Konstante) + // Array mit den IHK-Noten als Konstante. Das jeweilige Arrayfeld entspricht der Prozentanzahl public static final double marksIHK[] = {6.0,6.0,6.0,6.0,6.0,6.0,5.9,5.9,5.9,5.9,5.9,5.9,5.8,5.8,5.8,5.8,5.8,5.7,5.7,5.7,5.7,5.7,5.7,5.6,5.6,5.6,5.6,5.6,5.6,5.5,5.4,5.4,5.3,5.3,5.2,5.2,5.1,5.1,5.0,5.0,5.0,4.9,4.9,4.8,4.8,4.7,4.7,4.6,4.6,4.5,4.4,4.4,4.3,4.3,4.2,4.1,4.1,4.0,4.0,3.9,3.9,3.8,3.7,3.7,3.6,3.6,3.5,3.4,3.3,3.3,3.2,3.1,3.1,3.0,2.9,2.9,2.8,2.7,2.7,2.6,2.5,2.4,2.3,2.2,2.1,2.0,2.0,1.9,1.8,1.7,1.6,1.5,1.4,1.4,1.3,1.3,1.2,1.2,1.1,1.1,1.0}; /** - * Launch the application. - automatisch generiert vom Eclipse Windowsbuilder + * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @@ -52,114 +53,69 @@ public class frame extends JFrame { }); } - //Methode zum Berechnen der Prozente + IHK-Noten - //Übergeben werden: die maximale Punktanzahl + wieviel Prozent die maximalen Punkte entsprechen - //Ausgegeben wird ein Array, was später in die Tabellenspalten geschrieben wird public static String[][] calculateMarks (int maxPoints, int totalPercentage) { int pointPercentage = 0; double markIHK = 0.0; String[][] output = new String[maxPoints+1][4]; - //Ausrechnen und Aufbereiten der Ergebnisse als Array für die Tabelle for (int point=maxPoints; point>=0; point--) { pointPercentage = (int) (((double)point/(double)maxPoints)*(double)totalPercentage); markIHK = marksIHK[pointPercentage]; if (totalPercentage == 100) { - output[maxPoints-point][0] = String.format("%d", point); //Punkte - output[maxPoints-point][1] = String.format("%d %%", pointPercentage); //Prozente - output[maxPoints-point][2] = String.format("%.1f", markIHK); //IHK-Note - output[maxPoints-point][3] = String.format("%.0f", markIHK); //ganze Note + output[maxPoints-point][0] = Integer.toString(point); + output[maxPoints-point][1] = Integer.toString(pointPercentage) + " %"; + output[maxPoints-point][2] = String.format("%.1f", markIHK); + output[maxPoints-point][3] = String.format("%.0f", markIHK); } else { - output[maxPoints-point][0] = String.format("%d", point); //Punkte - output[maxPoints-point][1] = String.format("%d %%", pointPercentage); //Prozente + output[maxPoints-point][0] = Integer.toString(point); + output[maxPoints-point][1] = Integer.toString(pointPercentage) + " %"; } } - return output; //Rückgabe des Arrays + return output; } - //Methode zum Anzeigen bzw. Aktualisieren der Tabelle - //Übergeben werden: Die eingegebenen Werte für die Maximale Punktezahl und für die Prozente - public void updateTable(int maxPoints, int totalPercentage) { - String[][] res = calculateMarks(maxPoints, totalPercentage); //Aufruf der Methode zum Berechnen und Zwischenspeicherung in res - String[] columnNames = {"Punkte", "Prozente", "IHK-Note", "ganze Note"}; //Spaltennamen für die Tabelle + public void updateTable(JSpinner spMaxPoints, JSpinner spTotalPercentage) { + String[][] resWiso = calculateMarks((int)spMaxPoints.getValue(), (int)spTotalPercentage.getValue()); + String[] columnNames = {"Punkte", + "Prozente", + "IHK-Note", + "ganze Note" + }; - table = new JTable(res, columnNames) { + table = new JTable(resWiso, columnNames) { @Override - public boolean isCellEditable(int row, int column) { //Editieren der Tabelle für alle Zellen deaktivieren + public boolean isCellEditable(int row, int column) { return false; } }; - table.setRowSelectionAllowed(false); //Zeilenauswahl für die Tabelle deaktivieren + table.setRowSelectionAllowed(false); - scrollPane.setViewportView(table); //Anzeigen der Tabelle im ScrollPane + scrollPane.setViewportView(table); } - //Methode zum Zusammenrechnen eines A- und B-Teils einer AP1 oder AP2 - //Übergeben werden: die erreichten Punkte im A-Teil, die erreichten Punkte im B-Teil, die erreichbaren Punkte im A-Teil, die erreichbaren Punkte im B-Teil, die prozentuale Gewichtung des A-Teils, die prozentuale Gewichtung des B-Teils - public String[] calculatePart(int pointsA, int pointsB, int maxPointsA, int maxPointsB, int percentageA, int percentageB) { - //Umrechnung der übergebenen Prozente in Faktoren + + public String[] calculatePart(int pointsA, int pointsB, int maxPointsA, int maxPointsB, int percentageA, int percentageB, boolean mitIHK) { double calcPercentageA = (double)percentageA/(double)100; double calcPercentageB = (double)percentageB/(double)100; - - //Berechnung der gewichteten erreichten Prozente in Teil A und B double percentagePartA = (calcPercentageA*(double)pointsA/(double)maxPointsA)*(double)100; double percentagePartB = (calcPercentageB*(double)pointsB/(double)maxPointsB)*(double)100; - - //Zusammenrechnen zu einem Gesamtergebnis (max. 100%) double totalPercentage = percentagePartA + percentagePartB; - //heraussuchen der entsprechenden IHK-Note aus dem Array double markIHK = marksIHK[(int)totalPercentage]; - - //Initialisierung eines Arrays zum zwischenspeichern der Ergebnisse String[] res = new String[6]; - //Speichern der Ergebnisse im Array res[0] = String.format("%.2f", percentagePartA); res[1] = String.format("%.2f", percentagePartB); res[2] = String.format("%.2f", totalPercentage); res[3] = String.format("%.0f", totalPercentage); - res[4] = String.format("%.1f", markIHK); + res[4] = String.format("%.2f", markIHK); res[5] = String.format("%.0f", markIHK); - return res; //Rückgabe der Ergebnisse als Array + return res; } - - //Methode zum Zusammenrechnen der einzelnen AP2-Teile - //Übergaben werden: Ein Array mit den Gewichtungen der einzelnen Teile, ein Array mit den erreichten Prozenten der einzelnen Teile (ungewichtet) - public int calculateTotal(int[]w, int percentage[]) { - String[] res = new String[6]; //Array zum Speichern der Ergebnisse - double[] temp = new double[w.length]; //Array für Zwischenergebnisse - int totalPercentage = 0; //Variable für das Endergebnis - - // For-Schleife für alle Prüfungsteile - for (int i=0; i