职高中专的模块化课程设计难点

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

一、相关定义描述

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节课的其实就是上两门模块课程一样

 

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


本文转自 netcorner 博客园博客,原文链接: http://www.cnblogs.com/netcorner/archive/2011/11/02/2232478.html  ,如需转载请自行联系原作者


相关文章
|
14天前
|
敏捷开发 前端开发 JavaScript
实践总结|前端架构设计的一点考究(上)
实践总结|前端架构设计的一点考究(上)
32 0
|
14天前
|
SQL 前端开发 JavaScript
实践总结|前端架构设计的一点考究(中)
实践总结|前端架构设计的一点考究(中)
31 0
|
14天前
|
设计模式 开发框架 前端开发
实践总结|前端架构设计的一点考究(下)
实践总结|前端架构设计的一点考究(下)
34 0
|
1月前
|
存储 安全 算法
【软件设计师备考 专题 】软件设计的艺术:分析与集成、逐步求精、抽象、信息隐蔽
【软件设计师备考 专题 】软件设计的艺术:分析与集成、逐步求精、抽象、信息隐蔽
56 0
|
11月前
|
人工智能 缓存 运维
系统设计面试的框架
系统设计面试的框架
|
11月前
|
设计模式 程序员 开发者
程序员在开发中必经之路:重构代码
众所周知,程序员在开发过程中接手前人代码,或者接手公司外购项目的代码等情况的时候,都有想要重构代码的冲动,与其这样说,不如说程序员只要是接手不是自己亲自写的代码都想重构!俗话说得好:一百个程序员脑中有一百个编程思维,不同程序员就算是开发相同功能的程序,一定会有不同的实现方式,而且代码格式和实现方式也肯定是不一样的,这样就给程序的代码重构留下了伏笔。
139 1
|
前端开发 开发者
架构整洁之道-01 设计与架构
设计:实现业务时的详细的设计,比如模块的依赖设计,业务逻辑设计,前端页面的设计。更偏向于细节内容的设计 - 架构:类似搭建房子一样,先有房子的形状、布局等,一个项目的架构那就是各个模块依赖关系,或者说结构。未来设计方向的一个框架。
129 0
|
设计模式 算法
重构代码设计精要
重构代码设计精要
|
前端开发
前端也要学习基本的UI设计原则与实践套路
有的人可能说,我是技术研发人员,UI的事情我们团队内会有别的人去操心这个,我只管技术即可。 在一天之前,我也是这么觉得的,但是我前些日子听了字节的《给开发看的UI设计》这节课后,觉得一个前端工程师也是要具备一定的UI设计能力的。 依赖市面上的组件库已经不能让产品维持在好用的状态了,还需要将一些设计元素添加进去,才能让我们开发的作品,达到一个更好的层次,给与用户最好的体验。 你的团队可能没有UI同学,也可能有UI同学,但是不一定专业,他们经常会是外包人员,UI给出的设计稿通常只是静态文件,是某一交互切面的,很多的交互细节都体现不出来,在大厂中,许多的B端产品是没有专职UI角色的,前端可能要
|
JavaScript 前端开发
对【经典前端】项目进行工程化改造的经验分享
最近都在折腾一个叫“我爱掘金”的插件,其中有个小的概念功能叫“蝌蚪池塘”获得掘友们的喜爱,大家可以化身为小蝌蚪在池塘里实时聊天,设置了不少彩蛋,比如变身路飞,皮卡丘等。
610 0
对【经典前端】项目进行工程化改造的经验分享