运用vue开发基础知识,实现添加学生5门科目的成绩,并计算出平均值,涉及到的姓名,班级用自己的信息,具体要求如 (1)点击添加成绩,可从课程数据数组中,选择一门课添加,成绩随机生成:(2)一门成绩添加成功后,将本门课程从课程数组中删除,下次不可再选择:(3)点击删除成绩,将本门课程重新添加至课程数字中,下次可添加该门课:(4)当课程数组中的课程全部添加完成后,提示,无课程添加; (5)当页面中,没有成绩时,点击删除成绩提示,无成绩可删除。
时间: 2023-07-31 12:07:55 浏览: 77
首先,我们需要定义一个数组来存储学生的成绩信息,包括学生姓名、班级、课程名称和成绩。
```javascript
data() {
return {
courses: [
{ name: "数学", selected: false },
{ name: "语文", selected: false },
{ name: "英语", selected: false },
{ name: "物理", selected: false },
{ name: "化学", selected: false }
],
students: []
}
}
```
其中courses数组用来存储所有的课程,selected属性表示该课程是否已经被选择。students数组用来存储所有学生的成绩信息。
接下来,我们定义两个方法来添加和删除成绩。
```javascript
methods: {
addScore() {
// 检查是否还有可选的课程
if (this.courses.filter(course => !course.selected).length === 0) {
alert("已经没有可添加的课程!");
return;
}
// 随机选择一门未选择的课程
let availableCourses = this.courses.filter(course => !course.selected);
let course = availableCourses[Math.floor(Math.random() * availableCourses.length)];
course.selected = true;
// 随机生成成绩
let score = Math.floor(Math.random() * 101);
// 添加学生的成绩信息
this.students.push({
name: "张三",
class: "一班",
course: course.name,
score: score
});
},
deleteScore(index) {
if (this.students.length === 0) {
alert("没有可删除的成绩!");
return;
}
// 获取被删除的成绩信息
let score = this.students.splice(index, 1)[0];
// 将该课程标记为未选择
let course = this.courses.find(course => course.name === score.course);
course.selected = false;
}
}
```
addScore方法实现了随机选择一门未选择的课程,并且生成随机成绩,然后将学生的成绩信息添加到students数组中。
deleteScore方法用来删除指定位置的成绩信息,并且将对应的课程标记为未选择。
最后,我们需要在页面中显示学生的成绩信息,并且计算平均分。
```html
<table>
<thead>
<tr>
<th>姓名</th>
<th>班级</th>
<th>课程</th>
<th>成绩</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(score, index) in students" :key="index">
<td>{{ score.name }}</td>
<td>{{ score.class }}</td>
<td>{{ score.course }}</td>
<td>{{ score.score }}</td>
<td><button @click="deleteScore(index)">删除</button></td>
</tr>
</tbody>
</table>
<p v-if="students.length > 0">
平均分: {{ (students.reduce((sum, score) => sum + score.score, 0) / students.length).toFixed(2) }}
</p>
```
这段代码用来显示学生的成绩信息,并且计算平均分。其中v-for指令用来循环遍历students数组中的每个成绩信息,然后使用reduce方法来计算所有成绩的总和,并且除以学生人数来计算平均分。toFixed方法用来保留两位小数。
阅读全文