用数组来存储所有学生对象的信息,实现了双向更新,初始时(数组内的对象信息“填充界面”),后面的界面操作可以更新数组内对象的信息(数量和本身数据域信息)。

优点:JQuery代码处理的许多细节较好。

使用HTML5的pattern+正则表达式,实现表单验证以及相应提示。

缺点:后台删除学生对象的信息代码处理效率较低(“假”删除:移动学生对象索引的位置+变换数组长度)。

CSS部分——界面的缩放存在问题。(没打算走前端/暂时懒得修改)。

部分代码可以更好的处理已达到复用的目的,未处理。

效果图如下:

没有删去写代码过程中做改进之前的代码,看上去代码有点长    (保留了写代码的思考过程)

                                    ——删去注释了的代码以及一些不必要的内容,代码也不是太长。

HTML:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Student Information Management System</title><script src="../../../JQuery/JQuery.js"></script><link rel="stylesheet" href="../studentInformationManagementSystemCss/studentInformationManagementSystem.css"><script src="../studentInformationManagementSystemJs/studentInformationManagementSystem.js"></script>
</head>
<body>
<div><header><hr/><h1>学生信息管理系统</h1><hr/></header><main><div><div id="adbt"><button class="gre" id="add">新增</button><button class="red" id="delete">删除</button></div><table><tbody><tr id="thead"><td><input type="checkbox"></td><td>序号</td><td>学号</td><td>姓名</td><td>学院</td><td>专业</td><td>年级</td><td>班级</td><td>年龄</td><td>操作</td></tr><!--<tr><td name="abc"><input type="checkbox"></td><td>1</td><td>11503080201</td><td>张三</td><td>计算机科学与工程学院</td><td>软件工程</td><td>2015</td><td>2</td><td>21</td><td><a href="#" class="check">查看</a> <a href="#" class="modify">修改</a></td></tr><tr><td><input type="checkbox"></td><td>2</td><td>11503080202</td><td>李四</td><td>会计学院</td><td>会计学</td><td>2015</td><td>1</td><td>19</td><td><a href="#" class="check">查看</a> <a href="#" class="modify">修改</a></td></tr><tr><td><input type="checkbox"></td><td>3</td><td>11503080203</td><td>王二</td><td>理学院</td><td>数学</td><td>2015</td><td>1</td><td>19</td><td><a href="#" class="check">查看</a> <a href="#" class="modify">修改</a></td></tr><tr><td><input type="checkbox"></td><td>4</td><td>11503080204</td><td>张三</td><td>计算机科学与工程学院</td><td>软件工程</td><td>2015</td><td>2</td><td>21</td><td><a href="#" class="check">查看</a> <a href="#" class="modify">修改</a></td></tr><tr><td><input type="checkbox"></td><td>5</td><td>11503080205</td><td>李四</td><td>会计学院</td><td>会计学</td><td>2015</td><td>1</td><td>19</td><td><a href="#" class="check">查看</a> <a href="#" class="modify">修改</a></td></tr><tr><td><input type="checkbox"></td><td>6</td><td>11503080206</td><td>王二</td><td>理学院</td><td>数学</td><td>2015</td><td>1</td><td>19</td><td><a href="#" class="check">查看</a> <a href="#" class="modify">修改</a></td></tr><tr><td><input type="checkbox"></td><td>7</td><td>11503080207</td><td>张三</td><td>计算机科学与工程学院</td><td>软件工程</td><td>2015</td><td>2</td><td>21</td><td><a href="#" class="check">查看</a> <a href="#" class="modify">修改</a></td></tr><tr><td><input type="checkbox"></td><td>8</td><td>11503080208</td><td>李四</td><td>会计学院</td><td>会计学</td><td>2015</td><td>1</td><td>19</td><td><a href="#" class="check">查看</a> <a href="#" class="modify">修改</a></td></tr><tr><td><input type="checkbox"></td><td>9</td><td>11503080209</td><td>王二</td><td>理学院</td><td>数学</td><td>2015</td><td>1</td><td>19</td><td><a href="#" class="check">查看</a> <a href="#" class="modify">修改</a></td></tr><tr><td><input type="checkbox"></td><td>10</td><td>11503080210</td><td>张三</td><td>计算机科学与工程学院</td><td>软件工程</td><td>2015</td><td>2</td><td>21</td><td><a href="#" class="check">查看</a> <a href="#" class="modify">修改</a></td></tr>--></tbody></table><div id="navigate"><p>第<span id="pgn"></span>页,共<span id="en"></span>条 (每页最多显示10条)</p><!--Number of entries--><div id="tpbt"><button class="gre" id="lastpage">上一页</button><button class="red" id="nextpage">下一页</button></div></div></div></main>
</div>
<div id="sbg"></div><!--增删改查时的阴影背景-->
<div class="achaesi" id="asi">
<!--    <form action="" method="post">--><h2>新增学生信息</h2><div class="ifm"><div><label for="assn">学号</label> <input id="assn" type="text" placeholder="11503080201" required="required" maxlength="11" pattern="^[0-9]{11}$" oninvalid="setCustomValidity('请输入11位的数字组合')"></div><div><label for="asn">姓名</label> <input id="asn" type="text" placeholder="雷军" required="required" minlength="2" maxlength="8" pattern="^[\u4e00-\u9fa5]+$" oninvalid="setCustomValidity('请输入正确的姓名')"></div><div><label for="asac">学院</label> <input id="asac" type="text" placeholder="两江人工智能学院" required="required" minlength="3" maxlength="10" pattern="^[\u4e00-\u9fa5]+$" oninvalid="setCustomValidity('请输入正确的学院名')"></div><div><label for="asm">专业</label> <input id="asm" type="text" placeholder="软件工程" required="required" minlength="3" maxlength="12" pattern="^[\u4e00-\u9fa5]+$" oninvalid="setCustomValidity('请输入正确的专业名')"></div><div><label for="asg">年级</label> <input id="asg" type="text" placeholder="2015" required="required" max="2020" maxlength="4" pattern="^[0-9]{4}$" oninvalid="setCustomValidity('请输入正确的年级')"></div><div><label for="asc">班级</label> <input id="asc" type="text" placeholder="1" required="required" maxlength="1"></div><div><label for="asag">年龄</label> <input id="asag" type="number" placeholder="20" required="required" min="0" maxlength="2" pattern="^[0-9]+$" oninvalid="setCustomValidity('请输入正确的年龄')"></div></div><hr/><div class="scbt"><button type="submit" id="submit">提交</button><button class="cancel">取消</button></div>
<!--    </form>-->
</div>
<div class="achaesi" id="chasi">
<!--    <form action="" method="post">--><h2>修改学生信息</h2><div class="ifm"><div><label for="chassn">学号</label> <input id="chassn" type="text" readonly required="required" maxlength="11" pattern="^[0-9]{11}$" oninvalid="setCustomValidity('请输入11位的数字组合')"></div><div><label for="chasn">姓名</label> <input id="chasn" type="text" required="required" minlength="2" maxlength="8" pattern="^[\u4e00-\u9fa5]+$" oninvalid="setCustomValidity('请输入正确的姓名')"></div><div><label for="chasac">学院</label> <input id="chasac" type="text" required="required" minlength="3" maxlength="10" pattern="^[\u4e00-\u9fa5]+$" oninvalid="setCustomValidity('请输入正确的学院名')"></div><div><label for="chasm">专业</label> <input id="chasm" type="text" required="required" minlength="3" maxlength="12" pattern="^[\u4e00-\u9fa5]+$" oninvalid="setCustomValidity('请输入正确的专业名')"></div><div><label for="chasg">年级</label> <input id="chasg" type="text" required="required" max="2020" maxlength="4" pattern=^[0-9]{4}$" oninvalid="setCustomValidity('请输入正确的年级')"></div><div><label for="chasc">班级</label> <input id="chasc" type="text" required="required" maxlength="1"></div><div><label for="chasag">年龄</label> <input id="chasag" type="text" required="required" min="0" maxlength="2" pattern="^[0-9]+$" oninvalid="setCustomValidity('请输入正确的年龄')"></div></div><hr/><div class="scbt"><button type="submit" id="save">保存</button><button class="cancel">取消</button></div>
<!--    </form>-->
</div>
<div class="achaesi" id="chesi"><h2>查看学生信息</h2><div class="ifm"><div><label for="chessn">学号</label> <input type="text" readonly id="chessn"></div><div><label for="chesn">姓名</label> <input type="text" readonly id="chesn"></div><div><label for="chesac">学院</label> <input type="text" readonly id="chesac"></div><div><label for="chesm">专业</label> <input type="text" readonly id="chesm"></div><div><label for="chesg">年级</label> <input type="text" readonly id="chesg"></div><div><label for="chesc">班级</label> <input type="text" readonly id="chesc"></div><div><label for="chesag">年龄</label> <input type="text" readonly id="chesag"></div></div><hr/><div class="scbt"><button class="cancel">取消</button></div>
</div>
</body>
</html>

