--- loncom/interface/loncoursedata.pm 2003/03/28 18:14:59 1.65 +++ loncom/interface/loncoursedata.pm 2003/04/09 14:51:29 1.67 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursedata.pm,v 1.65 2003/03/28 18:14:59 bowersj2 Exp $ +# $Id: loncoursedata.pm,v 1.67 2003/04/09 14:51:29 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1039,7 +1039,7 @@ sub get_student_data_from_performance_ca "LEFT JOIN $symb_table AS d ON d.symb_id = a.symb_id ". "WHERE student='$student'"; if (defined($symb) && $symb ne '') { - $request .= " AND d.symb='".$dbh->quote($symb)."'"; + $request .= " AND d.symb=".$dbh->quote($symb); } } elsif (defined($symb) && $symb ne '') { $request .= "FROM $symb_table as d ". @@ -1070,6 +1070,9 @@ sub get_student_data_from_performance_ca $studentdata->{$symb}->{$base.'.awarddetail'} = $awarddetail; $studentdata->{$symb}->{'timestamp'} = $time if (defined($time) && $time ne ''); } + if (defined($symb) && $symb ne '') { + $studentdata = $studentdata->{$symb}; + } return $studentdata; } @@ -1163,27 +1166,31 @@ Each hash must contain at least the 'use =back -Outputs: See the code for up to date information. +Outputs: See the code for up to date information. A hash reference is +returned. The hash has the following keys defined: =over 4 -=item $num The number of students attempting the problem - -=item $tries The total number of tries for the students - -=item $mod The maximum number of tries taken - -=item $mean The average number of tries - -=item $Solved The number of students able to solve the problem - -=item $solved The number of students whose answer is 'correct_by_override' - -=item $DegOfDiff The degree of difficulty of the problem - -=item $STD The standard deviation of the number of tries +=item num_students The number of students attempting the problem + +=item tries The total number of tries for the students + +=item max_tries The maximum number of tries taken + +=item mean_tries The average number of tries + +=item num_solved The number of students able to solve the problem + +=item num_override The number of students whose answer is 'correct_by_override' + +=item deg_of_diff The degree of difficulty of the problem + +=item std_tries The standard deviation of the number of tries + +=item skew_tries The skew of the number of tries -=item $SKEW The skew of the number of tries +=item per_wrong The number of students attempting the problem who were not +able to answer it correctly. =back @@ -1247,17 +1254,28 @@ sub get_problem_statistics { $solved = 0 if (! defined($solved)); # my $DegOfDiff = 'nan'; - $DegOfDiff = 1-($Solved + $solved)/$tries if ($tries>0); + $DegOfDiff = 1-($Solved)/$tries if ($tries>0); my $SKEW = 'nan'; + my $wrongpercent = 0; if ($num > 0) { ($SKEW) = &execute_SQL_request($dbh,'SELECT SQRT(SUM('. 'POWER(tries - '.$STD.',3)'. '))/'.$num.' FROM '.$stats_table); + $wrongpercent=int(10*100*($num-$Solved+$solved)/$num)/10; } # $dbh->do('DROP TABLE '.$stats_table); # May return an error - return ($num,$tries,$mod,$mean,$Solved,$solved,$DegOfDiff,$STD,$SKEW); + return { num_students => $num, + tries => $tries, + max_tries => $mod, + mean_tries => $mean, + std_tries => $STD, + skew_tries => $SKEW, + num_solved => $Solved, + num_override => $solved, + per_wrong => $wrongpercent, + deg_of_diff => $DegOfDiff } } sub execute_SQL_request {