学生信息管理案例

这篇具有很好参考价值的文章主要介绍了学生信息管理案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天给大家带来如何使用js来实现学生信息管理的事件案例

首先是简单的HTML部分,就是一个简单的表格设置,至于autocomplete是什么意思,在这里解释一下,这个如果AutoComplete控件就是指用户在文本框输入前几个字母或是汉字的时候,该控件就能从存放数据的文本或是数据库里将所有以这些字母开头的数据提示给用户,供用户选择,提供方便。

<h1>新增学员</h1>
  <form class="info" autocomplete="off">
    姓名:<input type="text" class="uname" name="uname" />
    年龄:<input type="text" class="age" name="age" />
    性别:
    <select name="gender" class="gender">
      <option value="男">男</option>
      <option value="女">女</option>
    </select>
    薪资:<input type="text" class="salary" name="salary" />
    就业城市:<select name="city" class="city">
      <option value="北京">北京</option>
      <option value="上海">上海</option>
      <option value="广州">广州</option>
      <option value="深圳">深圳</option>
      <option value="曹县">曹县</option>
    </select>
    <button class="add">录入</button>
  </form>

  <h1>就业榜</h1>
  <table>
    <thead>
      <tr>
        <th>学号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>性别</th>
        <th>薪资</th>
        <th>就业城市</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody>
      <!-- 
        <tr>
          <td>1001</td>
          <td>欧阳霸天</td>
          <td>19</td>
          <td>男</td>
          <td>15000</td>
          <td>上海</td>
          <td>
            <a href="javascript:">删除</a>
          </td>
        </tr> 
        -->
    </tbody>
  </table>

接下来是CSS

* {
  margin: 0;
  padding: 0;
}

a {
  text-decoration: none;
  color:#721c24;
}
h1 {
  text-align: center;
  color:#333;
  margin: 20px 0;
 
}
table {
  margin:0 auto;
  width: 800px;
  border-collapse: collapse;
  color:#004085;
}
th {
  padding: 10px;
  background: #cfe5ff;
  
  font-size: 20px;
  font-weight: 400;
}
td,th {
  border:1px solid #b8daff;
}
td {
  padding:10px;
  color:#666;
  text-align: center;
  font-size: 16px;
}
tbody tr {
  background: #fff;
}
tbody tr:hover {
  background: #e1ecf8;
}
.info {
  width: 900px;
  margin: 50px auto;
  text-align: center;
}
.info  input, .info select {
  width: 80px;
  height: 27px;
  outline: none;
  border-radius: 5px;
  border:1px solid #b8daff;
  padding-left: 5px;
  box-sizing: border-box;
  margin-right: 15px;
}
.info button {
  width: 60px;
  height: 27px;
  background-color: #004085;
  outline: none;
  border: 0;
  color: #fff;
  cursor: pointer;
  border-radius: 5px;
}
.info .age {
  width: 50px;
}

再然后就是JS

首先还是需要获取我们的表单里面的元素,这里我为什么要把name放进来,相信大家有所察觉,我们HTML表单里面每个结构都有name这个元素,所以我们需要把表单中name获取过了进行一个非空判断

第一步我们需要一个空数组,不管是增加删除需要对这个素组进行操作

然后开始我们第一个模块录入模块,第一个我们写一个表单提交事件,需要先获取表单类名,然后写一个提交事件,为了防止我们进行跳转,需要借助于preventDefault这个函数是进行阻止默认行为,然后下面我们来进行一个判断,也就是非空,如果我们我们数据输入不完整则需要补充完整,不然不给录用

第二步我们就需要渲染这个数据,将数组的值来渲染到数组对象里面,之后呢我们需要追加,最后当我们输入完成录用时候,需要重置reset,最后一步,我们需要调用,不然不会显示我们输入的数据

然后就到了我们的模块2

把这些数据来渲染到数组去,因为增加和删除都需要渲染,然后呢我们输入完毕时候,我们的tbody这块会变成空的然后需要我们继续输入第二条表格,然后下面,我们需要遍历整个数组之后再通过inhtml的形式变成我们输入的形式,下面data-id是自定义属性,因为我们下面删除需要借助索引,不然不知道电脑咋知道你删掉的哪个

我们生成一个动态tr之后就把tr

追加到素组里面去,然后呢我们这个增加模块就做完了

然后删除模块我们只需要借助事件委托

写一个点击事件,如果自定义属性是等于当前索引号,那么我们进行删除操作,最后我们进行渲染一次

