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

趣味抽奖程序(趣味抽奖程序有哪些)

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

1. 程序简介

本程序是一个网页版抽奖工具,支持三个奖项的抽奖:

  • 特等奖:3人
  • 一等奖:10人
  • 二等奖:20人

2. 准备工作

准备Excel文件:

  • 创建Excel文件,命名为"抽奖.xlsx"(或其他名称)
  • 在第一列添加表头"姓名"
  • 在姓名列下方填入所有参与抽奖的人员姓名

注意:Excel文件格式要求:

  • 必须包含"姓名"列
  • 支持的文件格式:.xlsx, .xls, .csv
  • 确保姓名不重复

3. 操作步骤

  1. 上传名单:点击"选择文件"按钮选择准备好的Excel文件文件上传成功后,抽奖按钮将被激活
  2. 开始抽奖:点击对应奖项的抽奖按钮程序会自动进行名字滚动动画约5秒后显示中奖结果中奖者将以5人一行的方式整齐显示
  3. 保存结果:抽奖完成后,点击"保存中奖结果"按钮程序会自动生成"中奖结果.xlsx"文件文件会自动下载到您的下载文件夹

4. 注意事项

  • 请确保浏览器允许下载文件,否则可能无法保存结果
  • 抽奖过程中请勿刷新页面,否则将丢失已抽取的结果
  • 建议使用Chrome、Firefox、Edge等现代浏览器
  • 确保参与人数大于需要抽取的总人数
  • 已中奖的人员不会参与后续抽奖

5. 常见问题

Q: 为什么上传文件后按钮仍然是灰色的?
A: 请检查Excel文件格式是否正确,确保包含"姓名"列。

Q: 抽奖结果如何查看?
A: 结果会直接显示在页面中央,每行显示5个中奖者。

Q: 中奖结果丢失怎么办?
A: 请及时点击"保存中奖结果"按钮保存结果,避免刷新页面。

Q: 可以重复抽取同一奖项吗?
A: 每个奖项只能抽取一次,如需重新抽奖,请刷新页面重新开始。

技术支持:
如遇到使用问题,请检查:

  • 是否使用了最新版本的浏览器
  • Excel文件格式是否正确
  • 网络连接是否正常



    
    趣味抽奖程序
    


    

趣味抽奖程序

<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.16.9/xlsx.full.min.js"></script> <script> let participants = []; let winners = { "特等奖": [], "一等奖": [], "二等奖": [] }; document.getElementById('fileInput').addEventListener('change', handleFileSelect); function handleFileSelect(event) { const file = event.target.files[0]; const reader = new FileReader(); reader.onload = function(e) { const data = new Uint8Array(e.target.result); const workbook = XLSX.read(data, {type: 'array'}); const firstSheet = workbook.Sheets[workbook.SheetNames[0]]; participants = XLSX.utils.sheet_to_json(firstSheet); enableButtons(); }; reader.readAsArrayBuffer(file); } function enableButtons() { document.querySelectorAll('.lottery-button').forEach(button => { button.disabled = false; }); } function disableButtons() { document.querySelectorAll('.lottery-button').forEach(button => { button.disabled = true; }); } function displayWinners(prize, winners) { const resultElement = document.getElementById('result'); resultElement.innerHTML = ''; // 清空现有内容 // 创建奖项容器 const container = document.createElement('div'); // 添加奖项标题 const titleDiv = document.createElement('div'); titleDiv.className = 'prize-title'; titleDiv.textContent = `${prize}中奖者:`; container.appendChild(titleDiv); // 创建网格容器 const gridDiv = document.createElement('div'); gridDiv.className = 'winners-grid'; // 添加获奖者 winners.forEach(name => { const winnerDiv = document.createElement('div'); winnerDiv.className = 'winner-item'; winnerDiv.textContent = name; gridDiv.appendChild(winnerDiv); }); container.appendChild(gridDiv); resultElement.appendChild(container); } async function startLottery(prize, numWinners) { if (participants.length < numWinners) { alert(`剩余人数不足,无法抽取 ${prize}!`); return; } disableButtons(); const resultElement = document.getElementById('result'); // 滚动效果 for (let i = 0; i < 50 i const randomname='participants[Math.floor(Math.random()' participants.length. resultelement.textcontent='randomName;' await new> setTimeout(resolve, 100)); } // 抽取获奖者 const currentWinners = []; for (let i = 0; i < numwinners i const winnerindex='Math.floor(Math.random()' participants.length currentwinners.pushparticipantswinnerindex. participants.splicewinnerindex 1 winnersprize='currentWinners;' displaywinnersprize currentwinners enablebuttons function saveresults if> arr.length > 0)) { alert('没有中奖者!'); return; } const rows = []; Object.entries(winners).forEach(([prize, names]) => { names.forEach(name => { rows.push([prize, name]); }); }); const ws = XLSX.utils.aoa_to_sheet([['奖项', '姓名'], ...rows]); const wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws, '中奖结果'); XLSX.writeFile(wb, '中奖结果.xlsx'); } </script>

相关推荐

WIN10系统如何启用net Framework功能

当我们安装一些办公软件或是设计软件时,需要.netFramework运行环境,如果没有安装这个运行环境,软件就会无法运行了。那在哪启用呢?下面,我来和大家分享一下第一步,点击开始--设置--在查找设...

玩游戏怎能没有.NET Framework 3.5 但你会安装它吗?

前段时间NVIDIA发布的最强“煤气灶”引发的不仅仅是显卡价格的剧烈变动(其实也没啥,老的不降价,新的还死贵),还有就是随之而来的一大波游戏,一部分在STEAM平台上搞促销,另外一部分则是不停的放烟雾...

.Net Framework还是.Net Core?

大家都知道,微软在2016年推出了.NetCore框架。后来为了统一,在.NetFramework到了V4.8后便不再更新,同时.NetCore更名为.Net,版本从5.0开始,目前最新版本是....

.Net Framework详解

相信有不少小伙伴遇到过这种情况:安装软件时提示.NetFramework未安装导致软件无法打开,或者需要安装.NetFramework4.0以上的组件。那.NetFramework是什么呢?....

远离报错烦恼!深入全面掌握.NET Framework

由于Windows系统对.NETFramework这一系统组件有着极为特殊的要求,而部分应用软件及游戏对其的依赖性也近乎达到了驱动级的水准,使用或安装不当会遭遇许多“未知”的问题,因此如何掌握.NE...

系统小技巧:深入全面掌握.NET Framework

由于Windows系统对.NETFramework这一系统组件有着极为特殊的要求,而部分应用软件及游戏对其的依赖性也近乎达到了驱动级的水准,使用或安装不当会遭遇许多“未知”的问题,因此如何掌握.NE...

小菜鸟学Java--如何拿下数组

前面谈及到了引用数据类型,数组就是一种,它还是比较重要的一种,本篇就来详细说说它和向量。数组先来说说数组。那么什么是数组呢?它是在数组的基础上的。数组是一种常用的引用数据类型,相同数据类型的元素按照一...

Java Class 类文件格式看这一篇就够了

本文将揭开JavaClass文件的神秘面纱,带你了解Class文件的内部结构,并从Class文件结构的视角告诉你:为什么JavaClass字节码文件可以“写一次,遍地跑”?为什么常量池的计数从1开...

八种经典排序算法总结,妈妈再也不用担心我不会了

前言算法和数据结构是一个程序员的内功,所以经常在一些笔试中都会要求手写一些简单的排序算法,以此考验面试者的编程水平。下面我就简单介绍八种常见的排序算法,一起学习一下。一、冒泡排序思路:比较相邻的元素。...

Java 面试题问与答:编译时与运行时

在开发和设计的时候,我们需要考虑编译时,运行时以及构建时这三个概念。理解这几个概念可以更好地帮助你去了解一些基本的原理。下面是初学者晋级中级水平需要知道的一些问题。Q.下面的代码片段中,行A和行B所标...

Java、Set、Map集合框架知识大全,收藏备用

前言Java集合框架的知识在Java基础阶段是极其重要的,我平时使用List、Set和Map集合时经常出错,常用方法还记不牢,于是就编写这篇博客来完整的学习一下Java集合框架的知识,如有遗漏和错误,...

Java反射+注解实现Entity类与Dto类相互转换

作者:Mr_Precious链接:https://www.cnblogs.com/scale-lai/p/10164634.html序言近期在工作中管理代码时发现,在项目中从Dao层到Service层...

Java 最细的集合类总结

数据结构作为每一个开发者不可回避的问题,而Java对于不同的数据结构提供了非常成熟的实现,这一个又一个实现既是面试中的难点,也是工作中必不可少的工具,在此,笔者经历漫长的剖析,将其抽丝剥茧的呈现出...

我见过的最糟糕代码

本文最初发布于jesuisundev.com网站,经原作者授权由InfoQ中文站翻译并分享。在本文中,我将向你展示我见过的一些最糟糕的代码,它们被称为“魔鬼代码”,会带来很严重的后果。然而,我...

Java面试中最容易忽略的细节,你中了几个?避坑指南送你

今日分享开始啦,请大家多多指教~学习Java要明确自己的需求,知道自己要做什么;分析思路,知道自己要怎么做。确定步骤,每一个思路部分用到哪些方法和对象。最后用代码实现,用具体的java语言把思路体现出...

取消回复欢迎 发表评论: