I have a script that generates test questions  and grades them .  I was
asked to make them generate in a random order , can someone point me in the
right direction 
 
They come in two files  make_test.cgi   and grade.cgi 
 
 
 
#! /usr/bin/perl
#
#    make test  for Cram Program
#
#   version 0.02  mar 18 2002
#
############################################
require "subparseform.lib";
&Parse_Form;
 
$name = $formdata{'name'};
$test = $formdata{'test1'};
 
##########################################
#  connect to DB
############################
use DBI;
my $database = "cram";
my $data_source = "DBI:mysql:$database";
my $username = "root";
my $password = "elaine";
 

####################################
##  make sure they havent taken the test before
####################################
 
# $dbh = DBI -> connect($data_source, $username, $password)
 

# my $sth = $dbh1 -> prepare("select * from scores where name = '$name' and
test = '$test'");
 
# $sth -> execute
 

# $result = "$result
 
# if($result ne "") {
 
 
 
 
 
 
 
 
 

# my Arrary
 
 
 
 
 
 
 
 
 
 
 
 
 
######################################################
###        Make Random                               # 
######################################################
 
 
 
 
 
 
 
 
 
 
 

$dbh =DBI ->connect($data_source, $username, $password) or die "cant connect
to
$data_source : my $dbh-> errstr\n";
 
 
 
 
 
 
 
 
 
my $sth1 = $dbh -> prepare("select * from tests where subject = '$test' ");
$sth1 -> execute or die " unable to execute query ";
#$sth1 -> finish;
 
 
 
 
 
 
 
##########################################
#   make count
  $count = 0;
###########################################
# make Page
########################################
print "content-type: text/html\n\n";
print "<html>\n";
print "<head><title> Welcome ";
print "$name";
print " </title></head>\n";
print "</head>\n";
 
print "<body bgcolor=\"#FFFFFF\" text=\"000000\" \n";
print "background=\"notebook.jpg\">\n\n";
 
print "<h3 align=\"right\">$name </h3> \n";
print "<h3 align=\"right\">$test Test</h3> \n";
print "<hr>\n";
 
print "<div align=\"center\">\n";
print "<center>\n";
print "<table border=\"1\" width=\"80%\">\n";
 
print "<form action=\"grade.cgi\"";
 
print " method=\"post\" ";
print " name=\"cramtest\">\n";
print "<input type=\"hidden\" name=\"name\" value=\"$name\">\n";
print "<input type=\"hidden\" name=\"test12\" value=\"$test\">\n";
my $array_ref = $sth1 -> fetchall_arrayref();
 
   foreach $row(@$array_ref){
 
##############################################################
#   Count Routine
##############################################################
#
 $count ++;
#
my($num, $subject, $ques,$quesA, $quesB, $quesC, $quesD,$quesE,$ans) =
@$row;
 
$tot_ans = 0;
 
print "<tr>\n";
 
print "<td width=\"3%\">$num</td>\n";
print "<td width=\"3%\">&nbsp;</td>\n";
print "<td width=\"84%\" bgcolor=\"#FFFF00\">$ques\n";
 
$c_ans = $num."c_ans";
 
print "&nbsp; &nbsp; <input type=\"hidden\" name=\"$c_ans\"
value=\"$ans\">\n";
 
print "  </td>\n";
print "</tr>\n";
 
$ques1a = $num."a";
if ($quesA ne ""){
$tot_ans++;
print "<tr>\n\n";
print "<td width=\"3%\">&nbsp;<input type=\"checkbox\" name=\"$ques1a\"\n";
print "value=\"ON\"></td>\n\n";
 
print "<td width=\"3%\">&nbsp;A.</td>\n";
 
print "<td width=\"84%\">$quesA  </td>\n";
print "</tr>\n";
 
}
 

$ques1b = $num."b";
if ($quesB ne ""){
$tot_ans++;
print "<tr>\n";
 
$num_a = $num;
print "<td width=\"3%\">&nbsp;<input type=\"checkbox\" name=\"$ques1b\" ";
print "value=\"ON\"></td>\n";
 
print "<td width=\"3%\">&nbsp;B.</td>\n";
print "<td width=\"84%\">$quesB</td>\n";
print "</tr>\n";
 
}
 
 
 
$ques1c = $num."c";
 
if ($quesC ne ""){
$tot_ans++;
print "<tr>\n";
print "<td width=\"3%\">&nbsp;<input type=\"checkbox\" name=\"$ques1c\" ";
print "value=\"ON\"></td>\n";
 
print "<td width=\"3%\">&nbsp;C.</td>\n";
print "<td width=\"84%\">$quesC</td>\n";
print "</tr>\n";
 
}
 

$ques1d = $num."d";
 
if ($quesD ne ""){
 
$tot_ans++;
print "<tr>\n";
 
print "<td width=\"3%\">&nbsp;<input type=\"checkbox\" name=\"$ques1d\" ";
print "value=\"ON\"></td>\n";
 

print "<td width=\"3%\">&nbsp;D.</td>\n";
print "<td width=\"84%\">$quesD </td>\n";
print "</tr>\n";
 
}
 
 
 
if ($quesE ne ""){
$tot_ans++;
$ques1e = $num."e";
 
print "<tr>\n";
print "<td width=\"3%\">&nbsp;<input type=\"checkbox\" name=\"$ques1e\" ";
print "value=\"ON\"></td>\n";
 
print "<td width=\"3%\">&nbsp;E.</td>\n";
print "<td width=\"84%\">$quesE </td>\n";
print "</tr>\n";
 
}
 

$ques1f = $num."f";
 
if ($quesf ne ""){
 
$tot_ans++;
print "<tr>\n";
 
print "<td width=\"3%\">&nbsp;<input type=\"checkbox\" name=\"$ques1f\" ";
print "value=\"ON\"></td>\n";
 

print "<td width=\"3%\">&nbsp;f.</td>\n";
print "<td width=\"84%\">$quesf </td>\n";
print "</tr>\n";
 
  }
 
$tot_ans1 = $num."tot_ans1";
print "<input type=\"hidden\" name=\"$tot_ans1\" value=\"$tot_ans\">\n";
 

}
 
