欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > Vue实现成绩增删案例

Vue实现成绩增删案例

2025/5/7 1:48:05 来源:https://blog.csdn.net/2301_81616961/article/details/147687901  浏览:    关键词:Vue实现成绩增删案例

Vue实现成绩增删案例

  • 案例功能需求
  • 案例实现
    • 实现思路
    • 完整代码
    • 功能演示
  • 案例小结

案例功能需求

1.通过vue渲染数据,将成绩的相关信息显示出来(学号,学科,成绩)
2.能够增加相关的成绩信息
3.能够删除相关的成绩信息
4.能够自动统计总分以及平均分
5.在没有数据时,显示特定内容

案例实现

实现思路

数据渲染:
数据通过table表格来展示
通过v-for指令,将存储在数组中的数据嵌入td

 <tr v-for="item in list" :key="item.id"><td>{{item.id}}</td><td>{{item.subject}}</td><td>{{item.score}}</td><td><a href=""  @click.prevent="del(item.id)">删除</a></td></tr>

自动统计:
总分:通过computed计算属性,利用reduce()函数,对数组的成绩进行累加计算并返回累加结果

return this.list.reduce((sum, item) => sum + Number(item.score), 0)

平均分:
调用之前设计进行累加的计算方法,将获取的值除以信息总条数,获取平均分,并将其返回

return (this.show01 /this.list.length).toFixed(2)

增加信息:

对输入框添加v-model指令,进行数据的双向绑定,将输入的数据通过push(),放入存储数据的数组中

this.list.push({id:this.t1,subject:this.t2,score:this.t3})

删除信息:

创建方法,传入要删除信息的id(学号),遍历数组,将含有该id的信息从数组中删除

for(let i=0;i<this.list.length;i++){if(this.list[i].id==ID){this.list.splice(i,1)return;}}

显示特定内容:
通过v-if指令,当存储数据的数组长度为0时,将其设为true,则能将内容展示出来

<tbody v-if="ifshow<=0? true:false"></thbody>

完整代码

<template><table><thead><tr><th>学号</th><th>学科</th><th>成绩</th><th>操作</th></tr></thead><tbody v-if="ifshow>0? true:false"><tr v-for="item in list" :key="item.id"><td>{{item.id}}</td><td>{{item.subject}}</td><td>{{item.score}}</td><td><a href=""  @click.prevent="del(item.id)">删除</a></td></tr><tr class="tr_01"><td colspan="2" class="td1">总分:{{show01}}</td><td colspan="2" class="td2">平均分:{{ave}}</td></tr></tbody><tbody v-if="ifshow<=0? true:false"><tr><td colspan="4" class="td_01">数据为空</td></tr></tbody></table><div class="div_01"><label :class="{red :tt1,green: tt2}">{{show02}}</label><br><span><label for="">学号:</label><input type="text" name="" id="" v-model="t1"></span><br><span><label for="">学科:</label><input type="text" name="" id=""  v-model="t2"></span><br><span><label for="">成绩:</label><input type="text" name="" id=""  v-model="t3"></span><br><input type="submit" value="添加"  @click="add"></div>
</template><script>console.log(new Date())export default {data() {return {list:[{id:101,subject:'语文',score:99.9}],t1:"",t2:"",t3:"",show02:"",tt1:"",tt2:""}},methods:{del(ID){for(let i=0;i<this.list.length;i++){if(this.list[i].id==ID){this.list.splice(i,1)return;}}},add(){if(this.t1!=""&&this.t2!=""&&this.t3!=""){this.list.push({id:this.t1,subject:this.t2,score:this.t3})this.show02='正确'this.tt2=truethis.tt1=false}else{this.show02='输入内容不全'this.tt2=falsethis.tt1=true}this.t1=this.t2=this.t3=""console.log(this.tt1)console.log(this.tt2)},},computed:{ifshow(){return this.list.length},show01(){return this.list.reduce((sum, item) => sum + Number(item.score), 0)},ave() {if (this.list.length === 0) {return 0}else{return (this.show01 / this.list.length).toFixed(2)}},}}
</script><style>*{margin: 0;padding: 0;}table{border: 1px solid black;/* 合并 */border-collapse: collapse;margin: 5px;}th,td{border: 1px solid black;width: 100px;height: 50px;text-align: center;}.td_01{height: 130px;}.tr_01 td{border: none;}.td1{text-align: right;padding-right: 10px;}.td2{text-align: left;padding-left: 10px;}.div_01{position: fixed;left: 500px;top: 30px;}label{font-size: 18px;}input[type="text"]{width: 175px;height: 25px;}input[type="submit"]{display: block;margin: 5px auto;width: 47px;height: 27px;}.red{margin-left: 50px;color: red;}.green{margin-left: 50px;color: green;}
</style>

功能演示

初始页面

在这里插入图片描述
增添信息

在这里插入图片描述

删除信息
在这里插入图片描述

无数据

在这里插入图片描述

案例小结

1.要在不同的情况下,显示不同的页面,可以通过v-if或v-show指令实现。v-if只有在true时,才会进行页面的渲染,而v-show无论什么情况都会进行页面的渲染。

2.v-bind指令,可以用来改变属性值(class、href、style),通过数组或对象来存放属性值。以class为例,对象{类名 ,布尔型(true,false)},当为true时,该类才会添加到元素中。数组[类名 , 类名],适合用来一次性添加大量类名或删除。

3.computed属性通常是用来返回值,也就是可读的。在进行调试时,若给定义的计算属性赋值,会发现,值不会改变。若需要一个可读写的计算属性,可以通过定义get、set进行实现。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词