当前位置:首页 > 技术分析 > 正文内容

教师如何制作随机点名系统,活跃课堂气氛

ruisui883周前 (04-08)技术分析11

上课点名抽学生回答问题,做游戏……由老师口头点名,点谁回答总有点老师本人的情绪,且显得毫无趣味,但做一个点名系统,就不一样了,电脑随机抽出的名字,不仅公平,还会给孩子们带来一种不一样的感受。

那么怎么做呢?

其实目前做这个很简单,没有一点编写代码经验的人都能做到。只需要告诉deepseek,你想做做什么,需达到些什么功能,它就能帮助你编辑好代码。而且还能测试。

如上图,就是让deepseek帮助编写的html点名系统,测试完成,复制出代码,粘贴到记事本上,另存为html网页文件就ok了。注意另存时编码必须utf-8

大家可以去试一试。也可以直接复制下方代码,到记事本上,另存为html文件。并找一个背景音乐,取名"点名音乐.mp3"和html文件放在一起。运行html,下载模板,把学生名字改成自己班上的。再上传上去,就能完美使用了。

郑老师随机点名系统

郑老师随机点名


准备就绪


数据导入功能

说明:请使用CSV格式文件,包含【班级】和【姓名】两列

<script>

// 修复点1:添加完整初始化数据

const initialData = [

['班级', '姓名'],

['郑老师任教一班', '李星晨'],

['郑老师任教一班', '李程峻'],

// ...其他初始数据...

['郑老师任教二班', '王二']

];

// 修复点2:完善本地存储逻辑

let classes = loadFromLocalStorage() || processRawData(initialData);


// 核心功能变量

let currentNames = [];

let isRunning = false;

let intervalId = null;

let timeoutId = null;


const elements = {

nameDisplay: document.getElementById('nameDisplay'),

startBtn: document.getElementById('startBtn'),

classSelect: document.getElementById('classSelect'),

music: document.getElementById('music'),

fileInput: document.getElementById('fileInput')

};

// 修复点3:添加事件监听器绑定

function bindEvents() {

elements.startBtn.addEventListener('click', toggleRoll);

elements.classSelect.addEventListener('change', updateNames);

elements.fileInput.addEventListener('change', handleFile);

}

// 主逻辑

function updateNames() {

currentNames = classes[elements.classSelect.value] || [];


elements.nameDisplay.textContent = "班级已准备";

elements.nameDisplay.style.color = "#2c3e50";

}

function getRandomName() {

return currentNames.length > 0

? currentNames[Math.floor(Math.random() * currentNames.length)]

: "暂无数据";

}

// 数据存储功能

function saveToLocalStorage() {

localStorage.setItem('classData', JSON.stringify(classes));

}

function loadFromLocalStorage() {

const data = localStorage.getItem('classData');

return data ? JSON.parse(data) : null;

}

// 文件处理

function processRawData(rows) {

return rows.slice(1).reduce((acc, [className, name]) => {

className = (className || '未命名班级').toString().trim();

name = (name || '无名学生').toString().trim();

acc[className] = acc[className] || [];

acc[className].push(name);

return acc;

}, {});

}

function handleFile(e) {

const file = e.target.files[0];

const reader = new FileReader();


reader.onload = (event) => {

const csvData = event.target.result;

const rows = csvData.split('\n').map(row => {

const [a, b] = row.split(',').map(c => c.replace(/["'\s]/g, ''));

return [a || '未命名班级', b || '无名学生'];

});


classes = processRawData(rows);

saveToLocalStorage();


elements.classSelect.innerHTML = Object.keys(classes)

.map(c => ``).join('');


updateNames();

alert(`成功导入 ${Object.values(classes).reduce((a,b) => a+b.length,0)} 个学生数据`);

};


reader.readAsText(file);

}

function downloadTemplate() {

const csvContent = "班级,姓名\n五1班,赵一\n五1班,钱一";

const blob = new Blob([csvContent], { type: 'text/csv' });

const link = document.createElement('a');

link.href = URL.createObjectURL(blob);

link.download = '班级模板.csv';

link.click();

}

// 开始/暂停逻辑

function toggleRoll() {

isRunning = !isRunning;


elements.startBtn.textContent = isRunning ? ' 暂停抽选' : ' 开始点名';

elements.startBtn.style.backgroundColor = isRunning ? '#4ecdc4' : '#ff6b6b';


if (isRunning) {

elements.music.play().catch(() => console.log('音乐播放被阻止'));

intervalId = setInterval(() => {

elements.nameDisplay.textContent = getRandomName();

}, 50);


timeoutId = setTimeout(() => {

if(isRunning) toggleRoll();

}, 3000);

} else {

clearTimeout(timeoutId);

elements.music.pause();

clearInterval(intervalId);

elements.nameDisplay.style.color = '#1e90ff';

}

}

// 修复点4:完善初始化流程

function init() {

bindEvents(); // 绑定事件监听器

updateNames(); // 初始化当前班级


// 加载本地存储提示

if(localStorage.getItem('classData')) {

alert('已加载上次保存的学生名单');

} else {

saveToLocalStorage(); // 保存初始数据

}

}


init(); // 执行初始化

</script>

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3368.html

分享给朋友:

“教师如何制作随机点名系统,活跃课堂气氛” 的相关文章

Ubuntu Linux 24.04 LTS发行版现已开放下载

IT之家 4 月 25 日消息,Ubuntu 24.04 长期支持版(LTS)“Noble Numbat” 现已发布,有需要的用户请通过官网下载发行版 ISO 镜像进行安装。Ubuntu 24.04 采用了 Linux 6.8 内核,可利用 Netplan 在桌面上配置网络连接,还配备了现代化的桌面...

vue3中父子组件之间传值的详解

首先我们回顾一下vue2中父子组件是怎么传值的,然后对比vue3进行详解。一、vue2中父子组件传值<!-- 父组件 --> <template> <div> // name:父组件把值传给子组件test-child // childFn:...

GitLab-创建分支

描述分支是独立的生产线,是开发过程的一部分。分支的创建涉及以下步骤。创建一个分支步骤1-登录您的GitLab帐户,然后转到“ 项目”部分下的项目。步骤2-要创建分支,请单击“ 存储库”部分下的“ 分支”选项,然后单击“ 新建分支”按钮。步骤3-在“ 新建分支”屏幕中,输入分支的名称,然后单击“ 创建...

理解virt、res、shr之间的关系(linux系统篇)

前言想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟大家一起探讨的问题。...

壹啦罐罐 Android 手机里的 Xposed 都装了啥

这是少数派推出的系列专题,叫做「我的手机里都装了啥」。这个系列将邀请到不同的玩家,从他们各自的角度介绍手机中最爱的或是日常使用最频繁的 App。文章将以「每周一篇」的频率更新,内容范围会包括 iOS、Android 在内的各种平台和 App。本期继续歪楼,由少数派撰稿作者@壹啦罐罐介绍他正在使用的...

虚幻引擎5.5现已发布 手游开发、动画制作重大改进

Epic在今天发布了虚幻引擎5.5,现可通过Epic Launcher下载。此版本在动画创作、渲染、虚拟制片、移动端游戏开发和开发人员迭代工具集等方面做出了重大改进。 官方博客:虚幻引擎5.5现已发布,在动画创作、虚拟制作和移动游戏开发方面取得了显著进步,渲染、摄像机内视觉特效和开发人员迭代等领域的...