% % D. P. Story dpstory@uakron.edu % The University of Akron % % Demo of using web/exerquiz to create a quiz, then process the % user's responses using the Adobe FDF Toolkit. % \documentclass{article} \usepackage[designi]{web} % dvips, pdftex, xetex \usepackage{exerquiz} \usepackage[ImplMulti,indefIntegral]{dljslib} \usepackage[eqRecord]{eq2db} \everyTextField{\BC{}\textFont{TiRo}\textSize{10}\textColor{0 0 1 rg}} % Set the deadline date \newcommand\Deadline{8/10/2003} % set the time limit \newcommand\TimeLimit{15} % measured in minutes % % Document level JavaScript to check whether student has entered the IdInfo % fields, and whether the student has a SSN of someone enrolled in the ``course''. % The ClassRoster array lists the student IDs (SSN) of student ``enrolled''. % \begin{insDLJS}[checkIDs]{eqrecord}{JS for eqRecord} var ok2Initialize = false; var okToSubmit = false; var ClassRoster = new Array(123456789, 111111111, 222222222, 987654321); var TimeLimit = 60 * 1000 * \TimeLimit; var StartingTime, RequiredEndingTime; function checkIDs() { var DeadlineDate = util.scand("mm/dd/yyyy", "\Deadline").valueOf(); var TimeOfQuiz = new Date().valueOf(); if ( TimeOfQuiz > DeadlineDate) { app.alert("It is too late to take this quiz!"); return false; } var f = this.getField("IdInfo.Name.First"); if ( f.value.replace(/\s/g,"") == "" ) { app.alert("Please enter your \"First Name\", then try again to initialize the quiz again."); return false; } var f = this.getField("IdInfo.Name.Last"); if ( f.value.replace(/\s/g,"") == "" ) { app.alert("Please enter your \"Last Name\", then try again to initialize the quiz again."); return false; } var f = this.getField("IdInfo.SSN"); if ( f.value == "" ) { app.alert("Please enter enter your \"SSN\", then try to initialize the quiz again."); return false; } for (var i=0; i < ClassRoster.length; i++) if ( f.value == ClassRoster[i] ) break; if ( i == ClassRoster.length ) { app.alert("You are not enrolled in this class and, therefore, will not be permitted to take the quiz!"); return false } else { StartingTime = new Date().valueOf(); RequiredEndingTime = StartingTime + TimeLimit; return true; } } function checkTimeLimit() { var FinishTime = new Date().valueOf(); if ( FinishTime > RequiredEndingTime ) { app.alert("The time limit of \TimeLimit\space minutes has expired, your results will not be submitted, sorry!"); return false; } else return true; } \end{insDLJS} % Check IDs just before we initialize the quiz \renewcommand\priorInitQuiz{if(checkIDs())} % Check the time limit just before we submit, if exceeded, we % do not submit. \renewcommand\priorSubmitQuiz{if(checkTimeLimit())} \useBeginQuizButton[\textColor{0 0 1}\CA{Begin}\AC{}\RC{}\rectW{}] \useEndQuizButton[\textColor{0 0 1}\CA{End}\AC{}\RC{}\rectW{}] % Design the "Quiz": Have the user enter his/her name and SSN (and perhaps % other data to identify the class. % User's First Name \newcommand\FirstName[2]{\textField{IdInfo.Name.First}{#1}{#2}} %\V{First Name} % User's Last Name \newcommand\LastName[2]{\textField{IdInfo.Name.Last}{#1}{#2}} %\V{Last Name}% % User's SSN \newcommand\SSN[2]{\textField[\MaxLen{11} \AA{\AAKeystroke{AFSpecial_Keystroke(3);} \AAFormat{AFSpecial_Format(3);} }]{IdInfo.SSN}{#1}{#2}} \begin{document} \thispagestyle{empty} \begin{flushleft} Quiz~\#3 \hfill \underbar{First Name:\ \FirstName{100pt}{10pt}}\par D. P. Story \hfill\underbar{\rlap{Last Name:}\phantom{First Name:}\ \LastName{100pt}{10pt}}\par Math 101 \hfill \rlap{SSN:}\phantom{First Name:}\ \SSN{100pt}{10pt} \end{flushleft} % Submit this quiz to the ASP, and save it in the Database eqQuiz, % within eqQuiz, there is a table called Quiz1. \eqSubmit{http://localhost/scripts/eqRecord.asp\#FDF}{eqQuiz}{Math101} \begin{quiz}*{Quiz3} Answer each of the following. Passing is 100\%. \begin{questions} \item Name \emph{one} of the two people recognized as a founder of Calculus.\par%\kern2pt \RespBoxTxt{0}{0}{5}{Isaac Newton}{Newton}{I. Newton}% {Gottfried Leibniz}{Leibniz}% \CorrAnsButton{Isaac Newton or Gottfried Leibniz} \item $\displaystyle\frac{d}{dx} e^{x^2}=\RespBox{2*x*e^(x^2)}{4}{.0001}{[0,1]} %\hfill \CorrAnsButton{2*x*e^(x^2)}$%\kern1bp\sqTallyBox \item $\cos(\pi) = \RespBox{-1}{1}{.0001}24\CorrAnsButton{-1}$ \item $\displaystyle\int \sin(x)\,dx = \RespBox{-cos(x)}{4}{.0001}{[0,1]}[indefCompare]\CorrAnsButton{-cos(x)}$ \end{questions} \end{quiz}\quad\ScoreField\currQuiz\CorrButton\currQuiz \noindent Answers: \AnswerField\currQuiz\hfill \newpage \begin{flushleft} Quiz \#4 \hfill Math 101 \end{flushleft} % % You can remove the limitations of the first quiz by saying % \renewcommand\priorInitQuiz{} % \renewcommand\priorSubmitQuiz{} % that is, redefined one or both to be empty. % \eqSubmit{http://localhost/scripts/eqRecord.asp\#FDF}{eqQuiz}{Math101} \begin{quiz}*{Quiz4} Using the discriminant, $b^2-4ac$, respond to each of the following questions. \begin{questions} \item Is the quadratic polynomial $x^2-4x + 3$ irreducible? \begin{answers}4 \Ans0 Yes &\Ans1 No \end{answers} \item Is the quadratic polynomial $2x^2 - 4x + 3 $ irreducible? \begin{answers}4 \Ans1 Yes &\Ans0 No \end{answers} \item How many solutions does the equation $2x^2 - 3x - 2= 0$ have? \begin{answers}4 \Ans0 none &\Ans0 one &\Ans1 two \end{answers} \item $\displaystyle\int_0^\pi \sin(x)\,dx = $\space \RespBox{2}{1}{.0001}{[0,1]}\CorrAnsButton{2} \end{questions} \end{quiz}\quad\ScoreField\currQuiz\CorrButton\currQuiz \noindent Answers: \AnswerField\currQuiz \end{document}