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


Posted in PHP onNovember 12, 2016

本文实例讲述了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框架的PHP程序设计有所帮助。

PHP 相关文章推荐
新安装的MySQL数据库需要注意的安全知识
Jul 30 PHP
40个迹象表明你还是PHP菜鸟
Sep 29 PHP
PHP var_dump遍历对象属性的函数与应用代码
Jun 04 PHP
php防攻击代码升级版
Dec 29 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
Sep 10 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
Symfony2学习笔记之控制器用法详解
Mar 17 PHP
Yii2 rbac权限控制之菜单menu实例教程
Apr 28 PHP
PHP实现将标点符号正则替换为空格的方法
Aug 09 PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 PHP
浅谈如何提高PHP代码质量之端到端集成测试
May 28 PHP
php array_values 返回数组的所有值详解及实例
Nov 12 #PHP
php array_udiff_assoc 计算两个数组的差集实例
Nov 12 #PHP
PHP上传图片、删除图片简单实例
Nov 12 #PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 #PHP
PHP数据的提交与过滤基本操作实例详解
Nov 11 #PHP
thinkPHP多语言切换设置方法详解
Nov 11 #PHP
thinkPHP中钩子的两种配置调用方法详解
Nov 11 #PHP
You might like
PHP中的加密功能
2006/10/09 PHP
php visitFile()遍历指定文件夹函数
2010/08/21 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
基于jquery完美拖拽,可返回拖动轨迹
2012/03/29 Javascript
解析jquery获取父窗口的元素
2013/06/26 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
解决npm安装Electron缓慢网络超时导致失败的问题
2018/02/06 Javascript
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
浅析Python中的for 循环
2016/06/09 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
python利用datetime模块计算程序运行时间问题
2020/02/20 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
捷克时尚网上商店:OTTO
2018/03/15 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
半年思想汇报
2013/12/30 职场文书
节水标语大全
2014/06/11 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
领导干部群众路线个人对照检查材料思想汇报
2014/09/30 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
创业计划之特色精品店
2019/08/12 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript