当前位置: 首页 > news >正文

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进行实现。

相关文章:

  • 在pycharm profession 2020.3将.py程序使用pyinstaller打包成exe
  • (37)VTK C++开发示例 ---纹理地球
  • [更新完毕]2025东三省B题深圳杯B题数学建模挑战赛数模思路代码文章教学:LED显示屏颜色转换设计与校正
  • 【掌握 DDL】:SQL 中的数据库与表管理
  • with的用法
  • 机器学习_线性回归
  • 数据库基础-库,表的操作
  • 大模型开发的环节
  • IDEA回滚代码操作
  • REINFORCE蒙特卡罗策略梯度算法详解:python从零实现
  • 【算法刷题笔记day one】滑动窗口(定长基础版)
  • Lua 基础 API与 辅助库函数 中关于创建的方法用法
  • python中的yield关键字用法
  • 【Mytais系列】Type模块:类型转换
  • VBA 64位API声明语句第009讲
  • RUST变量学习笔记
  • 【AI面试准备】XMind拆解业务场景识别AI赋能点
  • 2025年渗透测试面试题总结-拷打题库36(题目+回答)
  • 迭代器的思想和实现细节
  • 【计算机视觉】三维重建: OpenMVS:工业级多视图立体视觉重建框架
  • 41年轮回,从洛杉矶奔向洛杉矶,李宁故地重游再出发
  • 缅甸国防军继续延长临时停火期限至5月31日
  • 当Z世代与传统戏曲在春日校园相遇
  • 澎湃读报丨央媒头版五四青年节集中刊文:以青春之我,赴时代之约
  • “国宝探索记”增强亲子连接,国宝成了生活想象的一部分
  • 今年4月上海一二手房成交面积同比增21%,二手房成交2.07万套