CSS:

* {margin: 0;padding: 0;
}
a {text-decoration: none;color: red;
}
.sbg {position: absolute;top: 0;width: 100%;height: 100%;background-color: black;opacity: 0.4;z-index: 1;
}
body {background-color: #f0ece9;
}
header {display: flex;flex-flow: row nowrap;justify-content: space-between;
}
header h1 {color: #9a9897;
}
header hr {margin: 20px 20px 0;background-color: #bc9470;border: 2px solid #bc9470;width: 30%;height: 0;
}
main #adbt {margin-left: 70px;
}
main button {margin: 20px 5px;width: 85px;height: 40px;color: white;
}
main button.gre {background-color: #5cb85c;
}
main button.red {background-color: #d9534f;
}
main #navigate {padding: 0 70px;display: flex;flex-flow: row nowrap;justify-content: space-between;
}
main #navigate p {margin-top: 30px;
}
table {margin: 0 auto;width: 90%;text-align: center;border-spacing: 0;
}
table tbody tr:first-of-type {background-color: #dadee1 !important;height: 60px;
}
table tbody tr {height: 45px;
}
table tbody tr:nth-child(odd) {background-color: #eef1f8;
}
table tbody tr:nth-child(even) {background-color: #ffffff;
}
table tbody tr:not([id=thead]):hover {cursor: pointer;background-color: #e9e9e9;
}
.achaesi {display: none;position: absolute;top: 20%;left: 34%;background-color: white;z-index: 2;width: 500px;height: 420px;
}
.achaesi h2 {padding: 5px 20px;font-size: large;background-color: #555555;color: white;
}
.achaesi .ifm {width: 300px;margin: 10px auto;display: flex;flex-flow: column nowrap;
}
.achaesi .ifm div {margin: 10px;
}
.achaesi .ifm div input {width: 220px;height: 20px;
}
.achaesi .scbt {float: right;margin-top: 6px;margin-right: 30px;
}
.achaesi .scbt button:first-of-type {width: 85px;height: 36px;background-color: #5cb85c;
}
.achaesi .scbt button:last-of-type {width: 85px;height: 36px;background-color: white;
}
/*# sourceMappingURL=studentInformationManagementSystem.css.map */

JS:

$(function () {let students = [{//初始界面数据schoolNumber: "11503080201",name: "雷军",//my idolacademy: "两江人工智能学院",major: "软件工程",grade: 2019,class: 2,age: 20,}, {schoolNumber: "11503080202",name: "张三",academy: "计算机工程与技术学院",major: "计算机科学与技术",grade: 2019,class: 1,age: 19,}, {schoolNumber: "11503080203",name: "李四",academy: "会计学院",major: "会计学",grade: 2018,class: 3,age: 19,}, {schoolNumber: "11503080204",name: "王五",academy: "理学院",major: "应用物理",grade: 2017,class: 3,age: 21,}, {schoolNumber: "11503080204",name: "赵六",academy: "会计学院",major: "金融学",grade: 2017,class: 3,age: 21,}, {schoolNumber: "11503080202",name: "张三",academy: "计算机工程与技术学院",major: "计算机科学与技术",grade: 2019,class: 1,age: 19,}, {schoolNumber: "11503080203",name: "李四",academy: "会计学院",major: "会计学",grade: 2018,class: 3,age: 19,}, {schoolNumber: "11503080204",name: "王五",academy: "理学院",major: "应用物理",grade: 2017,class: 3,age: 21,}, {schoolNumber: "11503080204",name: "赵六",academy: "会计学院",major: "金融学",grade: 2017,class: 3,age: 21,}, {schoolNumber: "11503080202",name: "张三",academy: "计算机工程与技术学院",major: "计算机科学与技术",grade: 2019,class: 1,age: 19,}, {schoolNumber: "11503080203",name: "李四",academy: "会计学院",major: "会计学",grade: 2018,class: 3,age: 19,}, {schoolNumber: "11503080204",name: "王五",academy: "理学院",major: "应用物理",grade: 2017,class: 3,age: 21,}, {schoolNumber: "11503080204",name: "赵六",academy: "会计学院",major: "金融学",grade: 2017,class: 3,age: 21,}];let page = 1;//第几页let no = 0;//显示的页数的第一个对象是数组中的第几个对象,初始下标为0let stuNumber = students.length;for (let i = 0; i < 10; i++) {//初始页面信息显示let student = $("<tr>" + "<td><input type=\"checkbox\"></td>" + "<td>" + (i + 1) + "</td>" + "<td>" + students[i].schoolNumber + "</td>" + "<td>" + students[i].name + "</td>" + "<td>" + students[i].academy + "</td>" + "<td>" + students[i].major + "</td>" + "<td>"+ students[i].grade + "</td>" + "<td>" + students[i].class + "</td>" + "<td>" + students[i].age + "</td>" + "<td><a href=\"javascript:;\" class=\"check\">查看</a> <a href=\"javascript:;\" class=\"modify\">修改</a></td>" + "</label></tr>");$("tbody").append(student);}$("tbody").trigger("create");//trigger() 方法触发被选元素上指定的事件以及事件的默认行为(比如表单提交)$("#pgn").text(page);$("#en").text(stuNumber);$("#add").click(function () {//点击新增按钮触发的动作$("#sbg").addClass("sbg");$("#asi").show();});let objKeys = ["schoolNumber", "name", "academy", "major", "grade", "class", "age"];$("#submit").click(function () {//提交按钮点击触发的动作let student = {};let isEmpty = false;$("#asi").find("input").each(function (index, domEle) {if (!domEle.value) {//如果添加时表单内有值为空,则不进行添加isEmpty = true;/*return;*/}student[objKeys[index]] = domEle.value;});if (!isEmpty) {students[stuNumber] = student;stuNumber++;$("#en").text(stuNumber);/*$("#sbg").removeClass("sbg");$("#asi").hide();*/// $("tbody tr:first").siblings().remove();//清空界面let lpren = $("tbody tr").length - 1;//最后一页剩余的条目数;if (no + 10 > stuNumber && lpren < 10) {//增加一个append函数,如果显示的是最后一页那么需要更新界面。$("tbody tr:last").after("<tr>" + "<td><input type=\"checkbox\"></td>" + "<td>" + (no + lpren + 1) + "</td>" + "<td>" + student.schoolNumber + "</td>" + "<td>" + student.name + "</td>" + "<td>" + student.academy + "</td>" + "<td>" + student.major + "</td>" + "<td>"+ student.grade + "</td>" + "<td>" + student.class + "</td>" + "<td>" + student.age + "</td>" + "<td><a href=\"javascript:;\" class=\"check\">查看</a> <a href=\"javascript:;\" class=\"modify\">修改</a></td>" + "</tr>");/*            let i = 0;while (i < 10 && no + i < stuNumber) {let student = $("<tr>" + "<td><input type=\"checkbox\"></td>" + "<td>" + (no + i + 1) + "</td>" + "<td>" + students[no + i].schoolNumber + "</td>" + "<td>" + students[no + i].name + "</td>" + "<td>" + students[no + i].academy + "</td>" + "<td>" + students[no + i].major + "</td>" + "<td>"+ students[no + i].grade + "</td>" + "<td>" + students[no + i].class + "</td>" + "<td>" + students[no + i].age + "</td>" + "<td><a href=\"javascript:;\" class=\"check\">查看</a> <a href=\"javascript:;\" class=\"modify\">修改</a></td>" + "</tr>");$("tbody").append(student);i++;}*/}}$("#sbg").removeClass("sbg");$("#asi").hide();});$("tbody").on("click", ".check", function () {//点击查看按钮触发的动作$("#sbg").addClass("sbg");$("#chesi").show();let stuIndex = $(this).parent().parent().find("td")[1].innerText - 1;// let i = 0;$("#chesi").find("input").each(function (index, domEle) {domEle.value = students[stuIndex][objKeys[index]];//index->i});});let modifyNumber;/* $(".modify").click(function () {//jQuery出现的新添加元素点击事件无效$("#sbg").addClass("sbg");$("#chasi").show();modifyNumber = $(this).parent().parent().find("td")[1].innerText - 1;let i = 0;$("#chasi").find("input").each(function (index, domEle) {domEle.value = students[modifyNumber][objKeys[i++]];});});*/$("tbody").on("click", ".modify", function () {//点击修改按钮触发的动作,解决了jQuery出现的新添加元素点击事件无效问题$("#sbg").addClass("sbg");$("#chasi").show();modifyNumber = $(this).parent().parent().find("td")[1].innerText - 1;let i = 0;$("#chasi").find("input").each(function (index, domEle) {domEle.value = students[modifyNumber][objKeys[i++]];});});$("#save").click(function () {//点击保存按钮触发的动作$("#chasi").find("input").each(function (index, domEle) {if (domEle.value)students[modifyNumber][objKeys[index]] = domEle.value;});$("tbody tr").eq(modifyNumber - no + 1).remove();$("tbody tr").eq(modifyNumber - no).after("<tr>" + "<td><input type=\"checkbox\"></td>" + "<td>" + (modifyNumber - no + 1) + "</td>" + "<td>" + students[modifyNumber].schoolNumber + "</td>" + "<td>" + students[modifyNumber].name + "</td>" + "<td>" + students[modifyNumber].academy + "</td>" + "<td>" + students[modifyNumber].major + "</td>" + "<td>"+ students[modifyNumber].grade + "</td>" + "<td>" + students[modifyNumber].class + "</td>" + "<td>" + students[modifyNumber].age + "</td>" + "<td><a href=\"javascript:;\" class=\"check\">查看</a> <a href=\"javascript:;\" class=\"modify\">修改</a></td>" + "</tr>");/*$("tbody tr:first").siblings().remove();//清空界面for (let i = no; i < no+10; i++) {//初始页面信息显示let student = $("<tr>" + "<td><input type=\"checkbox\"></td>" + "<td>" + (i + 1) + "</td>" + "<td>" + students[i].schoolNumber + "</td>" + "<td>" + students[i].name + "</td>" + "<td>" + students[i].academy + "</td>" + "<td>" + students[i].major + "</td>" + "<td>"+ students[i].grade + "</td>" + "<td>" + students[i].class + "</td>" + "<td>" + students[i].age + "</td>" + "<td><a href=\"javascript:;\" class=\"check\">查看</a> <a href=\"javascript:;\" class=\"modify\">修改</a></td>" + "</tr>");$("tbody").append(student);}$("tbody").trigger("create");*/$("#sbg").removeClass("sbg");$("#chasi").hide();});$(".cancel").click(function () {//多个取消按钮点击触发的动作$("#sbg").removeClass("sbg");$(".achaesi").hide();});$("tbody tr td:first").click(function () {//全选操作用到了JQuery的隐示迭代$("tbody tr td input").prop("checked", $("tbody tr:first td:first input").prop("checked"));});$("tbody").on("click", $("tbody tr:nth-of-type(1)").siblings().find("input"), function () {let isSelectAll = true;$("tbody tr:nth-of-type(1)").siblings().find("input").each(function (index, domEle) {if ($(domEle).prop("checked") == false)isSelectAll = false;});$("tbody tr:first td:first input").prop("checked", isSelectAll);})let update = (no) => {let i = 0;//用于增加信息条目的变量;$("tbody tr:first").siblings().remove();//清空界面while (i < 10 && no + i < stuNumber) {let student = $("<tr>" + "<td><input type=\"checkbox\"></td>" + "<td>" + (no + i + 1) + "</td>" + "<td>" + students[no + i].schoolNumber + "</td>" + "<td>" + students[no + i].name + "</td>" + "<td>" + students[no + i].academy + "</td>" + "<td>" + students[no + i].major + "</td>" + "<td>"+ students[no + i].grade + "</td>" + "<td>" + students[no + i].class + "</td>" + "<td>" + students[no + i].age + "</td>" + "<td><a href=\"javascript:;\" class=\"check\">查看</a> <a href=\"javascript:;\" class=\"modify\">修改</a></td>" + "</tr>");$("tbody").append(student);i++;}$("tbody").trigger("create");}$("#delete").click(function () {if (confirm("确认要删除这些信息吗?")) {let delNumber = 0;//删除的信息条目数;let delIndexs = []; //删除信息条目的下标;用于后期处理避免“落空”导致移动无效// let i = 0;//用于增加信息条目的变量;$("tbody tr td input").each(function (index, domEle) {if (index != 0 && $(domEle).prop("checked")) {//index != 0,防止标题行被删除delIndexs[delIndexs.length] = $(domEle).parent().next().text() - 1;$(domEle).parent().parent().remove();delNumber++;}});for (let j = delIndexs.length - 1; j >= 0; j--) {for (let k = delIndexs[j]; k < stuNumber - 1; k++) {//低效的代码,需要大量移动对象索引;对JS不太熟悉,还没有想到高效的解决办法!students[k] = students[k + 1];}}stuNumber -= delNumber;//指向储存底层数据(学生对象)的数组尾部的指针“移动”$("#en").text(stuNumber);//更新条目数if (stuNumber == no) {no -= 10;page--;$("#pgn").text(page);}update(no);/*            $("tbody tr:first").siblings().remove();//清空界面while (i < 10 && no + i < stuNumber) {let student = $("<tr>" + "<td><input type=\"checkbox\"></td>" + "<td>" + (no + i + 1) + "</td>" + "<td>" + students[no + i].schoolNumber + "</td>" + "<td>" + students[no + i].name + "</td>" + "<td>" + students[no + i].academy + "</td>" + "<td>" + students[no + i].major + "</td>" + "<td>"+ students[no + i].grade + "</td>" + "<td>" + students[no + i].class + "</td>" + "<td>" + students[no + i].age + "</td>" + "<td><a href=\"javascript:;\" class=\"check\">查看</a> <a href=\"javascript:;\" class=\"modify\">修改</a></td>" + "</tr>");$("tbody").append(student);i++;}$("tbody").trigger("create");*/$("tbody tr td:first input").prop("checked", false);}});$("#nextpage").click(function () {if (no + 10 < stuNumber) {no += 10;page++;$("#pgn").text(page);update(no);$("tbody tr:first td:first input").prop("checked", false);/*let i = 0;//用于增加信息条目的变量;$("tbody tr:first").siblings().remove();//清空界面while (i < 10 && no + i < stuNumber) {let student = $("<tr>" + "<td><input type=\"checkbox\"></td>" + "<td>" + (no + i + 1) + "</td>" + "<td>" + students[no + i].schoolNumber + "</td>" + "<td>" + students[no + i].name + "</td>" + "<td>" + students[no + i].academy + "</td>" + "<td>" + students[no + i].major + "</td>" + "<td>"+ students[no + i].grade + "</td>" + "<td>" + students[no + i].class + "</td>" + "<td>" + students[no + i].age + "</td>" + "<td><a href=\"javascript:;\" class=\"check\">查看</a> <a href=\"javascript:;\" class=\"modify\">修改</a></td>" + "</tr>");$("tbody").append(student);i++;}$("tbody").trigger("create");*/} else {alert("已经是最后一页。");}});$("#lastpage").click(function () {if (no - 10 >= 0) {no -= 10;page--;$("#pgn").text(page);update(no);$("tbody tr:first td:first input").prop("checked", false);/*            let i = 0;//用于增加信息条目的变量;$("tbody tr:first").siblings().remove();//清空界面while (i < 10 && no + i < stuNumber) {let student = $("<tr>" + "<td><input type=\"checkbox\"></td>" + "<td>" + (no + i + 1) + "</td>" + "<td>" + students[no + i].schoolNumber + "</td>" + "<td>" + students[no + i].name + "</td>" + "<td>" + students[no + i].academy + "</td>" + "<td>" + students[no + i].major + "</td>" + "<td>"+ students[no + i].grade + "</td>" + "<td>" + students[no + i].class + "</td>" + "<td>" + students[no + i].age + "</td>" + "<td><a href=\"javascript:;\" class=\"check\">查看</a> <a href=\"javascript:;\" class=\"modify\">修改</a></td>" + "</tr>");$("tbody").append(student);i++;}$("tbody").trigger("create");*/} else {alert("已经是第一页。");}});})

实现了一下内容(其实是web课的小作业)

  1. 综合利用HTML、CSS和JavaScript实现一个学生信息管理系统(不含后端),具体要求和系统截图如下

(1)系统主界面如图2所示,要求学生的信息存入一个数组中,每个学生是一个对象。

图2 学生信息管理系统主界面

  1. 点击“新增”按钮显示一个新的窗体,录入学生的基本信息,在保存时,需要检验数据是否合法。新增页面如图3所示。

图3 新增界面

(3)点击“修改”按钮显示一个新的窗体,修改当前行的学生信息。

图4 修改界面

(4)点击“查看”按钮显示一个新的窗体,显示当前行的学生信息。此时输入框的内容不可修改。

图4 查看

(5)其他要求

■ 点击“删除”按钮,显示一个询问提示,如果选择是就删除当前行。可以多选删除,点击全选时是选择当前页所有学生。

■ 隔行换色。

■ 行的移入移出效果(hover)。

■ 能够实现下一页和上一页的功能,不能翻页的时候给出提示。

■ 展示出共有多少条数据,每页的数据条数,当前页数。

HTML+CSS+JQuery 实现学生信息管理系统相关推荐

  1. HTML期末作业-基于HTML+CSS+JavaScript制作学生信息管理系统模板

  2. Javaweb学生信息管理系统(Mysql+JSP+MVC+CSS)

    项目源码及数据库: 链接:https://pan.baidu.com/s/1ktUyxbOI9lljWr-HRTRIiQ?pwd=1024 提取码:1024 目录 一.项目介绍 二.运行效果 1.登录 ...

  3. HTML+CSS+JS`管理系统网站设计——学生信息管理系统模板 (13页) HTML+CSS+JavaScript html网页设计期末大作业_网页设计平时作业

    HTML5期末大作业:管理系统网站设计--学生信息管理系统模板 (13页) HTML+CSS+JavaScript html网页设计期末大作业_网页设计平时作业 常见网页设计作业题材有 个人. 美食. ...

  4. HTML5期末大作业:管理系统网站设计——学生信息管理系统模板 (13页) HTML+CSS+JavaScript html网页设计期末大作业_网页设计平时作业

    HTML5期末大作业:管理系统网站设计--学生信息管理系统模板 (13页) HTML+CSS+JavaScript html网页设计期末大作业_网页设计平时作业 常见网页设计作业题材有 个人. 美食. ...

  5. html增加状态信息管理代码,JavaScript+HTML实现学生信息管理系统

    一.前言 用数组来存储所有学生对象的信息,实现了双向更新,初始时(数组内的对象信息"填充界面"),后面的界面操作可以更新数组内对象的信息(数量和本身数据域信息). 优点:JQuer ...

  6. html5学生信息注册码,JavaScript+HTML实现学生信息管理系统代码示例

    本篇文章小编给大家分享一下JavaScript+HTML实现学生信息管理系统代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 一.前言 用数组来 ...

  7. java计算机毕业设计ssm基于SSM学生信息管理系统37myx(附源码、数据库)

    java计算机毕业设计ssm基于SSM学生信息管理系统37myx(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm ...

  8. Java学生信息管理系统——管理员登录模块(简单易上手)

    前言 这一篇是用来记录我编写学生信息管理系统时实现登录操作的过程,这是学生信息管理系统的第一个模块,之后我还会陆续将其它模块分享出来. 其它章节 ------------------------> ...

  9. python学生信息管理系统项目总结_学生信息管理系统案例小结

    周末拿最近学习的知识 (JDBC, Servlet, JSP) 做一个小案例, 本来周末就应该整理笔记的, 但是打球也不能耽误啊, 所以只好赶着在今天下班的时间, 做下记录. 技术准备 Java 基础 ...

最新文章

  1. 网络流24题(1) P2756 飞行员配对方案问题
  2. R语言:聚类分析hclust
  3. android Camera2
  4. c语言 ctype,C语言标准库系列之 -
  5. tensorflow随笔-正则化与指数衰减率
  6. ROW_NUMBER() OVER() 函数用法详解 (分组排序,多例子)
  7. 什么是MARC数据?
  8. App后台开发运维和架构实践学习总结(6)——App客户端与后台交互方式总结
  9. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(7)签到题5题
  10. 触摸屏控制变频器程序 触摸屏控制变频器程序
  11. 服务器的组件中支持冗余的包括,服务器冗余电源的作用
  12. 【高德地图API】从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图
  13. Ajax与Json的使用
  14. LSTM 长短期记忆
  15. 你有一条微信未发送_微信支持发送大文件;男子薅90年爱奇艺VIP;京东方再次未通过苹果质量审查...
  16. 2021北京信息科技大学光电学院调剂复试经历
  17. 快速掌握 jQuery 操作 HTML 节点
  18. 烟雾传感器MQ-2实验
  19. ZigBee和Zwave的比较
  20. 在python中合法的变量_在python中的变量

热门文章

  1. 智能投影的2014:今年它是一碗“杂碎汤”,明年我们期待黑科技
  2. 基于 Hessian 轻量级远程调用的原理及示例
  3. 黄河水利职业技术学院计算机专业分数,考多少分才能上黄河水利职业技术学院 录取分数是多少...
  4. 程序员需要了解的逻辑学思想
  5. php无法识别excel,求助!使用PHPExcel类读取Excel2007,出现错误
  6. macOS系统添加网络打印机
  7. 众多APP青睐邀请有礼活动,怎么才能更完善?
  8. SpringCloud——Eureka注册中心搭建
  9. cad转excel怎么转换?
  10. 在线能力测试题资源汇总