html5、js、css3、vue3实现人员抽取小程序,界面美观、布局合理,可以自定义名单,同一个组中的人员不被重复抽中,每次抽取均为不同组人员,直至所有组人员均被抽取一次后方能再次抽中已抽过组中的人员


好的,下面是一个使用 HTML5、CSS3、JavaScript 和 Vue 3 实现的人员抽取小程序。这个程序允许用户自定义名单,确保同一个组中的人员不会被重复抽中,直到所有组的人员都被抽取一次。 HTML (index.html) ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>人员抽取小程序</title> <link rel="stylesheet" href="styles.css"> <script src="https://unpkg.com/vue@next"></script> </head> <body> <div id="app"> <h1>人员抽取小程序</h1> <div class="input-section"> <label for="groups">请输入组名和人员(格式:组名: 人员1, 人员2, ...)</label> <textarea v-model="groupsInput" rows="10" placeholder="例如:组1: 张三, 李四\n组2: 王五, 赵六"></textarea> <button @click="parseGroups">解析名单</button> </div> <div v-if="groups.length > 0" class="result-section"> <h2>已解析的组和人员</h2> <ul> <li v-for="(group, index) in groups" :key="index">{{ group.name }}: {{ group.members.join(', ') }}</li> </ul> <button @click="drawPerson">抽取人员</button> <p v-if="selectedPerson">抽取结果:{{ selectedPerson }}</p> </div> </div> <script src="app.js"></script> </body> </html> ``` CSS (styles.css) ```css body { font-family: Arial, sans-serif; background-color: #f0f0f0; margin: 0; padding: 20px; } #app { max-width: 600px; margin: 0 auto; background-color: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } h1, h2 { text-align: center; } .input-section, .result-section { margin-bottom: 20px; } textarea { width: 100%; height: 100px; padding: 10px; border: 1px solid #ccc; border-radius: 4px; resize: none; } button { display: block; width: 100%; padding: 10px; background-color: #007bff; color: #fff; border: none; border-radius: 4px; cursor: pointer; margin-top: 10px; } button:hover { background-color: #0056b3; } ul { list-style-type: none; padding: 0; } li { margin: 5px 0; } ``` JavaScript (app.js) ```javascript const app = Vue.createApp({ data() { return { groupsInput: '', groups: [], selectedPerson: null, drawnMembers: [] }; }, methods: { parseGroups() { this.groups = []; const lines = this.groupsInput.trim().split('\n'); lines.forEach(line => { const [groupName, members] = line.split(':'); if (groupName && members) { this.groups.push({ name: groupName.trim(), members: members.trim().split(',').map(member => member.trim()) }); } }); this.drawnMembers = new Array(this.groups.length).fill(null); }, drawPerson() { let availableGroups = this.groups.filter((group, index) => !this.drawnMembers[index]); if (availableGroups.length === 0) { alert('所有组的人员都已抽取完毕,重新开始。'); this.drawnMembers = new Array(this.groups.length).fill(null); availableGroups = this.groups; } const randomGroupIndex = Math.floor(Math.random() * availableGroups.length); const randomGroup = availableGroups[randomGroupIndex]; const availableMembers = randomGroup.members.filter(member => !this.drawnMembers.includes(member)); if (availableMembers.length === 0) { alert(`组 ${randomGroup.name} 的人员都已抽取完毕,重新开始。`); this.drawnMembers[randomGroupIndex] = null; return; } const randomMemberIndex = Math.floor(Math.random() * availableMembers.length); const selectedMember = availableMembers[randomMemberIndex]; this.selectedPerson = `${randomGroup.name}: ${selectedMember}`; this.drawnMembers[randomGroupIndex] = selectedMember; } } }); app.mount('#app'); ``` 需要注意的逻辑点 1. 解析名单时的格式检查:确保用户输入的格式正确,避免因格式错误导致解析失败。 2. 抽取逻辑的优化:确保每个组的人员在所有组的人员都被抽取一次之前不会被重复抽取。 3. 用户体验:添加更多的提示信息和友好的用户交互,如抽取完毕后的提示和重新开始的功能。 [2024-12-12 16:55:01 | AI写代码神器 | 1179点数解答]
- 用java创建窗体jframe综合使用空间容器进行界面的布局,并编程实现在多个不同的界面之间相互跳转。 (1)单击“登录”按钮,能够根据输入的账号密码进行登录;如果登录失败,能够提示;如果登录成功,提示登录成功之后,能到达操作界面。 (2)单击“注册”按钮,登录界面消失,出现注册界面。 (3)单击“退出”按钮,程序退出。 或者,在上面图二中: (1)当单击“添加个人信息”菜单后进入“个人信息添加”界面,添加完成后跳转到个人信息显示界面,如果不想添加可返回到图二。 (2)当单击“修改个人信息”菜单进入到“个人信息修改”界面,修改成功后跳转到个人信息显示界面,如果不想修改可返回到图二。 (3)当单击“查看个人信息”菜单进入到“个人信息显示”界面,查看完毕可返回到图二。 (4)当单击“删除个人信息”菜单进入到“个人信息删除”界面,删除成功后跳转到个人信息显示界面,如果不想修改可返回到图二。(503点数解答 | 2024-06-06 23:49:29)281
- html5、js、css3、vue3实现人员抽取小程序,界面美观、布局合理,可以自定义名单,同一个组中的人员不被重复抽中,每次抽取均为不同组人员,直至所有组人员均被抽取一次后方能再次抽中已抽过组中的人员(1179点数解答 | 2024-12-12 16:55:01)185
- fieldname=['商品 id','图书名称','价格','商品编码','出版社'] bookdata=[1,"html5+css3 移动 web开发实战",58.00,"50676377587","人民邮电出版社"] for item in fieldname: if item.find("id")!=-1: print("{:^10s }".format(item),end="") elif item.find("图书名称")==-1: print(": 14s}".format(item), end="") else: print(": 24s}".format(item), end="") print("") print("{:^10s }".format(item),end="") valueerror: invalid format specifier 帮我修复(187点数解答 | 2024-10-16 15:53:08)269
- fieldname=['商品 id','图书名称','价格','商品编码','出版社'] bookdata=[1,"html5+css3 移动 web开发实战",58.00,"50676377587","人民邮电出版社"] for item in fieldname: if item.find("id")!=-1: print("{:^10s }".format(item),end="") elif item.find("图书名称")==-1: print(": 14s}".format(item), end="") else: print(": 24s}".format(item), end="") print("") print("{:^10s }".format(item),end="") valueerror: invalid format specifier 帮我修复(204点数解答 | 2024-10-16 15:53:41)216
- import math class ball: """ 实现 def __init__(self, radius) 函数, 他有一个参数radius, 并为对象初始化一个变量self.radius """ """ 实现 def surface_area(self) 函数, 通过self.radius计算球的表面积, 并将这个表面积返回 """ """ 实现 def volume(self) 函数, 通过self.radius计算球的体积, 并将这个体积返回 """ """ 在评测文件中将这样调用这个类 ball = ball(eval(input())) print("球的半径:{:.2f}".format(ball.radius)) print("球的表面积:{:.2f}".format(ball.surface_area())) print("球的体积:{:(261点数解答 | 2024-11-28 21:19:39)207
- cannot read properties of null (reading 'userid') typeerror: cannot read properties of null (reading 'userid') at eval (webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedruleset-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleset[0].use[0]!./src/views/businesslistview.vue?vue&type=script&setup=true&lang=js:28:88) at eval (webpack-internal:///./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js:2677:40) at callwitherrorhandling (webpack-internal:/(614点数解答 | 2024-11-28 14:31:57)178
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(475点数解答 | 2024-12-19 14:58:05)266
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(495点数解答 | 2024-12-19 14:58:06)210
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(497点数解答 | 2024-12-19 14:58:18)219
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(497点数解答 | 2024-12-19 14:58:20)232
- <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Three.js 示例</title> <style> body { margin: 0; } canvas { display: block; } </style> </head> <body> <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r146/three.min.js"></script> <script> // 你的 Three.js 代码 const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); const renderer = new THREE.WebGLRenderer(); (164点数解答 | 2025-02-27 23:30:20)154
- <!DOCTYPE html> <html> <head> <title>可360°观察的正交长方体</title> <style> body { margin: 0; overflow: hidden; } canvas { display: block; } </style> </head> <body> <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/controls/OrbitControls.js"></script> <script> // 初始化场景 const scene = new THREE.Scene(); scene.background = new THREE.Color((466点数解答 | 2025-03-01 11:35:41)160