thinkphp关于考生信息相关统计
2017-05-26 15:05
183 查看
最近做的系统里面需要统计,写了一个案例,方便自己以后查看
相关数据表和字段名:
1.考生信息表(tb_examinee)
2.招生计划详情(tb_plan)
因为统计的东西比较多,所以单独写了一个类文件
在Application/Admin/下---->新建Login文件夹---->新建ExamineeLogic.class.php类(类名必须对应一张数据表,即文件名为某张数据表的名字)
ExamineeLogic.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>
a8f3
<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>
相关数据表和字段名:
1.考生信息表(tb_examinee)
序号 | 字段名 | 数据类型 | 约束条件 | 备注 |
1 | eid | int | 主键 | 自增 |
2 | idnum | char(18) | 非空 | 身份证号码 |
3 | truename | varchar(50) | 非空 | 姓名 |
4 | category | int | 非空 | 毕业类别 1:普高 2:职高 |
5 | examyear | int | 非空 | 考试年份 |
6 | intent1 | varchar(50) | 非空 | 第一志愿 |
7 | intent2 | varchar(50) | 第二志愿 | |
8 | ispass | int | 非空 | 审核状态 0:未通过审核 1:通过审核 |
9 | isregister | int | 报道状态 0:未报到 1:报到 | |
10 | score | float(5,2) | 成绩 | |
11 | inter | varchar(50) | 非空 | 录取专业 |
12 | status | int | 非空 | 是否被禁用 -1:被删除 0:禁用 1:正常使用 |
序号 | 字段名 | 数据类型 | 约束条件 | 备注 |
1 | pid | int | 主键 | 自增 |
2 | examyear | int | 非空 | 年份 |
3 | major | varchar(50) | 非空 | 专业名称 |
4 | department | varchar(50) | 非空 | 所属院系 |
5 | num1 | int | 普高计划人数 | |
6 | num2 | int | 职高计划人数 | |
7 | status | int | 是否被禁用 -1:被删除 0:禁用 1:正常使用 |
在Application/Admin/下---->新建Login文件夹---->新建ExamineeLogic.class.php类(类名必须对应一张数据表,即文件名为某张数据表的名字)
ExamineeLogic.class.php
该类的命名空间和继承:
<?php namespace 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>
a8f3
<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>
相关文章推荐
- 关于根据部门父表统计子表记录数-小旅馆上报信息统计
- 关于间皮瘤mesothelioma的相关信息
- 关于在jsp页面写java代码的分析(限定用户查看相关的信息)
- 关于数学中的正弦定理和余弦定理的相关信息的概述
- struts1中关于ActionForm的相关信息
- 《关于工作室相关信息及法律关系》
- 关于可变参数(不定参数),以及windows下将进程的cpu,内存统计信息写到日志
- 统计信息及相关说明
- iostat 用于输出 CPU 和磁盘 I/O 相关的统计信息。
- PGA统计信息相关
- 统计信息相关资料的总结(原创)
- SQL Server 统计信息相关操作(转)
- 关于碰撞检测的相关信息
- 关于多网卡读取IP相关信息
- 通过 JVM 查看关于 Apache Geronimo 的统计信息
- SEO的HTML布局规范 (收集网上关于SEO的相关信息)
- 关于主线程获取线程结束相关信息 (c++ builder)
- 关于在SetWindowText时如何改变字体的颜色等相关信息
- 关于EAS 套打配置审批结果信息的相关思路
- 关于ORALCE 11G 统计信息的收集