import java.awt.*; import java.awt.event.*; import java.lang.reflect.*; import java.net.*; import java.text.*; import java.util.*; import javax.swing.*; import javax.swing.text.*; class FinalCalcPanel extends JPanel { public FinalCalcPanel() { mainPanel = new JPanel(); mainPanel.setLayout(new GridLayout(7, 2)); add(mainPanel, BorderLayout.CENTER); final JComboBox testnumCombo = new JComboBox(); testnumCombo.addItem("0"); testnumCombo.addItem("1"); testnumCombo.addItem("2"); testnumCombo.addItem("3"); JLabel testnumLabel = new JLabel("Number of Tests to Replace:"); mainPanel.add(testnumLabel); mainPanel.add(testnumCombo); testnumCombo.setSelectedIndex(1); final JFormattedTextField intTest1 = new JFormattedTextField(NumberFormat.getIntegerInstance()); addRow("Test 1=", intTest1); final JFormattedTextField intTest2 = new JFormattedTextField(NumberFormat.getIntegerInstance()); addRow("Test 2=", intTest2); final JFormattedTextField intTest3 = new JFormattedTextField(NumberFormat.getIntegerInstance()); addRow("Test 3=", intTest3); final JFormattedTextField intHw = new JFormattedTextField(NumberFormat.getIntegerInstance()); intHw.setValue(new Integer(100)); addRow("Homework/Quiz=", intHw); final JComboBox desiredgradeCombo = new JComboBox(); desiredgradeCombo.addItem("A"); desiredgradeCombo.addItem("B"); desiredgradeCombo.addItem("C"); desiredgradeCombo.addItem("D"); JLabel desiredgradeLabel = new JLabel("Desried grade:"); mainPanel.add(desiredgradeLabel); mainPanel.add(desiredgradeCombo); desiredgradeCombo.setSelectedIndex(2); final JFormattedTextField dblFinal = new JFormattedTextField(NumberFormat.getInstance()); addRow("Grade needed on final=", dblFinal); JPanel buttonPanel = new JPanel(); calcButton = new JButton("Calculate"); clearButton = new JButton("Clear All"); buttonPanel.add(calcButton); buttonPanel.add(clearButton); add(buttonPanel, BorderLayout.SOUTH); calcButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { //System.out.println("You pressed the Calculate button."); double t1=Double.parseDouble(intTest1.getText()); double t2=Double.parseDouble(intTest2.getText()); double t3=Double.parseDouble(intTest3.getText()); double h=Double.parseDouble(intHw.getText()); //double g=Double.parseDouble(intGrade.getText()); int tn=1; String stn=(String) testnumCombo.getSelectedItem(); int g=100; String sg=(String) desiredgradeCombo.getSelectedItem(); double finalgrade; //number of tests to replace if(stn.equals("0")) { tn = 0; } else if(stn.equals("1")) { tn = 1; } else if(stn.equals("2")) { tn = 2; } else if(stn.equals("3")) { tn = 3; } //converts letter grade to numeric grade for desired grade if(sg.equals("A")) { g = 90; } else if(sg.equals("B")) { g = 80; } else if(sg.equals("C")) { g = 70; } else if(sg.equals("D")) { g = 60; } finalgrade=FinalCalcEngine.FinalCalc(t1,t2,t3,h,g,tn); dblFinal.setValue(finalgrade); } }); clearButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { //System.out.println("You pressed the Clear button."); intTest1.setValue(null); intTest2.setValue(null); intTest3.setValue(null); intHw.setValue(100); testnumCombo.setSelectedIndex(1); desiredgradeCombo.setSelectedIndex(2); dblFinal.setValue(null); } }); } public void addRow(String labelText, final JFormattedTextField field) { mainPanel.add(new JLabel(labelText)); mainPanel.add(field); //final JLabel valueLabel = new JLabel(); //mainPanel.add(valueLabel); } //remove for applet //public static final int WIDTH = 550; //public static final int HEIGHT = 250; private JButton calcButton; private JButton clearButton; private JPanel mainPanel; } class FinalCalcEngine { public static double FinalCalc(double t1,double t2,double t3,double h,double g,int tn) { //array to hold test scores double[] test=new double[3]; //test average double tavg; double hw; double grade; int testnum; double finalgrade; test[0]=t1; test[1]=t2; test[2]=t3; hw=h; grade=g; testnum=tn; //sorts the test scores Arrays.sort(test); tavg=(test[0]+test[1]+test[2])/3; finalgrade=(grade-.5*tavg-.1*hw)/.4; if(testnum==1) { if(finalgrade > test[0]) { finalgrade=Replace.one(test,grade,hw); test[0]=finalgrade; } } else if(testnum==2) { if(finalgrade > test[0]) { finalgrade=Replace.one(test,grade,hw); test[0]=finalgrade; if(finalgrade > test[1]) { finalgrade=Replace.two(test,grade,hw); test[0]=finalgrade; test[1]=finalgrade; } } } else if(testnum==3) { if(finalgrade > test[0]) { finalgrade=Replace.one(test,grade,hw); test[0]=finalgrade; if(finalgrade > test[1]) { finalgrade=Replace.two(test,grade,hw); test[0]=finalgrade; test[1]=finalgrade; if(finalgrade > test[2]) { finalgrade=Replace.all(test,grade,hw); test[0]=finalgrade; test[1]=finalgrade; test[2]=finalgrade; } } } } return finalgrade; } } class Replace { public static double one(double[] t,double g,double h ) { return (30*g-5*(t[1]+t[2])-3*h)/17; } public static double two(double[] t,double g,double h ) { return (30*g-5*t[2]-3*h)/22; } public static double all(double[] t,double g,double h ) { return (10*g-h)/9; } }