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 相关文章推荐
动态新闻发布的实现及其技巧
Oct 09 PHP
php 移除数组重复元素的一点说明
Nov 27 PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
Dec 16 PHP
ThinkPHP之N方法实例详解
Jun 20 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
php支付宝接口用法分析
Jan 04 PHP
php创建多级目录的方法
Mar 24 PHP
PHP整合七牛实现上传文件
Jul 03 PHP
PHP面向对象详解(三)
Dec 07 PHP
Yii框架表单提交验证功能分析
Jan 07 PHP
PHP addslashes()函数讲解
Feb 03 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
Apr 14 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
法压式咖啡之制作法
2021/03/03 冲泡冲煮
PHP 简易输出CSV表格文件的方法详解
2013/06/20 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
js中不同的height, top的区别对比
2015/09/24 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
Python linecache.getline()读取文件中特定一行的脚本
2008/09/06 Python
python文件操作整理汇总
2014/10/21 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
Python3.8中使用f-strings调试
2019/05/22 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
python两种获取剪贴板内容的方法
2020/11/06 Python
Prototype如何更新局部页面
2013/03/03 面试题
药学专业大学生自荐信
2013/09/28 职场文书
办公室助理岗位职责
2013/12/25 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
社会调查研究计划书
2014/05/01 职场文书
委托培训协议书
2014/11/17 职场文书
工作检讨书怎么写
2015/01/23 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python