首先是HTML




    
    
    
    
    学生管理系统
    


    

学生成绩管理系统

ALL 理科1班 理科2班 文科1班 文科2班
学号 姓名 班级 英语 语文 数学 总分 操作

提示

X

学号:

姓名:

班级:

理科1班 理科2班 文科1班 文科2班

英语:

语文:

数学:

提示

X

学号 姓名 班级 英语 语文 数学 总分

提示

X

选择修改内容

英语 语文 数学 班级 理科1班 理科2班 文科1班 文科2班

提示

X

提示

X

平均分

而后是css

body{
    height: 500px;
}
h1{
display: flex;
justify-content: center;
color: rgb(60, 60, 60);
}
.tablebox{
position: relative;
z-index: 100;
border: 1px solid rgb(238,238,238);
width: 100%;
height: 34rem;
background-color: rgb(250,250,250);
}
.tablbox{
    display: flex;
    /* height: 500px; */
    overflow: auto;
}
.table-container {
width: 100%;
height: 480px; /* 设置固定高度 */
overflow-y: auto; /* 启用垂直滚动条 */
margin: 10px 20px 0 0; /* 添加一些间距,使得两个表格之间有空隙 */
}

.table-container table {
width: 100%; /* 表格宽度为容器宽度 */
}
.table-container::-webkit-scrollbar {
width: 0px;
}
table{
z-index: 9; 
width: 100%;
margin-right: 10px;
border-collapse: collapse;
}
table,table tr th, table tr td { 
z-index: 5;
color: rgb(102, 102, 102);
border:1px solid rgb(238,238,238); 
}

.chakan{
cursor: pointer;
border-radius: 2px;
width: 50px;
height: 35px;
color: rgb(255, 255, 255);
border: none;
background-color: rgb(46,185,170);
box-shadow: 1.5px 1.5px 0 0 rgb(46, 185, 171, 0.445) ;
}
.chakan:active{
box-shadow: 0 0 0 0 rgba(255, 255 255, 0);
transition: all 0.1s;
}
.chakan1{
cursor: pointer;
border-radius: 2px;
width: 50px;
height: 35px;
margin-left: 10px;
color: rgb(255, 255, 255);
border: none;
background-color: rgb(46,185,170);
}
.chakan2{
    cursor: pointer;
    border-radius: 2px;
    width: 120px;
    height: 35px;
    margin-left: 10px;
    color: rgb(255, 255, 255);
    border: none;
    background-color: rgb(46,185,170);
    }
#qiehuan{
width: 70px;
height: 35px;
color: rgb(102, 102, 102);

}
.bubox{
margin: 5px 5px 5px 5px;
}
.bubox input{
border: none;
border-radius: 5px;
height: 30px;
width: 90px;
}
.fu{
cursor: pointer;
border-radius: 2px;
width: 50px;
height: 35px;
color: rgb(102, 102, 102);
border: none;
background-color: white;
border: 1px solid rgb(238,238,238);
box-shadow: 1.5px 1.5px 0 0 rgba(102, 102, 102, 0.445);
}
.fu:active{
    box-shadow:0 0 0 0 rgba(255, 255, 255, 0);
    transition: all 0.1s;
}
.fu1{
font-size: 15px;
padding: 5px 5px 5px 5px;
cursor: pointer;
border-radius: 2px;
width: 50px;
height: 35px;
color: rgb(102, 102, 102);
border: none;
background-color: white;
border: 1px solid rgb(238,238,238);
box-shadow: 1.5px 1.5px 0 0 rgba(102, 102, 102, 0.445);
}
.fu1:active{
    box-shadow:0 0 0 0 rgba(255, 255, 255, 0);
    transition: all 0.1s;
}
.alert{
opacity: 0;
position: relative;
z-index: -1;
border-radius: 15px;
margin: -385px auto;
border: 1px solid rgb(238,238,238);
width: 30%;
background-color: rgb(250,250,250);
transition: opacity 0.3s ease-in-out;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);

text-align: center;
}

.alert1{
opacity: 0;
position: relative;
z-index: -999;
border-radius: 15px;
margin: -385px auto;
border: 1px solid rgb(238,238,238);
width: 30%;
background-color: rgb(250,250,250);
transition: opacity 0.3s ease-in-out;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);

text-align: center;
}
.alert2{
opacity: 0;
position: relative;
z-index: -999;
border-radius: 15px;
margin: 385px auto;
border: 1px solid rgb(238,238,238);
width: 20%;
background-color: rgb(250,250,250);
transition: opacity 0.3s ease-in-out;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);

text-align: center;
}
#tablebox1 tr:nth-child(odd) {
background-color: #f2f2f2; /* 设置奇数行的背景颜色 */
}
#tablebox3 tr:nth-child(odd) {
background-color: #f2f2f2; /* 设置奇数行的背景颜色 */
}
.alert3{
    top: 10px;
opacity: 0;
position: absolute;
z-index: -999;
border-radius: 15px;
left: 40rem;
top: 15rem;
right: 0;
border: 1px solid rgb(238,238,238);
width: 20%;
background-color: rgb(250,250,250);
transition: opacity 0.3s ease-in-out;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);

text-align: center;
}
.notword{
    color: red;
}
.alert4{
    top: 10px;
opacity: 0;
position: absolute;
z-index: -999;
border-radius: 15px;
left: 40rem;
top: 15rem;
right: 0;
border: 1px solid rgb(238,238,238);
width: 20%;
background-color: rgb(250,250,250);
transition: opacity 0.3s ease-in-out;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);

text-align: center;
}
.alert div{
margin-top: 10px;
margin-bottom: 10px;
display: flex;
justify-content: center;
}
.alert1 div{
margin-top: 10px;
margin-bottom: 10px;
display: flex;
justify-content: center;
}
.alert2 div{
margin-top: 10px;
margin-bottom: 10px;
display: flex;
justify-content: center;
}
.alert3 .nar{
margin-top: 10px;
margin-bottom: 10px;
display: flex;
justify-content: center;
}
.alert4 .nar{
    margin-top: 10px;
    margin-bottom: 10px;
    display: flex;
    justify-content: center;
    }
.alert3 .pai{
flex-direction: column; /* 让子元素垂直排列 */
display: flex;
justify-content: center;
}
.alert3 .pai button{
text-align: center;
display: block;
margin: 0 auto;
cursor: pointer;
border-radius: 2px;
margin-bottom: 5px;
width: 50px;
height: 25px;
color: rgb(255, 255, 255);
border: none;
background-color: rgb(46,185,170);
}
.alert input{
border:1px solid rgb(228,226,226);
margin-top: 10px;
height: 35px;
}

.alert select{
border:1px solid rgb(228, 226, 226);
margin-top: 10px;
width: 173px;
height: 35px;
}
.alert2 select{
border:1px solid rgb(228, 226, 226);
margin-top: 10px;
width: 100px;
height: 35px;
}
.alert2 input{
border:1px solid rgb(228, 226, 226);
width: 100px;
height: 35px;
}
.alert .nar p{
margin-left: 100px;
margin-right: 60px;
}

.alert1 .nar p{
margin-left: 100px;
margin-right: 60px;
}
.alert2 .nar p{
margin-left: 100px;
margin-right: 60px;
}
.alert3 .nar p{
margin-left: 100px;
margin-right: 60px;
}
.alert4 .nar p{
    margin-left: 100px;
    margin-right: 60px;
    }
.alert button{
text-align: center;
display: block;
margin: 0 auto;
cursor: pointer;
border-radius: 2px;
margin-bottom: 5px;
width: 50px;
height: 25px;
color: rgb(255, 255, 255);
border: none;
background-color: rgb(46,185,170);
}

.alert2 button{
text-align: center;
display: block;
margin: 0 auto;
cursor: pointer;
border-radius: 2px;
margin-bottom: 5px;
width: 50px;
height: 25px;
color: rgb(255, 255, 255);
border: none;
background-color: rgb(46,185,170);
}

td
{
text-align: center;
}
tr:hover{
background-color: rgb(190, 190, 190);
}

接下来是js

比较多 首先是基本功能的js

function quexiao(){
    document.getElementById("alert").style.opacity = 0;
    setTimeout(()=>{
    document.getElementById("alert").style.zIndex = -999;
}, 300)
}
function quexiao1(){
    document.getElementById("alert1").style.opacity = 0;
    setTimeout(()=>{
    document.getElementById("alert1").style.zIndex = -999;
}, 300);
}
function quexiao4(){
    document.getElementById("alert4").style.opacity = 0;
    setTimeout(()=>{
    document.getElementById("alert4").style.zIndex = -999;
}, 300);
}
function quexiao3(){
    document.getElementById("alert3").style.opacity = 0;
    setTimeout(()=>{
    document.getElementById("alert3").style.zIndex = -999;
}, 300);
}
function xian(){
    document.getElementById("alert").style.opacity = 1;
    document.getElementById("alert").style.zIndex =999;
}
var studentsss = JSON.parse(localStorage.getItem('studentsssData1')) || [];

console.log(studentsss)
function Studnt() {
    // Retrieve input values
    var id = document.getElementById("id").value;
    var name = document.getElementById("name").value;
    var classes = document.getElementById("classes").value;
    var Eng = document.getElementById("Eng").value;
    var Ch = document.getElementById("Ch").value;
    var math = document.getElementById("math").value;
    if (Eng  150 || Ch  150 || math  150) {
        alert("请输入有效的成绩,成绩应该在0到150之间");
        return;
      }
      if (isNaN(id)) {
        alert("请输入有效的学号");
        return;
      }
      if (!isNaN(name)) {
        alert("请输入有效的姓名");
        return;
      }
    if (id === '' || name === '' || classes === '' || Eng === '' || Ch === '' || math === '') {
        alert("请输入完整信息");
        return;
    }
        var isDuplicate = studentsss.some(function(student) {
        return student.id === id;
    });

    if (isDuplicate) {
        alert("已存在相同学号的学生,请输入其他学号");
        return;
    }
    var student = {
        id: id,
        name: name,
        classes: classes,
        Eng: Eng,
        Ch: Ch,
        math: math
    };
    studentsss.push(student);
    localStorage.setItem('studentsssData1', JSON.stringify(studentsss));
    renderTable(studentsss);
}


    function cha(){
        var id = document.getElementById("wordid").value;
        var found = studentsss.find(function(student) {
            return student.id === id;
        });
    if (found) {
        document.getElementById("alert1").style.opacity = 1;
        document.getElementById("alert1").style.zIndex = 999;

        var table = document.getElementById('tablebox2');
        var headerRow = table.rows[0];
        while (table.rows.length > 1) {
            table.deleteRow(1);
        }
            var totalScore = parseInt(found.Eng) + parseInt(found.Ch) + parseInt(found.math);
            var newRow = table.insertRow(-1);
            var cellId = newRow.insertCell(0);
            var cellName = newRow.insertCell(1);
            var cellClass = newRow.insertCell(2);
            var cellEng = newRow.insertCell(3);
            var cellCh = newRow.insertCell(4);
            var cellMath = newRow.insertCell(5);
            var cellTotalScore = newRow.insertCell(6);
      

            cellId.innerHTML = found.id;
            cellName.innerHTML = found.name;
            cellClass.innerHTML = found.classes;
            cellEng.innerHTML = found.Eng;
            cellCh.innerHTML = found.Ch;
            cellMath.innerHTML = found.math;
            cellTotalScore.innerHTML = totalScore;
           

    } else {
        alert("暂无匹配的学生信息");
    }
    }

    function del(){
        var id = document.getElementById("wordid").value;
        var found = studentsss.find(function(student) {
            return student.id == id;
        });
    
        if (found) {
            var index = studentsss.findIndex(function(student) {
                return student.id == found.id;
            });
            if (index > -1) {
                studentsss.splice(index, 1);
                localStorage.setItem('studentsssData1', JSON.stringify(studentsss)); // 更新本地存储中的数据
                renderTable(studentsss); 
            }
        } else {
            alert("请输入有效的学号");
        }
    }

function xiugai(){
    document.getElementById('popopo').innerHTML=``;
    document.getElementById("alert2").style.opacity = 1;
    document.getElementById("alert2").style.zIndex =999;
   
}

function Stuxiu() {
    var promm = document.getElementById("promm").value;
    var id = document.getElementById("ssids").value;
    var pro = document.getElementById("pros").value;
    var classSelect =  document.getElementById("classSelect").value
    var found = false;
    console.log(pro)
    console.log(classSelect)
    for (let l = 0; l {
            console.log(item);
            studentsss.push(item);
        });
        
        localStorage.setItem('studentsssData1', JSON.stringify(studentsss)); // 将studentsss数组转为JSON字符串并存储到本地缓存中
        renderTable(studentsss); // 调用renderTable函数渲染表格
    };
    
    // 以ArrayBuffer的形式读取文件内容
    reader.readAsArrayBuffer(this.files[0]);
    
    renderTable(studentsss); // 调用renderTable函数渲染表格
}, false);

window.onload = function() {
    var storedData = localStorage.getItem('studentsssData1');
    if (storedData) {
        var studentsss = JSON.parse(storedData);
        studentsss.sort(function(a, b) {
            return a.id - b.id; // 按学号从小到大排序
        });
        renderTable(studentsss);
    }
}

计算平均成绩的js


document.getElementById("avg").addEventListener('click',function(){
    var allm1=[];
    var allm2=[];
    var allw1=[];
    var allw2=[];
    document.getElementById("alert4").style.opacity = 1;
    
    document.getElementById("alert4").style.zIndex = 999;
    
    const math1 = studentsss.filter(function(student){
        return student.classes === "理科1班";
    });
    
    const math2 = studentsss.filter(function(student){
        return student.classes === "理科2班";
    });
    
    const word1 = studentsss.filter(function(student){
        return student.classes === "文科1班";
    });
    
    const word2 = studentsss.filter(function(student){
        return student.classes === "文科2班";
    });
    math1.forEach(item=>{
        allm1.push(parseInt(item.Eng) + parseInt(item.Ch) + parseInt(item.math))
    })
    math2.forEach(item=>{
        allm2.push(parseInt(item.Eng) + parseInt(item.Ch) + parseInt(item.math))
    })
    word1.forEach(item=>{
        allw1.push(parseInt(item.Eng) + parseInt(item.Ch) + parseInt(item.math))
    })
    word2.forEach(item=>{
        allw2.push(parseInt(item.Eng) + parseInt(item.Ch) + parseInt(item.math))
    })
    var sum = 0;
    var sum1 = 0;
    var sum2 = 0;
    var sum3 = 0;
    var cumulativeSum = [];
    var cumulativeSum1 = [];
    var cumulativeSum2 = [];
    var cumulativeSum3 = [];
    for (let i = 0; i < allm1.length; i++) {
        sum += allm1[i];
        cumulativeSum.push(sum);
    }
    for (let i = 0; i < allm2.length; i++) {
        sum1 += allm2[i];
        cumulativeSum1.push(sum1);
    }
    for (let i = 0; i < allw1.length; i++) {
        sum2 += allw1[i];
        cumulativeSum2.push(sum2);
    }
    for (let i = 0; i < allw2.length; i++) {
        sum3 += allw2[i];
        cumulativeSum3.push(sum3);
    }
    document.getElementById("li1").innerHTML = "理科1班" + (cumulativeSum[cumulativeSum.length - 1] / allm1.length).toFixed(2);
    document.getElementById("li2").innerHTML = "理科2班" + (cumulativeSum1[cumulativeSum1.length - 1] / allm2.length).toFixed(2);
    document.getElementById("wen1").innerHTML = "文科1班" + (cumulativeSum2[cumulativeSum2.length - 1] / allw1.length).toFixed(2);
    document.getElementById("wen2").innerHTML = "文科2班" + (cumulativeSum3[cumulativeSum3.length - 1] / allw2.length).toFixed(2);
},false)

排序的js


document.getElementById('pai').addEventListener('click', function () {
    document.getElementById("alert3").style.opacity = 1;
    document.getElementById("alert3").style.zIndex = 999;

    var selectedClass = document.getElementById('qiehuan').value;
    var filteredStudents = studentsss.filter(function (student) {
        return selectedClass === 'all' ||  student.classes === selectedClass;
    });
 
});

document.getElementById('math1').addEventListener('click', function () {
    sortAndRender('math');
});

document.getElementById('ch').addEventListener('click', function () {
    sortAndRender('Ch');
});

document.getElementById('En').addEventListener('click', function () {
    sortAndRender('Eng');
});

document.getElementById('all').addEventListener('click', function () {
    sortAndRender('totalScore'); // Assuming 'all' means sorting by total score
});

function sortAndRender(sortKey) {
    var selectedClass = document.getElementById('qiehuan').value;
    var filteredStudents = studentsss.filter(function (student) {
        return selectedClass === 'all' || student.classes === selectedClass;
    });
    if (sortKey === 'totalScore') {
        filteredStudents.sort(function (a, b) {
            return (
                parseInt(b.Eng) + parseInt(b.Ch) + parseInt(b.math) -
                (parseInt(a.Eng) + parseInt(a.Ch) + parseInt(a.math))
            );
        });
    } else {
        filteredStudents.sort(function (a, b) {
            return parseInt(b[sortKey]) - parseInt(a[sortKey]);
        });
    }
    renderTable(filteredStudents);
}

表格操作里的js

var priid;
function prite(button){
    console.log("我被删除")
    const rowIndex = button.closest("tr").rowIndex;
  studentsss.forEach((item,index) => {
     if(rowIndex===index+1)
     {
        studarr=item
        console.log(studarr)
     }
  });
  
  if (studarr) {
    var index = studentsss.findIndex(function(student) {
        return student.id == studarr.id;
    });
    if (index > -1) {
        studentsss.splice(index, 1);
        localStorage.setItem('studentsssData1', JSON.stringify(studentsss)); // 更新本地存储中的数据
        renderTable(studentsss); 
    }
} else {
    alert("请输入有效的学号");
}
}
function prixiu(button) {
    document.getElementById("alert2").style.opacity = 1;
    document.getElementById("alert2").style.zIndex =999;
    
    var studarr;
    console.log("我被修改");
  const rowIndex = button.closest("tr").rowIndex;
  studentsss.forEach((item,index) => {
     if(rowIndex===index+1)
     {
        studarr=item
        console.log(studarr)
     }
  });
   priid = studarr.id;
  document.getElementById("lcclc").innerHTML = "学号"+studarr.id
 document.getElementById('popopo').innerHTML=``;
  }

  function newStuxiu() {
    var promm = document.getElementById("promm").value;
    var pro = document.getElementById("pros").value;
    var classSelect =  document.getElementById("classSelect").value
    var found = false;
    console.log(pro)
    console.log(classSelect)
    for (let l = 0; l < studentsss.length; l++) {
        if (priid == studentsss[l].id) {
            if (pro === "classes") {
              studentsss[l].classes = classSelect;
                found = true;
                break;
            } else if (pro === "Eng") {
                studentsss[l].Eng=promm ;
                found = true;
                break;
            } else if (pro === "Ch") {
                 studentsss[l].Ch = promm ;
                found = true;
                break;
            } else if (pro === "math") {
                studentsss[l].math = promm ;
                found = true;
                break;
            }
        }
    }

    if (!found) {
        alert("请输入有效的学生学号和科目");
    }
    console.log(studentsss)
    localStorage.setItem('studentsssData1', JSON.stringify(studentsss)); // 更新本地存储中的数据
}

切换的js


document.getElementById('qiehuan').addEventListener('change', function () {
    updateTableBasedOnClass();
});
function updateTableBasedOnClass() {
    var selectedClass = document.getElementById('qiehuan').value;
    var filteredStudents = studentsss.filter(function (student) {
        return selectedClass === 'all' || student.classes === selectedClass;
    });
    while (combinedTable.rows.length > 1) {
        combinedTable.deleteRow(1);
    }
    console.log(selectedClass)
    renderTable(filteredStudents)
}
function renderTable(studentData) {
    var combinedTable = document.getElementById('combinedTable');
    var headerRow = combinedTable.rows[0];
    while (combinedTable.rows.length > 1) {
        combinedTable.deleteRow(1);
    }
    studentData.forEach(function (student) {
        var totalScore = parseInt(student.Eng) + parseInt(student.Ch) + parseInt(student.math);
        var newRow = combinedTable.insertRow(-1);
        var cellId = newRow.insertCell(0);
        var cellName = newRow.insertCell(1);
        var cellClass = newRow.insertCell(2);
        var cellEng = newRow.insertCell(3);
        var cellCh = newRow.insertCell(4);
        var cellMath = newRow.insertCell(5);
        var cellTotalScore = newRow.insertCell(6);
        var todo = newRow.insertCell(7)
        cellId.innerHTML = student.id;
        cellName.innerHTML = student.name;
        cellClass.innerHTML = student.classes;
        cellEng.innerHTML = student.Eng;
        cellCh.innerHTML = student.Ch;
        cellMath.innerHTML = student.math;
        cellTotalScore.innerHTML = totalScore;
        console.log(studentsss)
        console.log(studentData)
        if(studentData.length==studentsss.length){
        todo.innerHTML = `
        
        `}else{
            todo.innerHTML = `

不可操作

` } studentsss.sort(function(a, b) { return a.id - b.id; // 按学号从小到大排序 }); }); }

本站无任何商业行为
个人在线分享 » 前端HTML+JS+CSS 简单的学生成绩管理系统
E-->