基于vue3实现的课堂点名程序

设计思路

采用vue3实现的课堂点名程序,模拟课堂座位布局,点击开始点名按钮后,一朵鲜花在座位间传递,直到点击结束点名按钮,鲜花停留的座位被点名。

课堂点名

座位组件 seat.vue

<script setup>//组合式API
  import { ref,reactive,onMounted } from 'vue';
  const seatImage=ref('/src/assets/desk.jpg')
  const props=defineProps({ // 当前图片索引
          row:{type:Number,default:0},
          col:{type:Number,default:0},
          callRow:{type:Number,default:0},
          callCol:{type:Number,default:0},
          sName:{type:String,default:""}
    })
</script>
<template >
  <div style="height: 94px;"> 
    <button  >
      <img :src="seatImage" alt="Button Image">
    </button>
    <div style="width: 42px; text-align: center;">{{props.sName}}</div>
    <div v-if="props.callRow===props.row && props.callCol===props.col">🌺 </div>
</div>
</template>
<style >
</style>

教室组件 classroom.vue

<template>
   <div>  
    <el-button type="primary" @click="startCall">开始点名</el-button>
    <el-button type="danger" @click="overCall">结束点名</el-button>
  </div>
  <br>
    <el-table :data="tableData" style="width: 100%" table-layout="auto">
        <el-table-column  :label= item.col v-for="(item, index) in tableData[0]" :key="index">
        <template v-slot="scope">
            <seat :col=scope.row[index].col  :row=scope.row[index].row 
                  :callRow=callRow           :callCol=callCol
                  :sName=scope.row[index].sName
                  :key="componentKey">
            </seat>
        </template>
        </el-table-column>
    </el-table>
  </template>
  <script  setup>
  import { ref,reactive,onMounted} from 'vue';
  import seat from './seat.vue';
  var timer=ref("")
  const callRow=ref(0)
  const callCol=ref(0)
  var componentKey=0
  const classroom=ref( {
    rows:3,
    cols:3,
    seatsMap:[
		  {row: 0,col: 0,sName:"樊兰英"}, {row: 0,col: 1,sName:"张磊"},{row: 0,col: 2,sName:"朱旭"},
		  {row: 1,col: 0,sName:"沈玉"},   {row: 1,col: 1,sName:"邓平"},{row: 1,col: 2,sName:"蒋兰英"},
      {row: 2,col: 0,sName:"程晨"},   {row: 2,col: 1,sName:"张承"},{row: 2,col: 2,sName:"陈楚华"}
    ]})
  const tableData = ref([])
  makeTable();
  mergeData();
  function makeTable () {
		  for (let i = 0; i < classroom.value.rows; i++) 
			  tableData.value.push({})
      for(let i = 0; i < classroom.value.cols; i++){
        tableData.value.forEach((tableRow,idxRow)=>{
          let fieldName='c'+i; 
          tableRow[fieldName]={row:idxRow,col:i,sName:""};
          })}}
  function mergeData () {
		  // 合并数据
			for (let i = 0; i < classroom.value.seatsMap.length; i++) {			  
        let fieldName='c'+classroom.value.seatsMap[i].col;
        tableData.value[classroom.value.seatsMap[i].row][fieldName] = classroom.value.seatsMap[i]
			}}
    function startCall(){  
      timer = setInterval(genRowCol, 200); 
    }
    function genRowCol() { //随机产生座位号
      callRow.value= parseInt(Math.random()*classroom.value.rows) ;
      callCol.value= parseInt(Math.random()*classroom.value.cols) ;
      componentKey += 1;//组件key加1,强制子组件刷新
    }
    function overCall(){ 
      clearInterval(timer);
    }
  </script>

调用

 <classroom ></classroom>

扩展

程序还可以作一下扩展:

1)按性别点名,比如这次抽取男生或女生;

2)按成绩排名点名,比如这次抽取成绩好的学生;

3)按课堂表现点名,比如抽取不爱发言的学生;

4)优先抽取没有点过名的学生

以上条件可以组合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/969646.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Springboot 中如何使用Sentinel

在 Spring Boot 中使用 Sentinel 非常方便&#xff0c;Spring Cloud Alibaba 提供了 spring-cloud-starter-alibaba-sentinel 组件&#xff0c;可以快速将 Sentinel 集成到你的 Spring Boot 应用中&#xff0c;并利用其强大的流量控制和容错能力。 下面是一个详细的步骤指南 …

IoTDB 导入数据时提示内存不足如何处理

问题现象 IoTDB 导入数据时提示内存不足&#xff0c;该如何处理&#xff1f; 解决方案 数据导入脚本会在触发内存不足的时候主动进行重试。当遇到此问题时&#xff0c;用户不用做任何操作&#xff0c;脚本也可以正确进行处理。如果想从根源减少此类提示&#xff0c;可以按照下…

计算机视觉中图像的基础认知

一、图像/视频的基本属性 在计算机视觉中&#xff0c;图像和视频的本质是多维数值矩阵。图像或视频数据的一些基本属性。 宽度&#xff08;W&#xff09; 和 高度&#xff08;H&#xff09; 定义了图像的像素分辨率&#xff0c;单位通常是像素。例如&#xff0c;一张 1920x10…

【React】组件通信

组件通信 父传子 - props function Article(props) {return (<div><h2>{props.title}</h2><p>{props.content}</p><p>状态&#xff1a; {props.active ? 显示 : 隐藏}</p></div>) } // 设置默认值方式一 // 使用 defaultPr…

Tomcat添加到Windows系统服务中,服务名称带空格

要将Tomcat添加到Windows系统服务中&#xff0c;可以通过Tomcat安装目录中“\bin\service.bat”来完成&#xff0c;如果目录中没有service.bat&#xff0c;则需要使用其它方法。 打到CMD命令行窗口&#xff0c;通过cd命令跳转到Tomcat安装目录的“\bin\”目录&#xff0c;然后执…

基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能

一、介绍 蘑菇识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;基于TensorFlow搭建卷积神经网络算法&#xff0c;并收集了9种常见的蘑菇种类数据集【“香菇&#xff08;Agaricus&#xff09;”, “毒鹅膏菌&#xff08;Amanita&#xff09;”, “牛肝菌&…

124 巨坑uni-app踩坑事件 uniCloud本地调试服务启动失败

1.事情是这样的 事情是这样的&#xff0c;我上午在运行项目的时候还是好好的&#xff0c;我什么都没干&#xff0c;没动代码&#xff0c;没更新&#xff0c;就啥也没干&#xff0c;代码我也还原成好好的之前的样子&#xff0c;就报这个错&#xff0c;但是我之前没用过这个服务呀…

Android Studio “Sync project with Gradle Files”按钮消失——文件层级打开不对

问题出现的背景 Android Studio显示&#xff0c;后来查找解决方案&#xff0c;里面提到“Sync project with Gradle Files”按钮&#xff0c;一检查发现自己的软件上面没有这个选项&#xff0c;于是参考 https://debugah.com/android-studio-can-not-find-sync-project-with-g…

什么是HTTP Error 429以及如何修复

为了有效管理服务器资源并确保所有用户都可以访问&#xff0c;主机提供商一般都会对主机的请求发送速度上做限制&#xff0c;一旦用户在规定时间内向服务器发送的请求超过了允许的限额&#xff0c;就可能会出现429错误。 例如&#xff0c;一个API允许每个用户每小时发送100个请…

LAWS是典型的人机环境系统

致命性自主武器系统&#xff08;Lethal Autonomous Weapons Systems&#xff0c;LAWS&#xff09;是一种典型的人机环境系统&#xff0c;它通过高度集成的传感器、算法和武器平台&#xff0c;在复杂的战场环境中自主执行任务。LAWS能够自主感知环境、识别目标、做出决策并实施攻…

IC-Portrait:打造逼真个性化肖像的新纪元!

在数字内容创作、虚拟形象、游戏和增强现实等领域&#xff0c;肖像生成已成为计算机图形学研究的热点。尽管近年来肖像生成模型取得了显著进展&#xff0c;能够生成越来越逼真和吸引人的肖像&#xff0c;但仍面临诸多挑战。 今天&#xff0c;给大家介绍一种个性化肖像生成框架I…

ubuntu服务器部署

关闭欢迎消息 服务器安装好 ubuntu 系统后&#xff0c;进行终端登录&#xff0c;会显示出很多的欢迎消息 通过在用户的根目录下执行 touch .hushlogin 命令&#xff0c;再次登录终端就不会出现欢迎消息 修改hostname显示 修改 /etc/hostname 文件内容为主机名&#xff0c;保…

【第3章:卷积神经网络(CNN)——3.5 CIFAR-10图像分类】

嘿,小伙伴们,今天咱们来聊聊一个超级酷炫的话题——卷积神经网络(CNN)及其在CIFAR-10图像分类中的应用。这不仅仅是一个技术话题,更是一场探索人工智能奥秘的旅程。准备好了吗?咱们这就发车! 一、CNN:人工智能的“千里眼” 首先,咱们得知道CNN是啥。CNN,全名Convol…

腿足机器人之二- 运动控制概览

腿足机器人之二运动控制概览 高层运动规划MPCRL 中层逆运动学和逆动力学底层执行器控制传感器校正 上一篇博客是腿足机器人的骨架和关节的机械和电气组件&#xff0c;关节不仅需要通过机械设计实现复杂的运动能力&#xff0c;还必须通过电子组件和控制系统来精确控制这些运动。…

无人机信号调制技术原理

一、调制技术的必要性 频谱搬移&#xff1a;将低频的基带信号搬移到高频的载波上&#xff0c;便于天线辐射和传播。 信道复用&#xff1a; 利用不同的载波频率或调制方式&#xff0c;实现多路信号同时传输&#xff0c;提高信道利用率。 抗干扰&#xff1a; 通过选择合适的调…

Python 闭包与装饰器

前言&#xff1a;之前讲完了面向对象的三大特征&#xff0c;这篇讲解的是闭包与装饰器&#xff08;作用域&#xff0c;nonlocal关键字&#xff0c;global关键字&#xff09; 闭包 定义 闭包是指有权访问另一个函数作用域中变量的函数。简单来说&#xff0c;即使该函数已经执行…

【Flink快速入门-4.流处理之基于 Key 的算子】

流处理之基于 Key 的算子 实验介绍 在 SQL 中我们经常会用到分组&#xff08;group by&#xff09;操作&#xff0c;在 group 关键词之后指定要聚合的键&#xff0c;在 group 之前指定要聚合的逻辑&#xff08;计数、求和、求最大值等&#xff09;&#xff0c;通过分区键将数…

sib报错:com.*.xctrunner is not in your device!

1、问题描述 在使用sonic集成IOS设备的时候,我们需要通过sonic-agent服务去识别IOS设备。但是在识别的时候提示如下问题: 本质就是在你这个设备中找不到这个设备也就是找不到WebDriverAgentRunner,但是确实安装了,甚至appium可以正常的调用。 或执行如下命令的时候报错:…

数据结构与算法-队列

参考学习&#xff1a;B站-逊哥带你学编程 队列的定义与实现 队列的顺序结构实现 #define MAXSIZE 100 typedef int ElemType;typedef struct {ElemType data[MAXSIZE];int front;int rear; }Queue;图示&#xff1a; 队列的顺序结构-初始化 void initQueue(Queue *Q) {Q->…

SQL联合查询

文章目录 MySQL系列&#xff1a;1.内连接2.外连接3.自连接4.子查询5.合并查询6.插入查询 MySQL系列&#xff1a; 初识MySQL&#xff0c;MySQL常用数据类型和表的操作&#xff0c;增删改查(CRUD)操作(总),数据库约束数据库设计 #班级表 drop table if exists class; create ta…