Diff for /capa/capa51/GUITools/scorer.tcl between versions 1.9 and 1.15

version 1.9, 2000/01/10 22:40:30 version 1.15, 2000/08/07 20:47:29
Line 1 Line 1
   # automated scoring of bubble sheets
   #  Copyright (C) 1992-2000 Michigan State University
   #
   #  The CAPA system is free software; you can redistribute it and/or
   #  modify it under the terms of the GNU General Public License as
   #  published by the Free Software Foundation; either version 2 of the
   #  License, or (at your option) any later version.
   #
   #  The CAPA system is distributed in the hope that it will be useful,
   #  but WITHOUT ANY WARRANTY; without even the implied warranty of
   #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   #  General Public License for more details.
   #
   #  You should have received a copy of the GNU General Public
   #  License along with the CAPA system; see the file COPYING.  If not,
   #  write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   #  Boston, MA 02111-1307, USA.
   #
   #  As a special exception, you have permission to link this program
   #  with the TtH/TtM library and distribute executables, as long as you
   #  follow the requirements of the GNU GPL in regard to all of the
   #  software in the executable aside from TtH/TtM.
   
 ###########################################################  ###########################################################
 # scorer.output.num file looks like this  # scorer.output.num file looks like this
 # classname setNum numQuest flags questiondescriptor  # classname setNum numQuest flags questiondescriptor
