########################################################### # compareCapaID2 ########################################################### ########################################################### ########################################################### proc compareCapaID2 { onPaper onList } { set length [string length $onPaper] set same 0 for { set i 0 } { $i < $length } { incr i } { if { [string index $onPaper $i] == [string index $onList $i] } { incr same } } return $same } ########################################################### # getAnonModeID ########################################################### ########################################################### ########################################################### proc getAnonModeID { num answerStructVar} { global gScorer upvar $answerStructVar answerStruct set i 0 set length [llength $gScorer(studentList.$num)] # puts ofrloop:\ [time { foreach student $gScorer(studentList.$num) { lappend which([compareCapaID $answerStruct(CapaID) [lindex $student 3]]) $i incr i } # }] set highest [lindex [lsort -decreasing -integer [array names which]] 0] set answerStruct(indices) $which($highest) foreach index $which($highest) { lappend result [lindex [lindex $gScorer(studentList.$num) $index] 1] } return $result } ########################################################### # scorerSum ########################################################### ########################################################### ########################################################### proc scorerSum { scores } { set total 0 foreach score [split $scores {}] { incr total $score } return $total } ########################################################### # pickAnonHighest ########################################################### ########################################################### ########################################################### proc pickAnonHighest { num answerStructVar which } { global gPrompt gScorer upvar $answerStructVar answerStruct set scores "" foreach index $which { set studentNumber [lindex [lindex $gScorer(studentList.$num) $index] 1] lappend scores [list [scorerSum [finalScorer $num Lenient $studentNumber \ $answerStruct($studentNumber.numRight)]] \ $studentNumber] } # puts $scores set scores [lsort -index 0 -integer $scores] # puts $scores # puts [lindex [lindex $scores 0] 1] return [lindex [lindex $scores 0] 1] } ########################################################### # getWhichAnon ########################################################### ########################################################### ########################################################### proc getWhichAnon { num answerStructVar which } { global gPrompt gScorer upvar $answerStructVar answerStruct set dialog [toplevel .getWhichAnon$num -borderwidth 10] wm title $dialog "Getting Which Anonymous" set msgFrame [frame $dialog.msg ] set listFrame [frame $dialog.list ] set typeInFrame [frame $dialog.typein] set buttonFrame [frame $dialog.button] pack $msgFrame $listFrame $typeInFrame $buttonFrame label $msgFrame.lbl -text "Grading:" label $msgFrame.lbl2 -text "Student Number: $answerStruct(StudentNumber)" label $msgFrame.lbl3 -text "CapaID: $answerStruct(CapaID)" label $msgFrame.lbl4 -text "Name: $answerStruct(FirstName) $answerStruct(LastName)" label $msgFrame.lbl5 -text "Select the paper used to grade student." label $msgFrame.lbl6 -text "Name StuNumber capa capa score" label $msgFrame.lbl7 -text " ID IDplus Std Len Str " pack $msgFrame.lbl $msgFrame.lbl2 $msgFrame.lbl3 $msgFrame.lbl4 $msgFrame.lbl5 \ $msgFrame.lbl6 $msgFrame.lbl7 -anchor w set listbox [listbox $listFrame.list -yscrollcommand "$listFrame.scroll set" \ -width 67] scrollbar $listFrame.scroll -command "$listFrame.list yview" pack $listFrame.list $listFrame.scroll -side left pack configure $listFrame.scroll -fill y label $typeInFrame.lbl -text "Type In Student Number:" entry $typeInFrame.typein -width 9 -textvariable gPrompt(typedin) pack $typeInFrame.lbl $typeInFrame.typein -side left button $buttonFrame.button -text Select -command "set gPrompt(ok) 1" button $buttonFrame.typein -text "Use Typed In Value" -command "set gPrompt(ok) 2" pack $buttonFrame.button $buttonFrame.typein -side left foreach index $which { set studentNumber [lindex [lindex $gScorer(studentList.$num) $index] 1] set scores "" foreach methodtype {CAPA Lenient Strict} { lappend scores [scorerSum [finalScorer $num $methodtype $studentNumber \ $answerStruct($studentNumber.numRight)] ] } $listbox insert end [eval format {{%30s %s %4d %6s %4d %4d %4d}} [lindex $gScorer(studentList.$num) $index] $scores] } Centre_Dialog $dialog default focus $dialog capaRaise $dialog capaGrab $dialog while { 1 } { update vwait gPrompt(ok) if { $gPrompt(ok) == 1 } { if { [$listbox curselection] != ""} { break } } else { if { [inClasslist $num $gPrompt(typedin)] } { break } else { displayError "$gPrompt(typedin) is not in the classl file" } } set gPrompt(ok) 0 } if { $gPrompt(ok) == 1 } { set selected [lindex $which [$listbox curselection]] set result [lindex [lindex $gScorer(studentList.$num) $selected] 1] } else { set result $gPrompt(typedin) } capaGrab release $dialog destroy $dialog return $result } ########################################################### # inClasslist ########################################################### ########################################################### ########################################################### proc inClasslist { num pid } { global gScorer if {[lsearch -regexp $gScorer(studentList.$num) "\{.*\} .*$pid.*"]!=-1} { return 1 } { return 0 } }