Annotation of capa/capa51/GUITools/scorer.anon.tcl, revision 1.2

1.1       albertel    1: ###########################################################
                      2: # compareCapaID2
                      3: ###########################################################
                      4: ###########################################################
                      5: ###########################################################
                      6: proc compareCapaID2 { onPaper onList } {
                      7:     set length [string length $onPaper]
                      8:     set same 0
                      9:     for { set i 0 } { $i < $length } { incr i } {
                     10: 	if { [string index $onPaper $i] == [string index $onList $i] } {
                     11: 	    incr same
                     12: 	}
                     13:     }
                     14:     return $same
                     15: }
                     16: 
                     17: ###########################################################
                     18: # getAnonModeID
                     19: ###########################################################
                     20: ###########################################################
                     21: ###########################################################
                     22: proc getAnonModeID { num answerStructVar} {
                     23:     global gScorer
                     24:     upvar $answerStructVar answerStruct
                     25: 
                     26:     set i 0
                     27:     set length [llength $gScorer(studentList.$num)]
                     28: #    puts ofrloop:\ [time { 
                     29: 	foreach student $gScorer(studentList.$num) {
                     30: 	    lappend which([compareCapaID $answerStruct(CapaID) [lindex $student 3]]) $i
                     31: 	    incr i
                     32: 	}
                     33: #    }]
                     34:     set highest [lindex [lsort -decreasing -integer [array names which]] 0]
1.2     ! albertel   35:     if {$highest != 6} { return "" }
1.1       albertel   36:     set answerStruct(indices) $which($highest)
                     37:     foreach index $which($highest) {
                     38: 	lappend result [lindex [lindex $gScorer(studentList.$num) $index] 1]
                     39:     }
                     40:     return $result
                     41: }
                     42: 
                     43: ###########################################################
                     44: # scorerSum
                     45: ###########################################################
                     46: ###########################################################
                     47: ###########################################################
                     48: proc scorerSum { scores } {
                     49:     set total 0
                     50:     foreach score [split $scores {}] { incr total $score }
                     51:     return $total
                     52: }
                     53: 
                     54: ###########################################################
                     55: # pickAnonHighest
                     56: ###########################################################
                     57: ###########################################################
                     58: ###########################################################
                     59: proc pickAnonHighest { num answerStructVar which } {
                     60:     global gPrompt gScorer
                     61:     upvar $answerStructVar answerStruct
                     62: 
                     63:     set scores ""
                     64:     foreach index $which {
                     65: 	set studentNumber [lindex [lindex $gScorer(studentList.$num) $index] 1]
                     66: 	lappend scores [list [scorerSum [finalScorer $num Lenient $studentNumber \
                     67: 					     $answerStruct($studentNumber.numRight)]] \
                     68: 			    $studentNumber]
                     69:     }
                     70: #    puts $scores
                     71:     set scores [lsort -index 0 -integer $scores]
                     72: #    puts $scores
                     73: #    puts [lindex [lindex $scores 0] 1]
                     74:     return [lindex [lindex $scores 0] 1]    
                     75: }
                     76: 
                     77: ###########################################################
                     78: # getWhichAnon
                     79: ###########################################################
                     80: ###########################################################
                     81: ###########################################################
                     82: proc getWhichAnon { num answerStructVar which } {
                     83:     global gPrompt gScorer
                     84:     upvar $answerStructVar answerStruct
                     85: 
                     86:     set dialog [toplevel .getWhichAnon$num -borderwidth 10]
                     87:     wm title $dialog "Getting Which Anonymous"
                     88: 
                     89:     set msgFrame [frame $dialog.msg ]
                     90:     set listFrame [frame $dialog.list ]
                     91:     set typeInFrame [frame $dialog.typein]
                     92:     set buttonFrame [frame $dialog.button]
                     93:     pack $msgFrame $listFrame $typeInFrame $buttonFrame
                     94: 
                     95:     label $msgFrame.lbl -text "Grading:"
                     96:     label $msgFrame.lbl2 -text "Student Number: $answerStruct(StudentNumber)"
                     97:     label $msgFrame.lbl3 -text "CapaID:         $answerStruct(CapaID)"
                     98:     label $msgFrame.lbl4 -text "Name:           $answerStruct(FirstName) $answerStruct(LastName)"
                     99:     label $msgFrame.lbl5 -text "Select the paper used to grade student." 
                    100:     label $msgFrame.lbl6 -text "Name                          StuNumber capa  capa      score"
                    101:     label $msgFrame.lbl7 -text "                                         ID  IDplus  Std  Len  Str "
                    102: 
                    103:     pack $msgFrame.lbl $msgFrame.lbl2 $msgFrame.lbl3 $msgFrame.lbl4 $msgFrame.lbl5 \
                    104: 	$msgFrame.lbl6 $msgFrame.lbl7 -anchor w
                    105: 
                    106:     set listbox [listbox $listFrame.list -yscrollcommand "$listFrame.scroll set" \
                    107: 		     -width 67]
                    108:     scrollbar $listFrame.scroll -command "$listFrame.list yview"
                    109:     pack $listFrame.list $listFrame.scroll -side left
                    110:     pack configure $listFrame.scroll -fill y
                    111: 
                    112:     label $typeInFrame.lbl -text "Type In Student Number:"
                    113:     entry $typeInFrame.typein -width 9 -textvariable gPrompt(typedin)
                    114:     pack $typeInFrame.lbl $typeInFrame.typein -side left
                    115: 
                    116:     button $buttonFrame.button -text Select -command "set gPrompt(ok) 1"
                    117:     button $buttonFrame.typein -text "Use Typed In Value" -command "set gPrompt(ok) 2"
                    118:     pack $buttonFrame.button $buttonFrame.typein -side left
                    119:     foreach index $which {
                    120: 	set studentNumber [lindex [lindex $gScorer(studentList.$num) $index] 1]
                    121: 	set scores ""
                    122: 	foreach methodtype {CAPA Lenient Strict} {
                    123: 	    lappend scores [scorerSum [finalScorer $num $methodtype $studentNumber \
                    124: 					   $answerStruct($studentNumber.numRight)] ]
                    125: 	}
                    126: 	$listbox insert end [eval format {{%30s %s %4d %6s %4d %4d %4d}} [lindex $gScorer(studentList.$num) $index] $scores]
                    127:     }
                    128: 
                    129:     Centre_Dialog $dialog default
                    130:     focus $dialog
                    131:     capaRaise $dialog
                    132:     capaGrab $dialog
                    133:     while { 1 } {
                    134: 	update
                    135: 	vwait gPrompt(ok)
                    136: 	if { $gPrompt(ok) == 1 } {
                    137: 	    if { [$listbox curselection] != ""} { break }
                    138: 	} else { 
                    139: 	    if { [inClasslist $num $gPrompt(typedin)] } { break } else {
                    140: 		displayError "$gPrompt(typedin) is not in the classl file"
                    141: 	    }
                    142: 	}
                    143: 	set gPrompt(ok) 0
                    144:     }
                    145:     if { $gPrompt(ok) == 1 } {
                    146: 	set selected [lindex $which [$listbox curselection]]
                    147: 	set result [lindex [lindex $gScorer(studentList.$num) $selected] 1]
                    148:     } else {
                    149: 	set result $gPrompt(typedin)
                    150:     }
                    151:     capaGrab release $dialog
                    152:     destroy $dialog
                    153:     
                    154:     return $result
                    155: }
                    156: 
                    157: ###########################################################
                    158: # inClasslist
                    159: ###########################################################
                    160: ###########################################################
                    161: ###########################################################
                    162: proc inClasslist { num pid } {
                    163:     global gScorer
                    164:     if {[lsearch -regexp $gScorer(studentList.$num) "\{.*\} .*$pid.*"]!=-1} {
                    165: 	return 1
                    166:     } {
                    167: 	return 0
                    168:     }
                    169: }

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