F064 vue+flask知识图谱在线学习系统

文章结尾部分有CSDN官方提供的学长 联系方式名片

文章结尾部分有CSDN官方提供的学长 联系方式名片

关注B站,私信获取! 麦麦大数据

编号: F064

视频

F064-基于知识学习系统python-水印

1 系统简介

系统简介:本系统是一个基于Vue+Flask+MySQL+Neo4j构建的基于Mooper数据集的学习系统 。其核心功能围绕课程知识图谱的构建与可视化、课程与习题的在线学习、以及学习数据的分析。主要功能模块包括:用户端的课程学习、习题练习、知识图谱可视化、个人中心,以及管理员端的数据大屏分析与数据查询。

2 功能设计

该系统采用前后端分离的B/S架构模式,基于Vue+Flask+MySQL+Neo4j技术栈实现。前端通过Vue.js框架搭建响应式界面,结合Vuetify组件库提供友好的用户交互体验,使用Vue-Router进行页面路由管理,Axios实现与后端的异步数据交互。Flask后端负责构建RESTful API服务,通过SQLAlchemy操作MySQL数据库存储用户信息、课程信息等结构化数据,Py2neo作为Neo4j的驱动库,用于在图数据库中构建、查询和管理知识图谱。在知识图谱构建功能方面,系统利用Python对Mooper数据集进行处理,抽取特定学科(如"操作系统")的子集(包含课程、练习、习题),并构建出其节点与关系,最终存入Neo4j,形成结构化的知识网络,支撑前端的可视化展示和智能查询。

2.1系统架构图

系统架构分为前端、后端和数据层。用户通过浏览器访问前端(Vue)界面,前端通过HTTP请求与Flask后端进行通信。Flask后端负责处理业务逻辑,并与MySQL和Neo4j进行数据交互。MySQL用于存储常规的结构化数据,如用户信息、课程元数据等;Neo4j则作为图数据库,用于存储和查询由学习知识图谱构建的节点与关系。系统通过py2neo库连接Neo4j,实现知识图谱的增删改查。

2.2 功能模块图

主要功能模块有:

  1. 用户端模块
    • 课程搜索
    • 学习课程
    • 习题学习
    • 知识图谱可视化
    • 数据大屏(部分用户可见)
    • 个人设置
    • 登录 & 注册
  2. 管理员端模块
    • 数据查询
    • 知识图谱构建
    • 数据大屏
    • 课程管理
    • 用户管理

3.1 登录 & 注册


系统提供标准的登录与注册功能。用户可以通过输入用户名和密码进行登录,或通过注册获取新账户。登录时会验证凭证,并生成会话。注册时会检查用户名的唯一性,并将新用户信息加密后存储到MySQL数据库中。

3.2 知识图谱可视化

系统通过D3.js在前端实现知识图谱的动态可视化。课程相关知识图谱(节点包括:sub_discipline, course, exercise, challenge)存储在Neo4j数据库中。用户可以在图谱中进行关键词模糊检索,点击节点可查看其详细信息,支持缩放、拖拽等交互操作。

3.3 课程搜索

课程以卡片形式在首页展示,点击卡片可进入课程详情页面。详情页展示课程名称、简介、所属学科、评分等信息,并提供"学习课程"按钮,用户点击后可将该课程添加到自己的"我的课程"列表。

3.4 学习课程

"学习课程"功能是课程的收藏与学习入口。用户点击"学习课程"后,系统会将该课程的ID与用户ID关联存储到数据库中,实现类似收藏的功能,方便用户后续查找和复习。

3.5 习题的学习


当用户加入学习课程后,在课程详情页下会展示该课程包含的所有练习题集(exercise)。用户可以逐个点击进入,查看其下包含的每一道习题(challenge)的具体题干和答案。当用户点击"已学习"按钮时,系统会更新该习题的学习状态和用户的学习进度。
加入了AI学习伴侣功能,用户可以进行随时的提问,通过接入了deepseek的深度思考功能。


deepseek接入:

没有打开深度思考:

3.6 数据大屏

系统提供一个数据大屏,通过ECharts库展示系统内的各种分析数据。它包含了丰富的可视化图表,如柱状图、饼图、环图、可拖动的折线图(x轴)以及滚动的柱状图,用于直观地展示课程活跃度、用户分布、学习进度等信息。

3.7 数据查询

管理员可以进入数据查询模块,通过表格形式浏览和筛选系统内的课程信息,如课程名称、所属学科、创建时间等,支持按条件查询和导出。

3.8 个人设置

个人设置页面允许用户修改个人信息和头像。用户可以上传本地图片作为头像,系统将图片保存到指定文件夹,并在数据库中更新用户头像路径。用户也可以修改其他基本信息。

3.9 知识图谱构建


该功能由管理员在后台执行。系统首先将Mooper数据集中的数据子集(如sub_discipline为"操作系统"的数据)导入MySQL。然后,通过Python脚本,使用Py2neo连接Neo4j,遍历MySQL中的数据,根据其定义(sub_discipline -> course -> exercise -> challenge)构建出相应的节点和关系,最终形成一个完整的知识图谱。这个过程实现了从原始数据到结构化知识的转化。

3.10 用户管理

管理员可以查看所有用户的信息(包括用户名、注册时间、角色等),并支持对用户进行删除等操作。

3.11 权限管理

系统采用基于角色的访问控制。管理员可以创建不同角色(如普通用户、管理员),并为每个角色分配相应的功能权限,例如是否可以访问数据大屏、是否可以进行知识图谱构建等,以保障系统的安全性和管理的便捷性。

4程序核心算法代码

4.1 代码说明

代码介绍:

  1. 知识图谱构建 :使用Py2neo库连接Neo4j,根据从MySQL中抽取的课程、习题数据,构建出sub_disciplinecourseexercisechallenge四个实体类型,并创建它们之间的HAS_COURSEHAS_EXERCISEHAS_CHALLENGE等关系,形成学习知识图谱。
  2. 图灵搜索:在前端,利用D3.js的力导向图算法渲染Neo4j中的知识图谱数据,支持用户对节点进行缩放、拖拽和交互式查询。

4.2 流程图

渲染错误: Mermaid 渲染失败: Parse error on line 2: ... A[从Mooper数据集抽取"操作系统"相关数据] --> B[导入M ----------------------^ Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'STR'

4.3 代码实例

python 复制代码
# 1. 使用Py2neo构建知识图谱关系
from py2neo import Graph, Node, Relationship

# 连接Neo4j
graph = Graph("bolt://localhost:7687", auth=("neo4j", "password"))

# 创建节点和关系
sub_discipline = Node("SubDiscipline", name="操作系统")
course = Node("Course", name="计算机操作系统", description="课程描述...")
exercise = Node("Exercise", name="进程管理练习题", description="...")
challenge = Node("Challenge", id="1001", question="进程调度的必要性是什么?", answer="答案...")

# 创建关系
r1 = Relationship(sub_discipline, "HAS_COURSE", course)
r2 = Relationship(course, "HAS_EXERCISE", exercise)
r3 = Relationship(exercise, "HAS_CHALLENGE", challenge)

# 将整个图谱提交
graph.create(sub_discipline, course, exercise, challenge, r1, r2, r3)
sql 复制代码
-- 2. Neo4j查询知识图谱的Cypher语句
MATCH (s:SubDiscipline {name: "操作系统"})-[:HAS_COURSE]->(c:Course)-[:HAS_EXERCISE]->(e:Exercise)-[:HAS_CHALLENGE]->(ch:Challenge)
RETURN s, c, e, ch

关注B站,私信获取! 麦麦大数据

文章结尾部分有CSDN官方提供的学长 联系方式名片

文章结尾部分有CSDN官方提供的学长 联系方式名片

相关推荐
高洁012 小时前
深度学习—卷积神经网络(2)
人工智能·深度学习·机器学习·transformer·知识图谱
登山人在路上2 小时前
Vuex构建可维护的 Vue.js 状态管理
vue.js
登山人在路上3 小时前
Pinia :下一代 Vue 状态管理
vue.js
闲蛋小超人笑嘻嘻3 小时前
非父子通信: provide和inject
前端·javascript·vue.js
AllinLin4 小时前
JS中的call apply bind全面解析
前端·javascript·vue.js
海绵宝龙4 小时前
Vue 中的 Diff 算法
前端·vue.js·算法
zhougl9964 小时前
vue中App.vue和index.html冲突问题
javascript·vue.js·html
袁煦丞 cpolar内网穿透实验室4 小时前
无需公网 IP 也能全球访问本地服务?cpolar+Spring Boot+Vue应用实践!
vue.js·spring boot·tcp/ip·远程工作·内网穿透·cpolar
浩泽学编程4 小时前
内网开发?系统环境变量无权限配置?快速解决使用其他版本node.js
前端·vue.js·vscode·node.js·js