以下是使用 Python 结合 Flask(用于构建 Web 应用)和 SQLAlchemy(用于数据库操作)来简单实现上述学生管理系统部分核心功能的示例代码。注意,这只是一个基础示例,实际应用中可能需要更多的完善、错误处理以及拓展功能,并且需要提前安装好flask
和sqlalchemy
库(可通过pip install flask sqlalchemy
命令安装)。
创建如下基本的项目文件夹结构:
student_management_system/
├── app.py
├── models.py
├── templates/
└── static/
app.py
是主应用程序文件,models.py
用于定义数据库模型,templates
文件夹用来存放 HTML 模板文件(用于页面展示,此处简单示例暂不详细展开页面部分),static
文件夹可存放如 CSS、JavaScript 等静态资源文件(同样暂不详细涉及页面样式和交互)。
models.py
)from flask_sqlalchemy import SQLAlchemy
# 创建数据库对象
db = SQLAlchemy()
# 用户模型,对应用户表
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(120), nullable=False)
role = db.Column(db.String(20), nullable=False) # 角色(管理员、教师、学生等)
contact_info = db.Column(db.String(100))
email = db.Column(db.String(100))
register_time = db.Column(db.DateTime)
# 学生基本信息模型,对应学生基本信息表
class StudentInfo(db.Model):
__tablename__ = 'student_info'
student_id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False)
gender = db.Column(db.String(10))
birth_date = db.Column(db.Date)
nationality = db.Column(db.String(20))
home_address = db.Column(db.String(200))
enrollment_time = db.Column(db.DateTime)
student_status = db.Column(db.String(20))
user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
# 课程模型,对应课程表
class Course(db.Model):
__tablename__ = 'courses'
course_id = db.Column(db.Integer, primary_key=True)
course_name = db.Column(db.String(100), nullable=False)
teacher_id = db.Column(db.Integer, db.ForeignKey('users.id'))
credits = db.Column(db.Float)
course_outline = db.Column(db.Text)
course_category = db.Column(db.String(20))
# 成绩模型,对应成绩表
class Score(db.Model):
__tablename__ = 'scores'
score_id = db.Column(db.Integer, primary_key=True)
student_id = db.Column(db.Integer, db.ForeignKey('student_info.student_id'))
course_id = db.Column(db.Integer, db.ForeignKey('courses.course_id'))
usual_score = db.Column(db.Float)
exam_score = db.Column(db.Float)
final_score = db.Column(db.Float)
entry_time = db.Column(db.DateTime)
app.py
)收起
python
from flask import Flask
from models import db, User, StudentInfo, Course, Score
import datetime
app = Flask(__name__)
# 配置数据库连接(此处以SQLite为例,实际可替换为MySQL等其他数据库)
app.config['SQLALCHEMY_DATABASE_URI'] ='sqlite:///student_management.db'
db.init_app(app)
# 初始化数据库(创建表等)
@app.before_first_request
def create_tables():
db.create_all()
# 示例:用户注册功能
@app.route('/register', methods=['POST'])
def register():
# 模拟获取表单数据(实际中可能需要从请求中解析)
username = "test_user"
password = "test_password"
role = "student"
contact_info = "1234567890"
email = "[email protected]"
register_time = datetime.datetime.now()
new_user = User(
username=username,
password=password,
role=role,
contact_info=contact_info,
email=email,
register_time=register_time
)
db.session.add(new_user)
db.session.commit()
return "User registered successfully"
# 示例:添加学生基本信息功能
@app.route('/add_student_info', methods=['POST'])
def add_student_info():
# 模拟获取表单数据
name = "John Doe"
gender = "Male"
birth_date = datetime.date(2000, 1, 1)
nationality = "Chinese"
home_address = "123 Main St"
enrollment_time = datetime.datetime(2024, 9, 1)
student_status = "Active"
user_id = 1 # 假设关联的用户ID为1
new_student_info = StudentInfo(
name=name,
gender=gender,
birth_date=birth_date,
nationality=nationality,
home_address=home_address,
enrollment_time=enrollment_time,
student_status=student_status,
user_id=user_id
)
db.session.add(new_student_info)
db.session.commit()
return "Student information added successfully"
# 示例:添加课程功能
@app.route('/add_course', methods=['POST'])
def add_course():
# 模拟获取表单数据
course_name = "Math Course"
teacher_id = 2 # 假设教师用户ID为2
credits = 3.0
course_outline = "This is a math course outline."
course_category = "Core Course"
new_course = Course(
course_name=course_name,
teacher_id=teacher_id,
credits=credits,
course_outline=course_outline,
course_category=course_category
)
db.session.add(new_course)
db.session.commit()
return "Course added successfully"
# 示例:录入成绩功能
@app.route('/enter_score', methods=['POST'])
def enter_score():
# 模拟获取表单数据
student_id = 1 # 假设学生ID为1
course_id = 1 # 假设课程ID为1
usual_score = 80.0
exam_score = 90.0
final_score = (usual_score + exam_score) / 2
entry_time = datetime.datetime.now()
new_score = Score(
student_id=student_id,
course_id=course_id,
usual_score=usual_score,
exam_score=exam_score,
final_score=final_score,
entry_time=entry_time
)
db.session.add(new_score)
db.session.commit()
return "Score entered successfully"
if __name__ == '__main__':
app.run(debug=True)
上述代码实现了以下几个简单功能的示例:
/register
路由,创建一个新用户记录并存入数据库,实际中应该从前端页面获取准确的用户输入数据,并且进行更多的验证(如用户名唯一性验证等)。/add_student_info
路由,向数据库中添加学生的基本情况信息,同样需要完善数据获取和验证机制。/add_course
路由下,可以添加一门新的课程到课程表中,涉及课程相关属性的赋值和数据库插入操作。/enter_score
路由,实现将学生某门课程的成绩信息录入到成绩表中,这里简单计算了最终成绩(实际可能更复杂,按不同权重等计算)。要完整实现整个学生管理系统的所有功能,还需要大量的代码拓展,比如:
以下是针对各主要功能进一步完善代码示例(只是简单示例,还可不断优化):
app.py
中添加)收起
python
from flask import request
# 用户登录验证功能
@app.route('/login', methods=['POST'])
def login():
username = request.form.get('username')
password = request.form.get('password')
user = User.query.filter_by(username=username, password=password).first()
if user:
return "Login successful"
return "Invalid username or password"
app.py
中添加)收起
python
# 查询学生信息功能(根据学生ID查询)
@app.route('/student_info/', methods=['GET'])
def get_student_info(student_id):
student = StudentInfo.query.filter_by(student_id=student_id).first()
if student:
return {
"name": student.name,
"gender": student.gender,
"birth_date": student.birth_date.strftime('%Y-%m-%d') if student.birth_date else None,
"nationality": student.nationality,
"home_address": student.home_address,
"enrollment_time": student.enrollment_time.strftime('%Y-%m-%d %H:%M:%S') if student.enrollment_time else None,
"student_status": student.student_status
}
return "Student not found"
app.py
中添加)收起
python
# 查询课程信息功能(根据课程ID查询)
@app.route('/course_info/', methods=['GET'])
def get_course_info(course_id):
course = Course.query.filter_by(course_id=course_id).first()
if course:
return {
"course_name": course.course_name,
"teacher": User.query.filter_by(id=course.teacher_id).first().username if course.teacher_id else None,
"credits": course.credits,
"course_outline": course.course_outline,
"course_category": course.course_category
}
return "Course not found"
app.py
中添加)# 查询成绩功能(根据学生ID和课程ID查询)
@app.route('/score_info//', methods=['GET'])
def get_score_info(student_id, course_id):
score = Score.query.filter_by(student_id=student_id, course_id=course_id).first()
if score:
return {
"usual_score": score.usual_score,
"exam_score": score.exam_score,
"final_score": score.final_score,
"entry_time": score.entry_time.strftime('%Y-%m-%d %H:%M:%S') if score.entry_time else None
}
return "Score record not found"
这只是一个非常基础且不完善的 Python 代码示例来展示如何实现学生管理系统的部分功能,在实际开发中,你需要根据具体的业务需求、性能要求、安全规范等诸多方面进行进一步的详细设计、代码优化以及功能拓展等工作。