Internetinė viktorinos programa: viktorinos apžvalga



Šiame įraše mes pridėjome viktorinos peržiūros funkciją prie mūsų internetinės viktorinos programos. Vartotojas gali pamatyti teisingus atsakymus į visus viktorinos klausimus.

Tai yra trečiasis internetinės viktorinos programos kūrimo naudojant „JSP Servlet“ serijos įrašas.

Jei neskaitėte ankstesnių įrašų, prašau pereiti, nes taip jums bus lengviau sekti šį įrašą ir jį suprasti.





1 dalis -

ką veikia „Linux“ administratorius

2 dalis - Viktorinos programa - laikmačio įgyvendinimas



Šiame įraše prie savo viktorinos programos pridėsime šias funkcijas

1. Suteikti vartotojui galimybę peržiūrėti jo atsakymus užbaigus testą

2. Pažymėti vartotojo atsakymus kaip teisingus ar neteisingus



3. Neišbandytų klausimų pažymėjimas kaip neatsakytų

Žemiau pateikiamas sukurto testo rezultatų puslapio momentinis vaizdas.

Viktorinos rezultatų puslapis

Ko dar reikia, kad peržiūros funkcija veiktų?

Vartotojas gali užbaigti viktoriną bet kada, baigęs viktoriną, jis turės galimybę peržiūrėti savo atsakymus. Jei vartotojas neatsako į klausimą ir praleidžia jį spustelėdamas kitą mygtuką, egzamino peržiūros puslapyje tas klausimas bus rodomas kaip neatsakytas.

Norėdami pateikti vartotojui viktorinos santrauką, viskas, ką turime padaryti, yra išsaugoti vartotojo atsakymus ir, kai jis baigs viktoriną, palyginkite ją su tikruoju atsakymu į klausimą.

Jei vartotojo atsakymas sutampa su teisingu atsakymu į klausimą, tada rodomas teisingas simbolis „kitas kryžius“ (x).

Internetinė viktorinos programa

Pridėsime naują valdiklį, vadinamą „ReviewController“, kuris ištrauks visus duomenis ir nusiųs juos į JSP puslapį parodyti.

Pastaba: Mes gauname klausimus iš XML failo, kai vartotojas spustelėja kitą arba ankstesnį mygtuką.

Tarkime, kad vartotojas pradeda viktoriną ir bando tik vieną klausimą, tada paspaudžia mygtuką Baigti.

Dabar viktorinos peržiūros puslapyje turime parodyti visus klausimus su jo parinktimis ir vartotojo atsakymą, ar jis buvo teisingas, ar ne. Kadangi pagal šį scenarijų vartotojas neužbaigia visos viktorinos, likę 9 klausimai bus rodomi kaip neatsakyti.

Taigi, kai vartotojas spustelėja „Review Quiz“, norėdamas pamatyti savo atsakymus ir teisingą atsakymą į šį klausimą, turime išsikviesti visus klausimus iš XML failo ir teisingo jo atsakymo.

Projekto struktūra „Eclipse IDE“

Pastaba: ką tik įtraukėme vieną naują valdiklį „ReviewController“.

ReviewController.java

@WebServlet ('/ exam / review') viešosios klasės „ReviewController“ pratęsia „HttpServlet“ {private static final long serialVersionUID = 1L / ** * @see HttpServlet # HttpServlet () * / public ReviewController () {super () // TODO Automatiškai sukurtas konstruktoriaus stub} / ** * @ See HttpServlet # doGet (HttpServletRequest request, HttpServletResponse response) * / protected void doGet (HttpServletRequest request, HttpServletResponse response) meta ServletException, IOException request.getSession (). getAttribute ('currentExam') request.setAttribute ('totalQuestion', exam.getTotalNumberOfQuestions ()) ArrayList reviewQuestionList = new ArrayList () Document dom = exam.getDom () for (int i = 0i

Pastaba: Aš nustatiau visą reikiamą informaciją „QuizQuestion“ „ArrayList“ ir nustatiau tą „ArrayList“ kaip užklausos srities atributą.

išanalizuoti xml failą Java
ArrayList reviewQuestionList = new ArrayList () request.setAttribute ('reviewQuestions', reviewQuestionList)

JSP puslapyje turime tiesiog nuskaityti atribute reviewQuestions saugomas vertes.
Sukūriau JSP puslapį, pavadintą examReview.jsp, kuriame bus rodoma viktorinos santrauka.

Rodomas „QuizQuestion“ kartu su parinktimis

JSP puslapyje mes naudojame JSTL c: forEach pakartoti „QuizQuestion“ sąrašą, kurį nustatė „ReviewController“

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

$ {counter.count}. $ {option}

Rodomas teisingas atsakymas

Atkreipkite dėmesį, kad XML faile aš išsaugojau parinktis, pradedant nuo 0 indekso.

Štai kodėl mes pridėjome vieną, rodydami teisingą atsakymą vartotojui, nes tai vartotojui yra intuityvu.

Teisingas atsakymas: $ {question.correctOptionIndex + 1} 

Klausimo pažymėjimas neatsakytas

Vartotojui nėra privaloma išbandyti visus klausimus. Jis gali tiesiog praleisti spustelėdamas kitą mygtuką. Taigi, kaip sužinoti, ar į klausimą buvo atsakyta, ar ne?

Egzamino konstruktoriuje atlikau vieną pakeitimą, kad kurdami naują egzaminą kiekvienam klausimui naudotojo atsakymą taip pat nustatytume iš pradžių kaip -1. Taigi, kai vartotojas pradeda viktoriną, mes turėsime vartotojo pasirinkimą kiekvienam klausimui, net jei vartotojas tiesiog spustelės mygtuką „Baigti“ bet kuriuo klausimu tarp viktorinos.

Bet jei vartotojas iš tikrųjų atsakys į klausimą, -1 bus pakeistas vartotojo pasirinktu klausimu.

viešasis egzaminas (eilutės testas, int totalNumberOfQuestions) išmeta (int i = 0i) SAXException, ParserConfigurationException, IOException, URISyntaxException {dom = CreateDOM.getDOM (test)

Taigi, jei vartotojas neatsakys į klausimą ir pereis prie kito klausimo arba tiesiog spustelės mygtuką „Baigti“, pradinis atsakymas -1 bus. JSP puslapyje galime palyginti, ar vartotojo pasirinkimas yra -1, ar ne. Jei jis yra -1, tai reiškia, kad vartotojas neatsakė į šį klausimą. Ir tą klausimą pažymėsime kaip neatsakytą.

mano sql pamokos pradedantiesiems
Neatsakyta 

Rodomas vartotojo atsakymas

Jei vartotojas iš tikrųjų atsakė į klausimą, pradinis atsakymas -1 bus pakeistas vartotojo atsakymu ir jis bus pakeistas 1,2,3 arba 4, nes kiekvienam klausimui turime 4 galimybes.

Jūs pasirinkote: $ {question.userSelected} 

Atliekame „c: if“ testą, kad įsitikintume, jog vartotojas iš tikrųjų atsakė į klausimą, ir tada pateikite vartotojo atsakymą.

Atsakymo pažymėjimas kaip teisingas

Jei vartotojo pasirinkimas ir teisingas atsakymas į klausimą sutampa, pateikiame vaizdą, kuriame rodomas teisingas žymėjimas.

   

Atsakymo pažymėjimas kaip neteisingas

Paprastas c: jei atliekamas bandymas palyginti vartotojo atsakymą su teisingu klausimo variantu. Jei abu nėra lygūs, tai reiškia, kad vartotojas neteisingai atsakė į klausimą ir mes rodome vaizdą, kuriame rodomas kryžminis ženklas.

   

Norėdami atsisiųsti kodą, spustelėkite mygtuką atsisiųsti.

[buttonleads form_title = „Atsisiųsti kodą“ redirect_url = https: //edureka.wistia.com/medias/q2kgiq4su3/download? media_file_id = 67378724 course_id = 44 button_text = ”Atsisiųsti kodą”]

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime.

Susijusios žinutės: