学生选课系统 - 课程搜索功能

功能描述

该功能允许学生在选课页面输入关键字搜索课程,系统会根据关键字在已有课程中进行模糊匹配,筛选出符合条件的课程并展示出来。

代码实现

**1. 在 select_course 函数中添加搜索功能:**pythonfrom common.flask_helper import *from common.message import Message

from model.course import Coursefrom model.record import Recordfrom model.student import Studentfrom model.material import Materialfrom model.comment import Commentfrom model.teacher import Teacher

blueprint_student = Blueprint('student', name)

主页@blueprint_student.route('/student')def main_page(): return render_template('student/main_page.html')

@blueprint_student.route('/student/selection')def select_course(): message = Message()

# 获取搜索关键字    keyword = request.args.get('keyword')

# 根据关键字筛选课程    if keyword:        courses = Course.query.filter(Course.name.like('%{}%'.format(keyword))).all()    else:        courses = Course.query_all()

if request.args.get('cid'):        if not session.get('student_number'):            message.set_error('选课失败')        else:            if Record.query_course_with_student(request.args.get('cid'), session.get('student_number')):                message.set_error('已选择该课程,无需再次选择')            else:                Record.add(student_number=session.get('student_number'), course_id=request.args.get('cid'))                message.set_ok('选课成功')

return render_template('student/course_list.html', courses=courses, message=message)

@blueprint_student.route('/student/schedule')def my_schedule(): records = Record.query_by_student_number(session.get('student_number')) courses = [] for record in records: course = Course.query_by_id(record.course_id) courses.append(course)

return render_template('student/my_course.html', courses=courses)

@blueprint_student.route('/student/course/<course_id>', methods=['POST', 'GET'])def course_detail(course_id): message = Message() course = Course.query_by_id(course_id) if not course: abort(404)

if request.method == 'POST':        content = request.form.get('comment')        if content:            Comment.add(course_id=course_id, student_number=session.get('student_number'), content=content)            message.set_ok('评论发布成功')        else:            message.set_error('评论不能为空')

comments = Comment.query_by_course_id(course_id)    teacher = Teacher.query_by_number(course.teacher_number)    record = Record.query_course_with_student(course_id, session.get('student_number'))

return render_template('student/course_detail.html', course=course, message=message, comments=comments,                           teacher=teacher, record=record)

**2. 在学生选课页面的 HTML 中添加搜索框:**html

<form method='get' action='{{ url_for('student.select_course') }}'>

**3. 在 course.py 中添加 query_all 方法:**pythonfrom model.base import BaseModelfrom common.sqlalchemy_helper import *from common.database import db_session

class Course(SQLAlchemyBaseModel, BaseModel): tablename = 'course'

id = mapped_column(Integer, primary_key=True)    name = mapped_column(String)    room = mapped_column(String)    teacher_number = mapped_column(Integer)

@staticmethod    def query_by_id(id):        return db_session.query(Course).filter(Course.id == id).first()

@staticmethod    def query_by_teacher_number(number):        return db_session.query(Course).filter(Course.teacher_number == number).all()

@staticmethod    def query_all():        return db_session.query(Course).all()

代码说明:

  • 在 select_course 函数中,我们首先获取搜索关键字 keyword。- 如果 keyword 不为空,则使用 Course.query.filter(Course.name.like('%{}%'.format(keyword))).all() 查询数据库中所有 name 字段包含 keyword 的课程。- 如果 keyword 为空,则查询所有课程。- 在 HTML 代码中,我们添加了一个表单,并使用 method='get' 将搜索关键字发送到 select_course 函数。

最终效果:

学生可以在选课页面输入关键字搜索课程,系统会根据关键字筛选课程并展示出来。

注意:

  • 确保 course.py 中的 query_all 方法已经添加。- 如果数据库中没有 Course 表,请先创建该表。- 以上代码示例仅供参考,您可能需要根据实际情况进行修改
学生选课系统 - 课程搜索功能

原文地址: https://www.cveoy.top/t/topic/n2Kf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录