From 85b49b50bebf2e0976b3925802486d9ad5eb42c1 Mon Sep 17 00:00:00 2001
From: HuangHai <10402852@qq.com>
Date: Thu, 28 Aug 2025 09:05:27 +0800
Subject: [PATCH] 'commit'
---
dsLightRag/static/YunXiao/physics_quiz.html | 2 +-
dsLightRag/static/YunXiao/physics_quiz.js | 195 ++++++++++++++++++++
2 files changed, 196 insertions(+), 1 deletion(-)
create mode 100644 dsLightRag/static/YunXiao/physics_quiz.js
diff --git a/dsLightRag/static/YunXiao/physics_quiz.html b/dsLightRag/static/YunXiao/physics_quiz.html
index 62f8525a..3b0bd0de 100644
--- a/dsLightRag/static/YunXiao/physics_quiz.html
+++ b/dsLightRag/static/YunXiao/physics_quiz.html
@@ -334,7 +334,7 @@
正确答案:B
- 解析:根据万有引力提供向心力的公式GMm/r²=mv²/r,可得卫星线速度v=√(GM/r)。当轨道半径r增大到原来的2倍时,新的线速度v'=√(GM/(2r))=v/√2,故答案为B。
+ 解析:根据万有引力提供向心力的公式GMm/r²=mv²/r,可得 satellite line speed v=√(GM/r)。当轨道半径r增大到原来的2倍时,新的线速度v'=√(GM/(2r))=v/√2,故答案为B。
diff --git a/dsLightRag/static/YunXiao/physics_quiz.js b/dsLightRag/static/YunXiao/physics_quiz.js
new file mode 100644
index 00000000..97162ace
--- /dev/null
+++ b/dsLightRag/static/YunXiao/physics_quiz.js
@@ -0,0 +1,195 @@
+// 存储各难度题目的正确答案
+const correctAnswers = {
+ medium: {
+ mq1: 'B',
+ mq2: 'D',
+ mq3: 'B',
+ mq4: 'A',
+ mq5: 'C'
+ },
+ easy: {
+ eq1: 'B',
+ eq2: 'A',
+ eq3: 'C',
+ eq4: 'B',
+ eq5: 'A'
+ },
+ hard: {
+ hq1: 'C',
+ hq2: 'A',
+ hq3: 'C',
+ hq4: 'A',
+ hq5: 'B'
+ }
+};
+
+// 跟踪测验状态
+const quizState = {
+ currentDifficulty: 'medium', // 初始难度
+ completedDifficulties: [],
+ scores: {}
+};
+
+// DOM元素
+const submitBtn = document.getElementById('submit-btn');
+const nextBtn = document.getElementById('next-btn');
+const navigationSection = document.getElementById('navigation');
+const navigationMessage = document.getElementById('navigation-message');
+const result = document.getElementById('result');
+const scoreValue = document.getElementById('score-value');
+const correctCount = document.getElementById('correct-count');
+const incorrectCount = document.getElementById('incorrect-count');
+const difficultyIndicator = document.querySelector('.difficulty-indicator');
+
+// 等待DOM加载完成
+document.addEventListener('DOMContentLoaded', function() {
+ // 提交当前难度的答案
+ submitBtn.addEventListener('click', function() {
+ const currentAnswers = correctAnswers[quizState.currentDifficulty];
+ const totalQuestions = Object.keys(currentAnswers).length;
+ let score = 0;
+ let correct = 0;
+ let incorrect = 0;
+
+ // 检查所有问题的答案
+ for (const [questionName, correctAnswer] of Object.entries(currentAnswers)) {
+ const selectedOption = document.querySelector(`input[name="${questionName}"]:checked`);
+ const questionNumber = questionName.substring(2); // 从mq1提取1
+ const explanationElement = document.querySelector(`[data-difficulty="${quizState.currentDifficulty}"][data-question="${questionNumber}"] .question-explanation`);
+
+ // 显示解析
+ explanationElement.style.display = 'block';
+
+ if (selectedOption) {
+ const userAnswer = selectedOption.value;
+
+ // 标记正确或错误
+ if (userAnswer === correctAnswer) {
+ score += 20; // 每题20分
+ correct++;
+ selectedOption.closest('.option').style.backgroundColor = '#e8f5e9';
+ selectedOption.closest('.option').style.borderColor = '#4caf50';
+ } else {
+ incorrect++;
+ selectedOption.closest('.option').style.backgroundColor = '#ffebee';
+ selectedOption.closest('.option').style.borderColor = '#c62828';
+ // 标记正确答案
+ const correctOption = document.querySelector(`input[name="${questionName}"][value="${correctAnswer}"]`);
+ correctOption.closest('.option').style.backgroundColor = '#e8f5e9';
+ correctOption.closest('.option').style.borderColor = '#4caf50';
+ }
+ } else {
+ // 未答题
+ incorrect++;
+ const questionElement = document.querySelector(`[data-difficulty="${quizState.currentDifficulty}"][data-question="${questionNumber}"]`);
+ questionElement.style.border = '2px solid #ff9800';
+ }
+ }
+
+ // 保存当前难度得分
+ quizState.scores[quizState.currentDifficulty] = {
+ score: score,
+ correct: correct,
+ incorrect: incorrect
+ };
+ quizState.completedDifficulties.push(quizState.currentDifficulty);
+
+ // 显示当前难度结果
+ scoreValue.textContent = score;
+ correctCount.textContent = correct;
+ incorrectCount.textContent = incorrect;
+ result.style.display = 'block';
+
+ // 隐藏提交按钮
+ submitBtn.style.display = 'none';
+
+ // 根据当前难度和得分决定下一步
+ if (quizState.currentDifficulty === 'medium') {
+ if (correct < 3) {
+ // 中等难度答对少于3题,推荐简单难度
+ showNavigation('您在中等难度题目中表现不佳,建议先完成简单难度题目来巩固基础。', 'easy');
+ } else {
+ // 中等难度答对3题及以上,推荐高级难度
+ showNavigation('恭喜您完成中等难度题目!接下来挑战高级难度题目吧。', 'hard');
+ }
+ } else {
+ // 简单或高级难度完成后,显示最终结果
+ showFinalResult();
+ }
+ });
+
+ // 显示导航信息
+ function showNavigation(message, nextDifficulty) {
+ navigationMessage.textContent = message;
+ navigationSection.dataset.nextDifficulty = nextDifficulty;
+ navigationSection.style.display = 'block';
+ }
+
+ // 开始下一组题目
+ nextBtn.addEventListener('click', function() {
+ const nextDifficulty = navigationSection.dataset.nextDifficulty;
+ if (!nextDifficulty) return;
+
+ // 更新当前难度
+ quizState.currentDifficulty = nextDifficulty;
+
+ // 隐藏导航和结果
+ navigationSection.style.display = 'none';
+ result.style.display = 'none';
+
+ // 显示提交按钮
+ submitBtn.style.display = 'inline-block';
+
+ // 更新难度指示器
+ difficultyIndicator.textContent = `当前难度:${getDifficultyName(nextDifficulty)}`;
+ difficultyIndicator.className = `difficulty-indicator difficulty-${nextDifficulty}`;
+
+ // 隐藏所有题目
+ document.querySelectorAll('.question').forEach(question => {
+ question.classList.add('hidden');
+ });
+
+ // 显示下一组题目
+ document.querySelectorAll(`[data-difficulty="${nextDifficulty}"]`).forEach(question => {
+ question.classList.remove('hidden');
+ });
+
+ // 滚动到页面顶部
+ window.scrollTo(0, 0);
+ });
+
+ // 获取难度名称
+ function getDifficultyName(difficulty) {
+ const names = {
+ easy: '简单',
+ medium: '中等',
+ hard: '高级'
+ };
+ return names[difficulty] || difficulty;
+ }
+
+ // 显示最终结果
+ function showFinalResult() {
+ // 计算总分
+ let totalScore = 0;
+ let totalCorrect = 0;
+ let totalIncorrect = 0;
+
+ for (const difficulty of quizState.completedDifficulties) {
+ totalScore += quizState.scores[difficulty].score;
+ totalCorrect += quizState.scores[difficulty].correct;
+ totalIncorrect += quizState.scores[difficulty].incorrect;
+ }
+
+ // 更新结果显示
+ scoreValue.textContent = totalScore;
+ correctCount.textContent = totalCorrect;
+ incorrectCount.textContent = totalIncorrect;
+ result.style.display = 'block';
+
+ // 显示完成信息
+ navigationMessage.textContent = '恭喜您完成所有推荐题目!';
+ navigationSection.style.display = 'block';
+ document.getElementById('next-btn').style.display = 'none';
+ }
+});
\ No newline at end of file