您的位置:首页 > 编程语言 > PHP开发

thinkphp关于考生信息相关统计

2017-05-26 15:05 183 查看
最近做的系统里面需要统计,写了一个案例,方便自己以后查看

相关数据表和字段名:

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
该类的命名空间和继承:
<?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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: