功能介绍
本系统是一个基于 Python 语言和 Django 框架构建的设计自主学习平台后端服务,采用成熟的 B/S 架构,旨在为设计领域的学习者提供一个系统化、个性化的在线学习环境。后端核心负责处理所有业务逻辑、数据存储与 API 接口服务,与采用 Vue+ElementUI 开发的前端页面通过 RESTful API 进行高效通信。系统功能全面,涵盖了用户角色管理(区分学生与教师权限)、海量设计学习资源的管理(如视频课程、文章、素材模板)、智能化的学习路径推荐、在线作业的发布与提交、自动化的作业评分反馈以及精细化的学习进度追踪等关键模块。选用 MySQL 作为关系型数据库,确保了用户信息、课程数据、学习记录等核心数据的稳定存储与高效查询。整个后端设计追求高内聚低耦合,确保了系统的可扩展性与维护性。
选题背景意义
选题背景
随着信息技术的飞速发展,知识获取的方式发生了翻天覆地的变化,在线学习已成为一种不可逆转的趋势。特别是在设计这样一个强调实践与创意的领域,传统的课堂教学模式往往显得力不从心。学生们常常面临学习资源零散、找不到系统学习路径、练习后得不到及时有效反馈的困境。很多人想自学设计,但打开各种网站后,面对海量的教程却不知从何下手,学习效率低下,热情也容易被消磨。虽然市面上已有不少在线教育平台,但它们大多偏向于通用的知识付费模式,专门针对设计学科的个性化学习引导和过程管理功能依然薄弱。因此,开发一个能够整合优质资源、提供清晰学习路径、并能追踪学习效果的专用系统,就显得非常有必要。
选题意义
这个项目的实际意义,主要体现在它能为学习者和指导老师双方都带来实实在在的便利。对学生来说,系统最大的价值在于提供了一个清晰的'导航地图'。他们不再是盲目地刷视频、看文章,而是可以沿着系统推荐的学习路径一步步前进,完成每个阶段的练习和作业,还能实时看到自己的进度条。对指导老师而言,系统则像一个得力的教学助理,老师可以轻松地发布课程资源、布置作业,并通过后台数据一目了然地掌握每个学生的学习状态和薄弱环节,从而进行更有针对性的辅导。作为毕业设计,这个系统完整地实践了从需求分析、技术选型到开发实现的全过程,特别是探索了如何用 Python 和 Django 技术来支撑一个教育类应用的后端服务。
技术选型
- 开发语言:Python
- 后端框架:Django
- 前端:Vue+ElementUI+HTML
- 数据库:MySQL
- 系统架构:B/S
- 开发工具:PyCharm
代码展示
# 假设我们使用 Spark 进行大规模用户学习行为分析,以生成更精准的推荐
from pyspark.sql import SparkSession
def generate_learning_path(user_id):
# 1. 初始化 Spark Session
spark = SparkSession.builder.appName("DesignLearningSystem").getOrCreate()
# 2. 从 MySQL 加载用户基本信息和学习历史记录(模拟为 DataFrame)
user_history_df = spark.read.format("jdbc").options(
url="jdbc:mysql://localhost:3306/design_learning",
dbtable="user_learning_history",
user="root",
password="password"
).load()
# 3. 加载所有课程信息(模拟为 DataFrame)
courses_df = spark.read.format("jdbc").options(
url="jdbc:mysql://localhost:3306/design_learning",
dbtable=,
user=,
password=
).load()
user_profile = user_history_df.(user_history_df.user_id == user_id).select(, ).first()
interest_tags = user_profile.interest_tags.split() user_profile []
similar_users = user_history_df.(user_history_df.interest_tags.rlike(.join(interest_tags))).groupBy().count().orderBy(, ascending=)
recommended_courses_df = similar_users.join(courses_df, ).(~courses_df.course_id.isin(user_history_df.select().rdd.flatMap( x: x).collect()))
recommended_path = recommended_courses_df.select(, , ).limit().collect()
[{: row.course_id, : row.course_name, : row.difficulty} row recommended_path]
():
django.db.models Avg
assignment = Assignments.objects.get(=assignment_id)
required_keywords = assignment.required_keywords.split()
django.core.files.storage default_storage
file_path =
default_storage.save(file_path, file_object)
score =
feedback =
file_path.endswith() file_path.endswith():
default_storage.(file_path, ) f:
content = f.read()
found_keywords = [kw kw required_keywords kw content]
score += (found_keywords) *
feedback +=
:
feedback +=
Submission.objects.update_or_create(
user_id=user_id,
assignment_id=assignment_id,
defaults={: file_path, : score, : feedback, : }
)
update_user_progress(user_id)
{: , : score, : feedback}
():
total_courses = Courses.objects.count()
total_assignments = Assignments.objects.count()
completed_courses = UserProgress.objects.(user_id=user_id, status=).count()
submitted_assignments = Submission.objects.(user_id=user_id).count()
course_progress = (completed_courses / total_courses) * total_courses >
assignment_progress = (submitted_assignments / total_assignments) * total_assignments >
avg_score = Submission.objects.(user_id=user_id).aggregate(avg_score=Avg())[]
overall_progress = (course_progress * ) + (assignment_progress * )
progress_record, created = UserOverallProgress.objects.get_or_create(user_id=user_id)
progress_record.course_progress = course_progress
progress_record.assignment_progress = assignment_progress
progress_record.overall_progress = overall_progress
progress_record.average_score = avg_score
progress_record.save()
overall_progress


