Maison  >  Article  >  développement back-end  >  Comment implémenter la fonction de classement des réponses dans les quiz en ligne

Comment implémenter la fonction de classement des réponses dans les quiz en ligne

王林
王林original
2023-09-24 14:57:031368parcourir

Comment implémenter la fonction de classement des réponses dans les quiz en ligne

Comment mettre en œuvre la fonction de classement des réponses dans les questions à réponse en ligne

Avec le développement de la technologie Internet, de plus en plus d'établissements d'enseignement et de plateformes d'éducation en ligne ont commencé à utiliser des systèmes de réponse en ligne pour l'enseignement et l'évaluation. Dans ces systèmes de réponse en ligne, la fonction de classement des réponses est devenue un indicateur important pour mesurer les progrès d'apprentissage et la compétitivité des étudiants. Cet article explique comment utiliser le code pour implémenter la fonction de classement des questions dans les quiz en ligne.

1. Concevoir une base de données

Tout d’abord, nous devons concevoir une base de données pour stocker les informations sur les réponses et les données de classement des étudiants. Supposons que nous ayons deux tableaux : Étudiant et Score. La table Étudiant stocke les informations de base des étudiants, notamment l'identifiant de l'étudiant, le nom et la classe ; la table Score stocke les informations sur les résultats des étudiants, notamment l'identifiant de l'étudiant, le score de réponse et le temps de réponse. De cette façon, nous pouvons calculer le score total des étudiants et les classer via le champ score du tableau Score.

2. Implémenter la fonction de classement des réponses

Avant d'implémenter la fonction de classement des réponses, nous devons obtenir les données de score de réponse des étudiants et les calculer. Ceci peut être réalisé grâce au code suivant :

import pymysql

# 连接数据库
db = pymysql.connect(host='localhost', user='root', password='123456', db='test')

# 创建游标
cursor = db.cursor()

# 查询学生答题得分
sql = "SELECT student_id, SUM(score) AS total_score FROM score GROUP BY student_id"

try:
    # 执行SQL语句
    cursor.execute(sql)
    
    # 获取所有学生的答题得分数据
    results = cursor.fetchall()
    
    # 创建排行榜列表
    leaderboard = []
    
    # 遍历每个学生的得分数据
    for row in results:
        student_id = row[0]
        total_score = row[1]
        
        # 将学生ID和总得分添加到排行榜列表中
        leaderboard.append((student_id, total_score))
        
    # 按总得分降序排序排行榜
    leaderboard.sort(key=lambda x: x[1], reverse=True)
    
    # 输出排行榜数据
    for i, item in enumerate(leaderboard):
        print(f'第{i+1}名:学生ID = {item[0]},总得分 = {item[1]}')
        
except Exception as e:
    print(f'查询数据库出错:{e}')

# 关闭数据库连接
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, nous interrogeons la table Score pour obtenir les données de score de réponse de chaque élève. Ensuite, stockez le numéro d'étudiant et le score total dans la liste des classements, et triez-les par ordre décroissant en fonction du score total. Enfin, parcourez la liste des classements et affichez les données du classement.

3. Mettre à jour les données de classement

Afin de garantir la nature en temps réel des classements, nous devons également mettre à jour les données de classement en temps opportun lorsque les résultats des réponses des étudiants sont mis à jour. Ceci peut être réalisé grâce au code suivant :

import pymysql

def update_leaderboard(student_id):
    # 连接数据库
    db = pymysql.connect(host='localhost', user='root', password='123456', db='test')
    
    # 创建游标
    cursor = db.cursor()
    
    # 查询学生答题得分
    sql = f"SELECT SUM(score) AS total_score FROM score WHERE student_id = {student_id}"
    
    try:
        # 执行SQL语句
        cursor.execute(sql)
        
        # 获取学生的答题得分数据
        result = cursor.fetchone()
        
        if result:
            total_score = result[0]
            
            # 更新排行榜数据
            sql = f"UPDATE leaderboard SET total_score = {total_score} WHERE student_id = {student_id}"
            cursor.execute(sql)
            
        # 提交事务
        db.commit()
        
    except Exception as e:
        print(f'更新排行榜数据出错:{e}')
        
        # 回滚事务
        db.rollback()
        
    # 关闭数据库连接
    db.close()

Le code ci-dessus définit une fonction nommée update_leaderboard, qui est utilisée pour mettre à jour les données de classement de l'étudiant spécifié. Tout d’abord, obtenez les données sur les scores de réponse des élèves en interrogeant le tableau des scores. Ensuite, mettez à jour les données de score dans le tableau des classements.

Ce qui précède présente les étapes de base et des exemples de code pour implémenter la fonction de classement des questions dans la réponse aux questions en ligne. Grâce au code ci-dessus, nous pouvons réaliser le calcul et le classement des scores de réponse des étudiants, et mettre à jour les données de classement si nécessaire, réalisant ainsi la fonction de classement des réponses dans les réponses en ligne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn