オンラインクイズアプリケーション:クイズレビュー



この投稿では、オンラインクイズアプリケーションにクイズレビュー機能を追加しました。ユーザーは、すべてのクイズの質問に対する正解を確認できます。

これは、JSPサーブレットを使用してオンラインクイズアプリケーションを作成するシリーズの3番目の投稿です。

以前の投稿をまだ読んでいない場合は、この投稿を読んでください。この投稿をフォローして完全に理解しやすくなります。





パート1 -

パート2 - クイズアプリケーション–カウントダウンタイマーの実装



この投稿では、クイズアプリケーションに次の機能を追加します

1.クイズの終了時に回答を確認するオプションをユーザーに提供する

2.ユーザーの応答を正しいまたは正しくないものとしてマークする



3.未試行の質問を未回答としてマークする

以下は、作成されたクイズ結果ページのスナップショットです。

クイズ結果ページ

レビュー機能を機能させるには、他に何が必要ですか?

ユーザーはいつでもクイズを終了できます。クイズを終了すると、回答を確認するオプションがあります。ユーザーが質問に回答せず、次のボタンをクリックしてスキップした場合、その質問は試験レビューページに未回答として表示されます。

ユーザーにクイズの概要を提供するには、ユーザーの回答を保存し、ユーザーがクイズを終了したら、それを質問の実際の回答と比較するだけです。

ユーザーの回答が質問の正解と一致する場合は、正しい記号を表示します。それ以外の場合は、クロス(x)記号を表示します。

オンラインクイズアプリケーション

ReviewControllerという新しいコントローラーを追加します。これにより、すべてのデータが抽出され、JSPページに送信されて表示されます。

注:ユーザーが次または前のボタンをクリックすると、XMLファイルから質問が取得されます。

ユーザーがクイズを開始し、質問を1つだけ試行してから、[完了]ボタンをクリックするとします。

ここで、クイズのレビューページに、すべての質問とそのオプション、およびそれが正しかったかどうかに関係なくユーザーの回答を表示する必要があります。このシナリオでは、ユーザーはクイズ全体を完了していないため、残りの9つの質問は未回答として表示されます。

そのため、ユーザーが[レビュークイズ]をクリックして、その質問の正解とともに自分の回答を表示する場合、XMLファイルとその正解からすべての質問をフェッチする必要があります。

EclipseIDEのプロジェクト構造

注:新しいコントローラーReviewControllerが1つ含まれています。

ReviewController.java

@WebServlet( '/ Exam / review')public class ReviewController extends HttpServlet {private static final long serialVersionUID = 1L / ** * @see HttpServlet#HttpServlet()* / public ReviewController(){super()// TODO自動生成コンストラクタスタブ} / ** * @see HttpServlet#doGet(HttpServletRequest request、HttpServletResponse response)* / protected void doGet(HttpServletRequest request、HttpServletResponse response)throws ServletException、IOException {// TODO自動生成されたメソッドスタブExamexam =(Exam) request.getSession()。getAttribute( 'currentExam')request.setAttribute( 'totalQuestion'、exam.getTotalNumberOfQuestions())ArrayList reviewQuestionList = new ArrayList()Document dom = Exam.getDom()for(int i = 0i

注:QuizQuestionのArrayListに必要なすべての情報を設定し、そのArrayListをリクエストスコープの属性として設定しました。

ArrayList reviewQuestionList = new ArrayList()request.setAttribute( 'reviewQuestions'、reviewQuestionList)

JSPページでは、reviewQuestions属性に格納されている値を取得するだけです。
クイズの概要を表示するexamReview.jspというJSPページを作成しました。

UbuntuにHadoopを設定する

オプションとともにQuizQuestionを表示する

JSPページでは、JSTL c:forEachを使用して、ReviewControllerによって設定されたQuizQuestionのリストを反復処理しています。

  
$ {counter.count}。 $ {question.question}

$ {counter.count}。 $ {option}

正解を表示

XMLファイルにインデックス0から始まるオプションを保存していることに注意してください。

そのため、ユーザーにとって直感的であるため、ユーザーに正解を示しながら1つ追加しました。

正解:$ {question.correctOptionIndex + 1} 

質問に未回答のマークを付ける

ユーザーがすべての質問を試みることは必須ではありません。次のボタンをクリックするだけでスキップできます。では、質問が回答されたかどうかをどのように確認するのでしょうか。

Examコンストラクターに1つの変更を加えたため、新しいExamを作成するときに、質問ごとに、最初はユーザーの応答も-1に設定します。そのため、ユーザーがクイズを開始すると、ユーザーがクイズの間にある質問の終了ボタンをクリックしただけでも、質問ごとにユーザーが選択できます。

ただし、ユーザーが実際に質問に回答した場合、-1はその質問に対するユーザーの選択に置き換えられます。

public Exam(String test、int totalNumberOfQuestions)throws SAXException、ParserConfigurationException、IOException、URISyntaxException {dom = CreateDOM.getDOM(test)for(int i = 0i

したがって、ユーザーが質問に回答せずに次の質問にスキップするか、終了ボタンをクリックした場合、最初の応答は-1になります。 JSPページでは、ユーザーの選択が-1であるかどうかを比較できます。 -1の場合、ユーザーがその質問に回答しなかったことを意味します。そして、その質問を未回答としてマークします。

未回答 

ユーザーの応答を表示する

ユーザーが実際に質問に回答した場合、最初の回答-1はユーザーの回答に置き換えられ、質問ごとに4つのオプションがあるため、1、2、3、または4に置き換えられます。

選択したもの:$ {question.userSelected} 

ユーザーが実際に質問に回答したことを確認してから、ユーザーの回答を表示するために、c:ifテストを行っています。

応答を正しいものとしてマークする

質問に対するユーザーの選択と正解が一致する場合、正しいマークを示す画像が表示されます。

   

応答を不正としてマークする

簡単なc:ifテストを行って、ユーザーの回答を質問の正しいオプションと比較します。両方が等しくない場合は、ユーザーが質問に誤って回答したことを意味し、クロスマークを示す画像が表示されます。

   

ダウンロードボタンをクリックして、コードをダウンロードします。

[buttonleads form_title =”ダウンロードコード” redirect_url = https://edureka.wistia.com/medias/q2kgiq4su3/download?media_file_id = 67377824course_id = 44 button_text =”ダウンロードコード”]

質問がありますか?コメント欄にご記入ください。折り返しご連絡いたします。

関連記事: