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

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

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