print "<input type=\"hidden\" name=\"count\" value=\"$count\">\n";
 
 
 
print "</table>\n";
print "<input type=\"Submit\" value=\"Submit to Be Graded\">\n";
print "</form>\n";
 
print "</center>\n";
print "</div>\n";
 

print "</body>\n";
print "</html>\n";
 
 
 
 
 
 
 
 
 
 
#! /usr/bin/perl
#    user grading script
#
#   Mar 18, 2002     ver 0.02
############################################
require "subparseform.lib";
&Parse_Form;
 
 
 
$test = $formdata{'test12'};
$sname = $formdata{'name'};
 
 
 

##########################################
#  connect to DB
############################
use DBI;
my $database = "cram";
my $data_source = "DBI:mysql:$database";
my $username = "root";
my $password = "elaine";
 
$dbh =DBI ->connect($data_source, $username, $password) or die "cant connect
to
$data_source : my $dbh-> errstr\n";
 
my $sth1 = $dbh -> prepare("select * from tests where subject = '$test' ");
 

$sth1 -> execute or die " unable to execute query ";
#$sth1 -> finish;
 

###########################################
# make Page
########################################
print "content-type: text/html\n\n";
print "<html>\n";
print "<head><title> Welcome ";
print "$sname";
print " </title></head>\n";
print "</head>\n";
 
print "<body bgcolor=\"#FFFFFF\" text=\"000000\" \n";
print "background=\" \n'>https://kins2158/cram/notebook.jpg\";
<https://kins2158/cram/notebook.jpg\> >\n";
 
print "<h1 align=\"center\">$sname </h1> \n";
print "<h3 align=\"center\"> Test results for Test : $test </h3>\n";
print "<hr>\n";
my $array_ref = $sth1 -> fetchall_arrayref();
 
 
 

########################################################
###   Get Date                                       ###
########################################################
 
@days = ("Sunday","Monday","Tuesday","Wednesday","Thursday",
          "Friday","Saturday");
@months = ("January","February","March","April","May","June",
           "July","August","September","October","November",
           "December");
 
