平行志愿模拟投档规则下高校预分档系统的设计与实现

2018-08-02 10:40苗立江
新疆职业大学学报 2018年1期
关键词:投档调剂平行

苗立江

(新疆教育考试院 办公室,新疆 乌鲁木齐 830001)

一、前言

高考录取关系到每个考生人生发展方向,牵动着千家万户。近年来,我国教育部门在高考录取方式、录取规则方面进行了深入的探索,在确保高校生源质量的同时,向着逐步提升考生满意度的目标迈进[1]。2008年,教育部在安徽省、湖南省、江苏省、辽宁省、上海市与浙江省6个省区实行完全平行志愿投档录取模式的试点改革,2011年起,新疆开始分批次逐步实行完全平行志愿投档,2017年起,合并本科二、三批次为新的本科二批次,使新疆高考改革的步伐进入快车道[2]。

二、问题的提出

平行志愿投档时,省级招生主管部门根据高校提出的投档比例,按照投档原则进行投档,投档后由高校审阅考生电子档案,按照录取原则决定考生是否被录取。平行志愿投档以考生分数作为最高优先级的投档方式,决定了考生一旦被高校退档,则失去了该批次此次平行志愿投档的机会[3][4]。因此,在正式投档前,省级招生主管部门会根据高校提出的投档比例进行模拟投档,供高校参考,以保证考生利益最大化[5];但对于招生人数较多的高校,如果根据模拟投档数据手工分档来确定考生录取专业(如以考生分数排名,考生志愿无法满足的,则需要进行专业调剂或者退档),此项工作量繁重,且模拟投档数据的处理有严格时间限制。因此,急需通过软件来解决模拟投档数据自动分档的问题。

三、系统的结构设计与实现

根据平行志愿投档的录取原则及要求,我们设计了高校模拟投档数据自动分档的软件执行流程如图1所示:

图 1 模拟投档流程图

(1)根据模拟投档考生数据按科类(文、理)分组,将考生投档成绩+位次降序排列,从高到低逐条读取考生信息。

(2)读取当前考生的投档批次的志愿集,由于模拟投档考生志愿信息以(序号,位次,投档成绩,志愿1,志愿2,志愿3……)的形式组织,因此进行模拟分档前,应将数据做行列转换处理,处理后的数据每个志愿为一行记录,模拟分档时逐行读取每条志愿记录。

(3)如果读取到的考生志愿记录不为空,则获取该志愿对应专业的剩余招生计划数,并判断招生计划数是否大于0,若大于0则将考生分配至该专业,并更新该专业的剩余招生计划数,若小于或等于0则读取考生下一志愿。

(4)如果读取到的考生志愿记录为空,说明考生所有填报的志愿均未分档成功,此时需要判断考生是否选择专业调剂,若不允许专业调剂则该考生标注为预退档状态;若允许调剂则暂时将考生状态标注为调剂,转入调剂子流程。

(5)标记为调剂状态的所有考生其所报志愿均不满足分档要求,因此可在剩余未录满专业中进行调剂,调剂前可将未录满专业按缺档人数多少设置权重值,高校可通过权重值的调整决定优秀调剂缺档人数少的专业或缺档人数多的专业,个别考生可手工处理。

四、系统功能设计与实现

(一)系统使用的关键处理方法

考虑到考生可填报的高校专业个数可能存在变化,为了增强系统的扩展性,本系统采用动态调用系统表的方式完成专业志愿行转列的处理方式,具体实现如下:代码在T-SQL下调试能够正常运行

DECLARE @sql VARCHAR(8000)

SELECT @sql=isnull(@sql+'union a ll','')+'select ksxh,kszy='+quotename(Name,'''')+' , zyh='+quotename(Name)+' from ksxx'

FROM syscolumns

WHERE Name!='ksxh' AND ID=object_id('ksxx')

--表名ksxx,不包含列名为考生序号的其他列

ORDER BY colid

exec(@sql+' order by ksxh')

由于预投档考生数量较多的情况下动态转换每个考生的志愿可能会影响处理的性能,因此在具体处理时可先将所有考生志愿转换完毕,然后再进行分档处理。

(二)分档算法流程

根据图1所示的处理过程,考生分档处理伪代码如下:

输入:考生数据库D;按考生科类分组处理

输出:D中考生的预分档结果,调剂考生需等所有考生分档完毕后处理

(1)L=Sort_Student_By_Grade(D)//通过数据获取函数读取待分档考生数据集L

(2)For each transaction t L{//循环扫描考生数据集L,获取每一位考生t的数据(含所报志愿列表、考生特征数据等)

(3)Ct=Subset(t);//获取当前考生t所有的志愿集

(4)For each wish C Ct{//循环扫描考生志愿集Ct,获取每一志愿C

(5)Surplus_num=Get_Wish(c);//根据志愿变量c,获取当前志愿对应的专业剩余计划数

(6)If(surplus_num>0) {//判断当前专业计划数是否大于0,如果大于0则志愿可投需修改考生志愿和专业招生人数,否则转入下一志愿

(7)Update_student(t,C);//更新考生录取专业及考生状态

(8)}

(9)Else if(IS_Adjust){//判断考生志愿是否允许调剂,允许调剂则更新考生状态,否则考生将被退档。

(10)Update_student(t,adjust); //更新考生为等待调剂状态

(11)}

(12)Else{

(13)Update_student(t,refuse);//更新考生为退档状体

(14)}

(15)}

(16)}

以上程序代码需针对每种科类分别执行,也可通过参数传递的方式选择需要处理的考生科类,预分档结束后考生预录取的专业已被更新,分数低且不服从专业调剂的考生将按照退档处理,被标记为调剂状态的考生根据调剂人数选择手动调整或者计算机处理;程序自动调剂的情况下需设置专业调剂的权重,如采用缺档比(缺档人数/专业招生人数)作为设置权重依据,比值高的优先考虑调剂生源。

五、结语

本系统在高校招生规则的框架范围内,采用计算机自动处理来代替手工分档,在模拟投档人数较多的情况下具有准确性高、处理速度快的优点;由于高考录取规则处在不断调整、完善的阶段,因此在根据高校录取的原则和特点开发一套简单、易扩展、适合其招生政策的系统有一定的现实意义,本文在考生调剂权重设计方面仍然有改进空间,后期将探索更加灵活的方式设置专业调剂权重。

猜你喜欢
投档调剂平行
向量的平行与垂直
平行
逃离平行世界
要不要服从调剂?
山西省普通高考平行志愿投档模式解读
黑龙江
新国标颁布 肥料检出植调剂按假农药处理
平行志愿填报,关键把握梯度
再顶平行进口
中药饮片调剂中审方作用及改进策略分析