1. 引言
2014年国务院印发《关于深化考试招生制度改革的实施意见》,部署深入贯彻落实党的十八届三中全会关于推进考试招生制度改革的要求,进一步促进教育公平,提高选拔水平。《实施意见》的出台,标志着新一轮考试招生制度改革全面启动 [1]。国家关于考试招生制度的改革是中央部署全面深化改革的重大举措之一,河北省作为第三批高考改革省份,相关招生考试制度于2021年全面落地实施,其中志愿填报作为招生录取中的重要环节,也进行了相应改革。根据河北省新高考改革实施方案要求,实现平行志愿的批次志愿由“专业(类) + 学校”组成,普通类可填报96条志愿,艺术类可填报70条志愿,同时招生院校各专业都增加了选科要求。在这样的模式下,志愿填报需要查询与了解的院校信息量会大大增加 [2],仅依靠纸介质的招生计划书来完成相关筛选会非常困难,必然会增加考生与家长的焦虑情绪。近几年,河北省普通高考报名人数逐年增多,2021年超过60万人,减去前期高职单招录取部分,仍然剩余40多万名考生要进行志愿填报。考生基数大、填报条数多,对于网上志愿填报系统来讲,可能带来的问题就是由于数据量大、高并发而造成的系统响应时间增长,甚至系统崩溃。因此,要减少广大考生及家长志愿填报的焦虑情绪,同时降低志愿填报系统的压力,志愿填报辅助系统的设计与开发十分必要。
2. 辅助系统现状分析
目前全国为高考填报志愿提供相关辅助功能的服务平台较多,中国教育在线、高考派、第一高考网等是国内高考志愿填报平台的典型案例 [3],除此之外,浙江、海南等第一、二批部分高考改革省份也推出了本省的志愿填报辅助系统,但这些系统主要是以提供各招生院校信息以及历年录取分数、位次查询为主要功能,能够与正式的志愿填报系统在数据上建立直接联系并进行资格验证的较少。天津市2021年志愿填报辅助系统虽然可以生成意向志愿,但仅是对正式志愿填报提供参考功能,没有与志愿填报系统进行直接的数据关联,在考生填报正式志愿时仍需按照辅助系统生成的“意向志愿草表”进行录入操作。据笔者查询,第一、二批高考改革的6个省份中仅山东省志愿填报辅助系统所生成的“预选志愿”可以导入正式志愿填报系统。
3. 系统需求分析
河北省普通高考志愿填报辅助系统首先要提供往年招生院校各专业的录取最低分及当年位次查询功能,为考生及家长提供志愿选择参考;其次要具备当年招生计划的查询,使考生能够根据首选、再选科目进行计划筛选;最后可以进行志愿预选。除此之外还要具备完善的后台数据组织以及相应的管理功能。其中志愿预选为系统主要功能,其最终生成的预选志愿可以一键导入到正式志愿填报系统中。由于志愿填报辅助系统中的预选志愿与正式志愿填报系统实现了数据共享,因此预选志愿信息必须正确,考生在辅助系统中所选择的志愿信息与考生自身资格条件必须相符。招生计划中对考生所获取的相关资格类的要求如国家专项计划、地方专项计划、只招少数民族考生等,以及部分院校对性别、艺术专业测试项目的要求都需要加以验证。另外,在第三批高考改革省份的“3 + 1 + 2”招生录取模式下,各院校招生专业均提出了首选、再选科目要求,在考生进行志愿预选时也都必须进行相应控制,否则可能会出现考生所填报志愿不符合院校专业的招生要求,而造成退档,影响录取。
基于资格验证的志愿填报辅助系统在志愿填报前开放,使考生能够提前进行志愿预选,并对相关填报资格进行同步验证,既提高了考生志愿填报的正确性,同时又减少了考生在进行正式志愿填报时的思考与操作时间,从而减少服务器Session会话时间,降低资源占用,为正式志愿填报系统缓解压力。
4. 系统架构设计
4.1. 网络环境设计
网络层面使用F5负载均衡设备,对联通、电信、移动以及教育网的链路进行负载分配,加强网络数据处理能力,提高网络的灵活性和可用性。另外,使用Citrix NetScaler进行网页加速与业务负载均衡,降低应用服务的响应时间,提高服务器运算效率和网络速率。
4.2. 业务流程设计
志愿填报辅助系统分为管理端与考生端两部分。管理端主要为省级系统管理员进行相关数据管理与配置并提供相关数据查询与统计;考生端主要包括往年院校录取考生位次查询、当年招生计划查询与志愿预选,其中志愿预选为系统的主要功能,在志愿预选时进行相关资格验证。系统整体功能模块如图1所示。
4.3. 数据库设计
数据是支撑业务系统运作的基础,数据库设计是系统开发的关键。因为志愿填报辅助系统数据的重要性与实时性,其数据库设计应具备横向扩展能力。通过横向扩展,可以实现数据的冗余存储,从而确保单个数据库发生故障的情况下,业务不间断,数据不丢失。基于资格验证的志愿填报辅助系统在能够承受大数据、高并发的情况下,要通过建立起考生与院校招生计划之间的逻辑关系来实现资格的验证。系统E-R图如图2所示。

Figure 1. Overall system function module
图1. 系统整体功能模块图
5. 系统实现
系统基于B/S模式,按照企业级、分布式、高并发设计,采用了目前主流的SpringBoot技术架构,使用全局异常捕获及日志记录等技术进行实现。Spring Boot技术是一种高效率的开发框架,在使用的过程中,并不需要进行复杂的配置,运行的过程中有着较高的运行速率,并进行针对性的处理 [4]。Spring Boot技术的应用极大的提高了项目开发与部署效率。服务端使用Tomcat作为中间件,支持跨平台部署。客户端兼容Chrome、Edge、IE11等目前主流浏览器。
数据库使用了Oracle ODA一体机,采用全冗余的硬件架构,确保系统7 × 24稳定运行,同时应用了ADG (Active Data Guard)技术实现数据容灾。ADG是为Oracle11g以上版本数据库提供的数据同步功能,其基本原理是将主库数据传输到备库,然后在备库上应用这些数据,使备库与主库数据保持一致。ADG能够保证系统数据有多个备份,对数据进行了保护,实现了数据的高可用 [5]。
5.1. 业务流程实现
系统整体操作流程如图3所示:

Figure 3. Overall operation process of the system
图3. 系统整体操作流程图
考生可选择相应系统菜单进行相关查询。根据河北省高考改革方案,顺序志愿仍采用“1所院校 + 6个专业 + 1个专业是否调剂选项”模式,与改革前填报方式一致,在此不再赘述。统考类平行志愿预选操作主要分为三个步骤:查询、收藏、加入意向。具体操作流程如图4所示。
5.2. 资格验证实现
基于资格验证的志愿填报辅助系统通过建立院校招生计划与考生相关资格与之间的匹配关系对考生填报资格进行校验与控制。
5.2.1. 院校招生计划
各院校招生计划除批次、科类、计划性质、院校名称、专业名称等信息外,还需要将对有性别、艺术专业测试项目要求的数据进行格式化处理。院校招生计划表示为集合
,全部作为缓存数据在系统首次启动时进行加载。
5.2.2. 考生资格
考生所具备的资格,主要分为三种,一是在高考报名及选科后每个考生都具有的基本情况资格,如报名科类、性别、艺术专项测试项目、首选科目、再选科目等,表示为集合
;二是需要考生满足特定条件并在高考报名时进行申请,经过审核通过后所获取的一些申请类资格,如地方专项计划资格、国家专项计划资格、聚居或散居少数民族等,表示为集合
;三是合格名单类资格,即部分高校或相关部门经过测试所形成的合格名单,如高校专项计划、高水平艺术团、艺术校考合格等,表示为集合
。
5.2.3. 建立配置关系
以院校招生计划中批次、科类、计划性质等为基本单位,对兼报科类(允许填报的考生报名科类的集合)以及计划类别细项(按计划类型的详细分类,如高校专项计划、地方专项计划、定向、只招少数民族考生以及各种艺术统考、联考、校考等)进行配置,每一条配置结果为一个计划单位。然后再将每个计划单位按最小单位进行细分类,并对其是否需要资格验证以及考生所具备的相应资格(资格类型)进行设置,最终形成志愿填报条件控制表。表1所示为部分计划类别细项的志愿填报条件控制表。

Table 1. Control table for voluntary filling conditions of some plan category items
表1. 部分计划类别细项的志愿填报条件控制表
5.2.4. 验证过程
1) 招生计划筛选。通过考生基本情况集合Q筛选招生计划Z,对招生计划进行控制显示,仅加载符合当前考生基本情况的招生计划信息。
2) 无效数据过滤。对填报志愿信息进行合规性校验,检查是否存在志愿顺序填报有间断或重复填报情况。
3) 考生资格验证。将考生资格集合S、M封装为申请资格和名单资格两个List集合,具体实现代码如下:
a) 封装成zgList和bmdList
List
zgList = new ArrayList<>();
List
bmdList = new ArrayList<>();
for (String zgBmdlx : zgBmdlxs) {
Zymdlx zymdlx = Cache.ZYMDLXMAP.get(zgBmdlx);
if (zymdlx != null) {
if (zymdlx.getMdlx().equals(ZymdlxEnum.ZG.getCode())) {
zgList.add(zgBmdlx);
} else if (zymdlx.getMdlx().equals(ZymdlxEnum.MD.getCode())) {
bmdList.add(zgBmdlx);
}
}
}
b) 对考生资格进行验证
for (String zg : zgList) {
Zymdlx zglx = Cache.ZYMDLXMAP.get(zg);
boolean isHasZg = zyKsxx.isHasZymdlx(zglx);
if (!isHasZg) {
String msg = MessageFormat.format(zglx.getTsy(), yxdh, yxmc);
if (isZyPxMs) {
msg = msg;
}
throwCheckError(msg);
}
}
c) 对白名单资格进行验证
for (String md : bmdList) {
final String ZYBAIMD_ZGLX_JX = JX
String mdlx = Constants.YES.equals(sfjx) ? ZYBAIMD_ZGLX_JX : md;
checkZyBaimd(zyKsxx.getKsh(), mdlx, yxdh, yxmc);
}
5.3. 人机交互界面实现
在人机交互界面上,通过对客户端CSS样式表文件内联与外部链接相结合并异步加载、简化JavaSvript文件等前端性能优化技术对系统进行优化处理。
系统进行左右分栏试设计,左侧为功能菜单纵向展示,右侧为相应功能的操作界面,各操作步骤菜单试横向显示,如图5所示。
考生可以对添加的意向志愿进行顺序调整。系统提供了上移、下移、输入序号直接调整以及拖动等多种顺序调整方法,考生可以根据个人习惯自由使用。志愿填报辅助系统只使用鼠标点击或选择就可以完成全部志愿预选过程,简便易懂,顺序调整页面如图6所示。
6. 结束语
基于资格验证的志愿填报辅助系统对考生相关资格进行了校验与控制,最大程度的降低了考生志愿填报的盲目性,减少了错误率,大大提高了志愿填报的准确性。但是,该志愿填报辅助系统仅对统考类平行志愿的批次及科类提供了志愿预选功能,并且没有对体检或分数要求等条件进行验证,后续会对系统做进一步研究与开发。
该系统在2021年河北省新高考改革落地之年进行开发并投入使用,上线期间运行平稳、高效,共计30余万名考生使用此系统,登录人次达到600多万,共收藏招生计划340多万条,添加意向志愿130多万条,起到了为志愿填报系统分流作用,很大程度上降低了志愿填报系统的压力,达到了预期效果,为河北省高考改革顺利落地提供了技术保障,具有重要的社会意义。
基金项目
2020年度河北省教育厅人文社会科学研究项目(招生考试专项) (KSZX202005)。