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

优点: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. 反射的本质——元数据
  2. 新型脑-脑接口,实现“阿凡达”式的跨鼠遥控
  3. 判断元素是否在ndarray_暨南大学药学院考研~手性的判断与相关介绍
  4. 用策略屏蔽135 139 445 3389端口+网络端口安全防护技
  5. 【学习笔记】JSON基础概念简介
  6. python while循环例题_【学习笔记】python:5for循环与while循环(上)
  7. 文本属性之文本颜色(CSS、HTML)
  8. 红外避障小车的代码编写
  9. Windows虚拟设备驱动开发总结
  10. javaFX系列之web组件:史上最简单的javaFX浏览器实现(web component组件)
  11. python报错 unexpected keyword argument ‘categories‘
  12. 笔记本计算机图标怎么设置出来,电脑桌面图标隐藏了怎么弄出来
  13. 习题——路由与交换机技术(五)
  14. 基于SSH的员工信息管理系统
  15. 学大伟业 国庆Day2
  16. 20189320《网络攻防》第六周作业
  17. exit和_exit,fock和vfock
  18. 简单明了实现Java地图小程序项目
  19. Ubuntu 10.10 最全的更新源收集(ubuntu yuan)
  20. kali翻译插件_Kali优化之安装翻译工具goldendict及使用方法

热门文章

  1. 驶入脱贫“高速路”-国稻种芯-通榆县:稻谷农特产品推送进城
  2. 利用Aspose.PDF以编程方式打印PDF文档
  3. 家用监控百科:什么是4K摄像机,4K摄像模组是什么意思
  4. android文字轨迹动画,文字转化为路径动画 TextPathView
  5. java开发经理面试题,灵魂拷问
  6. 【每日早报】2019/11/25
  7. python anaconda安装redis_python与redis的初次碰撞——把玩redis数据库的一点心得
  8. 2022年 - CQC认证产品目录 - CQC标志认证范围 - CQC自愿性认证..
  9. androidmanifest.xml文件
  10. 神舟优雅A460P-i7G D2拆机教程