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 相关文章推荐
PHP 面向对象详解
Sep 13 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
Jul 05 PHP
PHP利用header跳转失效的解决方法
Oct 24 PHP
3款值得推荐的微信开发开源框架
Oct 28 PHP
在Windows系统下使用PHP生成Word文档的教程
Jul 03 PHP
必须收藏的23个php实用代码片段
Feb 02 PHP
基于laravel制作APP接口(API)
Mar 15 PHP
php 使用html5实现多文件上传实例
Oct 24 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
PHP完全二叉树定义与实现方法示例
Oct 09 PHP
Yii框架视图、视图布局、视图数据块操作示例
Oct 14 PHP
laravel 错误处理,接口错误返回json代码
Oct 25 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
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
Vue常用API、高级API的相关总结
2021/02/02 Vue.js
javascript实现简单页面倒计时
2021/03/02 Javascript
Python urlopen 使用小示例
2008/09/06 Python
Python中自定义函数的教程
2015/04/27 Python
20个常用Python运维库和模块
2018/02/12 Python
TensorFlow实现卷积神经网络CNN
2018/03/09 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
利用python画出折线图
2018/07/26 Python
Django实现单用户登录的方法示例
2019/03/28 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
python3中布局背景颜色代码分析
2020/12/01 Python
pandas 按日期范围筛选数据的实现
2021/02/20 Python
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
idealfit英国:世界领先的女性健身用品和运动衣物品牌
2017/11/25 全球购物
什么是serialVersionUID
2016/03/04 面试题
工地安全检查制度
2014/02/04 职场文书
优秀语文教师事迹
2014/05/18 职场文书
开工仪式策划方案
2014/05/23 职场文书
七年级地理教学计划
2015/01/22 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript