百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

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

ztj100 2025-03-19 04:28 11 浏览 0 评论

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

那么怎么做呢?

其实目前做这个很简单,没有一点编写代码经验的人都能做到。只需要告诉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>

相关推荐

30天学会Python编程:16. Python常用标准库使用教程

16.1collections模块16.1.1高级数据结构16.1.2示例...

强烈推荐!Python 这个宝藏库 re 正则匹配

Python的re模块(RegularExpression正则表达式)提供各种正则表达式的匹配操作。...

Python爬虫中正则表达式的用法,只讲如何应用,不讲原理

Python爬虫:正则的用法(非原理)。大家好,这节课给大家讲正则的实际用法,不讲原理,通俗易懂的讲如何用正则抓取内容。·导入re库,这里是需要从html这段字符串中提取出中间的那几个文字。实例一个对...

Python数据分析实战-正则提取文本的URL网址和邮箱(源码和效果)

实现功能:Python数据分析实战-利用正则表达式提取文本中的URL网址和邮箱...

python爬虫教程之爬取当当网 Top 500 本五星好评书籍

我们使用requests和re来写一个爬虫作为一个爱看书的你(说的跟真的似的)怎么能发现好书呢?所以我们爬取当当网的前500本好五星评书籍怎么样?ok接下来就是学习python的正确姿...

深入理解re模块:Python中的正则表达式神器解析

在Python中,"re"是一个强大的模块,用于处理正则表达式(regularexpressions)。正则表达式是一种强大的文本模式匹配工具,用于在字符串中查找、替换或提取特定模式...

如何使用正则表达式和 Python 匹配不以模式开头的字符串

需要在Python中使用正则表达式来匹配不以给定模式开头的字符串吗?如果是这样,你可以使用下面的语法来查找所有的字符串,除了那些不以https开始的字符串。r"^(?!https).*&...

先Mark后用!8分钟读懂 Python 性能优化

从本文总结了Python开发时,遇到的性能优化问题的定位和解决。概述:性能优化的原则——优化需要优化的部分。性能优化的一般步骤:首先,让你的程序跑起来结果一切正常。然后,运行这个结果正常的代码,看看它...

Python“三步”即可爬取,毋庸置疑

声明:本实例仅供学习,切忌遵守robots协议,请不要使用多线程等方式频繁访问网站。#第一步导入模块importreimportrequests#第二步获取你想爬取的网页地址,发送请求,获取网页内...

简单学Python——re库(正则表达式)2(split、findall、和sub)

1、split():分割字符串,返回列表语法:re.split('分隔符','目标字符串')例如:importrere.split(',','...

Lavazza拉瓦萨再度牵手上海大师赛

阅读此文前,麻烦您点击一下“关注”,方便您进行讨论和分享。Lavazza拉瓦萨再度牵手上海大师赛标题:2024上海大师赛:网球与咖啡的浪漫邂逅在2024年的上海劳力士大师赛上,拉瓦萨咖啡再次成为官...

ArkUI-X构建Android平台AAR及使用

本教程主要讲述如何利用ArkUI-XSDK完成AndroidAAR开发,实现基于ArkTS的声明式开发范式在android平台显示。包括:1.跨平台Library工程开发介绍...

Deepseek写歌详细教程(怎样用deepseek写歌功能)

以下为结合DeepSeek及相关工具实现AI写歌的详细教程,涵盖作词、作曲、演唱全流程:一、核心流程三步法1.AI生成歌词-打开DeepSeek(网页/APP/API),使用结构化提示词生成歌词:...

“AI说唱解说影视”走红,“零基础入行”靠谱吗?本报记者实测

“手里翻找冻鱼,精心的布局;老漠却不言语,脸上带笑意……”《狂飙》剧情被写成歌词,再配上“科目三”背景音乐的演唱,这段1分钟30秒的视频受到了无数网友的点赞。最近一段时间随着AI技术的发展,说唱解说影...

AI音乐制作神器揭秘!3款工具让你秒变高手

在音乐创作的领域里,每个人都有一颗想要成为大师的心。但是面对复杂的乐理知识和繁复的制作过程,许多人的热情被一点点消磨。...

取消回复欢迎 发表评论: