运用vue开发基础知识,实现添加学生5门科目的成绩,并计算出平均值,涉及到的姓名,班级用自己的信息,具体要求如下: 点击添加成绩,可从课程数据数组中,选择一门课添加,成绩随机生成一门成绩添加成功后,将本门课程从课程数组中删除,下次不可再选择!点击删除成绩,将本门课程重新添加至课程数字中,下次可添加该门课. 5072101 2 3 当课程数组中的课程全部添加完成后,提示,无课程添加: 5当页面中,没有成绩时,点击删除成绩提示,无成绩可删除

时间: 2023-07-31 14:10:10 浏览: 37
好的,这是一个比较简单的实现,以下是代码的基本思路: 1. 在vue中定义一个课程数据数组(courses),以及一个学生成绩对象数组(students),每个学生成绩对象包含学生姓名(name)、班级(class)、各门课程的成绩(scores)和平均分数(average)。 2. 定义一个方法(addScore),用于添加成绩。在点击添加成绩时,从课程数据数组中随机选择一门课程,并生成一个随机成绩,将成绩添加到当前学生的成绩对象中。如果课程数组中没有课程了,提示无课程可添加。 3. 定义一个方法(deleteScore),用于删除成绩。在点击删除成绩时,将当前选择的课程重新添加到课程数据数组中,并从学生成绩对象中删除该课程成绩。如果当前学生对象中没有成绩可删除,提示无成绩可删除。 4. 在页面上通过v-for指令遍历学生成绩对象数组,并使用表格展示学生姓名、班级、各门课程的成绩和平均分数等信息。 5. 在添加和删除成绩时,需要注意同步更新学生对象数组中的平均分数。 下面是完整的代码实现: ```html <template> <div> <table> <thead> <tr> <th>姓名</th> <th>班级</th> <th v-for="course in courses" :key="course">{{ course }}</th> <th>平均分</th> <th>操作</th> </tr> </thead> <tbody> <tr v-for="(student, index) in students" :key="index"> <td>{{ student.name }}</td> <td>{{ student.class }}</td> <td v-for="(score, courseIndex) in student.scores" :key="courseIndex">{{ score }}</td> <td>{{ student.average }}</td> <td> <button @click="addScore(index)" :disabled="courses.length === 0">添加成绩</button> <button @click="deleteScore(index)" :disabled="student.scores.length === 0">删除成绩</button> </td> </tr> </tbody> </table> <p v-if="courses.length === 0">无课程可添加</p> <p v-if="students.length === 0">无成绩可删除</p> </div> </template> <script> export default { data() { return { courses: ["语文", "数学", "英语", "物理", "化学"], students: [ { name: "张三", class: "一班", scores: [80, 90, 85, 95, 92], average: 88.4 }, { name: "李四", class: "二班", scores: [92, 88, 75, 85, 90], average: 86 }, { name: "王五", class: "三班", scores: [85, 95, 90, 80, 88], average: 87.6 } ] }; }, methods: { addScore(index) { const courseIndex = Math.floor(Math.random() * this.courses.length); const course = this.courses.splice(courseIndex, 1)[0]; const score = Math.floor(Math.random() * 41 + 60); this.students[index].scores.push(score); this.students[index].average = this.calcAverage(this.students[index].scores); alert(`添加 ${course} 成绩:${score}`); }, deleteScore(index) { const student = this.students[index]; if (student.scores.length > 0) { const course = student.scores.splice(-1, 1)[0]; this.courses.push(course); student.average = this.calcAverage(student.scores); alert(`删除 ${course} 成绩`); } }, calcAverage(scores) { const sum = scores.reduce((total, score) => total + score, 0); return (sum / scores.length).toFixed(1); } } }; </script> <style> table, th, td { border: 1px solid black; border-collapse: collapse; } th, td { padding: 5px; } </style> ```

相关推荐

最新推荐

recommend-type

java+vue实现添加单选题、多选题到题库功能

主要为大家详细介绍了java+vue实现添加单选题、多选题到题库功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Vue用v-for给循环标签自身属性添加属性值的方法

主要介绍了Vue用v-for给循环标签自身属性添加属性值的方法,文中大家给大家列举了三种方法 ,需要的朋友可以参考下
recommend-type

Vue开发Html5微信公众号的步骤

主要介绍了Vue开发Html5微信公众号的步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
recommend-type

vue实现商品加减计算总价的实例代码

主要介绍了vue实现商品加减计算总价的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

vue实现的上传图片到数据库并显示到页面功能示例

主要介绍了vue实现的上传图片到数据库并显示到页面功能,结合实例形式分析了基于vue.js的数据库操作及页面图片显示相关操作技巧,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SQL怎么实现 数据透视表

SQL可以通过使用聚合函数和GROUP BY子句来实现数据透视表。 例如,假设有一个销售记录表,其中包含产品名称、销售日期、销售数量和销售额等信息。要创建一个按照产品名称、销售日期和销售额进行汇总的数据透视表,可以使用以下SQL语句: ``` SELECT ProductName, SaleDate, SUM(SaleQuantity) AS TotalQuantity, SUM(SaleAmount) AS TotalAmount FROM Sales GROUP BY ProductName, SaleDate; ``` 该语句将Sales表按照ProductName和SaleDat
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。