<script>
    //获取元素
    const uname=document.querySelector('.uname')
    const age=document.querySelector('.age')
    const gender=document.querySelector('.gender')
    const salary=document.querySelector('.salary')
    const city=document.querySelector('.city')
    const tbody=document.querySelector('tbody')
    //获取带有name属性的元素
    const items=document.querySelectorAll('[name]')
    //声明一个空数组,增加和删除都是对这个数组进行操作
    const arr=[]
    //1.录入模块
    //1.1表单提交事件
    const info=document.querySelector('.info')
    info.addEventListener('submit',function(e){
      //阻止默认行为
      e.preventDefault()
      //创建新的的对象
      //这里进行表单判断,不通过,中断,不需要添加数据
      for(let i=0;i<items.length;i++){
        if(items[i].value === ''){
          return alert('输入不能为空')
        }
      }
      const obj={
        stuId:arr.length+1,
        uname:uname.value,
        age:age.value,
        gender:gender.value,
        salary:salary.value,
        city:city.value
      }
      //追加给数组里面
      arr.push(obj)
      // console.log(arr)
      //重置
      this.reset()
      //调用
      render()
    })

    //2.渲染函数 因为增加和删除都需要渲染
    function render(){
      //先情况tbody 把最新数组渲染完毕
      tbody.innerHTML=''
      //遍历素组
      for(let i=0;i<arr.length;i++){
        //生成tr
        const tr=document.createElement('tr')
        tr.innerHTML=`
          <td>${arr[i].stuId}</td>
          <td>${arr[i].uname}</td>
          <td>${arr[i].age}</td>
          <td>${arr[i].gender}</td>
          <td>${arr[i].salary}</td>
          <td>${arr[i].city}</td>
          <td>
            <a href="javascript:" data-id=${i}>删除</a>
          </td>
        `
        //追加元素
        //  父元素.appendChild
        tbody.appendChild(tr)
      }
    }

    //3.删除操作
    //3.1事件委托tbody
    tbody.addEventListener('click', function(e){
      if(e.target.tagName === 'A'){
        //得到当前元素自定义属性
        //删除arr数组的数据
        arr.splice(e.target.dataset.id,1)
        //从新渲染一次
        render()
      }
    })
  </script>

接下来是源码

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

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>学生信息管理</title>
  <link rel="stylesheet" href="css/index.css" />
</head>

body>
  <h1>新增学员</h1>
  <form class="info" autocomplete="off">
    姓名:<input type="text" class="uname" name="uname" />
    年龄:<input type="text" class="age" name="age" />
    性别:
    <select name="gender" class="gender">
      <option value="男">男</option>
      <option value="女">女</option>
    </select>
    薪资:<input type="text" class="salary" name="salary" />
    就业城市:<select name="city" class="city">
      <option value="北京">北京</option>
      <option value="上海">上海</option>
      <option value="广州">广州</option>
      <option value="深圳">深圳</option>
      <option value="曹县">曹县</option>
    </select>
    <button class="add">录入</button>
  </form>

  <h1>就业榜</h1>
  <table>
    <thead>
      <tr>
        <th>学号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>性别</th>
        <th>薪资</th>
        <th>就业城市</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody>
      <!-- 
        <tr>
          <td>1001</td>
          <td>欧阳霸天</td>
          <td>19</td>
          <td>男</td>
          <td>15000</td>
          <td>上海</td>
          <td>
            <a href="javascript:">删除</a>
          </td>
        </tr> 
        -->
    </tbody>
  </table>
  <script>
    //获取元素
    const uname=document.querySelector('.uname')
    const age=document.querySelector('.age')
    const gender=document.querySelector('.gender')
    const salary=document.querySelector('.salary')
    const city=document.querySelector('.city')
    const tbody=document.querySelector('tbody')
    //获取带有name属性的元素
    const items=document.querySelectorAll('[name]')
    //声明一个空数组,增加和删除都是对这个数组进行操作
    const arr=[]
    //1.录入模块
    //1.1表单提交事件
    const info=document.querySelector('.info')
    info.addEventListener('submit',function(e){
      //阻止默认行为
      e.preventDefault()
      //创建新的的对象
      //这里进行表单判断,不通过,中断,不需要添加数据
      for(let i=0;i<items.length;i++){
        if(items[i].value === ''){
          return alert('输入不能为空')
        }
      }
      const obj={
        stuId:arr.length+1,
        uname:uname.value,
        age:age.value,
        gender:gender.value,
        salary:salary.value,
        city:city.value
      }
      //追加给数组里面
      arr.push(obj)
      // console.log(arr)
      //重置
      this.reset()
      //调用
      render()
    })

    //2.渲染函数 因为增加和删除都需要渲染
    function render(){
      //先情况tbody 把最新数组渲染完毕
      tbody.innerHTML=''
      //遍历素组
      for(let i=0;i<arr.length;i++){
        //生成tr
        const tr=document.createElement('tr')
        tr.innerHTML=`
          <td>${arr[i].stuId}</td>
          <td>${arr[i].uname}</td>
          <td>${arr[i].age}</td>
          <td>${arr[i].gender}</td>
          <td>${arr[i].salary}</td>
          <td>${arr[i].city}</td>
          <td>
            <a href="javascript:" data-id=${i}>删除</a>
          </td>
        `
        //追加元素
        //  父元素.appendChild
        tbody.appendChild(tr)
      }
    }

    //3.删除操作
    //3.1事件委托tbody
    tbody.addEventListener('click', function(e){
      if(e.target.tagName === 'A'){
        //得到当前元素自定义属性
        //删除arr数组的数据
        arr.splice(e.target.dataset.id,1)
        //从新渲染一次
        render()
      }
    })
  </script>

</body<>

</html>

