您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
随着信息技术的不断发展,教育信息化已成为现代教育的重要组成部分。学生成绩管理系统作为教育信息化的重要工具,能够有效地帮助学校管理学生的成绩信息,提高教学管理的效率。本文将详细介绍如何使用Python编写一个学生成绩管理系统,包括系统的逻辑结构设计、功能实现、测试以及优化与扩展。
学生成绩管理系统的主要功能包括:
学生成绩管理系统采用典型的三层架构,包括:
系统使用关系型数据库(如MySQL)存储数据,主要包含以下表:
系统主要分为以下几个模块:
首先,创建数据库和表结构:
CREATE DATABASE StudentManagement;
USE StudentManagement;
CREATE TABLE Student (
student_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
gender ENUM('男', '女') NOT NULL,
birth_date DATE NOT NULL
);
CREATE TABLE Course (
course_id INT PRIMARY KEY AUTO_INCREMENT,
course_name VARCHAR(100) NOT NULL,
credit FLOAT NOT NULL
);
CREATE TABLE Score (
score_id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
course_id INT,
score FLOAT,
FOREIGN KEY (student_id) REFERENCES Student(student_id),
FOREIGN KEY (course_id) REFERENCES Course(course_id)
);
CREATE TABLE User (
user_id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
role ENUM('admin', 'teacher', 'student') NOT NULL
);
from flask import Flask, request, jsonify
import mysql.connector
app = Flask(__name__)
# 数据库连接配置
db_config = {
'host': 'localhost',
'user': 'root',
'password': 'password',
'database': 'StudentManagement'
}
# 添加学生信息
@app.route('/add_student', methods=['POST'])
def add_student():
data = request.json
name = data['name']
gender = data['gender']
birth_date = data['birth_date']
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
cursor.execute("INSERT INTO Student (name, gender, birth_date) VALUES (%s, %s, %s)", (name, gender, birth_date))
conn.commit()
cursor.close()
conn.close()
return jsonify({"message": "Student added successfully"}), 201
# 查询学生信息
@app.route('/get_student/<int:student_id>', methods=['GET'])
def get_student(student_id):
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT * FROM Student WHERE student_id = %s", (student_id,))
student = cursor.fetchone()
cursor.close()
conn.close()
if student:
return jsonify(student), 200
else:
return jsonify({"message": "Student not found"}), 404
# 更新学生信息
@app.route('/update_student/<int:student_id>', methods=['PUT'])
def update_student(student_id):
data = request.json
name = data['name']
gender = data['gender']
birth_date = data['birth_date']
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
cursor.execute("UPDATE Student SET name = %s, gender = %s, birth_date = %s WHERE student_id = %s", (name, gender, birth_date, student_id))
conn.commit()
cursor.close()
conn.close()
return jsonify({"message": "Student updated successfully"}), 200
# 删除学生信息
@app.route('/delete_student/<int:student_id>', methods=['DELETE'])
def delete_student(student_id):
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
cursor.execute("DELETE FROM Student WHERE student_id = %s", (student_id,))
conn.commit()
cursor.close()
conn.close()
return jsonify({"message": "Student deleted successfully"}), 200
if __name__ == '__main__':
app.run(debug=True)
# 添加课程信息
@app.route('/add_course', methods=['POST'])
def add_course():
data = request.json
course_name = data['course_name']
credit = data['credit']
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
cursor.execute("INSERT INTO Course (course_name, credit) VALUES (%s, %s)", (course_name, credit))
conn.commit()
cursor.close()
conn.close()
return jsonify({"message": "Course added successfully"}), 201
# 查询课程信息
@app.route('/get_course/<int:course_id>', methods=['GET'])
def get_course(course_id):
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT * FROM Course WHERE course_id = %s", (course_id,))
course = cursor.fetchone()
cursor.close()
conn.close()
if course:
return jsonify(course), 200
else:
return jsonify({"message": "Course not found"}), 404
# 更新课程信息
@app.route('/update_course/<int:course_id>', methods=['PUT'])
def update_course(course_id):
data = request.json
course_name = data['course_name']
credit = data['credit']
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
cursor.execute("UPDATE Course SET course_name = %s, credit = %s WHERE course_id = %s", (course_name, credit, course_id))
conn.commit()
cursor.close()
conn.close()
return jsonify({"message": "Course updated successfully"}), 200
# 删除课程信息
@app.route('/delete_course/<int:course_id>', methods=['DELETE'])
def delete_course(course_id):
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
cursor.execute("DELETE FROM Course WHERE course_id = %s", (course_id,))
conn.commit()
cursor.close()
conn.close()
return jsonify({"message": "Course deleted successfully"}), 200
# 录入成绩
@app.route('/add_score', methods=['POST'])
def add_score():
data = request.json
student_id = data['student_id']
course_id = data['course_id']
score = data['score']
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
cursor.execute("INSERT INTO Score (student_id, course_id, score) VALUES (%s, %s, %s)", (student_id, course_id, score))
conn.commit()
cursor.close()
conn.close()
return jsonify({"message": "Score added successfully"}), 201
# 查询成绩
@app.route('/get_score/<int:student_id>/<int:course_id>', methods=['GET'])
def get_score(student_id, course_id):
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT * FROM Score WHERE student_id = %s AND course_id = %s", (student_id, course_id))
score = cursor.fetchone()
cursor.close()
conn.close()
if score:
return jsonify(score), 200
else:
return jsonify({"message": "Score not found"}), 404
# 更新成绩
@app.route('/update_score/<int:score_id>', methods=['PUT'])
def update_score(score_id):
data = request.json
score = data['score']
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
cursor.execute("UPDATE Score SET score = %s WHERE score_id = %s", (score, score_id))
conn.commit()
cursor.close()
conn.close()
return jsonify({"message": "Score updated successfully"}), 200
# 删除成绩
@app.route('/delete_score/<int:score_id>', methods=['DELETE'])
def delete_score(score_id):
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
cursor.execute("DELETE FROM Score WHERE score_id = %s", (score_id,))
conn.commit()
cursor.close()
conn.close()
return jsonify({"message": "Score deleted successfully"}), 200
# 统计学生平均成绩
@app.route('/get_average_score/<int:student_id>', methods=['GET'])
def get_average_score(student_id):
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
cursor.execute("SELECT AVG(score) as average_score FROM Score WHERE student_id = %s", (student_id,))
result = cursor.fetchone()
cursor.close()
conn.close()
if result and result[0]:
return jsonify({"average_score": result[0]}), 200
else:
return jsonify({"message": "No scores found for this student"}), 404
# 统计课程平均成绩
@app.route('/get_course_average_score/<int:course_id>', methods=['GET'])
def get_course_average_score(course_id):
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
cursor.execute("SELECT AVG(score) as average_score FROM Score WHERE course_id = %s", (course_id,))
result = cursor.fetchone()
cursor.close()
conn.close()
if result and result[0]:
return jsonify({"average_score": result[0]}), 200
else:
return jsonify({"message": "No scores found for this course"}), 404
# 生成学生成绩报表
@app.route('/generate_student_report/<int:student_id>', methods=['GET'])
def generate_student_report(student_id):
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT Course.course_name, Score.score FROM Score JOIN Course ON Score.course_id = Course.course_id WHERE Score.student_id = %s", (student_id,))
scores = cursor.fetchall()
cursor.close()
conn.close()
if scores:
return jsonify(scores), 200
else:
return jsonify({"message": "No scores found for this student"}), 404
# 生成课程成绩报表
@app.route('/generate_course_report/<int:course_id>', methods=['GET'])
def generate_course_report(course_id):
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT Student.name, Score.score FROM Score JOIN Student ON Score.student_id = Student.student_id WHERE Score.course_id = %s", (course_id,))
scores = cursor.fetchall()
cursor.close()
conn.close()
if scores:
return jsonify(scores), 200
else:
return jsonify({"message": "No scores found for this course"}), 404
# 用户登录
@app.route('/login', methods=['POST'])
def login():
data = request.json
username = data['username']
password = data['password']
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT * FROM User WHERE username = %s AND password = %s", (username, password))
user = cursor.fetchone()
cursor.close()
conn.close()
if user:
return jsonify({"message": "Login successful", "role": user['role']}), 200
else:
return jsonify({"message": "Invalid username or password"}), 401
# 添加用户
@app.route('/add_user', methods=['POST'])
def add_user():
data = request.json
username = data['username']
password = data['password']
role = data['role']
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
cursor.execute("INSERT INTO User (username, password, role) VALUES (%s, %s, %s)", (username, password, role))
conn.commit()
cursor.close()
conn.close()
return jsonify({"message": "User added successfully"}), 201
# 删除用户
@app.route('/delete_user/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
cursor.execute("DELETE FROM User WHERE user_id = %s", (user_id,))
conn.commit()
cursor.close()
conn.close()
return jsonify({"message": "User deleted successfully"}), 200
系统测试主要采用黑盒测试和白盒测试相结合的方法。黑盒测试主要测试系统的功能是否符合需求,白盒测试主要测试代码的逻辑是否正确。
添加学生信息
{"name": "张三", "gender": "男", "birth_date": "2000-01-01"}
{"message": "Student added successfully"}
查询学生信息
student_id = 1
{"student_id": 1, "name": "张三", "gender": "男", "birth_date": "2000-01-01"}
更新学生信息
{"name": "李四", "gender": "女", "birth_date": "2001-01-01"}
{"message": "Student updated successfully"}
删除学生信息
student_id = 1
{"message": "Student deleted successfully"}
添加课程信息
{"course_name": "数学", "credit": 3}
{"message": "Course added successfully"}
查询课程信息
course_id = 1
{"course_id": 1, "course_name": "数学", "credit": 3}
更新课程信息
{"course_name": "英语", "credit": 2}
{"message": "Course updated successfully"}
删除课程信息
course_id = 1
{"message": "Course deleted successfully"}
录入成绩
{"student_id": 1, "course_id": 1, "score": 90}
{"message": "Score added successfully"}
查询成绩
student_id = 1, course_id = 1
-免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。