zoukankan      html  css  js  c++  java
  • 职高中专的模块化课程设计难点

    前阵子在开发排课系统中,遇到了很多难点,一直排不出来,然后项目就一直死在那里了。最近抽了点时间想再拿出来弄弄,可难点依旧,现在遇到的最大问题就是他们的模块化课程的设计。

    一、相关定义描述

    1.模块化课程:指一个学期内通过一定周数内完成的若干个分阶段模块的课程。

    2.模块化课程授课方式:模块化课程通常会有一个实训教室和最多三个教师授课,其中一个是主任老师,其余1-2位是辅助老师,也可以没有辅助老师,但是必须有主任课老师。

    3.模块化课程冲突:教师同时上两门课,实训场地只能一个班级上或者是指定几个班级上。

    4.排课流程:

    1.名单录入(老师、教室、课程、班级)->2.1排课特征录入(老师、教师)                          

                                        ->2.2排课时间限制录入(老师、教室、课程、班级、模块课程)

    ->3.安排教学计划(根据班级安排课程、老师、教室)



    注:下载模块课程请点击模块课程示例”,该文件夹中存放的是模块课程的班级课表和教师课表示例。



    二、问题描述及现有解决思路

    假如有模块课程A,B,C,D,E,F,一学期共有18周,一周上两门模块课程

    A课程完成教学周期为:6周,每周上课节数为12

    B课程完成教学周期为:6周,每周上课节数为12

    C课程完成教学周期为:2周,每周上课节数为12

    D课程完成教学周期为:8周,每周上课节数为12

    E课程完成教学周期为:8周,每周上课节数为12

    F课程完成教学周期为:6周,每周上课节数为12



    通过事先设定的名单和教学计划设得再根据现有的算法得到课表,"点击下载"

    拆分周次算法示意:以下数字代表的是模块化课程的周数

    示例1

    2 6 8 8 6 6

    8 8(2 6 6 6) 先求一组中相同课时数的课程

    2 6-2(4 6 6) 取最小值和最大值拆分

    4 6-2 6-2 剩下三个需两两拆分

    4 4

    示例2

    5 6 7 8 10

    5 10-5 (6,7,8,5)

    5 8-5 (6,7,3)

    3 6-1 7-2

    5 5

    示例3

    3 3 4 4 5 5 12        

    3 3 (4 4 5 5 12)

    4 12-4 (4 5 5 8)

    4 8-4 (5 5 4)

    4 5-2 5-2

    3 3


     

    如果不检测老师和教室冲突,那么上述算法正好得到完成拆分周次。但现实中就不得不再去检测老师冲突和实训场地冲突,那么就势必就得把拆分好的课程再回溯拆分了,上例课表中,若:E课程在1-8周存在冲突,若第7周中有冲突(该课程的老师在其它处已经上课),那么就必须再重新安排到另外周次了,此时问题就出现了,拆分比想像中的要难很多,如果回溯将第二次以后课调换,使其后面正好安排没冲突,那么问题也就不会难了,可关键是如果和后面调换课程,又存在了冲突怎么办?是不是得再重新拆分周次了?

    上次示例是排课一种,算法上感觉已经很难实现了,事实上在实际中又会遇到其它情况,比如:

     

    A课程完成教学周期为:6周,每周上课节数为24

    B课程完成教学周期为:6周,每周上课节数为12

    C课程完成教学周期为:2周,每周上课节数为12

    D课程完成教学周期为:8周,每周上课节数为12

    E课程完成教学周期为:8周,每周上课节数为12

     

    以上24节课的其实就是上两门模块课程一样

     

    还有一种更复杂的情况:假如我一周要安排三门模块化课程的时候又怎么处理?问题感觉越来越复杂了!



  • 相关阅读:
    深入理解关系型数据库的数据水平切分和垂直切分
    数据库Sharding的基本思想和切分策略
    Mycat 设置全局序列号
    Spring MVC异常统一处理
    spring配置文件中bean标签
    浅析VO、DTO、DO、PO的概念、区别和用处
    CentOS7.0安装Nginx 1.7.4
    大数据的四大特点
    CentOS 7 上安装 redis3.2.3安装与配置
    CentOS7下安装MySQL5.7安装与配置(YUM)
  • 原文地址:https://www.cnblogs.com/netcorner/p/2232478.html
Copyright © 2011-2022 走看看