学生管理系统(layUI Echarts)

这周学习了 UI框架  可以大大减少我们网页设计的工作量

在layui的官网中 都有很多好看的样式 和一些 数据表格

只需要我们稍加修改即可使用 还需要下载layui官网的 相关文件

  1 <!DOCTYPE html>
  2 <html lang="en">
  3
  4 <head>
  5     <meta charset="UTF-8">
  6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8     <title>后台管理</title>
  9     <link rel="stylesheet" href="./layui/css/layui.css">
 10 </head>
 11 <style>
 12     body {
 13         margin: 10px;
 14     }
 15
 16     .demo-carousel {
 17         height: 200px;
 18         line-height: 200px;
 19         text-align: center;
 20     }
 21 </style>
 22
 23 <body>
 24     <ul class="layui-nav" lay-filter="">
 25         <li class="layui-nav-item">
 26             <a>学生管理系统</a>
 27         </li>
 28         <li class="layui-nav-item">
 29             <a href="./login.html">登录</a>
 30         </li>
 31         <li class="layui-nav-item">
 32             <a href="./register.html">注册</a>
 33         </li>
 34         <li class="layui-nav-item layui-this">
 35             <a href="./homePage.html">后台管理</a>
 36         </li>
 37     </ul>
 38
 39
 40     <table class="layui-hide" id="demo" lay-filter="test"></table>
 41     <select name="" id="">
 42         <option class="op" value="班级">班级</option>
 43         <option class="op" value="学生姓名">学生姓名</option>
 44         <option class="op" selected value="学号">学号</option>
 45     </select>
 46     <input type="text" id="check1">
 47     <button id="check" type="button" class="layui-btn">查询</button>
 48     <div id="add"></div>
 49     <div id="main" style="width: 600px;height:400px;"></div>
 50
 51
 52     <script type="text/html" id="barDemo">
 53       <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
 54       <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
 55       <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
 56     </script>
 57
 58
 59     <script src="./js/jquery-3.4.1.min.js"></script>
 60     <script src="./layui/layui.js"></script>
 61     <script src="./js/tool.js"></script>
 62     <script src="./js/echarts.min.js"></script>
 63     <!-- <script src="./js/echarts-gl.js"></script> -->
 64     <!-- <script src="./js/echarts-gl.min.js"></script> -->
 65
 66     <script>
 67         let stuData = new Array();
 68         stuData = get("stuData");
 69         console.log(stuData);
 70
 71         layui.use([‘laydate‘, ‘laypage‘, ‘layer‘, ‘table‘, ‘carousel‘, ‘upload‘, ‘element‘, ‘slider‘], function () {
 72             var laydate = layui.laydate //日期
 73                 , laypage = layui.laypage //分页
 74                 , layer = layui.layer //弹层
 75                 , table = layui.table //表格
 76                 , carousel = layui.carousel //轮播
 77                 , upload = layui.upload //上传
 78                 , element = layui.element //元素操作
 79
 80             layer.msg("欢迎进入学生管理系统!");
 81
 82
 83
 84             //监听Tab切换
 85             element.on(‘tab(demo)‘, function (data) {
 86                 layer.tips(‘切换了‘ + data.index + ‘:‘ + this.innerHTML, this, {
 87                     tips: 1
 88                 });
 89             });
 90
 91
 92             //第一个实例
 93             table.render({
 94                 elem: ‘#demo‘
 95                 , height: 420
 96                 // , url: ‘./data.json‘ //数据接口
 97                 , data: stuData
 98                 , title: ‘用户表‘
 99                 , limit: 10
100                 , page: true //开启分页
101                 , toolbar: ‘default‘ //开启工具栏,此处显示默认图标,可以自定义模板,详见文档
102                 , totalRow: true //开启合计行
103                 , cols: [[ //表头
104                     { type: ‘checkbox‘, fixed: ‘left‘ }
105                     , { field: ‘id‘, title: ‘学号‘, width: 80, sort: true, fixed: ‘left‘ }
106                     , { field: ‘username‘, title: ‘学生姓名‘, width: 130, sort: true }
107                     , { field: ‘sex‘, title: ‘性别‘, width: 80 }
108                     , { field: ‘age‘, title: ‘年龄‘, width: 80, sort: true }
109                     , { field: ‘class‘, title: ‘班级‘, width: 100, sort: true }
110                     , { field: ‘score‘, title: ‘成绩‘, width: 100, sort: true }
111                     , { fixed: ‘right‘, title: ‘操作‘, width: 165, align: ‘center‘, toolbar: ‘#barDemo‘ }
112                 ]]
113                 , response: {
114                     statusCode: 200 //重新规定成功的状态码为 200,table 组件默认为 0
115                 }
116                 , parseData: function (res) { //将原始数据解析成 table 组件所规定的数据
117                     return {
118                         "code": res.status, //解析接口状态
119                         "msg": res.message, //解析提示文本
120                         "count": res.total, //解析数据长度
121                         "data": res.rows.item //解析数据列表
122                     };
123                 }
124
125             });
126
127
128             let dataIndex; //全局变量
129             //监听行工具事件
130             table.on(‘tool(test)‘, function (obj) { //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
131                 var data = obj.data //获得当前行数据
132                     , layEvent = obj.event; //获得 lay-event 对应的值
133                 console.log(data);
134
135                 for (let i = 0; i < stuData.length; i++) {
136                     if (stuData[i].id == data.id && stuData[i].age == data.age) {
137                         dataIndex = i;
138                     }
139                 }
140
141
142
143                 // let dataIndex = event.target.parentNode.parentNode.parentNode.getAttribute("data-index")
144                 if (layEvent === ‘detail‘) {
145                     layer.msg(`
146                     学号:${data.id}<br>
147                     学生姓名:${data.username}<br>
148                     学生年龄:${data.age}<br>
149                     学生班级: ${data.class}<br>
150                     学生性别:${data.sex}<br>
151                     考试成绩: ${data.score}
152                     `
153                     );
154                 } else if (layEvent === ‘del‘) {
155                     layer.confirm(‘真的删除行么‘, function (index) {
156                         console.log(index);
157                         obj.del(); //删除对应行(tr)的DOM结构
158                         layer.close(index);
159                         //向服务端发送删除指令
160                         stuData.splice(dataIndex, 1);
161                         console.log(stuData);
162                         save("stuData", stuData);
163                     });
164                 } else if (layEvent === ‘edit‘) {
165                     let male, female;
166                     if (data.sex == "男") {
167                         male = "checked";
168                         female = "";
169                     } else {
170                         male = "";
171                         female = "checked";
172                     }
173                     layer.open({
174                         type: 1,
175                         area: [‘600px‘, ‘360px‘],
176                         shadeClose: false, //点击遮罩关闭
177                         content: `
178                         \<\div  style="padding:15px 10px 0 20px; display:inline-block  ">学号\<\/div>
179                         <input id="dataID" type="text" value = ${data.id}> <br>
180                         \<\div  style="padding:15px 10px 0 20px; display:inline-block  ">姓名\<\/div>
181                         <input id="dataUser" type="text" value = ${data.username}> <br>
182                         \<\div  style="padding:15px 10px 0 20px; display:inline-block  ">性别\<\/div>
183                         <input id="dataSex" type="radio" name="sex" value = "男" ${male}>男<input id="dataSex" ${female} type="radio" name="sex" value="女">女 <br>
184                         \<\div  style="padding:15px 10px 0 20px; display:inline-block  ">年龄\<\/div>
185                         <input id="dataAge" type="text" value = ${data.age}> <br>
186                         \<\div  style="padding:15px 10px 0 20px; display:inline-block  ">班级\<\/div>
187                         <input id="dataClass" type="text" value = ${data.class}> <br>
188                         \<\div  style="padding:15px 10px 0 20px; display:inline-block  ">成绩\<\/div>
189                         <input id="dataScore" type="text" value = ${data.score}> <br>
190                         `,
191                         btn: [‘确认修改‘, ‘取消‘] //按钮
192                     });
193                 }
194             });
195
196
197             $("body").click(function (event) {
198                 // console.log(event.target);
199                 if (event.target.innerHTML == "确认修改") {
200                     // console.log(dataIndex);
201                     stuData[dataIndex].id = $("#dataID").val();
202                     stuData[dataIndex].username = $("#dataUser").val();
203                     stuData[dataIndex].sex = $("#dataSex").val();
204                     stuData[dataIndex].age = $("#dataAge").val();
205                     stuData[dataIndex].class = $("#dataClass").val();
206                     stuData[dataIndex].score = $("#dataScore").val();
207                     save("stuData", stuData);
208                     window.location.reload();
209                 } else if (event.target.innerHTML == ‘添加‘) {
210                     // console.log($("input:checked").val());
211
212                     stuData.push({
213                         "id": `${$(".dataID").val()}`,
214                         "username": `${$(".dataUser").val()}`,
215                         "sex": `${$("input:checked").val()}`,
216                         "age": `${$(".dataAge").val()}`,
217                         "class": `${$(".dataClass").val()}`,
218                         "score": `${$(".dataScore").val()}`,
219                     });
220                     save("stuData", stuData);
221                     window.location.reload();
222                 } else if (event.target.innerHTML == "查询") {
223                     $(".testp").remove();
224                     if ($(".op:selected").val() == "学生姓名") {
225                         for (let i = 0; i < stuData.length; i++) {
226                             if (stuData[i].username == $("#check1").val()) {
227                                 $("<p>", {
228                                     class: "testp",
229                                     text: JSON.stringify(stuData[i]),
230                                 }).appendTo("body");
231                             }
232                         }
233                     } else if ($(".op:selected").val() == "班级") {
234                         for (let i = 0; i < stuData.length; i++) {
235                             if (stuData[i].class == $("#check1").val()) {
236                                 $("<p>", {
237                                     class: "testp",
238                                     text: JSON.stringify(stuData[i]),
239                                 }).appendTo("body");
240                             }
241                         }
242                     } else if ($(".op:selected").val() == "学号") {
243                         for (let i = 0; i < stuData.length; i++) {
244                             if (stuData[i].id == $("#check1").val()) {
245                                 $("<p>", {
246                                     class: "testp",
247                                     text: JSON.stringify(stuData[i]),
248                                 }).appendTo("body");
249                             }
250                         }
251                     }
252                 }
253
254             });
255
256
257
258
259
260             //监听头s工具栏事件
261             table.on(‘toolbar(test)‘, function (obj) {
262                 var checkStatus = table.checkStatus(obj.config.id)
263                     , data = checkStatus.data; //获取选中的数据
264                 console.log(checkStatus);
265                 console.log(data);
266                 switch (obj.event) {
267                     case ‘add‘:
268                         layer.open({
269                             type: 1,
270                             area: [‘600px‘, ‘360px‘],
271                             shadeClose: false, //点击遮罩关闭
272                             content: `
273                             \<\div  style="padding:15px 10px 0 20px; display:inline-block  ">学号\<\/div>
274                             <input class="dataID" type="text"> <br>
275                             \<\div  style="padding:15px 10px 0 20px; display:inline-block  ">姓名\<\/div>
276                             <input class="dataUser" type="text"> <br>
277                             \<\div  style="padding:15px 10px 0 20px; display:inline-block  ">性别\<\/div>
278                             <input class="dataSex" type="radio" name="sex" value = 男>男 <input id="dataSex" type="radio" name="sex" value="女">女 <br>
279                             \<\div  style="padding:15px 10px 0 20px; display:inline-block  ">年龄\<\/div>
280                             <input class="dataAge" type="text"> <br>
281                             \<\div  style="padding:15px 10px 0 20px; display:inline-block  ">班级\<\/div>
282                             <input class="dataClass" type="text"> <br>
283                             \<\div  style="padding:15px 10px 0 20px; display:inline-block  ">成绩\<\/div>
284                             <input class="dataScore" type="text"> <br>
285                             `,
286                             btn: ["添加", ‘取消‘] //按钮
287                         });
288
289                         // console.log(data);
290                         break;
291                     case ‘update‘:
292                         if (data.length === 0) {
293                             layer.msg(‘请选择一行‘);
294                         } else if (data.length > 1) {
295                             layer.msg(‘只能同时编辑一个‘);
296                         } else {
297                             layer.alert(‘编辑 [id]:‘ + checkStatus.data[0].id);
298                         }
299                         break;
300                     case ‘delete‘:
301                         if (data.length === 0) {
302                             layer.msg(‘请选择一行‘);
303                         } else {
304                             layer.msg(‘删除‘);
305                         }
306                         break;
307                 };
308             });
309
310         });
311
312
313
314 /*-----------------------------------echarts------------*/
315
316
317         // 基于准备好的dom,初始化echarts实例
318         var myChart = echarts.init(document.getElementById(‘main‘));
319         // username = ["zjc", "lgy", "wjy"];
320         // score = ["58", "70", "70"];
321
322         // 指定图表的配置项和数据
323         var option = {
324             title: {
325                 text: ‘学生成绩表‘
326             },
327             tooltip: {},
328             legend: {
329                 data: [‘成绩‘]
330             },
331             xAxis: {
332                 // data: [username[0], "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
333                 data: []
334             },
335             yAxis: {},
336             series: [{
337                 name: ‘成绩‘,
338                 type: ‘line‘, //折线图 条形图
339                 // data: [score[0], 20, 36, 10, 10, 20]
340                 data: []
341             }]
342         };
343         for (let i = 0; i < stuData.length; i++) {
344             option.xAxis.data.push(stuData[i].username);
345         }
346         for (let i = 0; i < stuData.length; i++) {
347             option.series[0].data.push(stuData[i].score);
348         }
349         // 使用刚指定的配置项和数据显示图表。
350         myChart.setOption(option);
351     </script>
352
353 </body>
354
355 </html>

还有两个登陆注册界面 通过ajax

局部刷新 然后 才能进入到 学生管理 界面

整个代码都是在layui的基础上添加的自己所需要的功能

echarts 就是 制作了一个折线统计图

增加 删除 修改 都比较正常

查询功能做的就比较差 因为直接把代码显示到了页面上面

原文地址:https://www.cnblogs.com/ATnTention/p/11631999.html

时间: 2024-10-29 18:00:12

学生管理系统(layUI Echarts)的相关文章

学生管理系统(jsp+mysql)

1.实验目的 通过使用 Java Web 技术设计一个简单的数据库管理系统,了解前台页面和后 台编辑页面的区别,掌握 Web 服务器与 MySQL 数据库的连接和数据库操作的方 法,掌握使用 JSP 编写后台代码的方法. 2.实验内容和要求 开发一个学生管理系统,完成学生信息的查看.增加.删除和修改等功能. 对于客户端增加和修改信息页面,要使用 javascript 进行必要的数据的非空验证. 自行添加一些 css,使得页面和字体更加美观. 3.实验步骤及实验结果 (1)打开 MySQL,新建一

用链表写的学生管理系统 成绩的录入与查询都已经是实现了

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct teacher { char name[32]; int math; int english; int data; struct Node *next; }SLIST; int Creat_SList(); int SList_Print(); int SLis

c语言学生管理系统链表(dev vs2012下可以运行)

struct student { char name[10]; char sex[5]; long int num;//学号 int xuhao; int age; float score[3]; float averange; char DJ;//存放等级哦 struct student *next; };//定义结构体变量保存 名字 性别 年龄 成绩] 结构体声明 int n;//存放学生人数 int man;//存放统计的男生数 float JY(float a)//校验成绩使范围0-10

Mysql学生管理系统:表的建立,外键一对多,多对多关系,中间关联表的建立

学生管理系统 管理员注册/登录/注销 注册班级(班级详细信息) 注册学生信息 查看班级信息/查看老师资料 教师注册/注销  查看教师资料  查看学生资料  根据名称/班级/ 查看学生详细信息--支持模糊 注册科目 管理员(admini) ad_id(管理员id)     ad_number(管理员账号) ad_pass(管理员密码)    ad_yn(管理员是否禁用) create table admini( ad_id int PRIMARY KEY AUTO_INCREMENT,-- 主键自

微信南通大学教务学生管理系统_用户体验

刚开始我还没关注南通大学教务学生管理系统的时候都是经常用电脑登陆然后上去查课表或者成绩什么的,但是用电脑也挺不方便的,因为每次都输用户名和密码,挺烦的.后来关注微信之后觉得还挺方便的,(图片是盗用同学的,因为我的手机屏幕没那么大,不能一下子把整张图一次性截下),但是我想说的他的缺点也就是它的一张图片实在太长了,让人看的眼花,一下子不能马上找到自己想查的是什么,而且我们要查的内容都是通过输入字母和数字组成的,如果一下子记不住字母和数字,还要往上翻页去看一眼什么字母或者数字,才能继续输入.(我不知道

精美学生管理系统

半个学期即将完美结束,精美的学生管理系统也终于亮相啦,哈哈! 话不多说,切入正题. 首先,要了解完成学生管理系统的步骤: 总共有几个模块,我就逐一讲解: 一:完成登录页面模块 判断“登录”是否成功的代码: 1 private void btnLogin_Click(object sender, EventArgs e) 2 { 3 string str = DBHelper.str; 4 SqlConnection con = new SqlConnection(str); 5 string s

【php】1、学生管理系统-欢迎界面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

简单的学生管理系统

简单的学生管理系统 一,主要功能: 1,添加学生信息: 2,添加的学生信息显示在线型布局中: 3,把学生信息保存在xml文件中: 4,把保存在mxl中的学生信息取出来解析显示在界面: 二,主要知识点: 1,layout_weight的使用: 2,pull解析xml文件,xml序列化: 3,保存数据到sd卡: 4,动态添加控件刷新界面: 三,界面原型如下图: 四,代码展示: 1,界面xml文件,activity_main.xml <LinearLayout xmlns:android="ht

Servlet实例开发---学生管理系统

Servlet总结 本程序采用Servlet开发技术,MVC分层,所有程序在设计时都要接口为操作的标准,主要逻辑操作只有增删改查. 具体实现操作请看源代码. 本程序采用的是MYSQL数据库,需加入相应的jar包 目录结构 首先贴上底层数据层: 连接数据库 package com.student.dbc ; import java.sql.* ; public class DatabaseConnection { private static final String DBDRIVER = "or