离校管理系统是高校管理学生离校申请的重要工具。为了提高学生的积极性和参与度,我们决定在系统中加入排行榜功能。排行榜可以展示每个学生在特定指标上的排名情况,如离校申请的效率、响应速度等。
数据库设计
首先,我们需要在数据库中创建一个名为`StudentRank`的表来存储排行榜所需的数据。表结构如下:
CREATE TABLE StudentRank ( student_id INT PRIMARY KEY, name VARCHAR(50), score INT, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
后端开发
接下来,我们使用Python Flask框架作为后端服务。以下是一个简单的API,用于更新学生的排行榜数据:
from flask import Flask, request, jsonify from datetime import datetime app = Flask(__name__) @app.route('/update_score', methods=['POST']) def update_score(): data = request.json student_id = data.get('student_id') score = data.get('score') # 更新或插入数据到StudentRank表 with db.cursor() as cursor: cursor.execute( "INSERT INTO StudentRank (student_id, name, score) VALUES (%s, %s, %s) " "ON DUPLICATE KEY UPDATE score=%s, updated_at=NOW();", (student_id, data.get('name'), score, score) ) db.commit() return jsonify({"message": "Score updated successfully"}), 200 if __name__ == '__main__': app.run(debug=True)
前端展示
最后,我们需要一个前端页面来展示排行榜。这里我们使用HTML和JavaScript来实现:
<script> async function fetchRanking() { const response = await fetch('/get_ranking'); const ranking = await response.json(); displayRanking(ranking); } function displayRanking(ranking) { const tableBody = document.getElementById('rankingTableBody'); ranking.forEach((entry, index) => { const row = document.createElement('tr'); row.innerHTML = ` <td>${index + 1}</td> <td>${entry.name}</td> <td>${entry.score}</td> `; tableBody.appendChild(row); }); } </script>