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

教师遇到ai:⑥用deepseek生成一个班级积分系统

lipiwang 2025-03-24 17:55 7 浏览 0 评论

开年迄今,于网络之上,最为火爆的当属人工智能 deepseek,同时亦掀起了人工智能于各行各业中的应用浪潮。未来已至,为避免被社会淘汰,近段时日,分享些许人工智能在教育教学领域的应用,部分内容、观点以及素材源自网络。


想法

做一个班级积分排行系统,以此激发学生的学习激情。系统中导入学生名单(按顺序分组)提供系统的通用性,然后四人一组,每行三组,组内显示积分,名单,分数加减;旁边显示实时排名等。

下面是提问过程

我是老师,请帮我做一个小组积分系统,用html语言显示。先用excel导入数据,按顺序分组,每组四人,在一个框内,框内显示分数,可以加减分数。对小组进行一个实时排名。

导入的名单是乱码,改进通用性,xlsx和csv格式都行,样式上优化一下,名单和实时排行左右排列,名单左边每行排3个。美观上优化一下

加一个关闭页面后能保存数据功能

增加自定义分组名称功能,可结合颜色区分不同分数段,添加组内成员贡献度统计,输出完整代码终结版

根据不断优化,最终得到一个比较理想美观的界面

代码




    小组积分系统 - 终极版
    <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
    


    

实时排行榜

<script> let groups = []; // 初始化加载数据 window.addEventListener('load', () => { const savedData = localStorage.getItem('groupSystemData'); if (savedData) { try { const data = JSON.parse(savedData); groups = data.groups || []; renderGroups(); updateRanking(); } catch (e) { console.error('数据加载失败:', e); } } }); // 文件处理 document.getElementById('fileInput').addEventListener('change', async function(e) { const file = e.target.files[0]; if (!file) return; try { const students = await readFile(file); initializeGroups(students); saveData(); renderGroups(); updateRanking(); } catch (error) { alert('文件读取失败: ' + error.message); } }); // 初始化小组 function initializeGroups(students) { groups = []; const groupCount = Math.ceil(students.length / 4); for (let i = 0; i < groupcount i const members='students.slice(i*4,'> ({ name: name.trim(), contribution: 0 })); groups.push({ id: Date.now() + i, customName: `第 ${i+1} 组`, members, color: getGroupColor(0) // 初始颜色 }); } } // 渲染小组 function renderGroups() { const container = document.getElementById('groupsContainer'); container.innerHTML = ''; groups.forEach((group, index) => { const total = calculateTotalScore(group); const card = document.createElement('div'); card.className = 'group-card'; card.style.borderColor = getGroupColor(total); card.innerHTML = `
${group.customName}
${total} 分
${group.members.map((member, idx) => `
${member.name}
${member.contribution}
`).join('')}
`; container.appendChild(card); }); } // 编辑组名 function editGroupName(index) { const newName = prompt('请输入新的小组名称:', groups[index].customName); if (newName) { groups[index].customName = newName; saveData(); renderGroups(); } } // 更新贡献值 function updateContribution(groupIndex, memberIndex, delta) { groups[groupIndex].members[memberIndex].contribution += delta; updateGroupColor(groupIndex); saveData(); renderGroups(); updateRanking(); } // 全员调整贡献值 function updateAllContributions(groupIndex, delta) { groups[groupIndex].members.forEach(member => { member.contribution += delta; }); updateGroupColor(groupIndex); saveData(); renderGroups(); updateRanking(); } // 计算总分 function calculateTotalScore(group) { return group.members.reduce((sum, member) => sum + member.contribution, 0); } // 获取组颜色 function getGroupColor(total) { if (total >= 100) return '#2ecc71'; if (total >= 50) return '#f1c40f'; if (total >= 0) return '#e67e22'; return '#e74c3c'; } // 更新组颜色 function updateGroupColor(groupIndex) { const total = calculateTotalScore(groups[groupIndex]); groups[groupIndex].color = getGroupColor(total); } // 更新排名 function updateRanking() { const sorted = [...groups].sort((a, b) => calculateTotalScore(b) - calculateTotalScore(a)); const rankingDiv = document.getElementById('ranking'); rankingDiv.innerHTML = ''; sorted.forEach((group, index) => { const item = document.createElement('div'); item.className = 'rank-item'; item.innerHTML = `
${index + 1}
${group.customName}
${calculateTotalScore(group)} 分
`; rankingDiv.appendChild(item); }); } // 文件读取 async function readFile(file) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = (e) => { try { let data = []; if (file.name.endsWith('.xlsx')) { const workbook = XLSX.read(e.target.result, {type: 'array'}); const sheet = workbook.Sheets[workbook.SheetNames[0]]; data = XLSX.utils.sheet_to_json(sheet, {header: 1}) .flat() .filter(x => x && x.toString().trim()); } else { const text = new TextDecoder('utf-8').decode(e.target.result); data = text.split('\n') .map(line => line.trim()) .filter(line => line); } resolve(data); } catch (error) { reject(error); } }; reader.onerror = () => reject(new Error('文件读取错误')); if (file.name.endsWith('.xlsx')) { reader.readAsArrayBuffer(file); } else { reader.readAsArrayBuffer(file); } }); } // 数据存储 function saveData() { localStorage.setItem('groupSystemData', JSON.stringify({ version: 2.0, groups: groups, timestamp: new Date().getTime() })); } // 清除数据 function clearData() { if (confirm('确定要清除所有数据吗?')) { localStorage.removeItem('groupSystemData'); groups = []; renderGroups(); updateRanking(); document.getElementById('fileInput').value = ''; } } // 页面关闭前自动保存 window.addEventListener('beforeunload', () => saveData()); </script>

主要升级功能说明:

自定义小组名称

双击小组名称进行修改

支持中文命名

修改后立即生效并保存

智能颜色区分系统

根据总分自动变色:

红色(<0分):#e74c3c

橙色(0-49分):#e67e22

黄色(50-99分):#f1c40f

绿色(≥100分):#2ecc71

颜色指示器实时显示当前状态

成员贡献度统计

每个成员独立贡献值显示

支持单个成员±1分调整

支持全员±1分批量操作

贡献值实时影响总分和排名

增强的数据管理

版本化数据存储(v2.0)

自动保存所有操作

支持跨会话数据恢复

完善的错误处理机制

视觉优化

动态颜色边框

悬浮动画效果

紧凑的成员列表布局

直观的颜色指示器

响应式按钮设计

使用指南:

数据导入

  1. 准备CSV/XLSX文件(第一列包含学生姓名)
  2. 点击上传按钮选择文件
  3. 系统自动创建4人小组

基础操作

  1. 双击小组名称进行重命名
  2. 点击成员旁的±1按钮调整个人贡献
  3. 使用"全员±1"按钮进行批量调整

数据维护

  1. 数据自动保存到本地
  2. 清除数据需二次确认
  3. 支持浏览器刷新/关闭恢复

状态识别

  1. 边框颜色反映小组总分状态
  2. 右侧排名实时更新
  3. 颜色指示器同步总分状态

注意事项:

  1. Excel文件建议使用单列学生名单
  2. 成员贡献值允许负数
  3. 颜色规则可在getGroupColor函数中自定义
  4. 数据存储在浏览器本地,更换设备需重新导入
  5. 建议使用Chrome/Firefox等现代浏览器


界面情况


最终优化的基本能达到要求,但有一个功能最终版本丢失,数据导出和导入功能。这个系统能够实时展示小组的积分和排名情况,能有效激励小组间的有序竞争,下次探索做一个积分刮奖系统。

需要最近基础实例文件的留言

相关推荐

那些加上姓就很美的名字,想要起名的可以参照一些啊

刷到是缘分,感谢大家的阅读,希望您能动动小手帮忙点赞,关注,评论。你的支持和鼓励是我前进的动力。在此祝福大家天天快乐,日日开心!0102我们公司新来的实习生叫林晚,第一次听到这名字就觉得特别有韵味。上...

手把手教你写出不被研发怼的需求文档

产品经理这岗位都多少年了,我还以为早就体系成熟、流程闭环了,所以这个系列我也安心停更了。结果最近被研发同事轮番吐槽:需求文档东漏一句西漏一段,“这也叫专业?”虽然不是在点名骂我,但谁让是我带的队呢,脸...

学会这五个练字规律,解决所有笔画长短问题

大家好,用5个规律讲清楚什么时候笔画长,什么时候笔画短。·第一、写的时候是短的笔画多,长的笔画少,记住这一个。·第二、同方向上面只能有一个长,不同方向上面可以同时加长,比如横和竖或者撇捺。这里就有一个...

不要再用“质疑”的眼光看草书,5个字说明草书促进汉字简化发展

【问题思考】我们知道简体字改革之前,我们用的是繁体字,比如“会”字一直写作“會”,那么是什么依据如是作出简化呢?而在简化字改革前的唐代,我们会发现,孙过庭的《书谱》就是写作“会”的样子的,他是穿越了?...

IDEA如何将工程转为maven工程

有时候在使用IDEA编辑器时,从Git上Pull一个maven工程下来是没有自动将工程转换成maven工程,相应的依赖jar包不会自动下载。此时要将它转换成maven工程并自动下载jar包。方法/步骤...

Maven多模块项目构建实战:打造高效开发的模块化体系

Maven多模块项目构建实战:打造高效开发的模块化体系Maven作为Java世界中最为流行的构建工具之一,以其强大的模块化支持能力著称。当你需要管理一个复杂的大规模项目时,合理使用Maven的多模块功...

Maven常用命令有哪些?

Maven是一个强大的项目管理工具,广泛用于构建、管理和部署Java项目。以下是Maven的一些常用命令,这些命令可以帮助开发者完成项目的清理、编译、测试、打包和部署等任务。所有命令都以m...

SpringBoot项目jar、war包启动解析

一、jar包和war包的区别1.1war包war包是JavaWeb应用程序的一种打包方式符合Servlet标准,它是WebArchive的缩写,主要用于存储Web应用程序相关的文件,包括Java...

Maven多模块项目构建:打造高效协作的软件工程基石

Maven多模块项目构建:打造高效协作的软件工程基石在软件开发的世界里,随着项目的复杂度不断攀升,单一模块的架构逐渐显得力不从心。这时,Maven多模块项目应运而生,它像一座桥梁,将不同的功能模块有机...

如何将 Spring Boot 工程打包成独立的可执行 JAR 包

导语:通过将SpringBoot项目打包成独立的可执行JAR包,可以方便地在任何支持Java环境的机器上运行项目。本文将详细介绍如何通过Maven构建插件将SpringBoot...

java maven 工具初步使用

安装与配置下载Maven访问官网https://maven.apache.org下载最新版,解压到本地目录(如C:\maven)。配置环境变量添加以下环境变量:M2_HOME:Maven安...

Maven工程如何使用非Maven仓库jar包

使用Maven之前,一直都是自己手工在网上搜索需要的jar包,然后添加到工程中。以这样的方式开发,工作了好多年,曾经以为以后也会一直这样下去。直到碰上Maven,用了第一次,就抛弃老方法了。Maven...

从原理和源码梳理Springboot FatJar 的机制

一、概述SpringBootFatJar的设计,打破了标准jar的结构,在jar包内携带了其所依赖的jar包,通过jar中的main方法创建自己的类加载器,来识别加载运行其不规...

Maven初步——Maven的下载、配环境、换源、编译及运行

一.maven的基本概念相关定义:Maven是一个项目管理和构建工具,用于构建、发布和管理Java项目,用它的好处很多比如自动帮我们管理包依赖等。1.Maven的四大特性1.Maven引入了一个...

「曹工杂谈」Maven和Tomcat能有啥联系呢,都穿打补丁的衣服吗

前奏我们上篇文章,跟大家说了下,怎么调试maven插件的代码,注意,是插件的代码。插件,是要让主框架来执行的,主框架是谁呢,就是mavencore,可以称之为maven核心吧。maven核心,类似于...

取消回复欢迎 发表评论: