ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法

 更新时间:2016年11月12日 08:51:21   作者:乡间小路   我要评论
这篇文章主要介绍了ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法,涉及thinkPHP针对数据表的查询与遍历操作相关实现技巧,需要的朋友可以参考下

本文实例讲述了ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法。分享给大家供大家参考,具体如下:

在作业管理系统中,学生登陆到个人中心后可以通过左侧的菜单查看自己已经提交的作业和未提交作业。那么在系统中如何实现这些数据的查询的呢?首先我们需要弄清楚学生(Student)、班级(class)、作业提交表(Submit)这三个表之间的关系。

1. 每个学生都属于一个班级

2. 班级里的每个学生都会被布置同样的作业

3. 学生提交作业后会在作业提交表中添加响应的记录,如学生的ID,作业的ID,提交的内容等。

可以按照以下步骤获取学生已交作业和未交作业

1. 获取学生所在班级的所有作业

//获取学生所在班级的所有作业
 public function getTasks($stuno)
 {
 $stu=$this::get(['stu_no'=>$stuno]);
 $clas=Clas::get(['clas_id'=>$stu['clas_id']]);
 return $clas->task;
 }

由上述代码课看出,首先根据学号($stuno)获取学生信息,通过学生信息表保存的班级ID(clas_id)再获取学生所在班级信息,最后通过班级与作业表之间的多对多的关系(详见Thinkphp5官方手册关于模型的关联部分内容),获取该学生所在班级所布置的所有作业。

2. 获取学生未交作业

//获取某学生所有未交作业
 public function getUnSubmitTasks($stuno)
 {
 $stu=$this::get(['stu_no'=>$stuno]);
 $alltask=$this->getTasks($stuno);
 foreach($alltask as $key=>$value)
 {
  if(Submit::get(['task_id'=>$value['task_id'],'stu_id'=>$stu['stu_id']]))
  {
  unset($alltask[$key]);//删除已提交作业
  }
 }
 return $alltask;
 }

该函数首先调用获取全部作业的函数($this->getTasks($stuno))获得了学生所在班级的所有作业。这个数据集是一个二维数组,遍历这个二维数组,看看这个二维数组中是否有作业已经被该学生提交到了Submit中,如果提交了就删除该元素。

3.获得学生已交作业

有了上述两个函数,获取已交作业的事情就变的简单了,第一个函数获得的二维数组减去第二个函数所返回的数组就是学生已交作业的集合,做下二维数组的求差即可

//获取某学生所有已交作业(所有作业和未交作业的差集)
 public function getSubmitTasks($stuno)
 {
 $unsubmit=$this->getUnSubmitTasks($stuno);
 $alltasks=$this->getTasks($stuno);
 $submittasks=array();
 foreach ($alltasks as $key=>$value)
 {
  if(!in_array($value,$unsubmit))
  {
  $submittasks[]=$value;
  }
 }
 return $submittasks;
 }

以上就是我在使用ThinkPHP5建立学生作业管理系统实践中对学生作业列表的解决办法,如果您有更好的方法,欢迎批评指正!

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

相关文章

  • PHP捕获Fatal error错误的方法

    PHP捕获Fatal error错误的方法

    这篇文章主要介绍了PHP捕获Fatal error错误的方法,使用register_shutdown_function来捕获Fatal error错误,需要的朋友可以参考下
    2014-06-06
  • 通过curl模拟post和get方式提交的表单类

    通过curl模拟post和get方式提交的表单类

    写了个简单的脚本通过curl的方式模拟表单提交。可以通过数组和字符串两种方式提交数据,需要的朋友可以参考下
    2014-04-04
  • tp5实现微信小程序多图片上传到服务器功能

    tp5实现微信小程序多图片上传到服务器功能

    这最近在做一个教育类的小商城的微信小程序,用到了上传多个图片文件到服务器端。下面澳门金沙网上娱乐小编给大家带来了tp5实现微信小程序多图片上传到服务器的方法,需要的朋友可以参考下
    2018-07-07
  • PHP 断点续传实例详解

    PHP 断点续传实例详解

    这篇文章主要介绍了PHP 断点续传的相关知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-11-11
  • PHP 数组基本操作方法详解

    PHP 数组基本操作方法详解

    下面小编就为大家带来一篇PHP 数组基本操作方法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • codeigniter中view通过循环显示数组数据的方法

    codeigniter中view通过循环显示数组数据的方法

    这篇文章主要介绍了codeigniter中view通过循环显示数组数据的方法,实例分析了codeigniter中view方法与数组遍历的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • Zend Framework教程之Zend_Db_Table表关联实例详解

    Zend Framework教程之Zend_Db_Table表关联实例详解

    这篇文章主要介绍了Zend Framework教程之Zend_Db_Table表关联用法,结合实例形式较为详细的分析了Zend_Db_Table表关联的定义,实现方法与相关注意事项,需要的朋友可以参考下
    2016-03-03
  • laravel-admin 中列表筛选方法

    今天小编就为大家分享一篇laravel-admin 中列表筛选方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • ThinkPHP中where()使用方法详解

    ThinkPHP中where()使用方法详解

    where方法可以用于对金沙国际官网操作的结果进行筛选。即SQL查询语句中的where子句。本文给大家介绍ThinkPHP中where()使用方法详解,感兴趣的朋友参考下
    2016-04-04
  • 使用openssl实现rsa非对称加密算法示例

    使用openssl实现rsa非对称加密算法示例

    这篇文章主要介绍了使用openssl实现rsa非对称加密算法的示例,大家参考使用吧
    2014-01-01

最新评论