240 likes | 382 Views
SEVEUR DE QCM (ASP+ACCESS). Par Hichem GUERROUI Et Hakki AVSAR. PLAN. Partie Access Partie ASP Démonstration. Partie Access. Présentation de la base de donnée Exploitation de la base. Présentation de la base (qcmdb1.mdb). Présentation de la base. 6 Tables structurées en 2 parties
E N D
SEVEUR DE QCM (ASP+ACCESS) Par Hichem GUERROUI Et Hakki AVSAR
PLAN • Partie Access • Partie ASP • Démonstration
Partie Access • Présentation de la base de donnée • Exploitation de la base
Présentation de la base • 6 Tables structurées en 2 parties • Structure d’un Quiz (4 Tables) • Gestion des étudiants et des notes (2 Tables) • Pas de lien entre les Tables STAT et QUIZS • Suppression d’un Quiz sans supprimer les notes correspondantes
Structure d’un Quiz • Un Quiz est composé de questions et de réponses • les tables QUESTIONS REPONSES • Une question peut paraître dans plusieurs Quizs • L’association ENSEMBLE • Gestion d’une bibliothèque de questions
Partie ASP • Page de présentation (HTML) • Accueil • Le QUIZ • Résultats • Enregistrement dans la base de donnée
Page de présentation • Invitation à entrer le nom et le prénom de l’étudiant en respectant la syntaxe • Majuscules et minuscules ne sont pas importantes
Après Action sur le boutonenvoyer • Envoi du champ Nom à la page suivante • Sur cette page, une série de Test : • Re-direction vers Default.htm si le champ Nom est vide • Après Interrogation de la base de données: • Re-direction vers Default.htm si l’utilisateur n’est pas dans la base
Page d’accueil(Welcome.asp) Affichage du Nom de l’utilisateur Affichage des notes concernant L’utilisateur Affichage des Quizs déjà effectués (Seulement les Quizs présents dans la liste déroulante)
Page d’accueil(Welcome.asp) Cas ou l’utilisateur n’a jamais répondu à un Quiz <select name="quiz_num"> <% Do While Not RS2.EOF %> <option value="<%=RS2("quiz_num")%>"> <%=RS2("quiz_nom")%> </option> <%RS2.MoveNext Loop%> Champs envoyés: N°ETUDIANT N°QCM Liste déroulante contenant les Quizs proposés
Le QUIZ(quiz.asp) Nom du quiz Nb de questions Boucle pour les Questions Boucle pour les réponses
Le QUIZ(Code ASP questions & réponses) <%i=1%> <% Do While Not RS.EOF %> ... <%quest_num = UCase(RS("quest_num"))%> <b><font size="4"><%=i%>_ <%= UCase(RS("quest_txt"))%> </font></b> ... <% Do While Not RS2.EOF %><br> <%rep_num = UCase(RS2("rep_num"))%> <INPUT type=radio value= <%=rep_num%> name=<%=i%>> <%= UCase(RS2("rep_txt"))%> <%RS2.MoveNext Loop%> <%i=i+1%> ... <%RS.MoveNext Loop%>
Le QUIZ • La page Quiz.asp envoi comme informations: • N°QCM + N°Étudiant • N° des Réponses
Le QUIZ(envoi du formulaire) Création d’une seconde boucle question avec des champs cachés contenant la valeur « 0 » Rep=Request.Form(i) Récupération des numéros de réponses en utilisant le numéro de champ Cette boucle va forcer l’utilisateur à répondre à toutes les questions
Le QUIZ(Boucle de re-direction) <%z=0%> <% Do While Not RS.EOF %> <input type="hidden" name="bob<%=z%>" value=0><%z=z+1%> <%RS.MoveNext Loop%>
Page de Réponses(reponses.asp) Réponses du serveur Reprise des questions et des réponses sélectionnées Bilan du quiz
Test des Réponses Récupération des champs réponses <% Do While Not RS.EOF %> <b><%=i%>_ <%=UCase(RS("Quest_txt"))%> </b> <br> <%bob=Request.Form(j) If bob=0 then Response.Redirect("avertissement.asp?quiz_num="&quiz_num&"&etud_num="&etud_num&"") end if%> ... Vous avez répondu : … <%=UCase(RS2("rep_txt"))%> … … <% If reponse = "VRAI" Then k=k+1 End If %> ... <%RS.MoveNext Loop%> Test si le champ de la réponse est nul Comptage des points Envoi des champs à la page suivante: N° QCM N° ETUDIANT NOTE sur 20
Page de Résultats(fini.asp) Page contenant l’ instruction INSERT TO pour écrire dans la base de données
Test du système et conclusion • Le système comporte néanmoins certains défauts: • Possibilité de revenir sur la page quiz afin de modifier les réponses (solution : ouvrir une seconde fenêtre sans barre de tache) • Le classement des étudiants n’ est pas numéroté • Les moyennes affichées sur les pages ASP présentent trop de chiffres après la virgule