Toto je třetí příspěvek v sérii vytváření online kvízové aplikace pomocí JSP Servlet.
Pokud jste nečetli předchozí příspěvky, projděte si jej prosím, protože vám to usnadní sledování tohoto příspěvku a jeho úplné pochopení.
Část 1 -
Část 2 - Kvízová aplikace - implementace odpočítávání
V tomto příspěvku přidáme do naší kvízové aplikace následující funkce
1. Poskytnutí uživateli možnost zkontrolovat jeho odpovědi po dokončení kvízu
co je rmi v javě
2. Označení odpovědí uživatele jako správné nebo nesprávné
3. Označení nevyzkoušených otázek jako nezodpovězených
Níže je snímek vytvořené stránky s výsledky kvízu.
Stránka s výsledky kvízu
Co dalšího potřebujeme, aby fungovala funkce kontroly?
Uživatel může kvíz dokončit kdykoli, po dokončení kvízu bude mít možnost zkontrolovat své odpovědi. Pokud uživatel na otázku neodpoví a přeskočí ji kliknutím na další tlačítko, zobrazí se tato otázka na stránce kontroly zkoušky jako nezodpovězená.
Abychom uživateli poskytli souhrn kvízu, musíme pouze uložit jeho odpovědi a po jeho dokončení jej porovnat se skutečnou odpovědí na otázku.
Pokud se odpověď uživatele shoduje se správnou odpovědí na otázku, zobrazíme správný symbol jiný křížek (x).
Přidáme nový řadič s názvem ReviewController, který extrahuje všechna data a odešle je na stránku JSP k zobrazení.
Poznámka: Když uživatel klikne na další nebo předchozí tlačítko, načítáme otázky ze souboru XML.
Předpokládejme, že uživatel zahájí kvíz a pokusí se pouze o jednu otázku a poté klikne na tlačítko Dokončit.
co je hashmap a hashtable v java
Nyní na stránce kvízu musíme ukázat všechny otázky s jejími možnostmi a odpovědí uživatele, zda byla správná nebo ne. Protože v tomto scénáři uživatel nedokončí celý kvíz, zbytek 9 otázek se zobrazí jako nezodpovězený.
Když tedy uživatel klikne na Review Quiz, aby viděl jeho odpovědi spolu se správnou odpovědí na tuto otázku, musíme načíst všechny otázky ze souboru XML a jeho správné odpovědi.
Struktura projektu v Eclipse IDE
Poznámka: Právě jsme přidali jeden nový řadič ReviewController.
ReviewController.java
@WebServlet ('/ exam / review') veřejná třída ReviewController rozšiřuje HttpServlet {private static final long serialVersionUID = 1L / ** * @see HttpServlet # HttpServlet () * / public ReviewController () {super () // TODO automaticky generováno konstruktor stub} / ** * @see HttpServlet # doGet (požadavek HttpServletRequest, odpověď HttpServletResponse) * / protected void doGet (požadavek HttpServletRequest, odpověď HttpServletResponse) vyvolá výjimku ServletException, IOException {// TODO automaticky vygenerovaná metoda zkouška) request.getSession (). getAttribute ('currentExam') request.setAttribute ('totalQuestion', exam.getTotalNumberOfQuestions ()) ArrayList reviewQuestionList = nový ArrayList () Dokument dom = exam.getDom () pro (int i = 0iPoznámka: Nastavil jsem všechny požadované informace v ArrayList of QuizQuestion a nastavil ArrayList jako atribut v rozsahu požadavku.
ArrayList reviewQuestionList = nový ArrayList () request.setAttribute ('reviewQuestions', reviewQuestionList)Na stránce JSP musíme pouze načíst hodnoty uložené v atributu reviewQuestions.
Vytvořil jsem stránku JSP nazvanou examReview.jsp, která zobrazí souhrn kvízu.Zobrazení QuizQuestion spolu s možnostmi
Na stránce JSP používáme JSTL c: forEach k iteraci seznamu QuizQuestion, který nastavil ReviewController
$ {counter.count}. $ {question.question}
$ {counter.count}. $ {option}
Zobrazuje se správná odpověď
Všimněte si, že v souboru XML mám uložené možnosti počínaje indexem 0.
Proto jsme přidali jednu, zatímco jsme uživateli ukazovali správnou odpověď, protože je pro uživatele intuitivní.
Správná odpověď: $ {question.correctOptionIndex + 1}Označení otázky nezodpovězené
Uživatel není povinen zkoušet všechny otázky. Může to jednoduše přeskočit kliknutím na další tlačítko. Jak tedy zjistíme, zda byla otázka zodpovězena nebo ne?
Udělal jsem jednu změnu v konstruktoru zkoušky, takže když vytváříme novou zkoušku, pro každou otázku jsme také původně nastavili odpověď uživatele jako -1. Když tedy uživatel zahájí kvíz, budeme mít výběr uživatelů pro každou otázku, i když uživatel klikne na tlačítko Dokončit u jakékoli otázky mezi kvízem.
Pokud ale uživatel na otázku skutečně odpoví, pak -1 bude nahrazeno výběrem uživatele pro tuto otázku.
public Exam (String test, int totalNumberOfQuestions) throws SAXException, ParserConfigurationException, IOException, URISyntaxException {dom = CreateDOM.getDOM (test) for (int i = 0iTakže pokud uživatel neodpoví na otázku a přeskočí na další otázku nebo jednoduše klikne na tlačítko pro dokončení, bude tam počáteční odpověď -1. Na stránce JSP můžeme porovnat, zda je výběr uživatele -1 nebo ne. Pokud je -1, znamená to, že uživatel na tuto otázku neodpověděl. A tuto otázku označíme jako nezodpovězenou.
Nezodpovězeno
Zobrazuje se odpověď uživatele
Pokud uživatel skutečně odpověděl na otázku, původní odpověď -1 bude nahrazena odpovědí uživatele a bude nahrazena 1,2,3 nebo 4, protože pro každou otázku máme 4 možnosti.
Vybrali jste: $ {question.userSelected}
Provádíme test c: if, abychom se ujistili, že uživatel skutečně odpověděl na otázku, a poté zobrazit jeho odpověď.
Označení odpovědi jako správné
Pokud se výběr uživatele a správná odpověď na otázku shodují, zobrazíme obrázek se správnou značkou.
třída pythonu __init__Označení odpovědi jako nesprávné
Jednoduchý test c: pokud je proveden test k porovnání odpovědi uživatele se správnou volbou otázky. Pokud nejsou obě stejné, znamená to, že uživatel odpověděl na otázku nesprávně a my zobrazíme obrázek, který ukazuje křížovou značku.
Kliknutím na tlačítko stažení stáhněte kód.
[buttonleads form_title = ”Stáhnout kód” redirect_url = https: //edureka.wistia.com/medias/q2kgiq4su3/download? media_file_id = 67378724 course_id = 44 button_text = ”Stáhnout kód”]
Máte na nás dotaz? Uveďte to prosím v sekci komentáře a my se vám ozveme.
Související příspěvky: