精华内容
下载资源
问答
  • 表格模板-学生成绩统计表.ett
  • 表格模板-成绩统计表1.ett
  • 学生成绩分析 EXCEL 模板学生成绩分析 EXCEL 模板
  • 导语微信号☞gdpc-service这是一款适用于学校平时统一考试成绩统计表。这是长期根据学校的需求设计出的成绩统计学生成绩清晰明了,一眼看出各科的排名情况!使用操作简单,统计过程全自动化,只需设置相应的任课...

    更新说明:

    1、增加了导入、导出数据功能。

    2、该功能可以实现版本更新时不用手动复制数据,可实现一键导入导出。

    导语微信号☞gdpc-service

    这是一款适用于学校平时统一考试成绩统计表。这是长期根据学校的需求设计出的成绩统计,学生成绩清晰明了,一眼看出各科的排名情况!使用操作简单,统计过程全自动化,只需设置相应的任课教师,各科分值,选择相应的考试信息,录入基本成绩数据后,即可一键自动生成全部成绩统计。统计过程全使用代码实现,速度快,生成成绩总表一般二十秒左右,生成各班成绩和各项统计,只需十秒左右!高效快速……

    特点本成绩统计表不受班级数量和班级人数限制,可根据班级数量和学生人数量、科目数量进行自动化排版,生成的各种表格,可以直接打印,无需要再进行二次调整。由于各学校科目和各分数值可能有所区别,比如优秀分、满分、及格分等不同,统计的各分数段不同等,都可以在“配置数据”里自行设置。只要考试科目不超过十科,都可以使用,适合用于小学、初中、高中等,设置相应数值后即可使用!

    视频点击下面视频查看具体功能、操作和页面吧!!!

    1基本设置页面浏览

    基本信息设置页面

    e3be3ef3b17e2e258cef7d92654b2bd1.png

    配置数据页面

    8a68328cfc298eec147f528c239ace37.png

    级部统计页面

    各班成绩统计页面

    c64ef844d6638b2839b75f35b4e6cece.png

    总成绩统计页面

    9b9abdf00461ef09d134040490e5a0e3.png

    同科统计页面

    783fb5cc3a2de8f63abbe93acf2db701.png

    学业发展页面

    55dafcea802bba9dea853d7b6528dc48.png

    离均差统计页面

    5273a6360885c39cba2f7d7fdaf9073c.png

    (可选择统计方式)

    47e7924984bc7f9c4ec28b45667e1a3b.png

    (以班级统计方式结果)

    4df8a0444deda4e965466fcf7d009224.png

    (以任课教师统计方式结果)

    前N名任教教师统计

    31080557b3f92409bdd92f6efaab9099.png

    fdbcb9e9e59806b5752446dd0789c3d3.png

    2按钮功能说明

    【开始登分】 主要用于成绩的录入,可通过基础成绩数据复制到相关位置,也可逐一输入,在输入时选择分值的位数,输入到达设定的位数后自动换行,操作简单,输入速度快!

    【统计成绩】是将总成绩分到各班中、计算“级部统计”、“同科统计”等有关相关信息,生成各班成绩表,前50名、前100名等统计表。

    【打印成绩】此按钮可实现一键打印全部各班成绩表分发给各班班主任。所有表格已设置好打印格式,统计完后可在【基本信息设置】表中点击【打印成绩】即可全部打印各班成绩分发给各班班主任。

    其他按钮功能请看文档中的说明,此处不再详细讲解。

    3各统计表说明

    基本信息设置此表是成绩统计表的最基本的信息设置,在统计成绩之前一定要将任课教师设置好,否则会在各班和后表相关统计中无任课教师。其他信息可以在点击【开始登分】后在对话框中选择和输入。可从下拉菜单选择相应的设置。

    同科统计本表体现了各班各科各任课教师在本次考试的相关排名,各班各科平均分、及格率、优分率等信息!

    学业发展主要是体现教师之前学业成就的对比,与上次考试成绩对比,体现了各班的进退情况! 【学业成就计算方式】:优分率×100+及格率×100+待及格率×25-低分率×10-未考率×15   【学业发展】:是本次学业成就与上次考试学业成就之前的差。

    各班成绩表表名为数字的为各班的成绩、年级排名、班级排名等,表中体现了班级的名次和在全校的名次、以及与上次对比后的进退情况,下方统计了本班的相关统计数据,统计齐全,信息一览无余,应有竟有!

    级部统计此表包含全校各班各科的相关统计,如:最高分、最低分、及格人数、及格率、各分数段的统计、各班前50名、总体分数段的统计等!

    清空数据此按钮用于清除全部已有数据,方便建立新统计表,用于重新统计新一届学生成绩!

    配置系统此按钮用于初次或是更改相关科目和各分数值用,设置完成后,以后可直接调用科目和分数,使每次运行统计时,不再重复设置科目和分数!

    前N名任课教师统计此按钮用于统计各任课教师在本次考试中,学生进入前N名人数的统计,根据人数进行排名,同时计算该任课教师与各任课教师进入前N名平均值的差值!

    结束语本成绩是个人设计,可能还存在很多不足之处和未涉及到到的相关统计,欢迎各位提出宝贵意见和建议!同时支持根据本学校的相关要求,增加相关内容,具体请与我联系,谢谢!关于成绩统计的更多功能在不断完善和改进中,欢迎关注微信公众号,及时获得更多信息!

    下载地址福利关注【贵定电脑服务】微信公众号发送【成绩统计】获取下载地址!

    贵定电脑服务

    如果您觉得我们的文章有用,请关注我们的公众号吧!

    展开全文
  • 只需要输入每个学生成绩和班级,就能自动计算平均分,每个分数段人数,及格人数,优生人数,还可以进行质量评估。
  • 学生成绩统计分析

    千次阅读 2018-05-10 17:28:22
    <title> 学生单科成绩统计分析 , initial-scale=1.0" name="viewport" /> <!-- BEGIN GLOBAL MANDATORY STYLES --> body { background: #fff !important; padding: 5px; ...


    <!DOCTYPE html>
    <!--[if IE 8]> <html lang="en" class="ie8 no-js"> <![endif]-->
    <!--[if IE 9]> <html lang="en" class="ie9 no-js"> <![endif]-->
    <!--[if !IE]><!-->
    <html lang="en" class="no-js">
        <!--<![endif]-->
        <!-- BEGIN HEAD -->
    
        <head>
            <meta charset="utf-8" />
            <title> 学生单科成绩统计分析表</title>
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta content="width=device-width, initial-scale=1.0" name="viewport" />
            <meta content="" name="description" />
            <meta content="" name="author" />
            <meta name="MobileOptimized" content="320">
    
            <!-- BEGIN GLOBAL MANDATORY STYLES -->
            <link rel="stylesheet" type="text/css" href="../../../assets/plugins/font-awesome/css/font-awesome.min.css" />
            <link rel="stylesheet" type="text/css" href="../../../assets/plugins/bootstrap/css/bootstrap.min.css" />
            <link rel="stylesheet" type="text/css" href="../../../assets/plugins/data-tables/dataTables.bootstrap.css" />
            <link rel="stylesheet" type="text/css" href="../../../assets/plugins/data-tables/css/fixedHeader.bootstrap.min.css" />
    
            <link rel="stylesheet" type="text/css" href="../../../assets/css/report.css" />
            <link rel="stylesheet" type="text/css" href="../../../assets/css/report_udr.css" />
        </head>
        <style>
            body {
                background: #fff !important;
                padding: 5px;
                overflow-x: hidden;
            }
    
            .search input{
                width:50px;
            }
            .search2 input{
                width:70px;
            }         
            .red{
                color:red;
            }  
            .green{
                color:green;
            }
            .table{
                text-align: center;
            }
            .search{
                margin-bottom: 20px;
            }
            .wrong{
                position: absolute;
                top:226px;
                left:360px;
                display: none;
            }
            .form-control{
                width:120px;
                display: inline-block;
            }
            th{
                white-space: nowrap;
                vertical-align: middle !important;
            }   
            .btn{
                margin-left: 20px;
            }      
             
    
        </style>
    
        <body>
            <div class="rpt_header">
                <h4 class="rpt_title"></h4>
                <h4 class="rpt_title_ext"></h4>
            </div>           
            <div class="page-container">
                <div class="search">
                    <p class="range" style="text-align:center;font-size:18px;padding-top:10px;"></p>
                         请选择学科 : 
                    <select class="select form-control">
                        <option selected value="1">语文</option>
                        <option value="2">数学</option>
                        <option value="3">英语</option>
                        <option value="4">物理</option>
                        <option value="5">化学</option>
                        <option value="6">历史</option>
                        <option value="7">地理</option>
                        <option value="8">政治</option>
                        <option value="9">生物</option>
                    </select> 
                          请选择试卷类别 : 
                      <select class="select1 form-control">
                        <option selected value="0">全卷</option>
                        <option value="1">A卷</option>
                        <option value="2">B卷</option>
                    </select>                    
                    <div class="wrong"><span style="padding:20px;color:#999;font-size:30px;">没有检索到数据.</span></div>
                </div>
                <div class="search2" style="margin-top: 10px;">
                   	     高线 : <input type="text" class="high form-control"/>
                   	   中线 : <input type="text" class="mid form-control"/>
                    <button type="button" class="btn btn-primary" style="margin-left: 30px">查询</button>
                </div>
              
                <div class="page-content" style="margin-left: 0px;">
                    <div class="rpt_chart" id="rptChart"></div>
                    <table class="table table-striped table-bordered table-hover rpt_table" align='center'>
                    </table>
                </div>
            </div>
            <script type="text/javascript" src="../../../assets/lib/jquery-3.0.0.min.js"></script>
            <script type="text/javascript" src="../../../assets/plugins/backbone/underscore.js"></script>
            <script type="text/javascript" src="../../../assets/plugins/backbone/backbone.js"></script>
            <script type="text/javascript" src="../../../assets/plugins/jquery.cookie.min.js"></script>
    
            <script type="text/javascript" src="../../../assets/plugins/data-tables/jquery.dataTables.js"></script>
            <script type="text/javascript" src="../../../assets/plugins/data-tables/dataTables.bootstrap.min.js"></script>
            <script type="text/javascript" src="../../../assets/plugins/data-tables/dataTables.fixedHeader.min.js"></script>
            <script type="text/javascript" src="../../../assets/plugins/bootstrap/js/bootstrap.js"></script>
            <script type="text/javascript" src="../../../assets/plugins/purl.js"></script>
            <script type="text/javascript" src="../../../assets/plugins/pace/pace.min.js"></script>
            <script type="text/javascript" src="../../../assets/plugins/echart/echarts-all.js"></script>
    
            <script type="text/javascript" src="../../../assets/lib/zxt.js"></script>
            <script type="text/javascript" src="../../../assets/scripts/app.js"></script>
    		<script type="text/javascript" src="../../../assets/scripts/app_udr.js"></script>
            <script id="rpt_table" type="text/template">
                <thead>
                    <tr>
                        <th rowspan="2">学校</th>
                        <th rowspan="2">参考人数</th>
                        <th rowspan="1" colspan="2" style="text-align:center">优秀(80%)</th>
                        <th rowspan="1" colspan="2" style="text-align:center">及格(60%)</th> 
    					<th rowspan="1" colspan="2" style="text-align:center">学困(40%)</th> 
    					<th rowspan="1" colspan="2" style="text-align:center">高线(<%=data[0].highScore%>)</th> 
    					<th rowspan="1" colspan="2" style="text-align:center">中线(<%=data[0].midScore%>)</th> 
                    </tr>
    				<tr>
    					<th>人数</th>
    					<th>比例</th>
    					<th>人数</th>
    					<th>比例</th>
    					<th>人数</th>
    					<th>比例</th>
    					<th>人数</th>
    					<th>比例</th>
    					<th>人数</th>
    					<th>比例</th
    				</tr>
                </thead>
                <tbody>
                    <%_.each(data[0].data, function(d){%>
                    <tr>
                        <%for(var i=0;i<d.length;i++){%>
                            <%if(i==0){%>
                                <th><%=d[i]%></th>
                            <%}else{%>
    							<% if(i > 1 && i % 2 == 1 && d[i] != ""){%>
    								<th style="text-align:right;"><%=(d[i]*100).toFixed(2) + '%'%></th>
    							<%}else{%>
                               	 	<th style="text-align:right;"><%=d[i]%></th>
    							<%}%>
                            <%}%>
                        <%}%>
                    </tr>
                    <%})%>
                </tbody>
            </script>
    
            <script>
                jQuery(document).ready(function() {
                    var xkId = $('body', window.parent.document).attr('xkId');
                    if( xkId != undefined && xkId != null && xkId.length!=0){
                        $(".select").attr('disabled','true');
                        $(".select option[value='"+xkId+"']").attr('selected',true);
                    }
                    var exam = appUtils.getExamInfo(); 
                    var totalScore;
                    function getTotalScore(){
                        ZX.getDataByAjax(
                            "../../../rpt/single/rpt2008/tbl/"+exam.uid+"/"+exam.examId+"/"+$(".select").val(),
                            'json',
                            function(res){
                                $('.wrong').css('display','none');
                                $(".btn").removeAttr('disabled');
                                totalScore = res[0].paperScore;
                                $(".range").html('').html('自定义分数档 /分 (0 - '+totalScore+'): ');
                                
                            },
                            function(){
                                //判断dom节点是否被datatable了
                                if ($.fn.DataTable.isDataTable($('.rpt_table'))) { 
                                    //构建datatable的dom对象进行销毁
                                    $('.rpt_table').DataTable().destroy(true); 
                                    //销毁后 dom也会一并销毁,此处需要还原dom节点
                                    $('.page-content').append('<table class="table table-striped table-bordered table-hover rpt_table" align="center"></table>'); 
                                }                                 
                                $('.wrong').css('display','block');
                                $(".range").html('未查到该考试的分数信息');
                                $(".btn").attr('disabled',true);
                                $.zxtloading.close();
                            }
                        ); 
                    }   
                    getTotalScore(); 
    
                    
    
                    var url = "";
                    var xkId = $(".select").val();
                    $(".select").change(function(){
                    	var high = $(".high").val().trim(); 
                    	var mid = $(".mid").val().trim();
                    	if (high == '' || mid == ''){
                    		alert("不能有空值!");
                    	}else{
                            if(isNaN(high)){
                                alert("高线请输入数字!");
                            }else if(isNaN(mid)){
                            	alert("中线请输入数字!");
                            }
                            else if(parseFloat(high)<0 || parseFloat(high)>totalScore){
                                alert("高线超出分数范围!");
                            }else if(parseFloat(mid)<0 || parseFloat(mid)>totalScore){
                            	alert("中线超出分数范围!");
                            }
                            else{
                                high = parseFloat(parseFloat($(".high").val().trim()).toFixed(2));
                                $(".high").val(high);
                                mid = parseFloat(parseFloat($(".mid").val().trim()).toFixed(2));
                                $(".mid").val(mid);
                                var xkId = $(".select").val();
                                var section = $(".select1").val();
                                url = "../../../rpt/single/rpt2039/tbl/"+exam.uid+"/"+exam.examId+"/"+xkId+"/"+high+"/"+mid+"/"+section;
                                RptController.renderRptTable();
                                getTotalScore(); 
                            }
                   		 }   
                    });
                    
                    $(".select1").change(function(){
                    	var high = $(".high").val().trim(); 
                    	var mid = $(".mid").val().trim();
                    	if (high == '' || mid == ''){
                    		alert("不能有空值!");
                    	}else{
                            if(isNaN(high)){
                                alert("高线请输入数字!");
                            }else if(isNaN(mid)){
                            	alert("中线请输入数字!");
                            }
                            else if(parseFloat(high)<0 || parseFloat(high)>totalScore){
                                alert("高线超出分数范围!");
                            }else if(parseFloat(mid)<0 || parseFloat(mid)>totalScore){
                            	alert("中线超出分数范围!");
                            }
                            else{
                                high = parseFloat(parseFloat($(".high").val().trim()).toFixed(2));
                                $(".high").val(high);
                                mid = parseFloat(parseFloat($(".mid").val().trim()).toFixed(2));
                                $(".mid").val(mid);
                                var xkId = $(".select").val();
                                var section = $(".select1").val();
                                url = "../../../rpt/single/rpt2039/tbl/"+exam.uid+"/"+exam.examId+"/"+xkId+"/"+high+"/"+mid+"/"+section;
                                RptController.renderRptTable();
                                getTotalScore(); 
                            }
                   		 }  
                    });
                    
                    $(".btn").click(function(){
                                var high = $(".high").val().trim(); 
                            	var mid = $(".mid").val().trim();
                            	if (high == '' || mid == ''){
                            		alert("不能有空值!");
                            	}else{
                                    if(isNaN(high)){
                                        alert("高线请输入数字!");
                                    }else if(isNaN(mid)){
                                    	alert("中线请输入数字!");
                                    }
                                    else if(parseFloat(high)<0 || parseFloat(high)>totalScore){
                                        alert("高线超出分数范围!");
                                    }else if(parseFloat(mid)<0 || parseFloat(mid)>totalScore){
                                    	alert("中线超出分数范围!");
                                    }
                                    else{
                                        high = parseFloat(parseFloat($(".high").val().trim()).toFixed(2));
                                        $(".high").val(high);
                                        mid = parseFloat(parseFloat($(".mid").val().trim()).toFixed(2));
                                        $(".mid").val(mid);
    		                            var xkId = $(".select").val();
    		                            var section = $(".select1").val();
    		                            url = "../../../rpt/single/rpt2039/tbl/"+exam.uid+"/"+exam.examId+"/"+xkId+"/"+high+"/"+mid+"/"+section;
    		                            RptController.renderRptTable();
    		                            getTotalScore(); 
                                    }
                            }  
                    });                
                    var RptController = function() {
    
                        var renderRptTable = function() { 
                            //获取数据
                            $('.wrong').css('display','none');       
                            ZX.getDataByAjax(
                                url,
                                'json',
                                function(res){
                                    if(res.length==1 && _.isEmpty(res[0]) || res==null || res==undefined || res.length==0){
                                    //判断dom节点是否被datatable了
                                    if ($.fn.DataTable.isDataTable($('.rpt_table'))) { 
                                        //构建datatable的dom对象进行销毁
                                        $('.rpt_table').DataTable().destroy(true); 
                                        //销毁后 dom也会一并销毁,此处需要还原dom节点
                                        $('.page-content').append('<table class="table table-striped table-bordered table-hover rpt_table" align="center"></table>'); 
                                    }
                                    $('.wrong').css('display','block');                                 
                                        $.zxtloading.close();
                                    }else{
                                        var data = {};
                                        data["data"] = res;
                                        var high = $(".high").val().trim(); 
                                    	var mid = $(".mid").val().trim();
                                    	var section = $(".select1").val();
                                        //判断dom节点是否被datatable了
                                        if ($.fn.DataTable.isDataTable($('.rpt_table'))) { 
                                            //构建datatable的dom对象进行销毁
                                            $('.rpt_table').DataTable().destroy(true); 
                                            //销毁后 dom也会一并销毁,此处需要还原dom节点
                                            $('.page-content').append('<table class="table table-striped table-bordered table-hover rpt_table" align="center"></table>'); 
                                        }
                                                                          
                                        var xkId = $(".select").val(); 
                                        $('.rpt_table').zxtable({
                                            //url: url,
                                            data: data,
                                            template: '#rpt_table',
                                            exportURL: '../../../rpt/single/rpt2039/export/'+exam.uid+'/'+exam.examId+'/'+exam.examName+'/'+exam.yearIn+'/'+xkId+'/'+high+'/'+mid+'/'+section,
    
                                            needDataTable: true,
                                            renderTbody:false,
                                            orderby: [[ 0, "asc" ]], 
                                            fixedHeader: true,
    
                                            callBack: function(){
                                                $.zxtloading.close();
                                            }
                                        });                                    
                                    }                                
                                    
                                },
                                function(){
                                    //判断dom节点是否被datatable了
                                    if ($.fn.DataTable.isDataTable($('.rpt_table'))) { 
                                        //构建datatable的dom对象进行销毁
                                        $('.rpt_table').DataTable().destroy(true); 
                                        //销毁后 dom也会一并销毁,此处需要还原dom节点
                                        $('.page-content').append('<table class="table table-striped table-bordered table-hover rpt_table" align="center"></table>'); 
                                    }                                 
                                    $('.wrong').css('display','block');
                                    $.zxtloading.close();
                                }
                            );
                        };
                        return {
                            renderRptTable: function() {
                                renderRptTable();
                            }
                        }
                    }();
                    var initView = function() {
                        return {
                            init: function() {
                                $.cookie.json = true;
                                //启动加载进度条
                                if( exam.uid == undefined){
                                    alert("参数非法.");
                                    $.zxtloading.close();
                                    return false;
                                }
                                if( exam.examId == undefined){
                                    alert("请先选择考试.");
                                    $.zxtloading.close();
                                    return false;
                                }
                                Pace.start();
                            }
                        }
                    }();
                    initView.init();
    
                });
    
            </script>
            <!-- END JAVASCRIPTS -->
        </body>
        <!-- END BODY -->
    
    </html>


    package cn.doofen.udr.controller.single;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import cn.doofen.udr.UDRBaseConst;
    import cn.doofen.udr.bo.single.ISingleBo;
    import cn.doofen.udr.bo.single.impl.Rpt2039Bo;
    import cn.doofen.udr.controller.SingleController;
    import cn.doofen.udr.controller.UDRBaseParam;
    import cn.doofen.udr.utils.Unit2Utils;
    
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    
    /**
     * 
     * @Package cn.doofen.udr.controller.multi
     * @ClassName: Rpt2039Controller
     * @Description: 学生单科成绩统计分析表
     * @author fyq
     * @date 2018年05月04日
     * 
     */
    
    @Controller
    @RequestMapping("/rpt/single/rpt2039")
    public class Rpt2039Controller extends SingleController {
    
    	private static ISingleBo bo = new Rpt2039Bo();
    
    	/**
    	 * 
    	 * @Title: rpt2039_tble
    	 * @Description: 获取报表列表数据
    	 * @param uid
    	 * @param examId
    	 * @param yearIn
    	 * @return 参数
    	 * @return JSONObject
    	 * @throws
    	 */
    	@RequestMapping(value = "/tbl/{orgId}/{examId}/{xkId}/{high}/{mid}/{section}", method = RequestMethod.GET)
    	@ResponseBody
    	public JSONObject rpt2035_tble(@PathVariable(value = "orgId") Long orgId,
    			@PathVariable(value = "examId") Long examId,
    			@PathVariable(value = "high") Double high,
    			@PathVariable(value = "mid") Double mid,
    			@PathVariable(value = "section") Integer section,
    			@PathVariable(value = "xkId") Integer xkId) {
    		try {
    			UDRBaseParam param = new UDRBaseParam();
    			param.setExamId(examId);
    			param.setOrgId(orgId);
    			param.setXkId(xkId);
    			param.setHigh(high);
    			param.setMid(mid);
    			param.setSection(section);
    			JSONArray rjarr = loadTblData(param);
    
    			return getSuccessResult(rjarr);
    		} catch (Exception e) {
    			return getErrorResult("");
    		}
    	}
    
    
    
    	/**
    	 * 
    	 * @Title: exportExcel
    	 * @Description: 导出excel
    	 * @param request
    	 * @param response
    	 * @param uid
    	 * @param examName
    	 * @param examId
    	 * @param yearIn
    	 *            参数
    	 * @return void
    	 * @throws
    	 */
    	@RequestMapping(value = "/export/{orgId}/{examId}/{examName}/{yearIn}/{xkId}/{high}/{mid}/{section}", method = RequestMethod.GET)
    	@ResponseBody
    	public void exportExcel(HttpServletRequest request,
    			HttpServletResponse response,
    			@PathVariable(value = "orgId") Long orgId,
    			@PathVariable(value = "examName") String examName,
    			@PathVariable(value = "examId") Long examId,
    			@PathVariable(value = "yearIn") Integer yearIn,
    			@PathVariable(value = "high") Double high,
    			@PathVariable(value = "mid") Double mid,
    			@PathVariable(value = "section") Integer section,
    			@PathVariable(value = "xkId") Integer xkId) {
    
    		try {
    			// 注意协议头有字节数限制,所以fileName不能超长
    			Unit2Utils u2u = new Unit2Utils();
    			String xkName = u2u.excelXKChange(xkId);
    			String secName = "";
    			if(section == 0){
    				secName = "全卷";
    			}else if (section == 1){
    				secName = "A卷";
    			}else if (section == 2){
    				secName = "B卷";
    			}
    			String fileName = getExcelName(request, UDRBaseConst.RPT_2035_NAME+"_"+xkName+"("+secName+")"+"_"+examName);
    
    			response.reset();
    			response.setContentType("application/vnd.ms-excel"); // 改成输出excel文件
    			response.setHeader("Content-disposition", "attachment; filename="
    					+ fileName);
    
    			UDRBaseParam param = new UDRBaseParam();
    			param.setExamId(examId);
    			param.setOrgId(orgId);
    			param.setYearIn(yearIn);
    			param.setXkId(xkId);
    			param.setExamName(examName);
    			param.setXkName(xkName);
    			param.setHigh(high);
    			param.setMid(mid);
    			param.setSection(section);
    			exportExcel(request, response, param);
    
    		} catch (Exception e) {
    			logger.warn(e.getMessage());
    		}
    	}
    
    	/**
    	 * 
    	 * @Title: loadTblData
    	 * @Description: 获取页面table数据
    	 * @param param
    	 *            参数
    	 * @return 参数
    	 * @return JSONObject
    	 * @throws
    	 */
    	protected JSONArray loadTblData(UDRBaseParam param) throws Exception {
    		if (param.getOrgId() != null && param.getExamId() != null
    				&& param.getXkId() != null) {
    			return bo.loadTblData(param);
    		}
    
    		return null;
    	}
    
    	/**
    	 * 
    	 * @Title: loadChartData
    	 * @Description: 获取页面chart的数据
    	 * @param param
    	 * @return 参数
    	 * @return JSONObject
    	 * @throws
    	 */
    	protected JSONArray loadChartData(UDRBaseParam param) throws Exception {
    		if (param.getOrgId() != null && param.getExamId() != null
    				&& param.getXkId() != null) {
    			return bo.loadChartData(param);
    		}
    		return null;
    	}
    
    	/**
    	 * 
    	 * @Title: exportExcel
    	 * @Description: 导出Excel
    	 * @param param
    	 * @return 参数
    	 * @return void
    	 * @throws
    	 */
    	protected void exportExcel(HttpServletRequest request,
    			HttpServletResponse response, UDRBaseParam param) throws Exception {
    		if (param.getOrgId() != null && param.getExamId() != null
    				&& param.getExamName() != null && param.getYearIn() != null
    				&& param.getXkId() != null && param.getXkName()!=null) {
    			bo.exportExcel(request, response, param);
    		}
    
    	}
    }
    


    package cn.doofen.udr.bo.single.impl;
    
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.ss.util.CellRangeAddress;
    
    import cn.doofen.udr.UDRBaseConfig;
    import cn.doofen.udr.UDRBaseConst;
    import cn.doofen.udr.bo.single.ISingleBo;
    import cn.doofen.udr.controller.UDRBaseParam;
    import cn.doofen.udr.utils.Unit2Utils;
    
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import com.zxt.framework.export.RptExcelDomain;
    import com.zxt.framework.utils.PropertiesConfigUtils;
    
    /**
     * 
     * @Package cn.doofen.udr.bo.multi.impl
     * @ClassName: Rpt2035Bo
     * @Description: rpt2035的业务接口 学校分类的单学科总体分析
     * @author Zed
     * @date 2016年11月29日
     * 
     */
    public class Rpt2039Bo extends SingleBoImpl implements ISingleBo {
    
    	private static final String DSI_EXT_RPT_TBL_2039 = PropertiesConfigUtils
    			.getString("dsi.ext.rpt.tbl.2039");
    
    	
    	private static final String logo = PropertiesConfigUtils
    			.getString("logo");	
    
    	/**
    	 * 
    	 * @Title: loadTblData
    	 * @Description: 获取页面table数据
    	 * @param param
    	 *            参数
    	 * @return 参数
    	 * @return JSONArray
    	 * @throws
    	 */
    	public JSONArray loadTblData(UDRBaseParam param) throws Exception {
    		JSONObject uparam = new JSONObject();
    		uparam.put("xkId", param.getXkId());
    		uparam.put("orgId", param.getOrgId());
    		uparam.put("examId", param.getExamId());
    		uparam.put("high", param.getHigh());
    		uparam.put("mid", param.getMid());
    		uparam.put("section", param.getSection());
    		JSONArray resJarr = null;
    		if (UDRBaseConfig.SYS_DEBUG) {
    			Unit2Utils u2u = new Unit2Utils();
    			resJarr = u2u.getTestJSONArray("TestJSONArray1035.txt");
    
    		} else {
    			String url = getHttpDSIRestUri4Report(DSI_EXT_RPT_TBL_2039);
    			JSONObject rjo = httpRestGet(url, uparam.toString(), null);
    			if (rjo != null && !rjo.isEmpty()
    					&& rjo.getBooleanValue("success") == true) {
    				JSONObject job = rjo.getJSONObject("data");
    				resJarr = new JSONArray();
    				resJarr.add(job);
    			} else if (rjo != null && !rjo.isEmpty()) {
    				throw new Exception("Load chart data failed, beacause : "
    						+ rjo.getString("error"));
    			} else {
    				throw new Exception(
    						"Load chart data failed, beacause dsi response is null.");
    			}
    		}
    		return resJarr;
    	}
    
    	/**
    	 * 
    	 * @Title: loadChartData
    	 * @Description: 获取页面chart的数据
    	 * @param param
    	 * @return 参数
    	 * @return JSONOArray
    	 * @throws
    	 */
    	public JSONArray loadChartData(UDRBaseParam param) throws Exception {
    		return null;
    	}
    
    	/**
    	 * 
    	 * @Title: exportExcel
    	 * @Description: 导出Excel
    	 * @param param
    	 * @return 参数
    	 * @return void
    	 * @throws
    	 */
    	public void exportExcel(HttpServletRequest request,
    			HttpServletResponse response, UDRBaseParam param) throws Exception {
    			//输出表格的头部名称
    				Unit2Utils unit2=new Unit2Utils();
    				String xkName=unit2.excelXKChange(param.getXkId());
    				int sec = param.getSection();
    				String secName = null;
    				if(sec == 0){
    					secName = "全卷";
    				}else if (sec == 1){
    					secName = "A卷";
    				}else if (sec == 2){
    					secName = "B卷";
    				}
    				String title = UDRBaseConst.RPT_2039_NAME ;
    				String logo=PropertiesConfigUtils.getString("logo")+SHEET_TITLE;
    				OutputStream os = null;
    				try{
    				os = response.getOutputStream();
    				//获取数据
    				JSONObject jo =loadTblData(param).getJSONObject(0);
    				RptExcelDomain rptDo = new RptExcelDomain();
    				rptDo.setSheetName( logo+title);
    				rptDo.setSheetTitle( logo+title+","+xkName+"("+secName+")");
    				//所有数据的JSONArray
    				JSONArray ja = new JSONArray();
    				ja.add( jo);
    				rptDo.setSheetData( ja);
    				List<RptExcelDomain> sheets = new ArrayList<RptExcelDomain>();
    				sheets.add( rptDo);
    				setSheets( sheets);
    				//写入数据
    				writeExcel(os,true);
    
    		} catch (Exception e) {
    			throw new Exception("Export Excel failed, beacause"
    					+ e.getMessage());
    		} finally {
    			os.close();
    		}
    	}
    	
    	/**
    	 * 重载excel创建
    	 *
    	 */
    	protected void writeExcelSheetSelf( RptExcelDomain rptDomain){
    		// 创建Excel的工作sheet,对应到一个excel文档的tab
    		HSSFSheet sheet = wb.createSheet( rptDomain.getSheetName());
    		// 设置excel每列宽度
    		sheet.setColumnWidth(0, 6000);
    		sheet.setColumnWidth(1, 2500);
    		// 创建Excel的sheet的一行
    		HSSFRow row =null;
    		String[] titleDefault = {"学校", "参考人数"}; 
    		String[] headers = {"人数", "比例"};
    		/*---------------------------------------
    		 * 创建sheet的数据
    		 *--------------------------------------*/
    		JSONArray datas = rptDomain.getSheetData();
    		Object[] titles = datas.getJSONObject(0).getJSONArray( "head").toArray();
    		Integer xkMerg =  (titles.length-titleDefault.length)*headers.length;
    		JSONArray rowDatas = datas.getJSONObject(0).getJSONArray( "data");
    		//装第一行的表头数据
    		JSONArray ja=new JSONArray();
    		ja.add("学校");
    		ja.add("参考人数");
    		for(int i=titleDefault.length;i<titles.length;i++){
    			String schName=datas.getJSONObject(0).getJSONArray( "head").getJSONObject(i).getString("itemName");
    			ja.add(schName);
    		}
    	    titles=ja.toArray();
    	    //拿出副标题和主标题
    	    String str=rptDomain.getSheetTitle();
    	    String [] strs=new String[2];
    	    strs=str.split(",");
    	    String head1=strs[0];
    	    String head2=strs[1];
    
    		// 创建Excel的sheet的一行
    		row = sheet.createRow(0);
    		row.setHeight((short) rptDomain.getSheetTitleHeight());// 设定行的高度
    		// 创建一个Excel的单元格
    		HSSFCell cell_title = row.createCell(0);
    		// 合并单元格(startRow,endRow,startColumn,endColumn)
    		sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, xkMerg+titleDefault.length-1));
    		// 给Excel的单元格设置样式和赋值
    		cell_title.setCellStyle( this.getStyleTitle());
    		cell_title.setCellValue( head1);
    		
    		 
    		//副标题
    		row = sheet.createRow(1);
    		// 创建一个Excel的单元格
    		HSSFCell cell_title1 = row.createCell(0);
    		sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, xkMerg+titleDefault.length-1));
    		//给单元格设置样式和赋值
    		cell_title1.setCellType(HSSFCellStyle.ALIGN_LEFT);
    		
    		cell_title1.setCellValue(head2);
    		//构建表头
    		//第一行
    		HSSFCellStyle headerStyle = this.getStyleHeader();
    		row = sheet.createRow(2);
    		HSSFCell cell_header = null;
    		for( int i = 0; i <titleDefault.length; i++ ){
    			cell_header = row.createCell( i );
    			sheet.addMergedRegion(new CellRangeAddress( 2, 3, i,i));
    			cell_header.setCellStyle( headerStyle);
    			cell_header.setCellValue( titleDefault[i]);
    		}
    		int startHcl = titleDefault.length;
    		for( int i = 2; i < titles.length; i++){
    			cell_header = row.createCell(  startHcl );
    			sheet.addMergedRegion(new CellRangeAddress( 2, 2,  startHcl, startHcl+headers.length-1 ));
    			cell_header.setCellStyle( headerStyle);
    			cell_header.setCellValue((String)titles[i]);
    			startHcl = startHcl + headers.length;
    		}
    		//第二行
    		row = sheet.createRow(3);
    		int startCol = titleDefault.length;
    		for( int i = 2; i < titles.length; i++){
    			for( int j = 0; j < headers.length; j++){
    				cell_header = row.createCell(  startCol );
    				cell_header.setCellStyle( headerStyle);
    				cell_header.setCellValue( (String)headers[j]);
    				startCol = startCol + 1;
    			}
    		}
    		int startRow = 3;
    		//构建独立表的数据
    		for( int d =0; d <rowDatas.size(); d++ ){
    			startRow = startRow + 1;
    			row = sheet.createRow( startRow );
    			JSONArray _cellDatas = rowDatas.getJSONArray(d);
    			HSSFCell cell_Data = null;
    			for(int j = 0; j < _cellDatas.size(); j++){
    				cell_Data = row.createCell(j);
    				if(j > 1 && j % 2 == 1 && !_cellDatas.getString(j).equals("")){
    					cell_Data.setCellValue(String.format("%.2f",_cellDatas.getDouble(j)*100)+"%");
    				}else{
    					cell_Data.setCellValue(_cellDatas.getString(j));
    				}
    			}
    
    		}
    	}
    }
    
    package cn.doofen.dsi.core.bo.org.impl.or;
    
    import cn.doofen.dsi.core.bo.BOException;
    import cn.doofen.dsi.core.bo.DsiBOImpl;
    import cn.doofen.dsi.core.bo.check.BaseCheck;
    import cn.doofen.dsi.core.bo.org.ior.IOrgRpt0028;
    import cn.doofen.dsi.core.ctrl.pub.data.DataErrorCode;
    import cn.doofen.dsi.core.eao.BxoEAO;
    import cn.doofen.dsi.core.eao.BxoEAOImpl;
    import cn.doofen.dsi.core.eao.CicadaEAO;
    import cn.doofen.dsi.core.eao.CicadaEAOImpl;
    import cn.doofen.dsi.core.eao.OrgEAO;
    import cn.doofen.dsi.core.eao.OrgEAOImpl;
    
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import com.doofen.dict.core.bbo.dto.BBOOrg;
    import com.doofen.dict.core.beo.dto.BEOExam;
    
    /**
     * 
     * @Package cn.doofen.dsi.core.bo.org.impl.or
     * @ClassName: OrgRpt0028Impl
     * @Description: 获取报表单科/全科学校分类分析
     * @author fyq
     * @date 2018年05月03日
     * 
     */
    public class OrgRpt0028Impl extends DsiBOImpl implements IOrgRpt0028 {
    
        @Override
        /**
         * 
         * @Title: get
         * @Description: 获取报表  学校分类单科/全科分析
         * @param orgId
         * @param examId
         * @param xkId
         * @return {"width":11,head:[],data:[[],..]}
         * @throws Exception    参数
         * @return JSONObject
         * @throws
         */
        public JSONObject get(Long orgId, Double high, Double mid, Long examId, Integer xkId, Integer section) throws Exception {
            BaseCheck checkH = new BaseCheck();
            // 获取基础数据
            BBOOrg org = checkH.checkOrg(orgId);
            BEOExam exam = checkH.checkExamOrg(examId, orgId);
            if (xkId == 0) {
    
            } else {
                checkH.checkExamPaper(examId, xkId);
            }
    
            // 获取index
            String index = getOrgIndex(exam.getExamDate());
    
            // 获取数据
            return getData(index, org, exam, xkId, high, mid,section);
        }
    
        /**
         * 
         * @Title: getData
         * @Description: 获取具体数据
         * @param index
         * @param orgId
         * @param exam
         * @param xkId
         * @return {"width":11,"head":[],"data":[..],..}
         * @throws Exception
         *             参数
         * @return JSONObject
         * @throws
         */
        private JSONObject getData(String index, BBOOrg org, BEOExam exam, Integer xkId, Double high, Double mid, Integer section) throws Exception {
            JSONObject jo = new JSONObject();
            OrgEAO eao = new OrgEAOImpl(index);
            Long examId = exam.getExamId();
            Long orgId = org.getOrgId();
            JSONObject Data = new JSONObject();
            if (xkId.intValue() == 0) {
                Data = eao.getStatOrgScoreMix(orgId, examId);
            } else {
                Data = eao.getStatOrgScore(orgId, examId, xkId);
            }
            if ((Data == null) || (Data.isEmpty())) {
                throw new BOException(DataErrorCode.ECODE_DATA_LACK, "考试(" + examId + ")" + "机构分析数据没有找到");
            }
            JSONArray examSches = Data.getJSONArray("examSches");
    
            JSONObject schInfo = getSchIds(examSches);
            JSONArray datas = pre_data(schInfo, xkId, exam, examId, eao, orgId, high, mid, section);
    
            JSONArray head = new JSONArray();
            head.add("学校");
            head.add("参考人数");
          	JSONObject headContent = new JSONObject();
          	headContent.put("itemName", "优秀");
          	headContent.put("subNum", 2);
          	JSONArray subHead = new JSONArray();
          	subHead.add("人数");
          	subHead.add("比例");
          	headContent.put("subHead", subHead);
          	head.add(headContent);
          	headContent = new JSONObject();
          	headContent.put("itemName", "及格");
          	headContent.put("subNum", 2);
          	subHead = new JSONArray();
          	subHead.add("人数");
          	subHead.add("比例");
          	headContent.put("subHead", subHead);
          	head.add(headContent);
          	headContent = new JSONObject();
          	headContent.put("itemName", "学困");
          	headContent.put("subNum", 2);
          	subHead = new JSONArray();
          	subHead.add("人数");
          	subHead.add("比例");
          	headContent.put("subHead", subHead);
          	head.add(headContent);
          	headContent = new JSONObject();
          	headContent.put("itemName", "高线("+high+")");
          	headContent.put("subNum", 2);
          	subHead = new JSONArray();
          	subHead.add("人数");
          	subHead.add("比例");
          	headContent.put("subHead", subHead);
          	head.add(headContent);
          	headContent = new JSONObject();
          	headContent.put("itemName", "中线("+mid+")");
          	headContent.put("subNum", 2);
          	subHead = new JSONArray();
          	subHead.add("人数");
          	subHead.add("比例");
          	headContent.put("subHead", subHead);
          	head.add(headContent);
    
            jo.put("head", head);
            jo.put("data", datas);
            jo.put("highScore", high);
            jo.put("midScore", mid);
            return jo;
        }
    
        /**
         * 
         * @Title: getSchIds
         * @Description:获取参加考试的学校id
         * @param examSches
         * @return 参数
         * @return {schIds:[],shName:[]}
         * @throws
         */
        private JSONObject getSchIds(JSONArray examSches) {
            JSONObject jo = new JSONObject();
            Long[] schIds = new Long[examSches.size()];
            String[] schNames = new String[examSches.size()];
            for (int i = 0; i < examSches.size(); i++) {
                JSONObject sch = examSches.getJSONObject(i);
                schIds[i] = sch.getLong("schId");
                schNames[i] = sch.getString("schName");
            }
            jo.put("schIds", schIds);
            jo.put("schNames", schNames);
            return jo;
        }
    
        /**
         * @throws Exception
         * 
         * @Title: pre_data
         * @Description: 拿每一个学校的数据
         * @param schInfo
         * @return 参数
         * @return JSONArray
         * @throws
         */
        private JSONArray pre_data(JSONObject schInfo, Integer xkId, BEOExam exam, Long examId, OrgEAO eao,  Long orgId, Double high, Double mid, Integer section) throws Exception {
            // TODO Auto-generated method stub
            JSONObject schData = new JSONObject();
            JSONArray datas = new JSONArray();
            if (xkId == 0) {
                schData = eao.getExtStatSchScoreMix(orgId, examId);
            } else {
                schData = eao.getExtStatSchScore(orgId, examId, xkId);
            }
            Long[] schIds = schInfo.getObject("schIds", Long[].class);
            JSONObject OrgBase = new JSONObject();
            JSONArray CicadaEAO = new JSONArray();
            Long highNum = null;
            Long midNum = null;
            Long passNum = null;
            if (xkId == 0) {
                OrgBase = eao.getStatSchScoreMix(orgId, examId);
                for (int i = 0; i < schIds.length; i++) {
                    JSONArray tmp = new JSONArray();
                    JSONObject data = schData.getJSONObject(schIds[i].toString());
                    if (data == null || data.isEmpty()) {
                        continue;
                    }
                    String schName = data.getString("schName");
                    JSONObject schBase = OrgBase.getJSONObject(schIds[i].toString());
                    int schStuNum = schBase.getInteger("schStuNum");
                    double totalScore = data.getDoubleValue("paperScore");
                    double pass = totalScore*0.6;
                    int schEStuNum = schBase.getIntValue("schEStuNum");
                    double schEStuPer = schBase.getDoubleValue("schEStuPer");
                    int schDStuNum = schBase.getIntValue("schDStuNum");
                    double schDStuPer = schBase.getDoubleValue("schDStuPer");
                    highNum = eao.getExtStatStuMixHighNum(orgId, examId, schIds[i], high);
                    double highPer = (double)highNum/schStuNum;
                    midNum = eao.getExtStatStuMixMidNum(orgId, examId, schIds[i], mid);
                    double midPer = (double)midNum/schStuNum;
                    passNum = eao.getExtStatStuPassNum(orgId, examId, schIds[i], pass);
                    double passPer = (double)passNum/schStuNum;
                    tmp.add(schName);
                    tmp.add(schStuNum);
                    tmp.add(schEStuNum);
                    tmp.add(schEStuPer);
                    tmp.add(passNum);
                    tmp.add(passPer);
                    tmp.add(schDStuNum);
                    tmp.add(schDStuPer);
                    tmp.add(highNum);
                    tmp.add(highPer);
                    tmp.add(midNum);
                    tmp.add(midPer);
                    datas.add(tmp);
                }
    
            } else {
                OrgBase = eao.getStatSchScore(orgId, examId, xkId);
               
                for (int i = 0; i < schIds.length; i++) {
                    JSONArray tmp = new JSONArray();
                    JSONObject data = schData.getJSONObject(schIds[i].toString());
                    if (data == null || data.isEmpty()) {
                        continue;
                    }
                    BxoEAO beao = new BxoEAOImpl();
                    String schName = data.getString("schName");
                    
                    JSONObject schBase = OrgBase.getJSONObject(schIds[i].toString());
                    int schStuNum = schBase.getInteger("schStuNum");
                    
                    if(section == 0){ 
                        int schEStuNum = schBase.getIntValue("schEStuNum");
                        double schEStuPer = schBase.getDoubleValue("schEStuPer");
                        int schPassNum = schBase.getIntValue("schPassNum");
                        double schPassPer = schBase.getDoubleValue("schPassPer");
                        int schDStuNum = schBase.getIntValue("schDStuNum");
                        double schDStuPer = schBase.getDoubleValue("schDStuPer");
                        highNum = eao.getExtStatStuHighNum(orgId, examId, schIds[i], high, xkId);
                        double highPer = (double)highNum/schStuNum;
                        midNum = eao.getExtStatStuMidNum(orgId, examId, schIds[i], mid, xkId);
                        double midPer = (double)midNum/schStuNum;
                        tmp.add(schName);
                        tmp.add(schStuNum);
                        tmp.add(schEStuNum);
                        tmp.add(schEStuPer);
                        tmp.add(schPassNum);
                        tmp.add(schPassPer);
                        tmp.add(schDStuNum);
                        tmp.add(schDStuPer);
                        tmp.add(highNum);
                        tmp.add(highPer);
                        tmp.add(midNum);
                        tmp.add(midPer);
                        datas.add(tmp);
                    } else if(section == 1){
                    	long paperId = data.getLongValue("paperId");
                        JSONArray secArr = beao.getSectionScore(paperId);
                        JSONObject secObj = secArr.getJSONObject(0);
                        JSONArray ABscores = secObj.getJSONArray("sectionPaperScores");
                        JSONObject Ascores = ABscores.getJSONObject(0);
                        double Ascore = Ascores.getDoubleValue("disScore");
                        double Escore = Ascore*0.8;
                        double Pscore = Ascore*0.6;
                        double Dscore = Ascore*0.4;
                        int Enum = 0;
                        int Pnum = 0;
                        int Dnum = 0;
                    	String index = getCicadaIndex(exam.getExamDate(), schIds[i]);
                    	CicadaEAO ceao = new CicadaEAOImpl(index);
                    	CicadaEAO = ceao.getStatStuScoreNum(examId, xkId);
                         for(int j = 0; j < CicadaEAO.size(); j++){
                        	 JSONObject stuscores = CicadaEAO.getJSONObject(j);
                        	 JSONArray abscores = stuscores.getJSONArray("stuSections");
                        	 if(abscores != null ){
    	                    	 JSONObject ascores = abscores.getJSONObject(0);
    	                    	 double ascore = ascores.getDoubleValue("disStuScore");
    	                    	 if (ascore >= Escore ){
    	                    		 ++Enum;
    	                    	 }
    	                    	 if (ascore >= Pscore){
    	                    		 ++Pnum;
    	                    	 }
    	                    	 if (ascore < Dscore){
    	                    		 ++Dnum;
    	                    	 }
                        	 }
                        	 
                         }
                         double schEStuPer = (double)Enum/schStuNum;
                         double schPassPer = (double)Pnum/schStuNum;;
                         double schDStuPer = (double)Dnum/schStuNum;;
                         tmp.add(schName);
                         tmp.add(schStuNum);
                         tmp.add(Enum);
                         tmp.add(schEStuPer);
                         tmp.add(Pnum);
                         tmp.add(schPassPer);
                         tmp.add(Dnum);
                         tmp.add(schDStuPer);
                         tmp.add("");
                         tmp.add("");
                         tmp.add("");
                         tmp.add("");
                         datas.add(tmp);
                    	
                    }else if(section == 2){
                    	long paperId = data.getLongValue("paperId");
                        JSONArray secArr = beao.getSectionScore(paperId);
                        JSONObject secObj = secArr.getJSONObject(0);
                        JSONArray ABscores = secObj.getJSONArray("sectionPaperScores");
                        JSONObject Bscores = ABscores.getJSONObject(1);
                        double Bscore = Bscores.getDoubleValue("disScore");
                        double Escore = Bscore*0.8;
                        double Pscore = Bscore*0.6;
                        double Dscore = Bscore*0.4;
                        int Enum = 0;
                        int Pnum = 0;
                        int Dnum = 0;
                    	String index = getCicadaIndex(exam.getExamDate(), schIds[i]);
                    	CicadaEAO ceao = new CicadaEAOImpl(index);
                    	CicadaEAO = ceao.getStatStuScoreNum(examId, xkId);
                         for(int j = 0; j < CicadaEAO.size(); j++){
                        	 JSONObject stuscores = CicadaEAO.getJSONObject(j);
                        	 JSONArray abscores = stuscores.getJSONArray("stuSections");
                        	 if(abscores != null ){
    	                    	 JSONObject bscores = abscores.getJSONObject(1);
    	                    	 double bscore = bscores.getDoubleValue("disStuScore");
    	                    	 if (bscore >= Escore ){
    	                    		 ++Enum;
    	                    	 }
    	                    	 if (bscore >= Pscore){
    	                    		 ++Pnum;
    	                    	 }
    	                    	 if (bscore < Dscore){
    	                    		 ++Dnum;
    	                    	 }
                        	 }
                        	 
                         }
                         double schEStuPer = (double)Enum/schStuNum;
                         double schPassPer = (double)Pnum/schStuNum;;
                         double schDStuPer = (double)Dnum/schStuNum;;
                         tmp.add(schName);
                         tmp.add(schStuNum);
                         tmp.add(Enum);
                         tmp.add(schEStuPer);
                         tmp.add(Pnum);
                         tmp.add(schPassPer);
                         tmp.add(Dnum);
                         tmp.add(schDStuPer);
                         tmp.add("");
                         tmp.add("");
                         tmp.add("");
                         tmp.add("");
                         datas.add(tmp);
                    }
        
                }
            }
         
            return datas;
        }
    
    }
    


    展开全文
  • 如何用Excel制作学生成绩统计表发布者:张敏 所属单位:达川区亭子镇中心小学 发布时间:2016-07-05浏览数:0每一学期结束时,教师都要统计学生的成绩,在电脑逐步普及的今天,我们就把这项繁杂的工作交给Excel去...

    如何用Excel制作学生成绩统计表

    发布者:张敏     所属单位:达川区亭子镇中心小学     发布时间:2016-07-05    浏览数:0

    每一学期结束时,教师都要统计学生的成绩,在电脑逐步普及的今天,我们就把这项繁杂的工作交给Excel去自动完成吧。

    如何制作一个学生成绩自动统计表,可以自动统计最高分、最低分、总分、平均分、名次、三率等数据信息,还可以根据自定条件以不同的颜色显示分数。而且这个自动统计表做好以后还可以保存成模板,以便以后使用。

    做好这个表格,先要弄清单元格、工作表、工作薄、引用(相对/绝对)、自动填充、排序、条件格式等。还涉及函数:AVERAGE、COUNTIF 、MAX、MIN、RANK、SUM

    先完成任务一:统计最高分、最低分、总分、平均分、名次、三率等数据信息。

    1、启动Excel,同时选中A1至L1单元格,按“格式”工具条上的“合并及居中”按钮,将其合并成一个单元格,然后输入统计表的标题“高一(1)班期末成绩统计表”(参见图1)。 [img,553,353]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image1.png

    2、根据统计表的格式,将有关列标题及相关内容输入到相应的单元格中(参见图1)。

    提示:其中学号的输入可通过“填充柄”快速完成。

    3、选中K3单元格,输入公式:=SUM(C3:J3),用于计算第一位学生的总分。

    4、选中L3单元格,输入公式:=RANK(K3,$K$3:$K$12),计算出第一位学生总分成绩的名次(此处,假定共有10位学生)。

    5、同时选中K3和L3单元格,将鼠标移至L3单元格右下角的成“细十字”状时(通常称这种状态为“填充柄”状态),按住左键向下拖拉至L12单元格,完成其他学生的总分及名次的统计处理工作。

    6、分别选中C16、C17单元格,输入公式:=MAX(C3:C12)和=MIN(C3:C12),用于统计“语文”学科的最高分和最低分。

    7、选中C18单元格,输入公式:=AVERAGE(C3:C12),用于统计“语文”学科的平均分。

    注意:如果成绩表中没有输入成绩时,这一公式将显示出一个错误的值“#DIV/0!”,这个错误代码将在数据输入后消失。

    8、选中C19单元格,输入公式:=SUM(C3:C12),用于统计“语文”学科的总分。

    9、选中C20单元格,输入公式:=COUNTIF(C3:C12,">=80")/COUNTIF(C3:C12,">0"),用于统计“语文”学科的优秀率。同样在C21内输入相应公式统计良好率。

    10、同时选中C16至C21单元格,用“填充柄”将上述公式复制到D16至J21单元格中,完成其它学科及总分的最高分、最低分、平均分、总分、优秀率和良好率的统计工作。

    至此,一个基本的成绩统计表制作完成,下面我们来进一步处理一下。

    接着完成任务二:根据自定条件以不同的颜色显示分数。

    (在此例中,让每科分数高于等于平均分的分数显示蓝色,低于的则显示红色)

    11、选中C3单元格,执行“格式、条件格式”命令,打开“条件格式”对话框(如图2),在中间方框选中“大于或等于”,在右侧的方框中输入公式:=C18 (平均分所在单元格),然后按“格式”按钮,打开“单元格格式”对话框,将字体颜色设置为“蓝色”。再按“添加”按钮,仿照上面的操作,设置小于平均分的分数字体颜色为“红色”(参见图2)。

    注意:经过这样的设置后,当学生的“语文”成绩大于或等于平均分时,显示蓝色,反之显示红色。[img,539,240]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image2.png

    12、再次选中C3单元格,按“格式”工具条上的“格式刷”按钮,然后在C3至J12单元格区域上拖拉一遍,将上述条件格式复制到相应的区域中,完成其他学科及总分的条件格式设置工作。

    把学生的成绩填入到表格中试试看,效果不错吧。

    最后任务是:将制作完成的统计表保存为模板。

    因为我们经常要统计学生的成绩,我们将其保存为模板,方便随时调用。

    13、将工作表中的学生成绩等内容删除,执行“文件、保存(另存为)”命令,打开“另存为”对话框(如图4),按“保存类型”右侧的下拉按钮,在随后出现的下拉列表中,选“模板(*.xlt)”选项,然后给定一个名称(如“成绩统计”),按下保存按钮。

    [img,559,340]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image3.jpg

    14、以后需要统计成绩时,启动Excel,执行“文件、新建”命令,展开“新建工作簿”任务窗格(如图5),点击其中的“本机上的模板”选项,打开“模板”对话框,双击“成绩统计”模板,即可新建一份新的成绩统计表。

    [img,209,235]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image4.jpg

    15、将学生的成绩填入相应的单元格中,取名保存即可快速完成成绩统计处理工作。

    展开全文
  • 学生成绩统计与分析,利用Excel制作,使用了数据透视
  • 中小学生期末考试成绩系统Excel模板中小学生期末考试成绩系统Excel模板中小学生期末考试成绩系统Excel模板中小学生期末考试成绩系统Excel模板中小学生期末考试成绩系统Excel模板中小学生期末考试成绩系统Excel模板中...
  • 中学生成绩统计excle

    2008-04-17 20:32:35
    学生成绩统计的好帮手,简单好用
  • 自动统计人数、计算总分(平时成绩30%+期末成绩70%),按分数段统计各段人数及百分比,计算总平均分。
  • 利用Excel制作学生成绩表利用Excel制作学生成绩表制作一个学生成绩自动统计表,可以自动统计最高分、最低分、总分、平均分、名次、三率等数据信息,还可以根据自定条件以不同的颜色显示分数。自动统计表做好以后还...

    利用Excel制作学生成绩表

    利用Excel制作学生成绩表

    制作一个学生成绩自动统计表,可以自动统计最高分、最低分、总分、平均分、名次、三率等数据信息,还可以根据自定条件以不同的颜色显示分数。自动统计表做好以后还可以保存成模板,以便以后使用。涉及术语:单元格、工作表、工作薄、引用(相对/绝对)、自动填充、排序、条件格式等。涉及函数:AVERAGE、COUNTIF 、MAX、MIN、RANK、SUM任务一:统计最高分、最低分、总分、平均分、名次、三率等数据信息。1、启动Excel,同时选中A1至L1单元格,按“格式”工具条上的“合并及居中”按钮,将其合并成一个单元格,然后输入统计表的标题“高一(1)班期末成绩统计表”(参见图1)。 [img,553,353]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image1.png2、根据统计表的格式,将有关列标题及相关内容输入到相应的单元格中(参见图1)。提示:其中学号的输入可通过“填充柄”快速完成。3、选中K3单元格,输入公式:=SUM(C3:J3),用于计算第一位学生的总分。4、选中L3单元格,输入公式:=RANK(K3,$K$3:$K$12),计算出第一位学生总分成绩的名次(此处,假定共有10位学生)。5、同时选中K3和L3单元格,将鼠标移至L3单元格右下角的成“细十字”状时(通常称这种状态为“填充柄”状态),按住左键向下拖拉至L12单元格,完成其他学生的总分及名次的统计处理工作。6、分别选中C16、C17单元格,输入公式:=MAX(C3:C12)和=MIN(C3:C12),用于统计“语文”学科的最高分和最低分。7、选中C18单元格,输入公式:=AVERAGE(C3:C12),用于统计“语文”学科的平均分。注意:如果成绩表中没有输入成绩时,这一公式将显示出一个错误的值“#DIV/0!”,这个错误代码将在数据输入后消失。8、选中C19单元格,输入公式:=SUM(C3:C12),用于统计“语文”学科的总分。9、选中C20单元格,输入公式:=COUNTIF(C3:C12,">=80")/COUNTIF(C3:C12,">0"),用于统计“语文”学科的优秀率。同样在C21内输入相应公式统计良好率。10、同时选中C16至C21单元格,用“填充柄”将上述公式复制到D16至J21单元格中,完成其它学科及总分的最高分、最低分、平均分、总分、优秀率和良好率的统计工作。至此,一个基本的成绩统计表制作完成,下面我们来进一步处理一下。任务二:根据自定条件以不同的颜色显示分数。(在此例中,让每科分数高于等于平均分的分数显示蓝色,低于的则显示红色)11、选中C3单元格,执行“格式、条件格式”命令,打开“条件格式”对话框(如图2),在中间方框选中“大于或等于”,在右侧的方框中输入公式:=C18 (平均分所在单元格),然后按“格式”按钮,打开“单元格格式”对话框,将字体颜色设置为“蓝色”。再按“添加”按钮,仿照上面的操作,设置小于平均分的分数字体颜色为“红色”(参见图2)。注意:经过这样的设置后,当学生的“语文”成绩大于或等于平均分时,显示蓝色,反之显示红色。[img,539,240]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image2.png12、再次选中C3单元格,按“格式”工具条上的“格式刷”按钮,然后在C3至J12单元格区域上拖拉一遍,将上述条件格式复制到相应的区域中,完成其他学科及总分的条件格式设置工作。把学生的成绩填入到表格中试试看,效果不错吧。任务二:将制作完成的统计表保存为模板。  如果你经常要统计学生的成绩,我们将其保存为模板,方便随时调用。  13、将工作表中的学生成绩等内容删除,执行“文件、保存(另存为)”命令,打开“另存为”对话框(如图4),按“保存类型”右侧的下拉按钮,在随后出现的下拉列表中,选“模板(*.xlt)”选项,然后给定一个名称(如“成绩统计”),按下保存按钮。[img,559,340]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image3.jpg  14、以后需要统计成绩时,启动Excel,执行“文件、新建”命令,展开“新建工作簿”任务窗格(如图5),点击其中的“本机上的模板”选项,打开“模板”对话框,双击“成绩统计”模板,即可新建一份新的成绩统计表。[img,209,235]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image4.jpg

    展开全文
  • 每年11月份各学校都要上报体质健康数据,很麻烦,根据网上下的资源结合实际进行了修改为小学可以用的自动测算成绩模板,只要把测试成绩填入测试中,就会自动生成分数和等级,可以根据上报的标准进行相应修改后一...
  • Java学生成绩表系统

    2011-11-27 21:42:54
    Java实现的学生成绩系统,Swing高级组件,登录界面后台是数据库支持,可以查询浏览修改删除,按学号和分数查询,退出。Java学习者很好的参考模板,可以实现同类的系统设计
  • 在进行数据分析之前,会有许多的成绩,格式也颇为混乱,为了研究方便,可以将学生成绩统一到一张上。我们用的学生各个时期的数据表格式如下图: 且有许多的这样的表格,以便分析:   而原始的学生成绩表...
  • 7-1 成绩统计分析(*)

    2021-03-08 16:10:23
    7-1 成绩统计分析(*) (10 分) 输入一个班的成绩,输出成绩统计分析。 输入格式 班级人数n (n>0) n 名学生的成绩 s​1,s​2​​ ,⋯,s​n​​ (0≤s​i​​ ≤100,1≤i≤n) 输出格式 输出 n 名学生的序号、...
  • 学生信息统计(链表)

    千次阅读 2016-09-17 12:05:39
    定义一个包含学生信息(学号,姓名,成绩)的的 顺序和链表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生...
  • 《[体质测试数据excel自动统计表]体质...1、体质测试数据excel自动统计表体质测试数据Excel自动统计模板的研制 摘 要:由于设备维修等原因,学生健康体质测试的各项数据往往需要人工记录与统计,为了提高工作效率和...
  • 习题3-4 统计学生成绩 (15分)

    千次阅读 2019-02-05 16:56:33
    习题3-4 统计学生成绩 本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则: 大于等于90分为A; 小于90且大于等于80为B; 小于80且大于等于70为C; 小于70且大于...
  • 学生信息统计(顺序

    万次阅读 多人点赞 2016-09-17 15:05:26
    定义一个包含学生信息(学号,姓名,成绩)的的 顺序和链表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生...
  • 习题9-6 按等级统计学生成绩 本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。 函数接口定义: int set_grade( struct student *p, int n ); 其中 p 是指向学生信息的结构体数组的指针,该...
  • 批量制作学生成绩

    2014-01-14 10:24:32
    通过宏批量制作学生成绩报告单的模板,提高效率
  • EXCEL模板,平时成绩占30%,期末成绩占70%。使用时只需要输入学生姓名和成绩,即可统计学生总人数、缺考人数、退学人数、各分数段人数,计算平均分及各分数段人数占总人数的比例。
  • ASP完整源码:学生成绩管理系统,是非常全面的学生成绩管理系统,非常实用!
  • 摘 要 在现今信息时代,生活速度的...开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面,实现了学生成绩数据库的创建及学生成绩的输入、浏览、维护和统计,使得系统具有功能强大,界面友好的特点。
  • Spring学生成绩管理系统(Service+Dao)简介任务环境依赖相关工作项目结构具体实现使用MySQL生成配置文件实体类数据访问层业务逻辑层测试实现结果 简介 本文基于Spring5框架实现一个简单的学生成绩管理系统。它...
  • 建立一个由n个学生成绩的顺序,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。 源代码如下: #include using namespace std; const int
  • 本次毕业设计根据学生在校的基本情况,分析现状各个学校的基本需求情况,进行设计的一款学生成绩管理系统,通过本系统可以方便的管理学校的基本情况,包括院系管理,考试成绩管理等等,基本情况的管理。本次设计包括...
  • 学生成绩管理系统

    2021-03-07 14:24:00
    现有学生成绩信息,内容如下 姓名 学号 语文 数学 英语 张明明 01 67 78 82 李成友 02 78 91 88 张辉灿 03 68 82 56 王露 04 56 45 77 陈东明 05 67 38 47 … … … … … 请编写一实现学生信息管理系统,用C

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,049
精华内容 1,219
热门标签
关键字:

学生成绩统计表格模板