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, 5 months ago) by albertel
Branches: MAIN
CVS tags: HEAD
- added more Java Tools

import java.applet.*;
import java.awt.*;
import java.lang.*;
import java.util.*;
import java.net.*;
import java.awt.event.*;

public class TScore extends Applet implements Runnable {
  public float   W[];
  public int     Entry_cnt,  Exam_cnt;
  public float   S[], F[];
  public int     X[], C[], R[];
  public float   SF_ratio[],  SF_percent[];
  public float   Sum_ratio[], Sum_percent[];
  public float   Exam_ratio[], Raw_exam_ratio[], Raw_epc_ratio[];
  public float   Term_score;
     
  ExpPanel     []  HQpanel;
  ExmPanel     []  EXpanel;
  Label            TitleL;
  Label            EqL;

public void init() {
   String      p;
   int         fs;
   int         idx;

   C       = new int[2];
   R       = new int[2];
   W       = new float[5];

//  final exam set number   
   p=getParameter("FS"); 
   fs = (p==null)?1:Integer.valueOf(p).intValue();
// how many entries 
   Entry_cnt= ((fs == 0)? 2 : 1 +  2*fs); 
// how many exams
   Exam_cnt = (Entry_cnt - 3 ) / 2; 

   S      = new float[Entry_cnt];
   F      = new float[Entry_cnt];
   X      = new int[Entry_cnt];
   SF_ratio  = new float[Entry_cnt];
   SF_percent= new float[Entry_cnt];
   Sum_ratio = new float[Entry_cnt];
   Sum_percent = new float[Entry_cnt];
   Raw_exam_ratio = new float[Exam_cnt];
   Raw_epc_ratio  = new float[Exam_cnt];
   Exam_ratio = new float[Exam_cnt];

   p=getParameter("HW_W");
   W[0] =(p==null)?1:Float.valueOf(p).floatValue(); 
   p=getParameter("QZ_W");
   W[1] =(p==null)?1:Float.valueOf(p).floatValue();
   p=getParameter("EX_W");
   W[2] =(p==null)?1:Float.valueOf(p).floatValue();
   p=getParameter("FE_W");
   W[3] =(p==null)?1:Float.valueOf(p).floatValue();
   p=getParameter("PC_W");
   W[4] =(p==null)?1:Float.valueOf(p).floatValue();
   
   p=getParameter("HW_C");
   C[0] =(p==null)?1:Integer.valueOf(p).intValue();
   p=getParameter("HW_R");
   R[0] =(p==null)?1:Integer.valueOf(p).intValue();
   p=getParameter("QZ_C");
   C[1] =(p==null)?1:Integer.valueOf(p).intValue();
   p=getParameter("QZ_R");
   R[1] =(p==null)?1:Integer.valueOf(p).intValue();

   for(idx=0;idx<Entry_cnt;idx++) {
     p=getParameter("X"+idx);
     X[idx]=(p==null)?1:Integer.valueOf(p).intValue();
     if( (idx>1) && (X[idx]==1) ) {  // midterm exam, final extrapolated
       SF_ratio[idx]  = (float)0.0;
       SF_percent[idx]= (float)0.0;
       if( idx == (Entry_cnt - 1) ) {  // final exam extrapolated, from hw
         Sum_ratio[idx] = SF_ratio[0]; 
	 Sum_percent[idx] = SF_percent[0];
       } 
     } else {
 // homework, quiz extrapolated or not;exam,final not extrapolated 
       p=getParameter("S"+idx);
       S[idx]=(p==null)?1:Float.valueOf(p).floatValue();
       p=getParameter("F"+idx);
       F[idx] =(p==null)?1:Float.valueOf(p).floatValue();
       SF_ratio[idx] = (float) ((float)S[idx] / (float)F[idx]);
       int tmp_i = (int) (10000 * SF_ratio[idx] );
       SF_percent[idx]= (float)tmp_i / (float)100.0;
       if( idx == (Entry_cnt - 1) ) {         // final exam
         Sum_ratio[idx]   = SF_ratio[idx];
	 Sum_percent[idx] = SF_percent[idx];
       }
     }
   }
   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]));
     int tmp_i = (int)(10000 * Sum_ratio[0]);
     Sum_percent[0] =  (float)tmp_i / (float)100.0;
     Sum_ratio[0]   = Sum_percent[0] / (float)100.0;
     Sum_ratio[1] = (float)(S[1] + (R[1]*F[1]*SF_ratio[1]/C[1])) / (float)(F[1]*(1.0 + R[1]/C[1]));
     tmp_i = (int)(10000 * Sum_ratio[1]);
     Sum_percent[1] =  (float)tmp_i / (float)100.0;
     Sum_ratio[1]   =  Sum_percent[1] / (float)100.0;


   // if exam 1 is not given, use homework as default to extrapolate 
   //    if epc 1 is not given, use exam 1 as epc 1
   // if exam 2 is not given, use exam 1 to extrapolate
   // if exam 3 is not given, use exam 2 to extrapolate
   // 

   float exam_sum = (float)0.0;
   for(idx=0;idx<Exam_cnt;idx++) {
     if( X[(idx+1)*2] == 1 ) {
//      taken from homework 
        Raw_exam_ratio[idx] = SF_ratio[0]; 
     } else {
        Raw_exam_ratio[idx] = SF_ratio[(idx+1)*2];
     }
     if( X[(idx+1)*2 + 1] == 1 ) {
        Raw_epc_ratio[idx] = Raw_exam_ratio[idx];
     } else {
        Raw_epc_ratio[idx] = SF_ratio[(idx+1)*2 + 1];
     }
     
     if( Raw_epc_ratio[idx] > Raw_exam_ratio[idx] ) {
         Exam_ratio[idx] = Raw_exam_ratio[idx] + W[4]*( Raw_epc_ratio[idx] - Raw_exam_ratio[idx] ) ;
     } else {
         Exam_ratio[idx] = Raw_exam_ratio[idx];
     }
     
     Sum_ratio[2*(idx+1)] = Exam_ratio[idx];
     tmp_i = (int)(10000 * Exam_ratio[idx] );
     Sum_percent[2*(idx+1)] = (float)tmp_i / (float)100.0;
     Sum_ratio[2*(idx+1)]   = Sum_percent[2*(idx+1)] / (float)100.0;
     exam_sum += Exam_ratio[idx];
   }
   exam_sum = (float)exam_sum / (float)Exam_cnt;

   Term_score = Sum_ratio[0] * W[0] + Sum_ratio[1] * W[1] + exam_sum * W[2] + Sum_ratio[Entry_cnt - 1] * W[3];

   tmp_i = (int)(10000 * Term_score);
   Term_score = (float)tmp_i / (float)100.0;


//    call to setup User Interface

   initGUI();

    }
public void initGUI() {
       int     row_cnt = Exam_cnt + 4;
       int     idx;
       String  [] title = {"Homework", "Quizz" }; 
       HQpanel = new ExpPanel[2];
       EXpanel = new ExmPanel[Exam_cnt+2];

       setLayout(new GridLayout(row_cnt,0,4,4));

       String t_str = "Term Score Extrapolation Applet";
       TitleL    = new Label(t_str, Label.CENTER);
       add(TitleL);

       for(idx = 0; idx < 2; idx++) {
         HQpanel[idx] = new ExpPanel(this,title[idx],X[idx],
                               S[idx],F[idx],C[idx],R[idx]);
         add(HQpanel[idx]);
       }
       // Midterm Exam
       for(idx =0; idx < Exam_cnt; idx++) {
         EXpanel[idx] = new ExmPanel(this,idx+1,X[2*(idx+1)],1,X[2*idx+3],
             S[2*(idx+1)],F[2*(idx+1)],W[4],S[2*idx+3],F[2*idx+3],Sum_ratio[2*(idx+1)]);
         add(EXpanel[idx]);
       }
       // Final Exam
       EXpanel[Exam_cnt] = new ExmPanel(this,0,X[Entry_cnt-1],0,0,
             S[Entry_cnt-1],F[Entry_cnt-1],W[3],S[Entry_cnt-1],F[Entry_cnt-1],Sum_ratio[Entry_cnt-1]);
       add(EXpanel[Exam_cnt]);

       String eq_str = "Term score=" + Sum_percent[0] + "*" + W[0] ;
       eq_str = eq_str + "+" + Sum_percent[1] + "*" + W[1] ;
       eq_str = eq_str + "+" + "(" ; 
       for(idx =1;idx<=Exam_cnt;idx++) {
          if(idx>1) {
             eq_str = eq_str + "+ ";
           }
           eq_str = eq_str + Sum_percent[2*idx] ;
       } 
       eq_str = eq_str + ") *" + W[2] + "/" + Exam_cnt + "+";
       eq_str = eq_str + Sum_percent[2*idx] + "*" + W[3] + " = ";
       eq_str = eq_str + " " + Term_score + "%";
       // EqL    = new Label(eq_str, Label.LEFT);
       // add(EqL);

  }
public void recalcTermScore() {
       float  score[];
       int    idx;
       float  term_summ, exam_summ;
 
       score = new float[Exam_cnt+3];
       term_summ = (float)0.0;
       exam_summ = (float)0.0;
       for(idx=0;idx<2;idx++) {
         score[idx] = HQpanel[idx].getSubTotal();
         term_summ = term_summ + score[idx] * W[idx];
       }
       for(idx =0; idx < Exam_cnt; idx++) {
         score[idx+2] = EXpanel[idx].getSubTotal();
         exam_summ = exam_summ + score[idx+2];
       }
       score[Exam_cnt+2] = EXpanel[Exam_cnt].getSubTotal();
       exam_summ = exam_summ * W[2] / Exam_cnt;
       term_summ = term_summ + exam_summ + score[Exam_cnt+2] * W[3];
       int  tmp_i = (int) ((float)100.0*term_summ);
       term_summ  = (float)(tmp_i / (float)100.0);
       String eq_str = "Term score=" + score[0] + "*" + W[0] ;
       eq_str = eq_str + "+" + score[1] + "*" + W[1] ;
       eq_str = eq_str + "+" + "(" ; 
       for(idx=0;idx<Exam_cnt;idx++) {
          if(idx>0) {
             eq_str = eq_str + "+ ";
           }
           eq_str = eq_str + score[idx+2] ;
        } 
        eq_str = eq_str + ") *" + W[2] + "/" + Exam_cnt + "+";
        eq_str = eq_str + score[Exam_cnt+2] + "*" + W[3] + " = ";
        eq_str = eq_str + " " + term_summ + "  %";
        // TitleL.setText("TTT");
        TitleL.setText(eq_str);
  }
public void paint(Graphics g) {
        Dimension d = getSize();
        g.drawRect(0,0, d.width - 1, d.height - 1);
  }
public void run()   {  }
public void start() {
        recalcTermScore();
  }
public void stop()  {  }

}

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