自学考试毕业预测算法的设计与实现
摘要:自学考试毕业预测是为了找出考生的未合格课程,从而可以合理安排报考计划来提高学生的通过率。毕业预测涉及到课程顶替的问题和毕业条件本身比较复杂,所以使得自学考试的毕业预测相当复杂。
中图分类号:TP301文献标识码:A文章编号:1009—3044(2012)08—1851—03。
自学考试毕业预测将考生合格成绩与选定的专业的考试计划比较,判断考生是否满足毕业条件。考生通过毕业预测,可以找出不合格的课程,从而合理安排报考计划;考办可以通过毕业预测,判断考生是否可以毕业,颁发相应专业的毕业证书。由于自学考试毕业条件比较复杂,加上专业考试计划不断修订,考生按旧专业计划考试通过的成绩通过顶替仍可用于新的专业考试计划,使得自学考试的毕业预测相当复杂。
自学考试毕业预测算法包括两个方面的条件,一个是学生毕业的条件,另外一个是课程的模型。
2)必修课成绩全部合格;。
5)考生的实践课、论文成绩须与所选的毕业专业、主考学校相一致;。
1.2课程模型。
近年我省自学考试专业考试计划进行大规模的调整。根据相关的文件规定,考生在专业考试计划调整前(旧计划)获得的课程合格成绩可以顶替专业考试计划调整后(新计划)相应的课程的成绩。可能出现如表1所示的情况。课程顶替的设计流程如图1所示。
表1。
1.2.2必修课与加考课模型。
采用课程组的方法来描述选考课和加考课条件,加号“+”表示要考试的课程,减号“—”表示不用考试的课程,括号“()”内的课程表示一个课程组,如表2所示。
2算法设计流程。
2)根据毕业考生申请毕业的专业,专业方向,加考条件和考生是否为港澳生,取得考生毕业要通过的必修课程,选修条件,加考课程。
5)对比考生要通过的必修课程和考生已经通过的课程.若要通过必修课程在考生课程中已存在,则将考生课程和需要通过的必修课程同时划掉。
6)使用顶替关系,对比考生要通过的必修课程和考生已经通过的课程.若顶替的原必修课程在考生课程中已存在,则将考生课程和需要通过的必修课程同时划掉.并且记录使用过的顶替关系。
7)对比考生要通过的选修条件和考生已经通过的课程.若考生课程满足要通过的选修条件,则将考生课程和需要通过的选修条件同时划掉。
8)使用顶替关系,对比考生要通过的选修条件和考生已经通过的课程.若考生课程存在满足顶替前课程的选修条件,则将考生课程和需要通过的选修课程同时划掉.并且记录使用过的顶替关系。
9)对比考生要通过的加考课程和考生已经通过的课程.若要通过加考课程在考生课程中已存在,则将考生课程和需要通过的加考课程同时划掉。
10)使用顶替关系,对比考生要通过的加考课程和考生已经通过的课程.若顶替前的原加考课程在考生课程中已存在,则将考生课程和需要通过的加考课程同时划掉.并且记录使用过的顶替关系。
11)若考生要通过的必修课程,选修条件,加考课程全部划掉,则判断考生毕业预测能够通过,考生课程中被划掉课程的为考生毕业使用过的课程,顶替关系记录使用过的顶替关系,否则毕业预测不能通过,不被划掉的必修课程为考生不能通过的必修课程,不被划掉的选修条件为不能通过的选修条件,不被划掉的加考课程为考生不能通过的加考课程。
12)若考生有相关违规信息而要求推迟毕业,并且当前时间在考生使用课程的最后考试时间的推迟毕业时间范围之内,则被要求考生现在还不能提出毕业申请。
3算法实现部分伪代码。
i.{。
1.boolean rst=true;。
2.initKSXX(CertNO,GradMajorNO);//判断该考生是否为港澳台考生。
3.initZYXZ(GradMajorNO,Fx,JK);。
///关联专业毕业条件表和加考毕业条件表,取得选考限制,港澳限制和加考限制表达式;。
4.doGetBXKC(CertNO,GradMajorNO,JK,Fx);//取得必修课程,。
5. JKKC =new Hashtable();。
6.if (isGangAo) procGOXZ();//如果是港澳生,则加上港澳处理限制。
7.procJKKC(JK);。
8.KSKC=new Hashtable();。
9.loadKSKC(CertNO,GradMajorNO,YX);//获取考生通过的所有成绩。
10.int dtCount=getKCDTCount(GradMajorNO);//取得毕业专业课程顶替关系。
11.dtOldCourse=new String[dtCount];。
12.dtNewCourse=new String[dtCount];。
13.loadKCDT(GradMajorNO,dtOldCourse,dtNewCourse);//取得本专业的课程顶替关系,顶替前的课程在和顶替后的课程分别存储。
14.String bxcljg=doDTBXKCCL();//查看要求通过的必修课程是否在考生要通过的课程之内(要求使用顶替关系),如果有的话,则将要求通过的必修课和考生已通过的课程中都删除掉.返回使用过的顶替关系。
15.String bjrst=null;。
16.Enumeration e=BXKC.keys() ;。
17.int j=0;。
18.while (e.hasMoreElements()) //取得还没有通过的必修课程.
19.{。
20.String KMH=(String)e.nextElement() ;。
21.GradCourseTemp gct=(GradCourseTemp)BXKC.get(KMH);。
22.if (!gct.isDisposed) {。
a)if (bjrst==null) bjrst=gct.km_h+tab+gct.kmmc ;。
b)else bjrst=bjrst+gct.km_h+tab+gct.kmmc;。
23.}。
24.j++;。
25.}。
26.boolean bxkc=(bjrst==null?true:false);。
27.if (bxkc) gradStr="必考课通过" ;。
28.else gradStr="必考课不通过"+bjrst;。
29.gradStr=gradStr+"。
30.if (bxcljg!=null) { if (usedRels==null) usedRels=bxcljg; else usedRels=usedRels+"。
"+bxcljg; }。
32.String xxcljg[]=new String[1];。
33.boolean xxkc =doDTXXKCCL(xxcljg);//比较判断考生可使用的成绩是否满足选修毕业条件――使用顶替关系,若满足将考生可使用的课程删掉,返回使用过的顶替关系。
34.if (xxkc) gradStr=gradStr+"选考课通过" ;。
35.else gradStr=gradStr+"选考课不通过" ;。
36.gradStr+="。
";。
37.if (xxcljg[0]!=null) { if (usedRels==null) usedRels=xxcljg[0] ; else usedRels=usedRels+"。
"+xxcljg[0]; }。
39.String jkcljg=doDTJKKCCL();;//查看要求通过的加考课程是否在考生可使用的通过课程之内(要求使用顶替关系),如果有的话,则要将通过加考课程和考生已通过的课程中都删除掉.返回使用过的顶替关系。
参考文献: