นี่เป็นโพสต์ที่สามในชุดการสร้างแอปพลิเคชันแบบทดสอบออนไลน์โดยใช้ JSP Servlet
หากคุณยังไม่ได้อ่านโพสต์ก่อนหน้านี้โปรดอ่านให้จบเพราะจะช่วยให้คุณติดตามโพสต์นี้ได้ง่ายขึ้นและเข้าใจอย่างถ่องแท้
ส่วนที่ 1 -
ส่วนที่ 2 - แอปพลิเคชันแบบทดสอบ - การใช้งานตัวจับเวลาถอยหลัง
ในโพสต์นี้เราจะเพิ่มฟังก์ชันต่อไปนี้ในแอปพลิเคชันแบบทดสอบของเรา
1. ให้ผู้ใช้มีตัวเลือกในการตรวจสอบคำตอบของเขาในการจบแบบทดสอบ
2. ทำเครื่องหมายคำตอบของผู้ใช้ว่าถูกต้องหรือไม่ถูกต้อง
3. ทำเครื่องหมายคำถามที่ยังไม่ได้ตอบว่ายังไม่มีคำตอบ
ด้านล่างนี้คือภาพรวมของหน้าผลลัพธ์แบบทดสอบที่สร้างขึ้น
หน้าผลการทดสอบ
เราต้องการอะไรอีกบ้างเพื่อให้ฟังก์ชันการตรวจสอบทำงานได้
ผู้ใช้สามารถจบแบบทดสอบได้ตลอดเวลาเมื่อจบแบบทดสอบเขาจะมีตัวเลือกในการตรวจสอบคำตอบของเขา หากผู้ใช้ไม่ตอบคำถามและข้ามไปโดยคลิกที่ปุ่มถัดไปคำถามนั้นจะแสดงเป็นยังไม่มีคำตอบในหน้าตรวจสอบการตรวจสอบ
เพื่อให้ผู้ใช้สรุปคำถามสิ่งที่เราต้องทำคือบันทึกคำตอบของผู้ใช้และเมื่อเขาทำแบบทดสอบเสร็จแล้วให้เปรียบเทียบกับคำตอบจริงของคำถาม
หากคำตอบของผู้ใช้ตรงกับคำตอบที่ถูกต้องของคำถามเราจะแสดงสัญลักษณ์ else cross (x) ที่ถูกต้อง
เราจะเพิ่มคอนโทรลเลอร์ใหม่ที่เรียกว่า ReviewController ซึ่งจะดึงข้อมูลทั้งหมดและส่งไปยังเพจ JSP เพื่อแสดง
หมายเหตุ: เรากำลังดึงคำถามจากไฟล์ XML เมื่อผู้ใช้คลิกที่ปุ่มถัดไปหรือปุ่มก่อนหน้า
สมมติว่าผู้ใช้เริ่มตอบคำถามและลองเพียงคำถามเดียวจากนั้นคลิกที่ปุ่ม Finish
ตอนนี้ในหน้าตรวจสอบคำถามเราต้องแสดงคำถามทั้งหมดพร้อมตัวเลือกและคำตอบของผู้ใช้ว่าถูกต้องหรือไม่ เนื่องจากในสถานการณ์นี้ผู้ใช้ตอบคำถามไม่ครบทั้งหมด 9 คำถามที่เหลือจะแสดงว่ายังไม่มีคำตอบ
ดังนั้นเมื่อผู้ใช้คลิกที่ตรวจสอบแบบทดสอบเพื่อดูคำตอบของเขาพร้อมกับคำตอบที่ถูกต้องสำหรับคำถามนั้นเราจะต้องดึงคำถามทั้งหมดจากไฟล์ XML และคำตอบที่ถูกต้อง
ผสานซอร์สโค้ด c ++ เรียงลำดับ
โครงสร้างโครงการใน Eclipse IDE
หมายเหตุ: เราได้รวม ReviewController ตัวควบคุมใหม่เพียงตัวเดียว
ReviewController.java
@WebServlet ('/ exam / review') คลาสสาธารณะ ReviewController ขยาย HttpServlet {private static final long serialVersionUID = 1L / ** * @see HttpServlet # HttpServlet () * / public ReviewController () {super () // TODO สร้างอัตโนมัติ ตัวสร้างต้นขั้ว} / ** * @see HttpServlet # doGet (คำขอ HttpServletRequest, การตอบสนอง HttpServletResponse) * / โมฆะที่ได้รับการป้องกัน doGet (คำขอ HttpServletRequest, การตอบสนอง HttpServletResponse) พ่น ServletException, IOException {// TOD Exam ที่สร้างขึ้นโดยอัตโนมัติ request.getSession (). getAttribute ('currentExam') request.setAttribute ('totalQuestion', exam.getTotalNumberOfQuestions ()) ArrayList reviewQuestionList = new ArrayList () Document dom = exam.getDom () สำหรับ (int i = 0iหมายเหตุ: ฉันได้ตั้งค่าข้อมูลที่จำเป็นทั้งหมดใน ArrayList ของ QuizQuestion และตั้ง ArrayList นั้นเป็นแอตทริบิวต์ในขอบเขตคำขอ
ArrayList reviewQuestionList = 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
รหัส java เพื่อเชื่อมต่อกับ mysqlนั่นคือเหตุผลที่เราเพิ่มคำตอบในขณะที่แสดงคำตอบที่ถูกต้องให้กับผู้ใช้เนื่องจากเป็นเหตุผลที่ผู้ใช้เข้าใจง่าย
คำตอบที่ถูกต้อง: $ {question.correctOptionIndex + 1}ทำเครื่องหมายคำถามที่ยังไม่มีคำตอบ
ผู้ใช้ไม่จำเป็นต้องถามคำถามทั้งหมด เขาสามารถข้ามได้โดยคลิกที่ปุ่มถัดไป แล้วเราจะทราบได้อย่างไรว่าคำถามได้รับคำตอบหรือไม่?
ฉันได้ทำการเปลี่ยนแปลงหนึ่งอย่างในตัวสร้างการสอบดังนั้นเมื่อเราสร้างการสอบใหม่สำหรับแต่ละคำถามเราจึงตั้งค่าการตอบกลับของผู้ใช้เป็น -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 เพื่อให้แน่ใจว่าผู้ใช้ตอบคำถามจริงจากนั้นจึงแสดงคำตอบของผู้ใช้
ทำเครื่องหมายคำตอบว่าถูกต้อง
หากการเลือกของผู้ใช้และคำตอบที่ถูกต้องสำหรับคำถามนั้นตรงกันเราจะแสดงภาพที่แสดงเครื่องหมายที่ถูกต้อง
การทำเครื่องหมายคำตอบว่าไม่ถูกต้อง
การทดสอบ 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 =” Download Code”]
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป
กระทู้ที่เกี่ยวข้อง: