diff --git a/main.py b/main.py new file mode 100644 index 0000000..b814ca7 --- /dev/null +++ b/main.py @@ -0,0 +1,109 @@ +from flask import Flask, jsonify, request +import mysql.connector +import random + +app = Flask(__name__) + +# 数据库连接配置 +db_config = { + 'host': 'localhost', + 'user': 'root', + 'password': '123456', + 'database': 'stu' +} + +# 获取学生名单 +def get_students(): + try: + connection = mysql.connector.connect(**db_config) + cursor = connection.cursor(dictionary=True) + cursor.execute("SELECT * FROM studentlist") + students = cursor.fetchall() + connection.close() + return students + except mysql.connector.Error as err: + print(f"Error: {err}") + return [] + + +# 更新学生积分 +def update_student_score(student_id, new_score): + try: + connection = mysql.connector.connect(**db_config) + cursor = connection.cursor() + cursor.execute("UPDATE studentlist SET 积分 = %s WHERE 学号 = %s", (new_score, student_id)) + connection.commit() + print(f"Updated student_id {student_id} with new score {new_score}") + connection.close() + except mysql.connector.Error as err: + print(f"Error: {err}") + + +# 根据积分设置权重,积分越高,权重越低 +def calculate_weights(students): + max_score = max([s['积分'] for s in students]) + weights = [(max_score - s['积分'] + 1) for s in students] + return weights + +# 随机点名,积分越高,权重越低 +def pick_random_student(students): + weights = calculate_weights(students) + selected_student = random.choices(students, weights=weights, k=1)[0] + return selected_student + +# 增加课堂出席积分 +def add_attendance_score(student): + student['积分'] = student['积分'] + 1 + update_student_score(student['学号'], student['积分']) + +# 回答问题后的积分更新 +def update_answer_score(student, repeated_correctly, answer_score): + if repeated_correctly: + student['积分'] = student['积分'] + 0.5 + else: + student['积分'] = student['积分'] - 1 + + student['积分'] += answer_score + update_student_score(student['学号'], student['积分']) + +# 获取随机点名学生 +@app.route('/get_random_student', methods=['GET']) +def get_random_student(): + students = get_students() + selected_student = pick_random_student(students) + return jsonify({'name': selected_student['姓名'], 'student_id': selected_student['学号']}) + +# 更新出席积分 +@app.route('/update_attendance_score', methods=['POST']) +def handle_attendance_score(): + data = request.json + print(f"Received data: {data}") + student_id = data['student_id'] + + students = get_students() + for student in students: + if student['学号'] == student_id: + add_attendance_score(student) + break + + return jsonify({'message': 'Attendance score updated', 'student_id': student_id}) + +# 更新回答问题的积分 +@app.route('/update_answer_score', methods=['POST']) +def handle_answer_score(): + data = request.json + print(f"Received data: {data}") + student_id = data['student_id'] + repeated_correctly = data['repeated_correctly'] + answer_score = data['answer_score'] # 前端传来的回答得分(0.5到3之间) + + students = get_students() + for student in students: + if student['学号'] == student_id: + update_answer_score(student, repeated_correctly, answer_score) + break + + return jsonify({'message': 'Answer score updated', 'student_id': student_id}) + +if __name__ == '__main__': + app.run(debug=True)