创作不易,多多支持,谢谢大家文章来源地址https://www.toymoban.com/news/detail-544538.html

到了这里,关于学生信息管理案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Python学生通讯录管理系统案例(文件版)

    Python学生通讯录管理系统案例(文件版)

    目录 1.打印输出学生通讯录管理系统的菜单 2.接收用户从键盘输入的选择序号 3.根据输入的选择序号,判断并执行不同的功能 注意:本例中,要想保存所以学生的通讯信息,需要用到字典。 1.打印输出学生通讯录管理系统的菜单 首先我们先定义一个showMenu()函数,实现打印输

    2024年02月08日
    浏览(41)
  • Java连接数据库(学生管理系统案例,可以实现增删改查)

    Java连接数据库(学生管理系统案例,可以实现增删改查)

    首先,需要做一个准备工作 ——下载jar包,这个包是用来支持数据库的连接的 官网的下载链接:MySQL :: Download Connector/J 点击链接进入页面: 选择画红框的下载按钮。 与此同时,打开IDEA开发工具,在当前项目目录下新建一个lib目录文件夹用来存放第三方jar包,这样做方便管

    2024年02月07日
    浏览(7)
  • 案例:创建一个学生管理系统(PXSCJ1)的数据库(SQL)

    案例:创建一个学生管理系统(PXSCJ1)的数据库(SQL)

    1、新建数据库:PXSCJ1 2、创建并确认属性:XSB、KCB、CJB 代码见上! 3、设计每个表的实体完整性:键、索引 代码见上!    4、设计每个表的域完整性:CHECK语句 代码见上!      5、建立表与表之间的参照完整性:XSB与CJB,KCB与CJB 代码见上! 6、输入表数据:增加、删除、修改

    2024年02月10日
    浏览(9)
  • MySQL 案例-教学管理信息系统

    对教学管理信息系统,在需求分析阶段,收集到以下信息。 学生的信息:学生的学号、姓名、性别、出生日期、电话(11位)、所在学院、年级、籍贯、民族;学院的信息:学院名称、地址、办公室电话(格式为4位区号-8位电话号码)、联系人、学院简介、所在校区(呈贡

    2024年02月08日
    浏览(7)
  • 前端三大件html,css,js原生实现学生信息管理系统(课程设计)

    前端三大件html,css,js原生实现学生信息管理系统(课程设计)

      目录结构如该图所示,只要将文件命名成图上三种。代码即可正常运行。分别有三个文件,一个是app.js,放学生信息删除添加查询主要逻辑代码。login.html放登录页面样式以及相关逻辑。studentList.html 放置学生管理的页面。 运行效果图:   代码:  app.js login页面 studentList.

    2024年02月04日
    浏览(15)
  • 学生管理系统-课后程序(JAVA基础案例教程-黑马程序员编著-第六章-课后作业)

    学生管理系统-课后程序(JAVA基础案例教程-黑马程序员编著-第六章-课后作业)

    【案例6-2】 学生管理系统 【案例介绍】 1.任务描述 在一所学校中,对学生人员流动的管理是很麻烦的,本案例要求编写一个学生管理系统,实现对学生信息的添加、删除、修改和查询功能。每个功能的具体要求如下: 系统的首页:用于显示系统所有的操作,并根据用户在控

    2024年02月03日
    浏览(47)
  • 【页面案例汇总】微信小程序个人信息管理页面

    这个小程序页面包含了用户头像、昵称、性别、手机号和地址等信息,用户可以自行编辑手机号和地址,并保存到本地缓存中。用户信息的获取通过调用小程序内置的 wx.getUserInfo() 方法实现,手机号和地址的保存和读取使用了小程序提供的 wx.setStorageSync() 和 wx.getStorageSync() 方

    2024年04月13日
    浏览(17)
  • 数据智能化管理:企业网站备案信息API的应用案例

    数据智能化管理:企业网站备案信息API的应用案例

    引言 在数字化时代,企业备案信息管理变得愈发重要。无论是为了合规性还是提高业务运营效率,企业都需要有效管理其网站备案信息。幸运的是,现代技术为企业提供了强大的工具,如企业网站备案信息API,可帮助他们更智能地管理这些数据。本文将深入探讨企业网站备案

    2024年02月06日
    浏览(11)
  • 案例130:基于微信小程序的综合文化信息管理系统

    案例130:基于微信小程序的综合文化信息管理系统

    文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序运行软件:微信开发者 目录 目录 前言 系统展示 管理员模块的实现 会员信息管理 新闻资讯管理 文化展示

    2024年01月19日
    浏览(30)
  • 【前端】Vue+Element UI案例:通用后台管理系统-面包屑、tag栏

    【前端】Vue+Element UI案例:通用后台管理系统-面包屑、tag栏

    参考视频: VUE项目,VUE项目实战,vue后台管理系统,前端面试,前端面试项目 案例 链接 【前端】Vue+Element UI案例:通用后台管理系统-导航栏(视频p1-16) https://blog.csdn.net/karshey/article/details/127640658 【前端】Vue+Element UI案例:通用后台管理系统-Header+导航栏折叠(p17-19) http

    2024年02月09日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包