国科大自动评教脚本, 这个脚本可以帮助你一键生成评教内容。
// ==UserScript== // @name 🚀🚀🚀🚀国科大自动评教 // @namespace auto_class_evaluation // @version 2.6.5 // @description 国科大自动评教脚本, 这个脚本可以帮助你一键生成评教内容。 // @author LLinkedList771 // @run-at document-start // @match https://jwxk.ucas.ac.cn/evaluate* // @match https://xkcts.ucas.ac.cn/evaluate* // @match https://*.ucas.ac.cn/evaluate* // @homepageURL https://github.com/linkedlist771/UCAS-AutoClassEvaluation // @supportURL https://github.com/linkedlist771/UCAS-AutoClassEvaluation/issues // @license MIT // ==/UserScript== (function() { 'use strict'; // ----------------- Styles ----------------- function addEvaluationStyles() { const styles = ` .tools-logger-panel { position: fixed; top: 10%; right: 2%; background-color: white; padding: 10px; border: 1px solid #ccc; border-radius: 5px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); z-index: 9999; width: 250px; } .head { font-weight: bold; margin-bottom: 10px; } .switch { display: inline-block; vertical-align: middle; } .close { cursor: pointer; } `; const styleSheet = document.createElement("style"); styleSheet.type = "text/css"; styleSheet.innerText = styles; document.head.appendChild(styleSheet); } // ----------------- UI Creation ----------------- function createEvaluationUI() { const controlDiv = document.createElement('div'); controlDiv.className = 'tools-logger-panel'; controlDiv.innerHTML = ` <div class="head"> <span>评教助手</span> <span class="close" style="float:right; cursor:pointer; margin-right:5px;">x</span> </div> <div class="main"> <button id="courseEvaluationBtn">完成课程评教</button> <button id="teacherEvaluationBtn">完成老师评教</button> </div> `; document.body.appendChild(controlDiv); controlDiv.querySelector(".close").onclick = function() { controlDiv.remove(); }; // 重新为按钮添加事件监听器 document.getElementById("courseEvaluationBtn").addEventListener("click", performCourseEvaluation); document.getElementById("teacherEvaluationBtn").addEventListener("click", performTeacherEvaluation); } // ----------------- Evaluation Logic ----------------- function selectAllValue5Inputs() { const inputs = document.querySelectorAll('input[value="5"]'); inputs.forEach(input => { input.checked = true; }); } function generateRandomCourseFeedback() { const feedbackOptions = { 1: [ "我最喜欢这门课程的实践性内容。每次上课,老师都会为我们带来真实的案例,让我们亲自动手去解决。这种实践的方式不仅让我更深入地理解了理论,还锻炼了我的实际操作能力,真的受益匪浅。", "我喜欢这门课的教学方式。老师总是能够用简单易懂的语言解释复杂的概念,课堂上的互动也非常多,每次都能吸引我全神贯注地听课。这种教学方式让我对这个学科产生了浓厚的兴趣。", "我最喜欢的是课程中的互动环节。每当我们对某个问题有疑惑时,老师都会耐心地为我们解答,并鼓励我们提出自己的看法。这种互动让我感到非常受尊重,也激发了我的学习热情。" ], 2: [ "我认为这门课程的教材需要更新。虽然现有的教材内容很丰富,但有些知识点已经过时了。如果能够引入一些最新的研究成果和技术,我相信这门课程会更加吸引人。", "我希望有更多的实践机会。理论知识固然重要,但真正能够加深记忆的还是实践。如果能够有更多的实验和项目,让我们亲自动手去做,我相信学习效果会更好。", "我认为课程的难度可以适当提高。现在的课程内容对我来说稍微有点简单,如果能够加入一些深入的内容,挑战我们的思维,我相信会更有助于我们的成长。" ], 3: [ "我平均每周在这门课程上花费5小时。除了上课的时间,我还会花费大量的时间去复习和预习。我认为只有这样,才能够真正掌握这门课程的内容。每次深入研究一个问题,都会让我有很大的收获。", "我每周大约花费3小时。虽然时间不长,但我会确保这3小时都是高效的学习时间。我会选择一个安静的地方,全神贯注地学习,确保每分钟都不浪费。", "我大约每周在这门课上花费7小时。我认为学习就像是锻炼,只有持续不断地努力,才能够取得好的效果。所以我愿意投入更多的时间,确保我能够掌握这门课程的所有内容。" ], 4: [ "我对这个学科#域非常感兴趣。从小我就对这个#域充满了好奇,总是想要探索其中的奥秘。这门课程为我提供了一个很好的##,让我能够深入地学习和研究,每次上课都像是一次探险。", "在参与这门课之前,我对这个#域知之甚少。但随着学习的深入,我逐渐发现了这个学科的魅力。每一个知识点都像是一个新大陆,等待我去探索。", "我之前对这个学科#域有一些了解。但这门课程为我打开了一个新的视角,让我看到了更多的可能性。每次上课,我都会有很多新的收获,这让我对学习充满了期待。" ], 5: [ "我经常参与课堂讨论,几乎每次都回答问题。我认为这是一个很好的学习机会,可以让我更深入地理解课程内容。每次参与讨论,都会让我有很大的收获。", "我总是准时出勤,但不太经常回答问题。我更喜欢在课后深入思考,然后再与老师和同学讨论。这种学习方式让我能够更加深入地理解课程内容。", "我对课堂的参与度一般。虽然我不常回答问题,但我总是认真听课,确保不错过任何一个知识点。我认为每个人都有自己的学习方式,关键是要确保学到了东西。" ] }; let selectedFeedback = {}; for (let key in feedbackOptions) { const randomIndex = Math.floor(Math.random() * feedbackOptions[key].length); selectedFeedback[key] = feedbackOptions[key][randomIndex]; } return selectedFeedback; } function fillCourseFeedbackTextareas() { const selectedFeedback = generateRandomCourseFeedback(); // for (let i = 1074; i <= 1078; i++) { // const textarea = document.getElementById(`item_${i}`); // if (textarea) { // textarea.value = selectedFeedback[i - 1073]; // } // } {/* <textarea id="item_1119" name="item_1119" rows="5" cols="100" minlength="15" maxlength="200" class="required" aria-required="true"></textarea> */} const textareaList = Array.from(document.getElementsByTagName('textarea')); for (let i = 0; i < textareaList.length; i++) { const textarea = textareaList[i]; if (textarea) { textarea.value = selectedFeedback[i + 1]; } } } function selectRandomCourseQualityRating() { // <input class="required radio" type="radio" id="1125" name="radio_1124" value="" aria-required="true"> const lastFiveRadios = Array.from(document.querySelectorAll('input[type="radio"]')).slice(-5); const randomRadio = lastFiveRadios[Math.floor(Math.random() * lastFiveRadios.length)]; if (randomRadio) { randomRadio.checked = true; } } function selectRandomCourseSelectionReasons() { const checkboxes = Array.from(document.querySelectorAll('input[type="checkbox"]')); // const checkboxes = Array.from({length: 6}, (_, i) => document.getElementById((1086 + i).toString())).filter(Boolean); const numToSelect = Math.floor(Math.random() * (checkboxes.length + 1)); checkboxes.sort(() => Math.random() - 0.5); for (let i = 0; i < numToSelect; i++) { checkboxes[i].checked = true; } } function performCourseEvaluation() { selectAllValue5Inputs(); fillCourseFeedbackTextareas(); selectRandomCourseQualityRating(); selectRandomCourseSelectionReasons(); showCourseCompletionAlert(); } // ----------------- Teacher Evaluation ----------------- function generateRandomTeacherFeedback() { const feedbackOptions = { 1: [ "这位老师的教学方法非常实用。每次上课,他都能够深入浅出地解释复杂的概念,使得我这样的初学者也能够轻松理解。他的教学方式结合了理论与实践,让我在学习的过程中既能够掌握知识,又能够培养实际操作的能力。", "我非常喜欢这位老师的互动教学方式。课堂上,他总是鼓励我们提问和发表自己的观点,这使得课堂氛围非常活跃。每次的互动都让我感到受益匪浅,也激发了我的学习兴趣和热情。", "这位老师总是能够用简单的方式解释复杂的问题。他有一种特殊的能力,可以将难以理解的概念转化为生动有趣的故事,这让我每次上课都感到非常轻松和愉快。他的教学方法不仅让我学到了知识,还让我学会了如何思考。" ], 2: [ "我希望老师能够增加一些实际案例分析。虽然他的课堂上已经有很多实用的内容,但如果能够结合一些真实的案例,我相信会使得学习更加有趣和实用。通过分析真实的案例,我们可以更好地理解理论知识,并学会如何将其应用于实际中。", "老师的课堂内容非常丰富,但我还是希望能有更多的互动环节。我认为互动是学习的一个非常重要的部分,它可以帮助我们更好地理解和记忆知识。如果能够增加一些小组讨论或者实践活动,我相信会使得课堂更加生动有趣。", "我建议老师可以考虑使用一些现代教学工具,如多媒体或在线互动##。这些工具不仅可以使得教学内容更加生动有趣,还可以提高我们的学习效率。通过在线互动##,我们还可以与其他同学进行交流和讨论,这将大大增强我们的学习体验。" ] }; let selectedFeedback = {}; for (let key in feedbackOptions) { const randomIndex = Math.floor(Math.random() * feedbackOptions[key].length); selectedFeedback[key] = feedbackOptions[key][randomIndex]; } return selectedFeedback; } function findTeacherFeedbackTextareas() { var textareas = document.getElementsByTagName('textarea'); return Array.from(textareas) } function fillTeacherFeedbackTextareas() { const selectedFeedback = generateRandomTeacherFeedback(); const textareas = findTeacherFeedbackTextareas(); textareas.forEach((textarea, index) => { if (textarea) { textarea.value = selectedFeedback[index + 1]; } }); } function performTeacherEvaluation() { // 1.完成自动评分 selectAllValue5Inputs(); // 2.完成对老师的评价 fillTeacherFeedbackTextareas(); // 3.提示用户手动提交 showTeacherCompletionAlert(); } // ----------------- Notifications ----------------- function showCourseCompletionAlert() { alert("课程评教已完成, 请手动提交!"); } function showTeacherCompletionAlert() { alert("老师评教已完成, 请手动提交!"); } // ----------------- Initialization ----------------- addEvaluationStyles(); // 确保在DOM完全加载后再创建UI if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', createEvaluationUI); } else { createEvaluationUI(); } })();