您好,登錄后才能下訂單哦!
這篇文章主要介紹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如何實現作業管理系統中處理學生未交作業與已交作業信息”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。