هذه هي المقالة الثالثة في سلسلة إنشاء تطبيق اختبار عبر الإنترنت باستخدام JSP Servlet.
إذا لم تكن قد قرأت المنشورات السابقة ، يرجى الاطلاع عليها ، لأن ذلك سيسهل عليك متابعة هذا المنشور وفهمه تمامًا.
الجزء الأول -
الجزء 2 - تطبيق الاختبار - تنفيذ مؤقت العد التنازلي
في هذا المنشور ، سنضيف الوظائف التالية إلى تطبيق الاختبار الخاص بنا
1. منح المستخدم خيارًا لمراجعة إجاباته عند الانتهاء من الاختبار
2. تعليم إجابات المستخدم بأنها صحيحة أو غير صحيحة
3. تعليم الأسئلة التي لم تتم الإجابة عليها على أنها لم تتم الإجابة عليها
يوجد أدناه لقطة من صفحة نتيجة الاختبار التي تم إنشاؤها.
صفحة نتيجة الاختبار
ما الذي نطلبه أيضًا حتى تعمل وظيفة المراجعة؟
يمكن للمستخدم إنهاء الاختبار في أي وقت ، وعند الانتهاء من الاختبار ، سيكون لديه خيار مراجعة إجاباته. إذا لم يجيب المستخدم على سؤال وتخطاه بالنقر فوق الزر التالي ، فسيتم عرض هذا السؤال على أنه بدون إجابة في صفحة مراجعة الاختبار.
لتزويد المستخدم بملخص الاختبار ، كل ما يتعين علينا القيام به هو حفظ ردود المستخدم وعندما ينتهي الاختبار ، نقارنه بالإجابة الفعلية للسؤال.
إذا تطابقت استجابة المستخدم مع الإجابة الصحيحة للسؤال ، فإننا نعرض الرمز الصحيح else عبر الرمز (x).
كيفية تكوين الكسوف لجافا
يلقي ضعف كثافة العمليات في جافا
سنضيف وحدة تحكم جديدة تسمى ReviewController ، والتي ستستخرج جميع البيانات وترسلها إلى صفحة JSP لعرضها.
ملاحظة: نجلب الأسئلة من ملف XML عندما ينقر المستخدم على الزر التالي أو السابق.
افترض أن مستخدمًا بدأ اختبارًا وحاول سؤالًا واحدًا فقط ثم نقر على زر إنهاء.
الآن ، في صفحة مراجعة الاختبار ، يتعين علينا عرض جميع الأسئلة بخياراتها وإجابة المستخدم سواء كانت صحيحة أم لا. نظرًا لأن المستخدم في هذا السيناريو لا يكمل الاختبار بالكامل ، فسيتم عرض بقية الأسئلة التسعة على أنها بدون إجابة.
لذلك عندما ينقر المستخدم على 'مراجعة الاختبار' لرؤية إجاباته جنبًا إلى جنب مع الإجابة الصحيحة لهذا السؤال ، يتعين علينا إحضار جميع الأسئلة من ملف XML وإجابتها الصحيحة.
هيكل المشروع في Eclipse IDE
ملاحظة: لقد قمنا فقط بتضمين وحدة تحكم مراجعة جديدة.
ReviewController.java
WebServlet ('/ exam / review') فئة عامة ReviewController توسع HttpServlet {private static final serialVersionUID = 1L / ** * @ see HttpServlet # HttpServlet () * / public ReviewController () {super () // TODO Auto-created كعب المُنشئ} / ** * @ see HttpServlet # doGet (طلب HttpServletRequest ، استجابة HttpServletResponse) * / محمية باطلة doGet (طلب HttpServletRequest ، استجابة HttpServletResponse) يطرح ServletException ، IOException {// TODO Auto-examion stub request.getSession (). getAttribute ('currentExam') request.setAttribute ('totalQuestion'، exam.getTotalNumberOfQuestions ()) مراجعة ArrayListQuestionList = new ArrayList () Document dom = exam.getDom () لـ (int i = 0iملاحظة: لقد قمت بتعيين جميع المعلومات المطلوبة في ArrayList of QuizQuestion وقمت بتعيين ArrayList كسمة في نطاق الطلب.
مراجعة ArrayListQuestionList = new ArrayList () request.setAttribute ('reviewQuestions'، reviewQuestionList)في صفحة JSP ، يتعين علينا فقط استرداد القيم المخزنة في سمة reviewQuestions.
لقد قمت بإنشاء صفحة JSP تسمى examReview.jsp ، والتي ستعرض ملخص الاختبار.عرض QuizQuestion مع الخيارات
في صفحة JSP ، نستخدم JSTL c: forEach للتكرار على قائمة QuizQuestion التي تم تعيينها بواسطة ReviewController
$ {counter.count}. $ {question.question}
$ {counter.count}. $ {option}
يتم عرض الإجابة الصحيحة
لاحظ أنه في ملف XML ، قمت بتخزين الخيارات بدءًا من الفهرس 0.
هذا هو السبب في أننا أضفنا واحدة أثناء عرض الإجابة الصحيحة للمستخدم ، لأن ذلك أمر بديهي للمستخدم.
الإجابة الصحيحة: $ {question.correctOptionIndex + 1}وضع علامة على سؤال دون إجابة
ليس من الضروري أن يجرب المستخدم جميع الأسئلة. يمكنه فقط تخطيها بالنقر فوق الزر التالي. فكيف نعرف هل تمت الإجابة على سؤال أم لا؟
php تحويل الكائن إلى مجموعةلقد أجريت تغييرًا واحدًا في منشئ الاختبار ، بحيث عند إنشاء اختبار جديد ، نقوم أيضًا بتعيين استجابة المستخدم لكل سؤال على أنه -1 في البداية. لذلك ، عندما يبدأ المستخدم الاختبار ، سيكون لدينا اختيار المستخدم لكل سؤال حتى لو نقر المستخدم على زر الإنهاء على أي سؤال بين الاختبار.
ولكن إذا أجاب المستخدم على سؤال فعليًا ، فسيتم استبدال -1 بتحديد المستخدم لهذا السؤال.
يلقي الاختبار العام (اختبار السلسلة ، int totalNumberOfQuestions) SAXException ، ParserConfigurationException ، IOException ، URISyntaxException {dom = CreateDOM.getDOM (test) لـ (int i = 0iلذلك إذا لم يجيب المستخدم على سؤال وتخطى السؤال التالي أو نقر فقط على زر الإنهاء ، فستكون الاستجابة الأولية -1 ستكون موجودة. في صفحة JSP يمكننا مقارنة ما إذا كان اختيار المستخدم هو -1 أم لا. إذا كانت -1 ، فهذا يعني أن المستخدم لم يجيب على هذا السؤال. وسنضع علامة على هذا السؤال على أنه بلا إجابة.
لم يتم الرد عليها
إظهار استجابة المستخدم
إذا كان المستخدم قد أجاب بالفعل على سؤال ، فسيتم استبدال الرد الأولي -1 برد المستخدم وسيتم استبداله بـ 1،2،3 أو 4 ، حيث لدينا 4 خيارات لكل سؤال.
اخترت: $ {question.userSelected}
نجري اختبار c: if للتأكد من أن المستخدم قد أجاب بالفعل على سؤال ثم نعرض استجابة المستخدم.
تعليم الرد على أنه صحيح
إذا تطابق اختيار المستخدم والإجابة الصحيحة على السؤال ، فإننا نعرض صورة تظهر العلامة الصحيحة.
![]()
تعليم الرد على أنه غير صحيح
ج: إذا تم إجراء اختبار لمقارنة استجابة المستخدم بالخيار الصحيح للسؤال. إذا كان كلاهما غير متساويين ، فهذا يعني أن المستخدم قد أجاب على السؤال بشكل غير صحيح ونعرض صورة تظهر علامة متقاطعة.
![]()
انقر فوق زر التنزيل لتنزيل الكود.
[buttonleads form_title = ”Download Code” redirect_url = https: //edureka.wistia.com/medias/q2kgiq4su3/download؟ media_file_id = 67378724 course_id = 44 button_text = 'تنزيل الكود']
لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات وسنعاود الاتصال بك.
المنشورات ذات الصلة: