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: if ((float)F[idx] < 0.00000001) {
88: SF_ratio[idx] = (float) 0.0;
89: } else {
90: SF_ratio[idx] = (float) ((float)S[idx] / (float)F[idx]);
91: }
92: int tmp_i = (int) (10000 * SF_ratio[idx] );
93: SF_percent[idx]= (float)tmp_i / (float)100.0;
94: if( idx == (Entry_cnt - 1) ) { // final exam
95: Sum_ratio[idx] = SF_ratio[idx];
96: Sum_percent[idx] = SF_percent[idx];
97: }
98: }
99: }
100: 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]));
101: int tmp_i = (int)(10000 * Sum_ratio[0]);
102: Sum_percent[0] = (float)tmp_i / (float)100.0;
103: Sum_ratio[0] = Sum_percent[0] / (float)100.0;
104: Sum_ratio[1] = (float)(S[1] + (R[1]*F[1]*SF_ratio[1]/C[1])) / (float)(F[1]*(1.0 + R[1]/C[1]));
105: tmp_i = (int)(10000 * Sum_ratio[1]);
106: Sum_percent[1] = (float)tmp_i / (float)100.0;
107: Sum_ratio[1] = Sum_percent[1] / (float)100.0;
108:
109:
110: // if exam 1 is not given, use homework as default to extrapolate
111: // if epc 1 is not given, use exam 1 as epc 1
112: // if exam 2 is not given, use exam 1 to extrapolate
113: // if exam 3 is not given, use exam 2 to extrapolate
114: //
115:
116: float exam_sum = (float)0.0;
117: for(idx=0;idx<Exam_cnt;idx++) {
118: if( X[(idx+1)*2] == 1 ) {
119: // taken from homework
120: Raw_exam_ratio[idx] = SF_ratio[0];
121: } else {
122: Raw_exam_ratio[idx] = SF_ratio[(idx+1)*2];
123: }
124: if( X[(idx+1)*2 + 1] == 1 ) {
125: Raw_epc_ratio[idx] = Raw_exam_ratio[idx];
126: } else {
127: Raw_epc_ratio[idx] = SF_ratio[(idx+1)*2 + 1];
128: }
129:
130: if( Raw_epc_ratio[idx] > Raw_exam_ratio[idx] ) {
131: Exam_ratio[idx] = Raw_exam_ratio[idx] + W[4]*( Raw_epc_ratio[idx] - Raw_exam_ratio[idx] ) ;
132: } else {
133: Exam_ratio[idx] = Raw_exam_ratio[idx];
134: }
135:
136: Sum_ratio[2*(idx+1)] = Exam_ratio[idx];
137: tmp_i = (int)(10000 * Exam_ratio[idx] );
138: Sum_percent[2*(idx+1)] = (float)tmp_i / (float)100.0;
139: Sum_ratio[2*(idx+1)] = Sum_percent[2*(idx+1)] / (float)100.0;
140: exam_sum += Exam_ratio[idx];
141: }
142: exam_sum = (float)exam_sum / (float)Exam_cnt;
143:
144: Term_score = Sum_ratio[0] * W[0] + Sum_ratio[1] * W[1] + exam_sum * W[2] + Sum_ratio[Entry_cnt - 1] * W[3];
145:
146: tmp_i = (int)(10000 * Term_score);
147: Term_score = (float)tmp_i / (float)100.0;
148:
149:
150: // call to setup User Interface
151:
152: initGUI();
153:
154: }
155: public void initGUI() {
156: int row_cnt = Exam_cnt + 4;
157: int idx;
158: String [] title = {"Homework", "Quizz" };
159: HQpanel = new ExpPanel[2];
160: EXpanel = new ExmPanel[Exam_cnt+2];
161:
162: setLayout(new GridLayout(row_cnt,0,4,4));
163:
164: String t_str = "Term Score Extrapolation Applet";
165: TitleL = new Label(t_str, Label.CENTER);
166: add(TitleL);
167:
168: for(idx = 0; idx < 2; idx++) {
169: HQpanel[idx] = new ExpPanel(this,title[idx],X[idx],
170: S[idx],F[idx],C[idx],R[idx]);
171: add(HQpanel[idx]);
172: }
173: // Midterm Exam
174: for(idx =0; idx < Exam_cnt; idx++) {
175: EXpanel[idx] = new ExmPanel(this,idx+1,X[2*(idx+1)],1,X[2*idx+3],
176: S[2*(idx+1)],F[2*(idx+1)],W[4],S[2*idx+3],F[2*idx+3],Sum_ratio[2*(idx+1)]);
177: add(EXpanel[idx]);
178: }
179: // Final Exam
180: EXpanel[Exam_cnt] = new ExmPanel(this,0,X[Entry_cnt-1],0,0,
181: S[Entry_cnt-1],F[Entry_cnt-1],W[3],S[Entry_cnt-1],F[Entry_cnt-1],Sum_ratio[Entry_cnt-1]);
182: add(EXpanel[Exam_cnt]);
183:
184: String eq_str = "Term score=" + Sum_percent[0] + "*" + W[0] ;
185: eq_str = eq_str + "+" + Sum_percent[1] + "*" + W[1] ;
186: eq_str = eq_str + "+" + "(" ;
187: for(idx =1;idx<=Exam_cnt;idx++) {
188: if(idx>1) {
189: eq_str = eq_str + "+ ";
190: }
191: eq_str = eq_str + Sum_percent[2*idx] ;
192: }
193: eq_str = eq_str + ") *" + W[2] + "/" + Exam_cnt + "+";
194: eq_str = eq_str + Sum_percent[2*idx] + "*" + W[3] + " = ";
195: eq_str = eq_str + " " + Term_score + "%";
196: // EqL = new Label(eq_str, Label.LEFT);
197: // add(EqL);
198:
199: }
200: public void recalcTermScore() {
201: float score[];
202: int idx;
203: float term_summ, exam_summ;
204:
205: score = new float[Exam_cnt+3];
206: term_summ = (float)0.0;
207: exam_summ = (float)0.0;
208: for(idx=0;idx<2;idx++) {
209: score[idx] = HQpanel[idx].getSubTotal();
210: term_summ = term_summ + score[idx] * W[idx];
211: }
212: for(idx =0; idx < Exam_cnt; idx++) {
213: score[idx+2] = EXpanel[idx].getSubTotal();
214: exam_summ = exam_summ + score[idx+2];
215: }
216: score[Exam_cnt+2] = EXpanel[Exam_cnt].getSubTotal();
217: exam_summ = exam_summ * W[2] / Exam_cnt;
218: term_summ = term_summ + exam_summ + score[Exam_cnt+2] * W[3];
219: int tmp_i = (int) ((float)100.0*term_summ);
220: term_summ = (float)(tmp_i / (float)100.0);
221: String eq_str = "Term score=" + score[0] + "*" + W[0] ;
222: eq_str = eq_str + "+" + score[1] + "*" + W[1] ;
223: eq_str = eq_str + "+" + "(" ;
224: for(idx=0;idx<Exam_cnt;idx++) {
225: if(idx>0) {
226: eq_str = eq_str + "+ ";
227: }
228: eq_str = eq_str + score[idx+2] ;
229: }
230: eq_str = eq_str + ") *" + W[2] + "/" + Exam_cnt + "+";
231: eq_str = eq_str + score[Exam_cnt+2] + "*" + W[3] + " = ";
232: eq_str = eq_str + " " + term_summ + " %";
233: // TitleL.setText("TTT");
234: TitleL.setText(eq_str);
235: }
236: public void paint(Graphics g) {
237: Dimension d = getSize();
238: g.drawRect(0,0, d.width - 1, d.height - 1);
239: }
240: public void run() { }
241: public void start() {
242: recalcTermScore();
243: }
244: public void stop() { }
245:
246: }
247: class ExpPanel extends Panel
248: implements ActionListener,
249: AdjustmentListener {
250: TScore controller;
251: TextField exT;
252: Scrollbar sB;
253: Label sumL;
254: int max = 100;
255: int block = 1;
256: float ff,ss;
257: int rr,cc;
258:
259: ExpPanel(TScore u,String t,
260: int x,float a,float b,int m,int n) {
261: GridBagConstraints c = new GridBagConstraints();
262: GridBagLayout gridbag = new GridBagLayout();
263: setLayout(gridbag);
264: int tmp_i;
265:
266: controller = u;
267: ss = a; ff = b; cc = m; rr = n;
268: float sf_ratio = (float)ss / (float)ff;
269: tmp_i = (int)(10000 * sf_ratio);
270: float sf_percent = (float)tmp_i / (float)100.0;
271: float sum_ratio = (float)(ss + ((float)rr*ff*sf_ratio/(float)cc)) / (float)(ff*(1.0 + (float)rr/(float)cc));
272: tmp_i = (int)(10000 * sum_ratio);
273: float sum_percent = (float)tmp_i / (float)100.0;
274:
275: String cs = " " + ss + "/" + ff;
276: cs = cs + " = " + sf_percent + "%";
277: String r = "remaining " + rr + " sets at (%) ";
278: String s = " " + sum_percent + "%";
279:
280: //Set up default layout constraints.
281: c.fill = GridBagConstraints.NONE;
282:
283: Label tL = new Label(t, Label.LEFT);
284: // c.gridwidth = GridBagConstraints.REMAINDER; //It ends a row.
285: c.gridwidth = 1;
286: c.gridx = 0;
287: c.gridy = 0;
288: gridbag.setConstraints(tL, c);
289: add(tL);
290:
291: Label cL = new Label(cs, Label.CENTER);
292: c.gridwidth = 2;
293: c.gridx = 1;
294: c.gridy = 0;
295: gridbag.setConstraints(cL, c);
296: add(cL);
297:
298: Label sL = new Label("subtotal=", Label.RIGHT);
299: c.gridwidth = 1;
300: c.gridx = 3;
301: c.gridy = 0;
302: gridbag.setConstraints(sL, c);
303: add(sL);
304:
305: sumL = new Label(s, Label.RIGHT);
306: c.gridwidth = GridBagConstraints.REMAINDER; //It ends a row.
307: c.gridx = 4;
308: c.gridy = 0;
309: gridbag.setConstraints(sumL, c);
310: add(sumL);
311: if(x==1) {
312: Label rL = new Label(r, Label.RIGHT);
313: c.gridwidth = 2;
314: c.gridx = 0;
315: c.gridy = 1;
316: gridbag.setConstraints(rL, c);
317: add(rL);
318:
319: exT = new TextField("0", 3);
320: c.anchor = GridBagConstraints.EAST;
321: c.gridwidth = 1; //The default value.
322: c.gridx = 2;
323: c.gridy = 1;
324: gridbag.setConstraints(exT, c);
325: add(exT);
326: exT.addActionListener(this);
327: c.anchor = GridBagConstraints.CENTER; // default
328:
329: //Add the slider. It's horizontal, and it has the maximum
330: //value specified by the instance variable max. Its initial
331: //and minimum values are the default (0). A click increments
332: //the value by block units.
333: sB = new Scrollbar(Scrollbar.HORIZONTAL);
334: sB.setMaximum(max + 10);
335: sB.setBlockIncrement(block);
336: // c.gridwidth = GridBagConstraints.REMAINDER; //It ends a row.
337: c.fill = GridBagConstraints.HORIZONTAL;
338: c.gridwidth = 2;
339: c.gridx = 3;
340: c.gridy = 1;
341: gridbag.setConstraints(sB, c);
342: add(sB);
343: sB.addAdjustmentListener(this);
344: exT.setText(String.valueOf(sf_percent));
345: sB.setValue((int)sf_percent);
346: }
347:
348: }
349: // Draws a box around this panel.
350: public void paint(Graphics g) {
351: Dimension d = getSize();
352: g.drawRect(0,0, d.width - 1, d.height - 1);
353: }
354: public Insets getInsets() {
355: return new Insets(5,5,5,8);
356: }
357: float getSubTotal() {
358: String s_str = sumL.getText().replace('%','\0').trim();
359: float s_real = Float.valueOf(s_str).floatValue();
360: return (s_real);
361: }
362: double getValue() {
363: double f;
364: try {
365: f = (double)Double.valueOf(exT.getText()).doubleValue();
366: } catch (java.lang.NumberFormatException e) {
367: f = 0.0;
368: }
369: return f;
370: }
371: // entered into exT
372: public void actionPerformed(ActionEvent e) {
373: int tf = (int) getValue();
374: if (tf > max)
375: tf = max;
376: if (tf < 0)
377: tf = 0;
378: sB.setValue(tf);
379: exT.setText(String.valueOf((int)tf));
380: recalcSumm(tf);
381: }
382: // slider sB changed
383: public void adjustmentValueChanged(AdjustmentEvent e) {
384: Scrollbar source = (Scrollbar)e.getSource();
385: int my_i = (int)source.getValue();
386: exT.setText(String.valueOf(e.getValue()));
387: recalcSumm(my_i);
388: }
389: void recalcSumm(int tf) {
390: float my_r = (float) tf / (float)100.0;
391: int tmp_i= (int)(10000*(ss+(rr*ff*my_r/cc))/(float)(ff*(1.0+rr/cc)));
392: float sum = (float)tmp_i / (float)100.0;
393: sumL.setText(sum + "%");
394: controller.recalcTermScore();
395: }
396: // Set the values in the slider and text field.
397: void setValue(double f) {
398: setSliderValue(f);
399: exT.setText(String.valueOf((float)f));
400: }
401: void setSliderValue(double f) {
402: int sliderValue = (int)f;
403:
404: if (sliderValue > max)
405: sliderValue = max;
406: if (sliderValue < 0)
407: sliderValue = 0;
408: sB.setValue(sliderValue);
409:
410: }
411: }
412: class ExmPanel extends Panel
413: implements ActionListener,
414: AdjustmentListener {
415: TScore controller;
416: TextField exT_ex, exT_pc;
417: Scrollbar sB_ex, sB_pc;
418: Label sumL;
419: int max = 100;
420: int block = 1;
421: int show_pc, exam_ex, epc_ex;
422: float s_ex, f_ex, s_pc, f_pc;
423: float c_factor;
424:
425: // exam_type 0 Final
426: // 1, 2, 3, 4
427: ExmPanel(TScore u,int exam_type,int exam_x,int show_epc,int epc_x,
428: float a,float b,float w,float m,float n,float ex_default) {
429: GridBagConstraints c = new GridBagConstraints();
430: GridBagLayout gridbag = new GridBagLayout();
431: setLayout(gridbag);
432: Label tL;
433: float exam_ratio, epc_ratio;
434: float sum;
435: int tmp_i;
436:
437: controller = u;
438: c_factor = w;
439: show_pc = show_epc;
440: exam_ex = exam_x;
441: epc_ex = epc_x;
442: s_ex = a; f_ex = b; s_pc = m; f_pc = n;
443: //Set up default layout constraints.
444: c.fill = GridBagConstraints.NONE;
445:
446: //Add the label. It displays this panel's title, centered.
447: if(exam_type == 0 ) { // Final exam
448: tL = new Label("Final", Label.LEFT);
449: } else {
450: tL = new Label("Exam " + exam_type, Label.LEFT);
451: }
452: c.anchor = GridBagConstraints.WEST;
453: c.gridwidth = 1;
454: c.gridx = 0;
455: c.gridy = 0;
456: gridbag.setConstraints(tL, c);
457: add(tL);
458: c.anchor = GridBagConstraints.CENTER;
459:
460: if( exam_x == 0 ) {
461: // exam not extrapolated
462: exam_ratio = (float)s_ex / (float)f_ex;
463: tmp_i = (int) (10000 * exam_ratio );
464: float percent = (float)tmp_i / (float)100.0;
465: String cs = " " + a + "/" + b + " = " + percent + " %";
466: Label cL = new Label(cs, Label.CENTER);
467: c.gridwidth = 2;
468: c.gridx = 1;
469: c.gridy = 0;
470: gridbag.setConstraints(cL, c);
471: add(cL);
472: } else {
473: // extrapolate exam
474: exam_ratio = ex_default;
475: exT_ex = new TextField("0", 3);
476: exT_ex.setName("EXAM");
477: c.gridwidth = 1; //The default value.
478: c.gridx = 2;
479: c.gridy = 0;
480: gridbag.setConstraints(exT_ex, c);
481: add(exT_ex);
482: exT_ex.addActionListener(this);
483:
484: sB_ex = new Scrollbar(Scrollbar.HORIZONTAL);
485: sB_ex.setName("EXAMS");
486: sB_ex.setMaximum(max + 10);
487: sB_ex.setBlockIncrement(block);
488: c.gridwidth = 2;
489: c.gridx = 3;
490: c.gridy = 0;
491: gridbag.setConstraints(sB_ex, c);
492: add(sB_ex);
493: sB_ex.addAdjustmentListener(this);
494: }
495: epc_ratio = exam_ratio;
496: if(show_pc == 1) {
497: if(epc_x == 1) {
498: epc_ratio = exam_ratio;
499: } else {
500: epc_ratio = (float)s_pc / (float)f_pc;
501: }
502: if( epc_ratio > exam_ratio ) {
503: tmp_i= (int)(10000 * (exam_ratio + c_factor * (epc_ratio - exam_ratio)));
504: sum = (float)tmp_i / (float)100.0;
505: } else {
506: tmp_i= (int)(10000 * exam_ratio);
507: sum = (float)tmp_i / (float)100.0;
508: }
509: } else {
510: tmp_i= (int)(10000 * exam_ratio);
511: sum = (float)tmp_i / (float)100.0;
512: }
513:
514: Label sL = new Label("subtotal=", Label.RIGHT);
515: c.gridwidth = 1;
516: c.gridx = 5;
517: c.gridy = 0;
518: gridbag.setConstraints(sL, c);
519: add(sL);
520:
521: String s = " " + sum + "%";
522: sumL = new Label(s, Label.CENTER);
523: c.anchor = GridBagConstraints.EAST;
524: c.gridwidth = GridBagConstraints.REMAINDER; //It ends a row.
525: c.gridx = 6;
526: c.gridy = 0;
527: gridbag.setConstraints(sumL, c);
528: add(sumL);
529: c.anchor = GridBagConstraints.CENTER;
530:
531: if( show_epc == 1 ) {
532: Label eL = new Label("Correction " + exam_type, Label.LEFT);
533: c.gridwidth = 1;
534: c.gridx = 0;
535: c.gridy = 1;
536: gridbag.setConstraints(eL, c);
537: add(eL);
538: if( epc_x == 0 ) {
539: float ratio = (float) ( s_pc / f_pc);
540: tmp_i = (int) (10000 * ratio );
541: float percent = (float)tmp_i / (float)100.0;
542: String cs = " " + s_pc + "/" + f_pc + " = " + percent + " %";
543: Label cL = new Label(cs, Label.CENTER);
544: c.gridwidth = 2;
545: c.gridx = 1;
546: c.gridy = 1;
547: gridbag.setConstraints(cL, c);
548: add(cL);
549: } else {
550: exT_pc = new TextField("0", 3);
551: exT_pc.setName("PC");
552: c.anchor = GridBagConstraints.EAST;
553: c.gridwidth = 1; //The default value.
554: c.gridx = 2;
555: c.gridy = 1;
556: gridbag.setConstraints(exT_pc, c);
557: add(exT_pc);
558: exT_pc.addActionListener(this);
559:
560: sB_pc = new Scrollbar(Scrollbar.HORIZONTAL);
561: sB_pc.setName("PCS");
562: sB_pc.setMaximum(max + 10);
563: sB_pc.setBlockIncrement(block);
564: c.gridwidth = GridBagConstraints.REMAINDER;
565: c.anchor = GridBagConstraints.CENTER;
566: c.fill = GridBagConstraints.HORIZONTAL;
567: // c.gridwidth = 2;
568: c.gridx = 3;
569: c.gridy = 1;
570: gridbag.setConstraints(sB_pc, c);
571: add(sB_pc);
572: sB_pc.addAdjustmentListener(this);
573: }
574: }
575: setExValue(exam_ratio,epc_ratio);
576: }
577: // Draws a box around this panel.
578: public void paint(Graphics g) {
579: Dimension d = getSize();
580: g.drawRect(0,0, d.width - 1, d.height - 1);
581: }
582: public Insets getInsets() {
583: return new Insets(5,5,5,8);
584: }
585: float getSubTotal() {
586: String s_str = sumL.getText().replace('%','\0').trim();
587: float s_real = Float.valueOf(s_str).floatValue();
588: return (s_real);
589: }
590: // entered into exT
591: public void actionPerformed(ActionEvent e) {
592: TextField source = (TextField)e.getSource();
593: String name = source.getName();
594: int tf = (int)Integer.valueOf(source.getText()).intValue();
595: if (tf > max)
596: tf = max;
597: if (tf < 0)
598: tf = 0;
599: if( name.equals(String.valueOf("EXAM")) ) {
600: sB_ex.setValue(tf);
601: exT_ex.setText(String.valueOf((int)tf));
602: } else {
603: sB_pc.setValue(tf);
604: exT_pc.setText(String.valueOf((int)tf));
605: }
606: recalcSumm();
607: }
608: // slider sB changed
609: public void adjustmentValueChanged(AdjustmentEvent e) {
610: Scrollbar source = (Scrollbar)e.getSource();
611: String name = source.getName();
612: int my_i = (int)source.getValue();
613:
614: if( name.equals(String.valueOf("EXAMS")) ) {
615: sB_ex.setValue(my_i);
616: exT_ex.setText(String.valueOf((int)my_i));
617: } else {
618: sB_pc.setValue(my_i);
619: exT_pc.setText(String.valueOf((int)my_i));
620: }
621: recalcSumm();
622: }
623: void recalcSumm() {
624: int tmp_i;
625: float exam , epc, sum;
626:
627: if( exam_ex == 1 ) {
628: tmp_i = (int)Integer.valueOf(exT_ex.getText()).intValue();
629: exam = (float) tmp_i / (float)100.0;
630: } else {
631: exam = (float)s_ex / (float)f_ex;
632: }
633: if( show_pc == 1 ) {
634: if(epc_ex == 1) {
635: tmp_i = (int)Integer.valueOf(exT_pc.getText()).intValue();
636: epc = (float) tmp_i / (float)100.0;
637: } else {
638: epc = (float)s_pc / (float)f_pc;
639: }
640: if( epc > exam ) {
641: tmp_i= (int)(10000 * (exam + c_factor * (epc - exam)));
642: sum = (float)tmp_i / (float)100.0;
643: } else {
644: tmp_i= (int)(10000 * exam);
645: sum = (float)tmp_i / (float)100.0;
646: }
647: } else {
648: tmp_i= (int)(10000 * exam);
649: sum = (float)tmp_i / (float)100.0;
650: }
651: sumL.setText(sum + "%");
652: controller.recalcTermScore();
653: }
654: void setExValue (float a, float b) {
655: int exm, epc;
656: exm = (int) (a*100.0);
657: epc = (int) (b*100.0);
658: if (exm > max)
659: exm = max;
660: if (exm < 0)
661: exm = 0;
662: if (epc > max)
663: epc = max;
664: if (epc < 0)
665: epc = 0;
666: if( exam_ex ==1 ) {
667: sB_ex.setValue(exm);
668: exT_ex.setText(String.valueOf(exm));
669: }
670: if( (show_pc == 1) && (epc_ex==1) ) {
671: sB_pc.setValue(epc);
672: exT_pc.setText(String.valueOf(epc));
673: }
674: }
675: }
676:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>