diff --git a/script.js b/script.js new file mode 100644 index 0000000..b997e10 --- /dev/null +++ b/script.js @@ -0,0 +1,122 @@ +document.addEventListener("DOMContentLoaded", () => { + let students = []; + let scores = {}; + + // 读取 Excel 文件 + document.getElementById('fileInput').addEventListener('change', (event) => { + const file = event.target.files[0]; + if (!file) return; + + const reader = new FileReader(); + reader.onload = (e) => { + const data = new Uint8Array(e.target.result); + const workbook = XLSX.read(data, { type: 'array' }); + const sheet = workbook.Sheets[workbook.SheetNames[0]]; + const jsonData = XLSX.utils.sheet_to_json(sheet, { header: 1 }); + + // 将数据转化为学生对象 + students = jsonData.slice(1).map(row => ({ + id: row[0], + name: row[1], + score: 0 // 初始积分为0 + })); + + // 初始化每个学生的积分 + students.forEach(student => { + scores[student.id] = 0; + }); + + console.log('学生名单加载成功:', students); + document.getElementById('normalModeButton').classList.remove('hidden'); + document.getElementById('advancedModeButton').classList.remove('hidden'); + document.getElementById('viewRankButton').classList.remove('hidden'); + }; + + reader.readAsArrayBuffer(file); + }); + + // 普通模式按钮 + document.getElementById('normalModeButton').addEventListener('click', () => { + selectStudent('普通模式'); + }); + + // 进阶模式按钮 + document.getElementById('advancedModeButton').addEventListener('click', () => { + selectStudent('进阶模式'); + }); + + // 查看积分排行榜 + document.getElementById('viewRankButton').addEventListener('click', () => { + displayRankTable(); + }); + + // 退出按钮 + document.getElementById('exitButton').addEventListener('click', () => { + window.close(); // 关闭网页 + }); + + // 随机选择学生 + function selectStudent(mode) { + if (students.length === 0) { + alert('学生名单尚未加载!'); + return; + } + + const selectedStudent = students[Math.floor(Math.random() * students.length)]; + const studentInfo = document.getElementById('studentInfo'); + studentInfo.classList.remove('hidden'); + + // 随机生成积分(1-3分)作为示例 + const pointsEarned = Math.random() > 0.5 ? 1 : Math.floor(Math.random() * 3) + 1; + updateScore(selectedStudent.id, pointsEarned); // 更新积分 + + // 动态显示学生信息和积分变化 + studentInfo.innerHTML = ` + 模式: ${mode}
姓名: ${selectedStudent.name}
学号: ${selectedStudent.id}
+ 获得积分: ${pointsEarned} 分 + `; + + // 添加动画效果 + const pointsSpan = document.querySelector('.points-earned'); + pointsSpan.style.animation = 'pop-in 0.5s ease'; + + // 延时移除动画效果 + setTimeout(() => { + pointsSpan.style.animation = ''; + }, 500); + } + + // 更新学生积分 + function updateScore(studentId, points) { + scores[studentId] += points; + console.log('更新积分:', scores); + } + + // 显示积分排行榜,从高到低排序 + function displayRankTable() { + const rankList = document.getElementById('rankList'); + rankList.innerHTML = ''; + + // 按积分从高到低排序 + const sortedStudents = students.sort((a, b) => scores[b.id] - scores[a.id]); + + sortedStudents.forEach(student => { + const tr = document.createElement('tr'); + const tdId = document.createElement('td'); + tdId.textContent = student.id; + + const tdName = document.createElement('td'); + tdName.textContent = student.name; + + const tdScore = document.createElement('td'); + tdScore.textContent = scores[student.id]; + + tr.appendChild(tdId); + tr.appendChild(tdName); + tr.appendChild(tdScore); + rankList.appendChild(tr); + }); + + document.getElementById('rankTable').classList.remove('hidden'); + } +});