($sec,$min,$hr,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
$year = $year + 1900;    #prints  correct date
 
$today_n = $days[$wday];
 
 
 
 
 
 
 
 
 
 
 
 
 
print "<div align=\"center\">\n";
print "<center>\n";
print "<table border=\"1\" width=\"80%\">\n";
 

  $tot_cor = 0;
  $tot_ques = 0;
 

  foreach $row(@$array_ref){
 
$they_ans="";
 
my($num,$subject,$ques,$quesA,$quesB,$quesC,$quesD,$quesE,$ans,$corr_a,$corr
_b,$corr_c,$corr_d,$corr_e,$exp) = @$row;
####################################
#correct answer for this question
###################################
$corr = $num."c_ans";
$corr1  = $formdata{$corr};
###################################
# Total answers for the question
###################################
$totans = $num."tot_ans1";
$totans1 = $formdata{$totans};
 
  $tot_ques++;
 

#####################################
###   This process goes through all the questions
###   And adds them into on variable
#############################################
 
#####################################
##   answer 1                  ######
#####################################
$ans1 = $num."a";
$ans1a = $formdata{$ans1};
  
  if($ans1a eq "ON") {
    $they_ans = "A";
  }
 

#####################################
##   answer 2                  ######
#####################################
$ans1 = $num."b";
$ans1b = $formdata{$ans1};
 
   if($ans1b eq "ON"){
    $they_ans = $they_ans."B";
   }  
 
#####################################
##   answer 3                  ######
#####################################
$ans1 = $num."c";
$ans1c = $formdata{$ans1};
 
   if($ans1c eq "ON") {
     $they_ans = $they_ans."C";
    }
#####################################
##   answer 4                  ######
#####################################
$ans1 = $num."d";
$ans1d = $formdata{$ans1};
 
  if($ans1d eq "ON") {
   $they_ans = $they_ans."D";
  }
#####################################
##   answer 5                  ######
#####################################
$ans1 = $num."e";
$ans1e = $formdata{$ans1};
 
   if($ans1e eq "ON") {
     $they_ans = $they_ans."E";
    }
 
#####################################
##   answer 6                  ######
#####################################
$ans1 = $num."f";
$ans1f = $formdata{$ans1};
 

  if($ans1f eq "ON") {
   $they_ans = $they_ans."F";
  }
 
  if($corr1 eq $they_ans) {
    $outcome = "Correct";
     $tot_cor++;
   }
 
  if($corr1 ne $they_ans)  {
   $outcome = "Incorrect";
 }
 
  
  ###   add to test analysis
#
#  connect to DB
############################
my $database = "cram";
my $data_source = "DBI:mysql:$database";
my $username = "root";
my $password = "elaine";
 
$dbh5 = DBI ->connect($data_source, $username, $password);
 

my $sth4 = $dbh5 -> prepare("insert into
testhistory(sname,testname,date,question,theyans,outcome)values('$sname','$s
ubject','0000-00-00','$num','$they_ans','$outcome')");
$sth4 -> execute ;
#$sth1 -> finish;
 

$dbh5->disconnect;
 
 
 
 
 
 
 
 
 
 
 
 if($outcome ne "Correct"){
 
    print "<tr>\n";
    print "<td width=\"3%\">$num</td>\n";
    print "<td width=\"73%\"> $ques </td>\n";
print "</tr><tr>\n";
print "<td width=\"33%\">Correct answer is :&nbsp;$corr1</td>\n";
print "<td width=\"64%\">You answered &nbsp;$they_ans  </td>\n";
print "</tr><tr>\n";
print "<td>The Reason</td>\n";
print "<td>$exp </td>\n";
print "</tr><tr><td bgcolor=\"#FFFF00\">&nbsp;</td></tr>\n"; 
 }
 
}
 
print "</table>\n";
print "</center>\n";
print "</div>\n";
 
print "<center>\n";
 
#########################
##  get total questions and corrects
 

$aver = $tot_cor/$tot_ques;
 
 $aver = sprintf "%.2f", $aver;
 

print " Your Score is  $aver \n";
 
$status = "Passed";
 
 if($aver < 0.70)
{
  $status = "Failed";
}
 

print "<BR>Yours status is : $status";
 
 
 

#####################################################
##  insert Grades into DB
#####################################################
#
#  connect to DB
############################
# use DBI;
# my $database = "sobtmedia";
# my $data_source = "DBI:mysql:$database";
# my $username = "root";
# my $password = "elaine";
 
# $dbh = DBI ->connect($data_source, $username, $password);
 
my $sth1 = $dbh -> prepare("insert into
scores(name,test,score,result)values('$sname','$test','$aver','$status')");
$sth1 -> execute;
$sth1 -> finish;
 

$dbh->disconnect;
 
 
 
 
 
 
 
 
 
 
 
 
 
print "</body>\n";
print "</html>\n";

 
 
 
 
 
 
 

 
 

Reply via email to