任喜伟,杜丰怡,李兆允,侯佳蕾
(陕西科技大学 电子信息与人工智能学院,陕西 西安 710021)
随着高等教育改革深入推行,专业间的界限逐渐淡化,学科交叉融合发展已成为新的趋势。传统的按计划招生、按专业培养的人才培养模式已不能完全适应经济社会的发展要求,“大类招生、分流培养”作为一种新的人才培养模式逐渐被众多高校采用[1-2]。该模式允许学生在高考结束后,按照大类填报志愿,后经一段时间基础课的通识培养,再根据学生志愿、成绩排名、教学资源等情况综合考虑,将学生分流至大类内的各个专业进行学习[3-4]。
在国外,哈佛大学率先实行“学生自主选择型”专业分流模式,允许学生自主选择专业方向进行学习,实现专业分流[5]。此后,世界上其他高校也纷纷对大类分流的模式进行尝试和探索。而国内也在人才培养模式上不断探索,从建国之初学习苏联的人才培养模式[6],到20世纪80年代后期,由北京大学首先提出“大类招生, 分流培养”模式,随后被众多的国内高校所采纳[7-8]。鉴于传统纸质化分流工作收集学生数据复杂度高[9]、耗费大量人力物力、无法对分流数据可视化分析等特点,实现高校大类分流、专业分班信息化改革意义重大。
杨倩[10]提出了一种浏览器端采用Angular.js框架的单页应用系统,实现了专业大类分流;熊凯等人[11]采用B/S架构,Hibernate、Spring等框架进行系统实现;宋安玲等人[12]提出一种基于C/S架构、.NET框架、C#语言的分流系统,采用志愿分流算法来完成分流工作。上述文献均采用不同技术开发相应的软件系统,在一定条件下有效完成了专业大类分流工作,但还存在由于系统功能单一、开发代码繁杂、系统架构陈旧可能导致的分流结果不准、效率不高、操作不便等问题。
基于此,提出一种基于Vue+SpringBoot框架的高校大类分流系统。系统融合手机端、PC端和服务器端,采用B/S架构,前端使用Vue框架便于数据传输[13],后端使用SpringBoot+MyBatisPlus框架,增强数据安全性[14],同时增加系统功能,高效、准确、便捷地完成专业大类分流工作。
该系统主要用到以下开发工具和设计模式。
(1)Web服务器。
系统前端使用Webpack进行构建,Nginx进行部署[15]。后端使用SpringBoot集成的Tomcat服务器,Tomcat是一个免费开源的Web应用服务器,可处理动态请求。
(2)Vue框架。
Vue框架是一套用于构建用户界面的渐进式JavaScript框架,采用自底向上增量开发的设计,提供了丰富的组件库,解决了当前应用开发组件不丰富的问题。
(3)SpringBoot框架。
SpringBoot框架是Java平台上的一种开源应用框架,通过简化配置来简化Spring应用的搭建和开发,它提供具有控制反转特性的容器,同时支持面向切面编程。在项目管理方面,SpringBoot通过配置Maven工具来管理项目资源,提高了开发效率。
(4)MyBatisPlus框架。
MyBatisPlus框架是基于MyBatis框架的增强工具包,它提供了许多简化MyBatis开发的注解和工具,如自动注入ID、自动填充、逻辑删除等,同时还支持多种数据库,能够帮助开发人员快速开发高质量的数据访问层。
(5)MySQL数据库。
MySQL是一种开源的关系型数据库管理系统,现由Oracle公司维护和支持。它支持多种数据类型;具有高度的稳定性;并且提供了丰富的安全功能,如访问控制、加密、认证等,以保证数据的安全性和可靠性。
(6)MVC设计模式。
在MVC(Model-View-Controller)的架构下,用户直接与View页面进行交互,然后通过数据绑定将用户请求转发给Controller,Controller筛选合适的Model进行业务逻辑处理,处理后的结果再通过Controller传递给View,对View渲染更新。MVC设计模式降低了模块之间的耦合性,方便快速部署,有利于软件工程化管理。
为了便于系统开发,采用了前后端分离的开发模式,前端采用Vue框架,后端采用SpringBoot+MyBatisPlus框架。系统的整体架构设计如图1所示。
图1 系统总体架构
首先,用户可以通过PC端、手机端、平板电脑等终端设备使用该系统;其次,用户在终端成功登录后,前端通过Tomcat应用服务器处理请求,调用志愿填报、专业管理、大类分流、专业分班、学生管理等功能的后端接口,实现功能;而SpringBoot的后端服务通过获取token数据[16]对用户的角色进行判断,控制用户登录后所能够使用的功能权限;系统的前后端通过发送http请求及响应的方式实现数据交互,数据传输到后台后使用SpringBoot框架进行业务逻辑处理和数据安全管理,同时在后台集成MyBatisPlus框架,建立与MySQL数据库的连接并从数据库中获取JSON格式的数据、执行具体功能任务的SQL语句,实现对数据库的操作。
该系统分流设计绩点优先和志愿优先2种核心算法,分流后提供随机、直线、曲线、折线等4种分班模式,以下主要介绍分流核心算法。
(1)绩点优先的大类分流算法(以填报三个志愿为例)。
图2 绩点优先分流算法流程
绩点优先分流算法流程如图2所示。首先,将学生按照绩点和志愿两个维度进行降序排序;其次,从第一个学生的志愿开始获取,在该生第一志愿的专业人数有空缺时,将该生分配入第一志愿的专业,并写入数据库;如果该生第一志愿的专业人数已满,则依次查询第二志愿、第三志愿,在人数有空缺时进行录取,并将录取结果写入数据库保存;接着,查询绩点排名第二的学生志愿,按照上述步骤依次从学生第一志愿开始进行志愿的分配,循环往复直到所有学生分流完毕,并将录取结果写入数据库进行保存。
(2)志愿优先的大类分流算法(以填报三个志愿为例)。
志愿优先分流算法流程如图3所示。首先,获取学生填报的志愿数据,然后将志愿进行降序排序。接着,按照第一志愿的不同将学生分类(即将第一志愿均为A专业的学生分为A组,第一志愿均为B专业的学生分为B组,第一志愿均为C专业的学生分为C组),并在每个类别中将学生按照绩点进行降序排序。考虑每个专业设置的学生容量,如果某志愿填报的学生数量小于该专业的学生容量,则将全部学生录取到该专业,并将录取结果保存到数据库中;如果某志愿填报的学生数量大于该专业的学生容量,则按照绩点降序排序优先满足成绩高的学生的志愿,剩余学生在第一志愿初步分配好后,查看其第二志愿专业人数是否有空缺,如果有则将该生录取至第二志愿专业,并将结果写入数据库;如果第二专业人数无空缺,则将该生录取至第三志愿专业,并将结果写入数据库。录取流程依次往复,直到将所有学生录取完毕并将结果写入数据库进行保存。
图3 志愿优先分流算法流程
数据库建立了学生信息表、学院表、大类表、专业表、班级表、志愿表等一系列数据表,系统数据库主要E-R关系如图4所示。
图4 大类分流系统E-R图
接口是前后端进行通信的桥梁,系统后端需要设计接口,为前端的页面展示提供数据。系统使用Restful风格的设计接口,结构清晰明了,方便后续维护。本节以志愿填报类对应的接口信息表作为接口设计的示例,如表1所示。
表1 大类分流系统接口描述
(1)登录验证实现。
该系统在登录时需要用到验证码的功能,主要依靠Google的开源验证码生成器Kaptcha来实现。首先需要导入相关Jar包,然后配置Kaptcha验证码的生成规则,配置好后就可以生成验证码。而要验证验证码是否正确,直接对表单中生成的UUID和输入的验证码作为条件查询数据库,如果可以查出记录,说明验证码正确。
(2)前后端分离实现。
前后端分离的核心是由客户端请求的身份权限校验,该系统使用Token机制实现校验[16]。通过在登录时生成唯一的Token凭证进行认证,前端在登录完成后将Token保存在本地,每次请求后端Api时把Token放在Http请求头中,服务端通过解析Http请求头中的Token字段,确定用户身份和权限,从而进行对应的业务处理。
(3)信息加密实现。
对于该系统而言,学生信息的安全性是首要考虑的问题,其中用户的密码更是重中之重。考虑到学生信息数量庞大的情况,使用MD5加密算法对用户密码进行加密,并对用户密码进行随机加盐(Salt),使得即使可以拿到数据库密文,也无法逆向推导出密码。
(4)数据校验实现。
后端对于前端的请求数据并不是无差别信任,在进行相关业务处理前,首先根据Token凭证验证身份信息,其次对请求的数据进行XSS等安全校验,最后对关键字段进行检测,确保业务数据无脏数据、无效数据等。
学生端页面是被访问次数最多,关联用户体验最强的页面,如图5所示,学生在登录页面输入自己的学号、密码以及验证码登录,登录成功后根据学生大类显示该生可填报的志愿和起止时间。
图5 系统页面实现
教师端页面是展示信息最全、功能最复杂的页面,如图5所示,教师登录后可新建大类及其所属学院;新增专业的同时设置学生人数及所属的年级、大类、学院等关联信息。同时该系统提供“志愿优先分流”和“绩点优先分流”两种分流算法进行大类分流,教师可直接点击对应按钮分流。分班时可查看各专业未分班学生数及现有班级数,然后一键分班。
对角色进行权限分配是管理员最重要的功能,如图5所示,管理员根据特定账号和密码登录后,可在角色管理页面对教师进行志愿、学院、大类等信息的权限管理。
该大类分流系统使用陕西科技大学电子信息与人工智能学院2021级539名学生的大类分流数据作为测试数据,数据集中包括电子信息专业285人,计算机专业254人。并根据学院真实情况,新建了计算机、电子信息两个大类以及计算机科学与技术、电子科学与技术、光电信息科学与工程、物联网工程等多个专业及所属班级。PC端主要使用IE浏览器、Chrome浏览器对系统各项功能进行测试,其中包括用户登录、志愿填报、结果查看、专业管理、专业推荐、班级管理、绩点优先分流、志愿优先分流、班级分配、权限分配等多种功能。经测试所有功能均能准确无误运行。与文献[10-12]相比,增加了专业推荐、班级分配,分流策略比较、权限管理、数据分析与导出等功能。
同时,该系统也在测试数据的规模和复杂度、算法在不同规模数据上的运行响应时间、用户体验等方面进行了重点测试。其中分流响应时间与文献[12]相比提升了35%,经数据增强后将学生数据扩充至1 200条和1 500条后,响应时间依旧有明显提升,故系统性能满足大多数学院要求。最后,在测试无误后请同学、教师试用该系统,满意度较高,无需引导即可上手,满足学生和教师需求。
针对陕西科技大学电子信息与人工智能学院2021级学生数据,经多次结果比较,最终选择“绩点优先分流”算法进行分流,结果如表2所示。除“电子科学与技术”“光电信息科学与工程”两个专业外,各个专业录取人数相对均衡,符合计划要求。同时,该系统在规定各专业班级数的情况下选择按照绩点排序Z型折线分班,每个班级绩点有高有低,避免了优秀生源过度集中。
表2 大类分流、专业分班结果
该系统以“大类分流、专业分班”培养模式为背景,通过走访学生及教师充分了解对于分流分班系统的需求,整体采用B/S架构前后端分离的模式,后端系统实现采用SpringBoot+MyBatisPlus框架,前端页面在HTML5、CSS技术上结合Vue框架,数据库使用MySQL。分为学生端、教师端、管理员端三个模块,充分照顾到各种角色的需求,方便学生填报志愿,方便教师进行学院、大类、专业、班级管理以及一键完成分流、分班,方便系统管理员对各种功能权限进行管理。测试和应用结合陕西科技大学电子信息与人工智能学院2021级本科生数据进行,页面清晰明了,响应速度快,分流分班结果准确合理,有效提高了大类分流、专业分班过程的效率。后续将继续将该系统推广至陕西科技大学其他学院及其他高校。