Position actuelle: Accueil> Derniers articles> Explication détaillée de la mise en œuvre de la fonction de classement des réponses aux questions en ligne PHP

Explication détaillée de la mise en œuvre de la fonction de classement des réponses aux questions en ligne PHP

M66 2025-10-31

Comment implémenter la fonction de classement des questions-réponses dans le système de réponse aux questions en ligne

Avec le développement de l'éducation en ligne, de plus en plus de plateformes éducatives doivent utiliser des systèmes de questions-réponses en ligne pour évaluer les progrès d'apprentissage et la compétitivité des étudiants. Parmi eux, la fonction de classement des réponses est devenue un outil important pour mesurer les performances des élèves. Cet article présentera la méthode spécifique de mise en œuvre de la fonction de classement des réponses.

base de données de conception

Premièrement, une base de données doit être conçue pour stocker les informations sur les réponses des étudiants et les données de classement. Supposons que nous ayons deux tableaux : Étudiant et Score. La table Étudiant stocke les informations de base des étudiants, notamment leur carte d'étudiant, leur nom et leur classe ; le tableau des scores stocke les informations sur les résultats des réponses des étudiants, notamment l'identifiant de l'étudiant, le score de réponse et le temps de réponse. Grâce au champ score du tableau Score, le score total des étudiants peut être calculé et classé.

Implémenter la fonction de classement des réponses

Avant de mettre en œuvre la fonction de classement, les données de réponse des étudiants doivent être obtenues et calculées. L'exemple de code est le suivant :

 importerpymysql

# Connectez-vous à la base de données db = pymysql.connect(host='localhost', user='root', password='123456', db='test')

# Créer un curseur curseur = db.cursor()

# Requête du score de réponse de l'étudiant sql = "SELECT student_id, SUM(score) AS total_score FROM score GROUP BY student_id"

essayer:
    #Exécuter l'instruction SQL curseur.execute(sql)

    # Obtenez les données de score de réponse de tous les résultats des étudiants = curseur.fetchall()

    #Créer une liste de classement leaderboard = []

    # Parcourez les données de score de chaque élève pour la ligne des résultats :
        student_id = ligne[0]
        total_score = ligne[1]

        # Ajoutez la carte d'étudiant et le score total à la liste des classements leaderboard.append((student_id, total_score))

    # Trier le classement par ordre décroissant par score total leaderboard.sort(key=lambda x: x[1], reverse=True)

    # Données de classement de sortie pour i, élément dans enumerate (classement) :
        print(f'{i+1}ième place : carte d'étudiant = {item[0]}, score total = {item[1]}')

sauf exception comme e :
    print(f'Erreur lors de l'interrogation de la base de données : {e}')

# Ferme la connexion à la base de données db.close()

Le code ci-dessus utilise la bibliothèque pymysql de Python pour se connecter à la base de données et exécuter des instructions SQL. Tout d'abord, le tableau des scores est interrogé pour obtenir les scores des réponses des étudiants, l'identifiant de l'étudiant et le score total sont stockés dans la liste des classements, puis triés par score total par ordre décroissant, et enfin les données de classement sont sorties.

Mettre à jour les données de classement

Afin de maintenir la nature en temps réel de la liste de classement, les données de classement doivent être mises à jour au moment où les résultats des réponses des étudiants sont mis à jour. L'exemple de code est le suivant :

 importerpymysql

def update_leaderboard(student_id) :
    # Connectez-vous à la base de données db = pymysql.connect(host='localhost', user='root', password='123456', db='test')

    # Créer un curseur curseur = db.cursor()

    # Interroger les résultats des réponses des étudiants sql = f"SELECT SUM(score) AS total_score FROM score WHERE student_id = {student_id}"

    essayer:
        #Exécuter l'instruction SQL curseur.execute(sql)

        # Obtenez le résultat des données de réponse de l'élève = Curseur.fetchone()

        si résultat :
            total_score = résultat[0]

            #Mettre à jour les données du classement sql = f"MISE À JOUR du classement SET total_score = {total_score} WHERE student_id = {student_id}"
            curseur.execute(sql)

        # Valider la transaction db.commit()

    sauf exception comme e :
        print(f'Erreur lors de la mise à jour des données de classement : {e}')

        #Transaction d'annulation db.rollback()

    # Ferme la connexion à la base de données db.close()

Le code ci-dessus définit la fonction update_leaderboard, qui est utilisée pour mettre à jour les données de classement de l'étudiant spécifié. Obtenez les scores des réponses des élèves en interrogeant le tableau des scores et mettez-les à jour dans le tableau du classement pour garantir la nature en temps réel des données de classement.

Résumer

Cet article présente le processus complet de mise en œuvre des classements de réponses dans un système de réponse en ligne, y compris la conception de bases de données, l'acquisition et le tri des données de classement, ainsi que les méthodes de mise en œuvre pour mettre à jour les données de classement en temps réel. Grâce à ces étapes, les développeurs peuvent facilement calculer et classer les scores de réponse des étudiants, améliorant ainsi l'interactivité et la compétitivité du système de réponse en ligne.