thinkphp关于考生信息相关统计

来源:互联网 发布:女狙击手知乎 编辑:程序博客网 时间:2024/05/16 17:30

最近做的系统里面需要统计,写了一个案例,方便自己以后查看

相关数据表和字段名:

1.考生信息表(tb_examinee)

序号字段名数据类型约束条件备注1eidint

主键

自增2idnumchar(18)非空身份证号码3truenamevarchar(50)非空姓名4categoryint非空毕业类别
1:普高
2:职高5examyearint非空考试年份6intent1varchar(50)非空第一志愿7intent2varchar(50) 第二志愿8ispassint非空审核状态
0:未通过审核
1:通过审核9isregisterint 报道状态
0:未报到
1:报到10scorefloat(5,2) 成绩11intervarchar(50)非空录取专业12statusint非空是否被禁用
-1:被删除
0:禁用
1:正常使用

2.招生计划详情(tb_plan)

序号字段名数据类型约束条件备注1pidint主键自增2examyearint非空年份3majorvarchar(50)非空专业名称4departmentvarchar(50)非空所属院系5num1int 普高计划人数6num2int 职高计划人数7statusint 是否被禁用
-1:被删除
0:禁用
1:正常使用

因为统计的东西比较多,所以单独写了一个类文件

在Application/Admin/下---->新建Login文件夹---->新建ExamineeLogic.class.php类(类名必须对应一张数据表,即文件名为某张数据表的名字)

ExamineeLogic.class.php

该类的命名空间和继承:

<?phpnamespace Admin\Logic;use Think\Model;class ExamineeLogic extends Model{       /**          年份详情       **/public function getExamyear(){    $Examinee=M('Examinee');    $condition['status']=1; //正常使用    $examyear=$Examinee->distinct(true)->field('examyear')->where($condition)->order('eid asc')->select();    foreach($examyear as $v){$examyearsArr[]=$v['examyear'];    }    return $examyearsArr;}/**   专业详情**/public function getMajorInfo(){    $Plan=M('Plan');    if($search_text=I("search_text")){//接收查询信息 $condition['major']=array("like","%$search_text%");//模糊查询    }    $condition['status']=1; //正常使用    $majorInfo=$Plan->distinct(true)->field('major')->where($condition)->order('pid asc')->select();    return $majorInfo;}/**   组建查询方法   @inter 专业      @examyear 年份   @type   @category 普高|职高 == 1|2    **/public function getMajorCounts($inter,$examyear,$type,$category){      $Examinee=M('Examinee');   $conditions['status']=1; //正常使用        switch($type){       case 1:  //报名总人数                 $condition1['intent1']=$inter;       $condition1['examyear']=$examyear;       $condition1['category']=$category;       $conditions=$condition1;               break;       case 2: //通过审核数                 $condition2['intent1']=$inter;       $condition2['examyear']=$examyear;       $condition2['category']=$category;       $condition2['ispass']=1;       $conditions=$condition2;               break;       case 3: //已报到的人数                   $condition3['intent1']=$inter; $condition3['examyear']=$examyear; $condition3['category']=$category; $condition3['isregister']=1; $conditions=$condition3;                 break;       case 4: //录取的人数                  $condition4['inter']=$inter;         $condition4['examyear']=$examyear;          $condition4['category']=$category;         $conditions=$condition4;                 break;   }   $examineeCounts=$Examinee->where($conditions)->count();   return $examineeCounts;  }/**   普高职高计划人数   @inter 专业      @examyear 年份   @type   @return nums 返回人数**/public function getMajorNums($inter,$examyear,$type){$Plan=M('Plan');$condition['status']=1;$condition['major']=$inter;$condition['examyear']=$examyear;switch($type){     case 1:  //普高计划人数   $nums=$Plan->where($condition)->getField('num1');           break;     case 2: //职高计划人数   $nums=$Plan->where($condition)->getField('num2');           break; }return $nums;}        /**   统计各专业人数并封装数组**/        public function getExamineeCountsArr(){    $majorArr=$this->getMajorInfo();    $examyearArr=$this->getExamyear();$i=0;foreach($majorArr as $value){     $arr[$i]['major']=$value['major']; //专业     foreach($examyearArr as $v){ //年份     $arr[$i][$v]['nums1']=$this->getMajorNums($value['major'],$v,1); //普高计划人数      $arr[$i][$v]['nums2']=$this->getMajorNums($value['major'],$v,2); //职高计划人数     $arr[$i][$v]['nums3']=$this->getMajorCounts($value['major'],$v,1,1);  //报名总人数 普高     $arr[$i][$v]['nums4']=$this->getMajorCounts($value['major'],$v,1,2);  //报名总人数 职高     $arr[$i][$v]['nums5']=$this->getMajorCounts($value['major'],$v,2,1);  //通过审核总人数 普高     $arr[$i][$v]['nums6']=$this->getMajorCounts($value['major'],$v,2,2);  //通过审核总人数 职高     $arr[$i][$v]['nums7']=$this->getMajorCounts($value['major'],$v,3,1);  //已报到人数 普高     $arr[$i][$v]['nums8']=$this->getMajorCounts($value['major'],$v,3,2);  //已报到人数 职高     $arr[$i][$v]['nums9']=$this->getMajorCounts($value['major'],$v,4,1);  //录取总人数 普高     $arr[$i][$v]['nums10']=$this->getMajorCounts($value['major'],$v,4,2); //录取总人数 职高 }      $i++;}    return $arr;}}?>
SubtotalController.class.php  
该控制器调用以上统计的方法:

       /***        专业人数统计,包括入学性质***/public function majorCounts()    $ExamineeLogic=D("Examinee","Logic");    $this->assign('examineeCountsArr',$ExamineeLogic->getExamineeCountsArr());    $this->display("Subtotal/majorCounts");}

majorCounts.html

模板页输出:

<table class="table table-bordered table-striped" id="table-info">        <thead><tr><th rowspan="2">序号</th><th rowspan="2">专业</th><th colspan="5" class="year">2016(普高|职高)</th><th colspan="5" class="year">2017(普高|职高)</th></tr>           <tr><th class="planNum">计划数</th><th class="regNum">报名人数</th><th class="ispassNum">通过审核人数</th><th class="isregisterNum">已报到的人数</th><th class="enrollNum">录取人数</th>           <th class="planNum">计划数</th><th class="regNum">报名人数</th><th class="ispassNum">通过审核人数</th><th class="isregisterNum">已报到的人数</th><th class="enrollNum">录取人数</th>           </tr>    </thead>    <tbody>        <volist name="examineeCountsArr" id="vo">             <tr>                <td>{$i}</td>                <td>{$vo.major}</td>                <td class="planNum">{$vo[2016].nums1}|{$vo[2016].nums2}</td>                <td class="regNum">{$vo[2016].nums3}|{$vo[2016].nums4}</td>                <td class="ispassNum">{$vo[2016].nums5}|{$vo[2016].nums6}</td>                <td class="isregisterNum">{$vo[2016].nums7}|{$vo[2016].nums8}</td>                <td class="enrollNum">{$vo[2016].nums9}|{$vo[2016].nums10}</td>                                <td class="planNum">{$vo[2017].nums1}|{$vo[2017].nums2}</td>                <td class="regNum">{$vo[2017].nums3}|{$vo[2017].nums4}</td>                <td class="ispassNum">{$vo[2017].nums5}|{$vo[2017].nums6}</td>                <td class="isregisterNum">{$vo[2017].nums7}|{$vo[2017].nums8}</td>                <td class="enrollNum">{$vo[2017].nums9}|{$vo[2017].nums10}</td>             </tr>        </volist>              </tbody></table>

原创粉丝点击