Line 26  proc scorerMessage { num mesg {tag norma Line 49  proc scorerMessage { num mesg {tag norma
 proc scorerError { num errorCode args } {  proc scorerError { num errorCode args } {
     global gScorer      global gScorer
     switch $errorCode {      switch $errorCode {
    INVALID_CAPAID {
       lappend gScorer(errortype.$num) $errorCode
       lappend gScorer(errors.$num) [lindex $args 0]
       scorerMessage $num "Student [lindex $args 1]'s paper had an unknown CapaID" error
    }
  LOTS_OF_ANON_MODE_MATCHES {   LOTS_OF_ANON_MODE_MATCHES {
     lappend gScorer(errortype.$num) $errorCode      lappend gScorer(errortype.$num) $errorCode
     lappend gScorer(errors.$num) [lindex $args 0]      lappend gScorer(errors.$num) [lindex $args 0]
Line 166  proc loadScorerConfig { num } { Line 194  proc loadScorerConfig { num } {
           
     set filename [file join $gFile($num) records scorer.output.$gScorer(set.$num)]      set filename [file join $gFile($num) records scorer.output.$gScorer(set.$num)]
     if { [ catch { set fileId [ open $filename "r" ] } ] } {      if { [ catch { set fileId [ open $filename "r" ] } ] } {
  displayError "The set \"$gScorer(set.$num)\" does not yet have an scorer.output file. "   displayMessage "Creating a new scorer.output file for set $gScorer(set.$num)."
  return   return
     }      }
     set line [gets $fileId ]      set line [gets $fileId ]
Line 800  proc oneResponse { response max which } Line 828  proc oneResponse { response max which }
 ###########################################################  ###########################################################
 ###########################################################  ###########################################################
 proc parseLine { num answerLine answerStruct } {  proc parseLine { num answerLine answerStruct } {
     global gScorer      global gScorer gMult
     upvar $answerStruct parsedIn      upvar $answerStruct parsedIn
     set result ""      set result ""
   
Line 853  proc parseLine { num answerLine answerSt Line 881  proc parseLine { num answerLine answerSt
     set parsedIn(answer.$i) [string index $array $which]      set parsedIn(answer.$i) [string index $array $which]
  } else {   } else {
     if { $howmany > 1 } {       if { $howmany > 1 } { 
  set parsedIn(answer.$i) " "   set options ""
    foreach possible $which {
       append options "[string index $array $possible] "
    }
    set selected [multipleChoice . "There were multiple marks on\nPaper Number $parsedIn(SerialNumber)\nStudentNumber $parsedIn(StudentNumber)\nProblem Number [expr $i+1]" $options]
    #puts ":$parsedIn(StudentNumber):$parsedIn(SerialNumber):[format %2d [expr $i+1]]:$selected:$options"
    set parsedIn(answer.$i) $selected
    #puts $parsedIn(answer.$i)
  incr parsedIn(multiplemarks)   incr parsedIn(multiplemarks)
     } else {      } else {
  if { $howmany < 1 } {    if { $howmany < 1 } { 
Line 881  proc parseLine { num answerLine answerSt Line 916  proc parseLine { num answerLine answerSt
  [expr {$start + $which}]]   [expr {$start + $which}]]
     } else {      } else {
  if { $howmany > 1 } {    if { $howmany > 1 } { 
     append parsedIn(answer.$i) " "      set options ""
       foreach possible $which {
    append options "[string index $array [expr {$start + $possible}]] "
       }
       set selected [multipleChoice . "There were multiple marks on\nPaper Number $parsedIn(SerialNumber)\nStudentNumber $parsedIn(StudentNumber)\nProblem Number [expr $i+1]" $options]
       #puts ":$parsedIn(StudentNumber):$parsedIn(SerialNumber):[format %2d [expr $i+1]]:$selected:$options"
       append parsedIn(answer.$i) $selected
       #puts $parsedIn(answer.$i)
     incr parsedIn(multiplemarks)      incr parsedIn(multiplemarks)
  } else {   } else {
     if { $howmany < 1 } {       if { $howmany < 1 } { 
Line 933  proc parseLine { num answerLine answerSt Line 975  proc parseLine { num answerLine answerSt
     if { $result != "" } {      if { $result != "" } {
  error "$result"   error "$result"
     }      }
       if { [catch {incr gMult $parsedIn(multiplemarks)}] } {
    set gMult $parsedIn(multiplemarks)
       }
   #    puts $gMult
 }  }
   
 proc getAnswers2 { PID set maxQuest num } {  proc getAnswers2 { PID set maxQuest num } {
Line 952  proc getAnswers { PID set maxQuest num } Line 998  proc getAnswers { PID set maxQuest num }
     cd $pwd      cd $pwd
     set result ""      set result ""
     foreach line [split $temp "\n"] {      foreach line [split $temp "\n"] {
  switch [lindex [split $line :] 0] {   switch -- [lindex [split $line :] 0] {
     ANS { lappend result [string range $line 4 end] }      ANS { lappend result [string range $line 4 end] }
  }   }
     }      }
Line 1020  proc handleStudent { num answerStructVar Line 1066  proc handleStudent { num answerStructVar
     scorerError $num LOTS_OF_ANON_MODE_MATCHES "$answerStruct(orignalLine)" \      scorerError $num LOTS_OF_ANON_MODE_MATCHES "$answerStruct(orignalLine)" \
  $answerStruct(StudentNumber)   $answerStruct(StudentNumber)
     return 0      return 0
    } else {
       if { [llength $answerStruct(questionPID)] == 0 } {
    scorerError $num INVALID_CAPAID "$answerStruct(orignalLine)" \
       $answerStruct(StudentNumber)
    return 0
       }
  }   }
     }      }
   
     set answerStruct(Name) "$answerStruct(LastName) $answerStruct(FirstName) $answerStruct(MiddleInitial)"      set answerStruct(Name) "$answerStruct(LastName) $answerStruct(FirstName) $answerStruct(MiddleInitial)"
   
     scorerMessage $num "Getting Possible Answers for $answerStruct(StudentNumber), paper#  $answerStruct(SerialNumber). . ."      scorerMessage $num "Getting Possible Answers for $answerStruct(StudentNumber), paper#  $answerStruct(SerialNumber). . ."
Line 1247  proc setOutput { num answerStructVar} { Line 1298  proc setOutput { num answerStructVar} {
 ###########################################################  ###########################################################
 ###########################################################  ###########################################################
 proc finishScoring { num answerStructVar} {  proc finishScoring { num answerStructVar} {
     global gScorer      global gScorer gMult
     scorerMessage $num "Finishing . . ."      scorerMessage $num "Finishing . . ."
       #puts $gMult
 #    puts "errors:"  #    puts "errors:"
 #    puts "$gScorer(errors.$num)"  #    puts "$gScorer(errors.$num)"
     scorerMessage $num "Finished, Feel free to Update .sb"      scorerMessage $num "Finished, Feel free to Update .sb"
Line 1294  proc scorerStudent { num } { Line 1346  proc scorerStudent { num } {
     set gScorer(needToUpdateDB) 1      set gScorer(needToUpdateDB) 1
 #parseanswerline  #parseanswerline
     if { [catch {parseLine $num $answer answerStruct} errorMsg ] } {      if { [catch {parseLine $num $answer answerStruct} errorMsg ] } {
  displayError "Error parsing line: $errorMsg"   global errorInfo
    displayError "Error parsing line: $errorMsg $errorInfo"
     } else {      } else {
 #parse the set and grades it for any possiblely matching student  #parse the set and grades it for any possiblely matching student
  if { ! [ catch { set result [handleStudent $num answerStruct]} errorMsg ] } {   if { ! [ catch { set result [handleStudent $num answerStruct]} errorMsg ] } {
Line 1360  proc unpauseScorer { num } { Line 1413  proc unpauseScorer { num } {
 proc finalScorer { num method studentNumber numRight } {  proc finalScorer { num method studentNumber numRight } {
     global gScorer      global gScorer
   
       #puts ":$numRight:"
     set answers ""      set answers ""
     for { set i 0 } { $i < $gScorer(numQuest.$num) } { incr i } {      for { set i 0 } { $i < $gScorer(numQuest.$num) } { incr i } {
  switch $gScorer(quest.$i.type.$num) {   switch $gScorer(quest.$i.type.$num) {

Removed from v.1.9  
changed lines
  Added in v.1.15


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