首页 > 其他分享 >【VUE2实现成绩计算案例+附代码分享】

【VUE2实现成绩计算案例+附代码分享】

时间:2024-06-10 17:02:46浏览次数:25  
标签:name width list 案例 score VUE2 分享 border id

成绩案例运行界面效果图如下所示:
成绩计算案例

代码如下(直接复制到html文件中即可运行):

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    body {
        font-family: Arial, sans-serif;
        margin: 0;
        padding: 0;
        display: flex;
        justify-content: center;
        align-items: center;
        height: 100vh;
    }

    #app {
        width: 80%;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    h3 {
        text-align: center;
    }

    .content-wrapper {
        display: flex;
        justify-content: space-between;
        width: 100%;
    }

    table {
        border-collapse: collapse;
        width: 66.66%; /* 2/3 of the page */
        margin-bottom: 20px;
    }

    table, th, td {
        border: 1px solid #ddd;
    }

    th, td {
        padding: 8px;
        text-align: center;
    }

    th {
        background-color: #f2f2f2;
    }

    tfoot td {
        text-align: center;
        background-color: #f2f2f2;
    }

    .form-wrapper {
        width: 33.33%; /* 1/3 of the page */
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    form {
        border: 1px solid #ddd;
        padding: 20px;
        border-radius: 5px;
        margin-bottom: 20px;
        width: 100%;
    }

    label {
        margin-bottom: 5px;
    }

    input[type="text"] {
        width: 66%;
        padding: 8px;
        margin-bottom: 10px;
        box-sizing: border-box;
    }

    button {
        background-color: #4CAF50;
        color: white;
        padding: 10px 15px;
        border: none;
        border-radius: 5px;
        cursor: pointer;
        width: 66%;
    }

    button:hover {
        background-color: #45a049;
    }
    .red{
        color: red;
    }

</style>

<body>
    <div id="app">
        <h2>成绩计算案例</h2>
        <table>
            <thead>
                <tr>
                    <th>编号</th>
                    <th>科目</th>
                    <th>成绩</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                <tr v-for="(item,index) in list" :key="item.index">
                    <td>{{index+1}}</td>
                    <td>{{item.name}}</td>
                    <td :class="{red: item.score<60}">{{item.score}}</td>
                    <td><a href="#" @click="del(item.id)">删除</a></td>
                </tr>
            </tbody>
            <tfoot>
                <tr>
                    <td colspan="4">总分:{{totalScore}}&nbsp;&nbsp;&nbsp;平均分:{{avgScore}}</td>
                </tr>
            </tfoot>
        </table>
        <!-- v-model.number是转化为数字 -->
        <span>科目:</span><input type="text" name="" id="" placeholder="请输入科目" v-model.trim="name"><hr>
        <span>分数:</span><input type="text" name="" id="" placeholder="请输入分数" v-model.number="score"><hr>
        <button @click="add">添加</button>
    </div>

    <!-- <script src="js/vue.min.js"></script> -->
    <script src="https://cdn.staticfile.net/vue/2.7.0/vue.min.js"></script>
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                name:'',
                score:'',
                list: [
                    { id: 1, name: '语文' ,score: 46},
                    { id: 2, name: '英语' ,score: 80},
                    { id: 3, name: '数学' ,score: 100},
                ]
            },
            computed:{
                totalScore(){
                    return this.list.reduce((sum,item)=>sum+item.score,0)
                },
                avgScore(){
                    if(this.list.length===0){
                        return 0
                    }
                    return (this.totalScore/this.list.length).toFixed(2)
                }
            },
            methods: {
                del(id){
                    this.list = this.list.filter(item => item.id != id);
                },
                add(){
                    if(!this.name){
                        alert('请输入科目')
                        return
                    }
                    if(typeof this.score !=='number'){
                        alert('成绩需为数字类型')
                    }
                    this.list.unshift({
                        // 为了保证id的唯一性
                        id: new Date(),
                        name: this.name,
                        score: this.score
                    })
                    this.score='',
                    this.name=''
                }
                
            }
        })
    </script>
</body>

</html>

这个案例用到了,添加数据、删除数据、求和、求平均
多嘴一句,一定要多练习代码,加油在这里插入图片描述

标签:name,width,list,案例,score,VUE2,分享,border,id
From: https://blog.csdn.net/qiaoermeng/article/details/139578788

相关文章

  • C语言 & 图形化界面方式连接MySQL【C/C++】【图形化界面组件分享】
      博客主页:花果山~程序猿-CSDN博客文章分栏:MySQL之旅_花果山~程序猿的博客-CSDN博客关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长!目录一.配置开发环境 二,接口介绍1.mysql_init2.mysql_real_connect3.mysql_query4.对select结果分析......
  • Vue2学习二-Vue核心(事件处理)
    目录7.事件处理7.1事件的基本使用7.2事件修饰符7.3键盘事件7.事件处理7.1事件的基本使用<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"/> <title>事件的基本使用</title> <!--引入Vue--> <scripttype="text/javascript"......
  • AI大模型在健康睡眠监测中的深度融合与实践案例
    文章目录1.应用方案2.技术实现2.1数据采集与预处理2.2构建与训练模型2.3个性化建议生成3.优化策略4.应用示例:多模态数据融合与实时监测4.1数据采集4.2实时监测与反馈5.深入分析模型选择和优化5.1LSTM模型的优势和优化策略5.2CNN模型的优势和优化策略5.3T......
  • CorelDRAW2024注册码激活码分享,设计师的首选神器!
    【CorelDRAWGraphicsSuite2024】是一款集图形设计、照片编辑和矢量动画于一体的全面图形套件。这款软件因其用户友好的界面、强大的功能集以及支持多种文件格式而广受专业人士和业余爱好者的欢迎。它提供了创新的设计工具,如高级向量插图、页面布局、照片编辑等,旨在提升设计效......
  • 【PB案例学习笔记】-04文件浏览器
    写在前面这是PB案例学习笔记系列文章的第4篇,该系列文章适合具有一定PB基础的读者。通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。文章中设计到的源码,小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project-example.gi......
  • 51单片机语音识别STC89C52与LD3320语音模块源码分享
    51单片机STC89C52与LD3320语音模块通信源码:/************************************************************************************/#include"config.h"#include<stdio.h>#include<stdlib.h>/***************************************************......
  • Vue2基础知识:v-model在组件传值中的使用,表单组件如何封装,如何用v-model简化父传子,子传
    要想要了解v-model在组件传值中如何使用首先得先了解表单组件如何封装数据在父组件那里,表单结构在子组件那里。1.表单组件如何封装1.父传子:数据应该是父组件props传递过来的,v-model拆解绑定数据。(为什么说是拆解呢?因为不可以直接v-model绑定,子组件只能改变自己的值,不能改变......
  • 程序分享--常见算法/编程面试题:最长公共前缀
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容,持续上传中。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满......
  • minio的一个基础使用案例:用户头像上传
    文章目录一、minio下载安装(Windows)二、案例需求分析三、后端接口开发一、minio下载安装(Windows)1.下载minio服务端和客户端minio下载地址2.手动搭建目录/minio/binmc.exeminio.exe/data/logs手动创建minio应用程序目录,如......
  • 微信小程序加载、更新和生命周期、分享、转发、获取头像、获取昵称、手机号、客服功能
    【上拉下拉加载】1后端和路飞项目的课程表相对应234-----wxml-------567<viewwx:for="{{goods}}"wx:key="index">{{item.name}}</view>8910------js-----------111213Page({14data:{15page:1,16goods:[]......