This worked for me while I was a TA.

my $numberOfStudents = scalar keys %Grade;

my @studentGrades = map { rand(100) } (1 .. $numberOfStudents);

foreach my $student (keys %Grade){
        %Grade{$student} = shift @studentGrades;
        }

> -----Original Message-----
> From: FLAHERTY, JIM-CONT [mailto:[EMAIL PROTECTED]]
> Sent: Friday, March 22, 2002 1:51 PM
> To: Jim (E-mail); Beginners (E-mail)
> Subject: I am clueless about making my test generator program to
> generate random questions.... Help
> 
> 
> 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)value
> s('$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";
> 
>  
>  
>  
>  
>  
>  
>  
> 
>  
>  
> 

----------------------------------------------------------------------------
--------------------
The views and opinions expressed in this email message are the sender's
own, and do not necessarily represent the views and opinions of Summit
Systems Inc.


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to