摘要:新生报到模块是自考助学系统的重要组成部分。新生报到模块主要涉及到新生信息录入、报考专业选择、学费缴纳、新生注册等功能。新生注册时,如何为新生自动编班,传统做法是预先将班级号录入数据库,在新生注册时,为新生选择一个班级号。该方法很难实现定额编班和动态调整。针对传统编班存在的问题,提出了一种基于定额和动态调整的新生注册自动编班算法,该算法根据专业注册实时人数及班级定额,自动为新生分配班级号,从而实现了定额编班和班级号的动态管理。实践证明,基于定额和动态调整的新生注册自动编班算法实现了定额编班和班级号动态管理,还大大提高了编班的科学性和管理效率。
关键词:定额;动态调整;新生注册;自动编班算法
中图法分类号TP391.9;文献标志码A
AutomaticClassArithmeticofSelf-taughtFreshmenRegistrationBasedonQuotaandDynamicAdjustment
LiuQing
(CHONGQINGCREATIONVOCATIONALCOLLEGEChongqing402160)
Abstract:?Thefreshmanregistrationmoduleisanimportantpartoftheself-studysystem.Thefreshmanregistrationmodulemainlyinvolvesthefunctionsofinformationentry,majorselection,tuitionfeepayment,freshmanregistrationandsoon.Whenfreshmenregister,howtomakeupclassesautomaticallyforfreshmen,thetraditionalwayistoinputclassnumberintothedatabasebeforehand,andchooseaclassnumberforfreshmenwhentheyregister.Thismethodisdifficulttorealizethequotaschedulinganddynamicadjustment.Aimingattheproblemsexistinginthetraditionalclassscheduling,thispaperproposesanewautomaticclassschedulingalgorithmbasedonquotaanddynamicadjustment.Thisalgorithmautomaticallyassignsclassnumberstothefreshmenaccordingtothereal-timenumberofprofessionalregistrationsandclassquota,thusrealizingthedynamicmanagementofthequotaclassnumberandclassnumber.Practicehasprovedthattheautomaticschedulingalgorithmbasedonquotaanddynamicadjustmentachievesthedynamicmanagementofquotaandclassnumber,andgreatlyimprovesthescientificnatureandmanagementefficiencyofthescheduling.
Keywords:Quota;Dynamicadjustment;Freshmanregistration;Automaticschedulingalgorithm
0引言
党的十九大报告指出:优先发展教育事业。建设教育强国是中华民族伟大复兴的基础工程,必须把教育事业放在优先位置,加快教育现代化,办好人民满意的教育。高等教育自学考试是我国高等教育的重要组成部分,重庆科创职业学院作为社会自考助学单位,对自考助学的管理将涉及到考生报读、缴费注册、助学编班、考籍信息管理、考试计划管理、报考管理、成绩管理、档案资料管理、毕业管理等诸多环节,而这些环节汇聚成一个系统工程,其管理过程将是十分复杂的[1]。研发一套自考助学管理系统,以实现整个自考助学全流程信息化管理,尤显重要。而自考助学新生注册自动编班则是实现自考助学信息化的重要一环。
1自动编班概述
新生报到模块是自考助学管理系统的重要组成部分。新生报到模块主要涉及到新生信息录入、报考专业选择、学费缴纳、新生注册等功能[2]。新生注册时,如何为新生编班,传统做法是预先将班级号录入数据库,在新生注册时,为新生选择一个班级号。该方法很难实现定额编班,或取消新生注册时,很难实现班级号的动态调整。针对传统编班存在的问题,提出了一种新生注册自动编班算法,该算法根据新生注册实时人数、专业班级定额设置等因素,自动为新生分配班级号,从而实现班级号的定额和动态管理。
2自动编班原理
2.1新生报到注册流程
新生报到时,工作人员采集新生基本信息,并选择报读专业,打印报到单。新生凭报到单到财务部门完成缴费流程。完成缴费流程后新生再到所在自考助学单位进行报到注册。新生报到注册流程如图1所示。
3.2新生自动编班原理
新生完成了报到、打印报到单、完善缴费手续后,则进入报到注册环节。新生自动编班,是在新生注册环节完成的。为了实现定额编班、动态编班的功能,在新生注册时,要查询新生所报专业的实时注册人数,如果注册人数为零,表明学生所报专业还没有人注册,则赋予该生该专业第一个班级号;如果该专业注册人数不为零,则查询有无小于定额的班级,如果无,则赋予学生最大班级号的下一个班级号,即新编一个班级号,如果有,则将该生插入到人数最少的班级中,即赋予学生注册人数最少的班级号。其编班原理如图2所示。
在自动编班的过程中,为了实现定额分班,是通过设置每个专业班级最大人数来实现的,当注册人数达到专业班级最大人数时,则只能将学生插入到下一个班级中;为了实现动态编班,是通过将学生插入到人数最少的班级中,这样做的主要目的是避免注册学生退学或手工换班导致的班级人数减少,而使班级人数达不到设定的定额现象。
3自动编班算法实现
3.1相关数据库及表的建立
为了实现图2所示的自动编班,需要建立的数据表包括新生报名表、专业班级设置表、新生注册表。新生报名数据表,主要记录新生的基本信息,包括报读专业等。专业班级设置表完成专业班级信息管理,包括专业名称、年级、班级名称及班级定额等信息。新生注册数据表主要记录新生的注册信息,包括新生基本信息、注册时间、注册状态(正常或退学)、编班编号等。
同时,为了实现各专业班级注册人数的实时统计,还应建立一个专业班级实时注册人数表的分类汇总表,分类汇总表在新生注册表的基础上,分类汇总“助学班级”“就读年级”“专业代码”“助学专业”,“班级实时人数”为汇总计算字段,用于保存各班级的实时注册人数。同时专业班级实时注册人数表按“班级实时人数”升序、助学班级降序排序。
1.建立报名表,记录新生的基本信息,sql脚本如下所示[3]:
USE[zkdata]
GO
/******Object:Table[dbo].[报名表]ScriptDate:2019-07-1110:16:45******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
CREATETABLE[dbo].[报名表](
[记录编号][int]IDENTITY(1,1)NOTNULL,
[身份证号码][varchar](18)NULL,
[姓名][varchar](20)NULL,
[性别][varchar](2)NULL,
[民族][varchar](20)NULL,
[家庭住址][text]NULL,
[就读年级][varchar](4)NULL,
[专业代码][varchar](20)NULL,
[专业层次][varchar](20)NULL,
[助学专业][varchar](20)NULL,
[主考院校][varchar](20)NULL,
[助学院系][varchar](20)NULL,
[报名时间][datetime]NULL,
[照片][image]NULL,
[联系电话][varchar](20)NULL,
[操作者][varchar](20)NULL,
[备注][varchar](40)NULL,
PRIMARYKEYCLUSTERED
(
[记录编号]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]
GO
2.建立专业班级设置表,主要完成专业班级信息设置,其中包括班级定额,通过班级容量字段来实现的。其sql脚本代码如下:
USE[zkdata]
GO
/******Object:Table[dbo].[专业班级设置表]ScriptDate:2019-07-1110:16:45******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
CREATETABLE[dbo].[专业班级设置表](
[记录顺序][int]IDENTITY(1,1)NOTNULL,
[就读年级][decimal](18,0)NULL,
[专业代码][varchar](20)NULL,
[专业名称][varchar](20)NULL,
[班级名称前缀][varchar](30)NULL,
[班级容量][decimal](18,0)NULL,
[备注][varchar](40)NULL,
PRIMARYKEYCLUSTERED
(
[记录顺序]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
3.建立新生注册数据表,主要记录新生的注册信息,其中助学班级字段,通过本文自动编班算法自动产生。其sql脚本代码如下:
USE[zkdata]
GO
/******Object:Table[dbo].[新生注册表]ScriptDate:2019-07-1110:16:45******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
CREATETABLE[dbo].[新生注册表](
[记录编号][int]IDENTITY(1,1)NOTNULL,
[注册序号][varchar](20)NULL,
[身份证号码][varchar](18)NULL,
[姓名][varchar](16)NULL,
[性别][varchar](2)NULL,
[民族][varchar](10)NULL,
[家庭住址][text]NULL,
[就读年级][decimal](18,0)NULL,
[专业代码][varchar](16)NULL,
[助学专业][varchar](20)NULL,
[专业层次][varchar](20)NULL,
[主考院校][varchar](40)NULL,
[助学院系][varchar](20)NULL,
[助学班级][varchar](40)NULL,
[注册员][varchar](10)NULL,
[注册状态][bit]NULL,
[注册时间][datetime]NULL,
[联系电话][varchar](20)NULL,
[photo][image]NULL,
[备注][text]NULL,
PRIMARYKEYCLUSTERED
(
[记录编号]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]
GO
4.建立专业班级实时注册人数表的分类汇总表
select就读年级,专业代码,助学专业,助学班级,count(身份证号码)as班级实时人数from自考助学建籍表groupby助学班级,就读年级,专业代码,助学专业orderby班级实时人数,助学班级desc
在专业班级实时注册人数表中,将各专业班级注册的人数进行分类汇总,同按班级实时人数升序、助学班级降序排序,即班级人数最少的排在表中的第一行,班级人数相同时,助学班级号大的排在前面。
3.2数据源的建立
为了实现自动编班功能,需要在开发工具中建立报名表、新生注册表、专业班级设置表、专业班级实时注册人数表(分类汇总表)的数据源,如图3所示。
“数据源4-专业班级实时注册人数表”是根据“数据源3-新生注册表”建立的,其中分组汇总字段为“助学班级”“就读年级”“专业代码”“助学专业”,“班级实时人数”为汇总计算字段,用于保存各班级的实时注册人数,同时“数据源4-专业班级实时注册人数表”按“班级实时人数”升序、助学班级降序排序。
3.3自动编班算法描述
当新生已经在“数据源2-报名表”中采集了基本信息,并打印了报到单后,完善缴费手续,新生持报到单和缴费凭证,到各自考助学单位进行注册。注册人员根据新生报名信息获取报名专业,根据报名专业在“数据源4”中查询该专业班级注册情况,完成自动编班。自动编班算法描述如图4所示。
3.4自动编班算法实现
根据图4所示自动编班算法描述,实现自动编班功能,编写代码如下:
变量.编班:='';
变量.班数:=0;
数据源4.查询(专业代码=数据源2.专业代码);
数据源5.查询(专业代码=数据源2.专业代码);
如果:数据源4.专业代码=''
变量.编班:=数据源5.班级名称前缀+'01'
否则
开始
如果:数据源4.班级实时人数<数据源5.班级容量
变量.编班:=数据源4.助学班级
否则
开始
变量.班数:=转为数字(取右起字节(数据源4.助学班级,2));
变量.班数:=变量.班数+1;
如果:变量.班数<10
变量.编班:=数据源5.班级名称前缀+'0'+转为字符(变量.班数)
否则
变量.编班:=数据源5.班级名称前缀+转为字符(变量.班数)
结束;
结束;
提示框('已成功注册,欢迎你加入自考助学大家庭!')
3.5自动编班算法测试及分析
1.自动编班算法测试
以上算法,是否能真正实现定额分班、班级号动态调整等功能,还需要对自动编班算法进行测试[4]。以计算机科学与技术专业为例,在数据源5中将计算机科学与技术专业的班级容量设置为3,将班级名称前缀设置为“计科技术ZB18”。同时对数据源4按“助学专业=计算机科学与技术”进行查询。并运行自动编班代码,测试项目及测试结果如表1所示。
8注册第6名学生计科技术ZB1802
计科技术ZB18012
3计科技术ZB1801
9注册第7名学生计科技术ZB1802
计科技术ZB18013
3计科技术ZB1802
10注册第8名学生计科技术ZB1803
计科技术ZB1802
计科技术ZB18011
3计科技术ZB1803
2.自动编班算法测试结果分析
从表1可以看出,当班级人数达到设定定额时,不会将新注册的学生加入到该班,除非该班级有学生退学,从而实现了定额分班功能。
当有学生退学时,如表1序号6,此时计科技术ZB1801班还差1名学生,而在序号8得到了补充,根据注册人数的动态变化,而班级号也得到了动态调整。
图5-图12是运行自动编班算法程序后,为注册学生自动产生的助学班级号部分截图。
4结论
针对传统手工编班存在的问题,提出了一种基于定额和动态调整的新生注册自动编班算法,该算法根据专业注册实时人数及班级定额,自动为新生分配班级号,从而实现了定额编班和班级号的动态管理[5]。实践证明,基于定额和动态调整的新生注册自动编班算法实现了定额编班和班级号动态管理,还大大提高了编班的科学性和管理效率。
但该算法也存在不足,如最后一个班级人数往往达不到定额设置,有可能最后一个班级人数太少,导致教学成本大大提高,此时,可以对算法进行改进,在最后一个班级人数不太多的情况下,将最后一个班级学生拆分到前面班级中,更进一步提高编班的科学性和合理性,这也是课题组今后努力的方向。
参考文献:
[1]马永兴.自学考试——实现全民终身教育的有效途径[J].教育教学论坛,2019
[2]李骐等.基于大数据的自学考试现状、困境与破解途径[J].现代远程教育研究,2019
[3]曾清扬.基于SQLServer数据库的智能电费管理系统设计[J].电子制作,2019
[4]万波.JavaObjects中文版从概念到代码M].北京:人民邮电出版社,2007:105-135.
[5]王金燕.动态规划算法实现电路布线的研究[J].信息记录材料,2019
作者简介:刘庆,1973.12,男,四川省阆中人,重庆科创职业学院副教授,计算机网络管理员高级技师,大学本科,主要研究方向:计算机网络技术。
基金项目:重庆市教育科学“十三五”规划课题高等教育自考助学管理软件设计与实现-以重庆科创职业学院自考助学管理系统为例(2018-GX-430),阶段性成果。