File:  [LON-CAPA] / capa / capa51 / JavaTools / TScore.java
Revision 1.1: download - view: text, annotated - select for diffs
Mon Nov 29 19:45:13 1999 UTC (24 years, 6 months ago) by albertel
Branches: MAIN
CVS tags: HEAD
- added more Java Tools

    1: import java.applet.*;
    2: import java.awt.*;
    3: import java.lang.*;
    4: import java.util.*;
    5: import java.net.*;
    6: import java.awt.event.*;
    7: 
    8: public class TScore extends Applet implements Runnable {
    9:   public float   W[];
   10:   public int     Entry_cnt,  Exam_cnt;
   11:   public float   S[], F[];
   12:   public int     X[], C[], R[];
   13:   public float   SF_ratio[],  SF_percent[];
   14:   public float   Sum_ratio[], Sum_percent[];
   15:   public float   Exam_ratio[], Raw_exam_ratio[], Raw_epc_ratio[];
   16:   public float   Term_score;
   17:      
   18:   ExpPanel     []  HQpanel;
   19:   ExmPanel     []  EXpanel;
   20:   Label            TitleL;
   21:   Label            EqL;
   22: 
   23: public void init() {
   24:    String      p;
   25:    int         fs;
   26:    int         idx;
   27: 
   28:    C       = new int[2];
   29:    R       = new int[2];
   30:    W       = new float[5];
   31: 
   32: //  final exam set number   
   33:    p=getParameter("FS"); 
   34:    fs = (p==null)?1:Integer.valueOf(p).intValue();
   35: // how many entries 
   36:    Entry_cnt= ((fs == 0)? 2 : 1 +  2*fs); 
   37: // how many exams
   38:    Exam_cnt = (Entry_cnt - 3 ) / 2; 
   39: 
   40:    S      = new float[Entry_cnt];
   41:    F      = new float[Entry_cnt];
   42:    X      = new int[Entry_cnt];
   43:    SF_ratio  = new float[Entry_cnt];
   44:    SF_percent= new float[Entry_cnt];
   45:    Sum_ratio = new float[Entry_cnt];
   46:    Sum_percent = new float[Entry_cnt];
   47:    Raw_exam_ratio = new float[Exam_cnt];
   48:    Raw_epc_ratio  = new float[Exam_cnt];
   49:    Exam_ratio = new float[Exam_cnt];
   50: 
   51:    p=getParameter("HW_W");
   52:    W[0] =(p==null)?1:Float.valueOf(p).floatValue(); 
   53:    p=getParameter("QZ_W");
   54:    W[1] =(p==null)?1:Float.valueOf(p).floatValue();
   55:    p=getParameter("EX_W");
   56:    W[2] =(p==null)?1:Float.valueOf(p).floatValue();
   57:    p=getParameter("FE_W");
   58:    W[3] =(p==null)?1:Float.valueOf(p).floatValue();
   59:    p=getParameter("PC_W");
   60:    W[4] =(p==null)?1:Float.valueOf(p).floatValue();
   61:    
   62:    p=getParameter("HW_C");
   63:    C[0] =(p==null)?1:Integer.valueOf(p).intValue();
   64:    p=getParameter("HW_R");
   65:    R[0] =(p==null)?1:Integer.valueOf(p).intValue();
   66:    p=getParameter("QZ_C");
   67:    C[1] =(p==null)?1:Integer.valueOf(p).intValue();
   68:    p=getParameter("QZ_R");
   69:    R[1] =(p==null)?1:Integer.valueOf(p).intValue();
   70: 
   71:    for(idx=0;idx<Entry_cnt;idx++) {
   72:      p=getParameter("X"+idx);
   73:      X[idx]=(p==null)?1:Integer.valueOf(p).intValue();
   74:      if( (idx>1) && (X[idx]==1) ) {  // midterm exam, final extrapolated
   75:        SF_ratio[idx]  = (float)0.0;
   76:        SF_percent[idx]= (float)0.0;
   77:        if( idx == (Entry_cnt - 1) ) {  // final exam extrapolated, from hw
   78:          Sum_ratio[idx] = SF_ratio[0]; 
   79: 	 Sum_percent[idx] = SF_percent[0];
   80:        } 
   81:      } else {
   82:  // homework, quiz extrapolated or not;exam,final not extrapolated 
   83:        p=getParameter("S"+idx);
   84:        S[idx]=(p==null)?1:Float.valueOf(p).floatValue();
   85:        p=getParameter("F"+idx);
   86:        F[idx] =(p==null)?1:Float.valueOf(p).floatValue();
   87:        SF_ratio[idx] = (float) ((float)S[idx] / (float)F[idx]);
   88:        int tmp_i = (int) (10000 * SF_ratio[idx] );
   89:        SF_percent[idx]= (float)tmp_i / (float)100.0;
   90:        if( idx == (Entry_cnt - 1) ) {         // final exam
   91:          Sum_ratio[idx]   = SF_ratio[idx];
   92: 	 Sum_percent[idx] = SF_percent[idx];
   93:        }
   94:      }
   95:    }
   96:    Sum_ratio[0] = (float)(S[0] + ((float)R[0]*F[0]*SF_ratio[0]/(float)C[0])) / (float)(F[0]*(1.0 + (float)R[0]/(float)C[0]));
   97:      int tmp_i = (int)(10000 * Sum_ratio[0]);
   98:      Sum_percent[0] =  (float)tmp_i / (float)100.0;
   99:      Sum_ratio[0]   = Sum_percent[0] / (float)100.0;
  100:      Sum_ratio[1] = (float)(S[1] + (R[1]*F[1]*SF_ratio[1]/C[1])) / (float)(F[1]*(1.0 + R[1]/C[1]));
  101:      tmp_i = (int)(10000 * Sum_ratio[1]);
  102:      Sum_percent[1] =  (float)tmp_i / (float)100.0;
  103:      Sum_ratio[1]   =  Sum_percent[1] / (float)100.0;
  104: 
  105: 
  106:    // if exam 1 is not given, use homework as default to extrapolate 
  107:    //    if epc 1 is not given, use exam 1 as epc 1
  108:    // if exam 2 is not given, use exam 1 to extrapolate
  109:    // if exam 3 is not given, use exam 2 to extrapolate
  110:    // 
  111: 
  112:    float exam_sum = (float)0.0;
  113:    for(idx=0;idx<Exam_cnt;idx++) {
  114:      if( X[(idx+1)*2] == 1 ) {
  115: //      taken from homework 
  116:         Raw_exam_ratio[idx] = SF_ratio[0]; 
  117:      } else {
  118:         Raw_exam_ratio[idx] = SF_ratio[(idx+1)*2];
  119:      }
  120:      if( X[(idx+1)*2 + 1] == 1 ) {
  121:         Raw_epc_ratio[idx] = Raw_exam_ratio[idx];
  122:      } else {
  123:         Raw_epc_ratio[idx] = SF_ratio[(idx+1)*2 + 1];
  124:      }
  125:      
  126:      if( Raw_epc_ratio[idx] > Raw_exam_ratio[idx] ) {
  127:          Exam_ratio[idx] = Raw_exam_ratio[idx] + W[4]*( Raw_epc_ratio[idx] - Raw_exam_ratio[idx] ) ;
  128:      } else {
  129:          Exam_ratio[idx] = Raw_exam_ratio[idx];
  130:      }
  131:      
  132:      Sum_ratio[2*(idx+1)] = Exam_ratio[idx];
  133:      tmp_i = (int)(10000 * Exam_ratio[idx] );
  134:      Sum_percent[2*(idx+1)] = (float)tmp_i / (float)100.0;
  135:      Sum_ratio[2*(idx+1)]   = Sum_percent[2*(idx+1)] / (float)100.0;
  136:      exam_sum += Exam_ratio[idx];
  137:    }
  138:    exam_sum = (float)exam_sum / (float)Exam_cnt;
  139: 
  140:    Term_score = Sum_ratio[0] * W[0] + Sum_ratio[1] * W[1] + exam_sum * W[2] + Sum_ratio[Entry_cnt - 1] * W[3];
  141: 
  142:    tmp_i = (int)(10000 * Term_score);
  143:    Term_score = (float)tmp_i / (float)100.0;
  144: 
  145: 
  146: //    call to setup User Interface
  147: 
  148:    initGUI();
  149: 
  150:     }
  151: public void initGUI() {
  152:        int     row_cnt = Exam_cnt + 4;
  153:        int     idx;
  154:        String  [] title = {"Homework", "Quizz" }; 
  155:        HQpanel = new ExpPanel[2];
  156:        EXpanel = new ExmPanel[Exam_cnt+2];
  157: 
  158:        setLayout(new GridLayout(row_cnt,0,4,4));
  159: 
  160:        String t_str = "Term Score Extrapolation Applet";
  161:        TitleL    = new Label(t_str, Label.CENTER);
  162:        add(TitleL);
  163: 
  164:        for(idx = 0; idx < 2; idx++) {
  165:          HQpanel[idx] = new ExpPanel(this,title[idx],X[idx],
  166:                                S[idx],F[idx],C[idx],R[idx]);
  167:          add(HQpanel[idx]);
  168:        }
  169:        // Midterm Exam
  170:        for(idx =0; idx < Exam_cnt; idx++) {
  171:          EXpanel[idx] = new ExmPanel(this,idx+1,X[2*(idx+1)],1,X[2*idx+3],
  172:              S[2*(idx+1)],F[2*(idx+1)],W[4],S[2*idx+3],F[2*idx+3],Sum_ratio[2*(idx+1)]);
  173:          add(EXpanel[idx]);
  174:        }
  175:        // Final Exam
  176:        EXpanel[Exam_cnt] = new ExmPanel(this,0,X[Entry_cnt-1],0,0,
  177:              S[Entry_cnt-1],F[Entry_cnt-1],W[3],S[Entry_cnt-1],F[Entry_cnt-1],Sum_ratio[Entry_cnt-1]);
  178:        add(EXpanel[Exam_cnt]);
  179: 
  180:        String eq_str = "Term score=" + Sum_percent[0] + "*" + W[0] ;
  181:        eq_str = eq_str + "+" + Sum_percent[1] + "*" + W[1] ;
  182:        eq_str = eq_str + "+" + "(" ; 
  183:        for(idx =1;idx<=Exam_cnt;idx++) {
  184:           if(idx>1) {
  185:              eq_str = eq_str + "+ ";
  186:            }
  187:            eq_str = eq_str + Sum_percent[2*idx] ;
  188:        } 
  189:        eq_str = eq_str + ") *" + W[2] + "/" + Exam_cnt + "+";
  190:        eq_str = eq_str + Sum_percent[2*idx] + "*" + W[3] + " = ";
  191:        eq_str = eq_str + " " + Term_score + "%";
  192:        // EqL    = new Label(eq_str, Label.LEFT);
  193:        // add(EqL);
  194: 
  195:   }
  196: public void recalcTermScore() {
  197:        float  score[];
  198:        int    idx;
  199:        float  term_summ, exam_summ;
  200:  
  201:        score = new float[Exam_cnt+3];
  202:        term_summ = (float)0.0;
  203:        exam_summ = (float)0.0;
  204:        for(idx=0;idx<2;idx++) {
  205:          score[idx] = HQpanel[idx].getSubTotal();
  206:          term_summ = term_summ + score[idx] * W[idx];
  207:        }
  208:        for(idx =0; idx < Exam_cnt; idx++) {
  209:          score[idx+2] = EXpanel[idx].getSubTotal();
  210:          exam_summ = exam_summ + score[idx+2];
  211:        }
  212:        score[Exam_cnt+2] = EXpanel[Exam_cnt].getSubTotal();
  213:        exam_summ = exam_summ * W[2] / Exam_cnt;
  214:        term_summ = term_summ + exam_summ + score[Exam_cnt+2] * W[3];
  215:        int  tmp_i = (int) ((float)100.0*term_summ);
  216:        term_summ  = (float)(tmp_i / (float)100.0);
  217:        String eq_str = "Term score=" + score[0] + "*" + W[0] ;
  218:        eq_str = eq_str + "+" + score[1] + "*" + W[1] ;
  219:        eq_str = eq_str + "+" + "(" ; 
  220:        for(idx=0;idx<Exam_cnt;idx++) {
  221:           if(idx>0) {
  222:              eq_str = eq_str + "+ ";
  223:            }
  224:            eq_str = eq_str + score[idx+2] ;
  225:         } 
  226:         eq_str = eq_str + ") *" + W[2] + "/" + Exam_cnt + "+";
  227:         eq_str = eq_str + score[Exam_cnt+2] + "*" + W[3] + " = ";
  228:         eq_str = eq_str + " " + term_summ + "  %";
  229:         // TitleL.setText("TTT");
  230:         TitleL.setText(eq_str);
  231:   }
  232: public void paint(Graphics g) {
  233:         Dimension d = getSize();
  234:         g.drawRect(0,0, d.width - 1, d.height - 1);
  235:   }
  236: public void run()   {  }
  237: public void start() {
  238:         recalcTermScore();
  239:   }
  240: public void stop()  {  }
  241: 
  242: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>