教务处排课系统建模定稿版

合集下载

教务处排课系统建模

教务处排课系统建模

教务处排课系统建模摘要:为解决教务处排课系统选课问题,通过对问题的分析,设计解决问题的主要数据结构,再设计出算法程序,从时间、教师、周开课次数、冲突检测及解决等方面处理排课问题;关键词:排课系统,数据结构,算法,冲突检测,建模;每年开学时需要选课,有时排课系统会出现各种各样的问题,一部分是因为排课系统本身的算法问题;设计一个合理算法对于学生选课方便至关重要,以下是一个排课系统的介绍;1.排课系统的基本要求:1.必修课尽可能的排在上午;例如,数学、英语、专业课等安排在上午,而体育、计算机、实验等安排在下午;2.一个教师如果上午连续上四节课,尽可能的将四节课都安排在一个教室;3.一周上多次的课程尽可能间隔至少一天,比如高数,如果一周上六节课,则尽可能安排周1、3、5上午上课;因此同一节的课程一周最多上六节课,且只能在周一、周三、周五;4.同一专业的课程不能有冲突;2. 问题的描述:根据排课的优先级,应该先将全校各个专业本学期的专业课安排好,再考虑教师的教学问题,即如果某一个教师某天上午或下午连续教四节课,确保后一节课的教室号与前一节相同;判断同一课程一周上几次,一次则可以在五天中无课程的时间中随机抽取一天安排课程,两次则可以分为周一和周三、周二和周四、周三和周五三周时间来排课,三次则只能是周一、周三、周五一种排课时间;3.基本算法的描述:设要安排的课程为{ C1 , C2 , ., Cn} ,课程总数为n , 而各门课程每周安排次数为{ N1 , N2 , ., Nn} ;每周教学日共5 天,即星期一~至星期五;每个教学日最多安排4 次课程教学,即1 ~ 2 节、3 ~ 4 节、5 ~ 6 节和7 ~ 8 节以下分别称第1 、2 、3 、4 时间段 . 在这种假设下,显然每周的教学总时间段数为5 ×4 = 20 ,并存在以下约束关系:n ≤20 (1)N = 6n, i =1, Ni ≤20 (2)自动排课问题是:设计适当的数据结构和算法, 以确定{ C1 , C2 , ……, Cn } 中每个课程的教学应占据的时间段,并且保证任何一个时间段仅由一门课程占据.4. 主要数据结构对于每一门课程,分配2 个字节的“时间段分配字”无符号整数 :{ T1 , T2 , ., Tn} . 其中任何一个时间段分配字假设为Ti 都具有如下格式:Ti 的数据类型C为:unsigned int ; Ti 的最高位是该课程目前是否是有效的标志,0 表示有效,1 表示无效如停课等 ;其它各位称为课程分配位, 每个课程分配位占连续的 3 个位bit ,表示某教学日星期一~星期五安排该课程的时间段的值,0 表示当日未安排,1 ~ 4 表示所安排的相应的时间段超过 4 的值无效 .在这种设计下, 有效的时间段分配字的值应小于32 768 十六进制8000 , 而大于等于32 768 的时间段分配字对应于那些当前无效的课程既使课程分配位已设置好也如此 , 因此很容易实现停课/ 开课处理.5.排课算法在上述假设下,自动排课算法的目标就是确定{ C1 , C2 , ., Cn} 所对应的{ T1 , T2 , ., Tn} .从安排的可能性上看,共有20 / 20 - N 种排法;如果有4 门课,每门课一周上2 次,则N = 8 ,这8 次课可能的安排方法就会有20 / 20 - 8 = 5 079 110 400 ,即50 多亿种. 如果毫无原则地在其中选择一种方案,将会耗费巨大量的时间. 所以排课的前提是必须有一个确定的排课原则;采用轮转分配法作为排课原则:从星期一第 1 时间段开始按{ C1 , C2 , ., Cn} 中所列顺序安排完各门课程之后每门课安排1 次 ,再按该顺序继续向后面的时间段进行安排,直到所有课程的开课次数符合{ N1 , N2 , ., Nn} 中给定的值为止. 在算法描述中将用{ C1 , C2 , ., C n } 表示{ C1 , C2 , ., Cn} , 对{ N1 , N2 , ., Nn}和{ T1 , T2 , ., Tn} 也采用同样的表示法.算法1 排课算法输入{ C1 , C2 , ., Cn} 、{ N1 , N2 , ., Nn} .输出{ T1 , T2 , ., Tn} .①初始化:星期值week = 1时间段值segment = 1{ T 1 , T 2 , ., T n } 中各时间段分配字清零②新一轮扫描课程:置继续处理标志flag = 0对课程索引值c-index = 1 ,2 , ., n 进行以下操作:如果Nc-index > 0 ,则做以下操作:把segment 的值写入Tc-index 的第week - 1 3 3~week 3 3 - 1 位中Nc-index 的值减1如果Nc-index > 0 ,则置flag = 1如果week = 5 并且segment = 4则:置flag = 1 并转③否则:如果segment = 4则:置segment = 1 且week 增1否则:segment 增1检测是否已全部安排完毕:如果flag = 1则:转②否则:转③③检测是否成功:如果flag = 1则:开课次数过多否则:课程安排成功④算法结束6.冲突检测算法有时在自动排课完毕后,需要人工调整某些课程的安排时间,如把第i 门课程在人工干预下改成星期数为week 、时间段为segment 的位置,则根据上述数据结构需做如下运算:T i = T i &~ 7 << week - 1 3 + segment << week - 13 ,其中&、~和n 分别为按位与、按位取反和按位左移运算符下同 .问题是如何判断是否已有其它课程安排在同一个时间段上. 设人工调整的时间段分配字为T1 ,则该问题描述为:判断时间段分配字T 1 与{ T2 , T 3 , ., T n } 中的某个分配字是否存在相同课程分配位上的相等的非零时间段值, 或者说{ T 2 , T3 , .,T n } 中是否存在与T 1 冲突的时间段分配字. 为简化起见,在以下算法描述中假设所有时间段分配字的最高位为0.算法2 冲突检测算法输入T1 和{ T2 , ., Tn} .输出与T1 冲突的{ T2 , ., Tn} 中的时间段分配字.①对c-index = 2 ,3 , ., n 做以下操作:初始化屏蔽字mask = 7对星期值week = 1 ,2 ,3 ,4 ,5 做以下操作:如果T1 & mask 等于Tc-index & mask ,而且二者不等于0则: T 1 与Tc-index 相冲突,转①mask 左移3 位或乘8②算法结束7.总结:通过以上算法及数据结构,将其编写为程序,可以对教务处的排课系统进行数据处理,从而可以解决出现的一部分问题;。

教务系统数据流程图绘制

教务系统数据流程图绘制

教务系统数据流程图绘制教务系统是一个用于管理学校教务工作的信息系统。

它涵盖了学生管理、课程管理、教师管理、考试管理等多个方面。

数据流程图是一种图形化的工具,用于描述系统内部的数据流动和处理过程。

在绘制教务系统数据流程图时,我们可以按照以下标准格式进行绘制:1. 标题和说明:在数据流程图的顶部,应该包含一个清晰明确的标题,用于描述绘制的是哪个系统的数据流程图。

例如,标题可以是“教务系统数据流程图”。

在标题下方,可以添加一段简短的说明,介绍教务系统的功能和目的。

2. 外部实体:教务系统与外部实体之间存在着数据的输入和输出。

外部实体可以是学生、教师、教务员等。

在数据流程图中,我们可以使用矩形框表示外部实体,并在框的上方标注实体的名称。

3. 数据流:数据流是在系统内部流动的数据。

在教务系统中,数据流可以是学生信息、课程信息、成绩信息等。

在数据流程图中,我们可以使用箭头表示数据的流动方向,并在箭头上方标注数据流的名称。

4. 过程:过程是对数据进行处理的操作或者功能。

在教务系统中,过程可以是学生选课、教师录入成绩、生成考试安排等。

在数据流程图中,我们可以使用矩形框表示过程,并在框的内部标注过程的名称。

5. 数据存储:数据存储是系统中用于存储数据的地方。

在教务系统中,数据存储可以是学生信息库、课程信息库、成绩数据库等。

在数据流程图中,我们可以使用平行线表示数据存储,并在平行线上方标注存储的名称。

6. 控制流:控制流是系统中控制数据流向的逻辑。

在教务系统中,控制流可以是学生选课前的验证、教师录入成绩后的审核等。

在数据流程图中,我们可以使用菱形框表示控制流,并在框的内部标注控制条件。

7. 连接符号:在数据流程图中,我们需要使用连接符号来连接不同的元素。

连接符号可以是箭头、线条或者其他符号。

箭头表示数据流的方向,线条表示不同元素之间的连接关系。

综上所述,教务系统数据流程图的标准格式包括标题和说明、外部实体、数据流、过程、数据存储、控制流和连接符号。

排课管理系统建设方案

排课管理系统建设方案

排课管理系统建设方案一、项目背景记得那些年里,学校的课程安排总是让人头疼。

老师们为了排课,不惜熬夜,甚至有时候还要吵架。

这就是我们的项目背景:一个急需改善的排课现状。

二、项目目标我们的目标很简单,就是通过建立一个高效、智能的排课管理系统,让老师们从繁琐的排课工作中解放出来,让他们有更多的时间去关注教学质量和学生的成长。

三、系统架构1.前端设计前端设计要简洁、易用。

就像那些年流行的APP一样,要让老师们一眼就能看懂,上手就能用。

考虑到老师们年龄层次的不同,我们采用扁平化设计,降低操作难度。

2.后端设计后端设计要稳定、高效。

就像那些年我们一起开发的系统一样,要能够承受大量的数据请求,保证系统运行稳定。

我们采用分布式架构,提高系统的并发处理能力。

3.数据库设计数据库设计要合理、安全。

就像那些年我们一起学习的数据库知识一样,要确保数据的完整性和一致性。

我们采用关系型数据库,结合NoSQL数据库,实现数据的高效存储和查询。

四、功能模块1.排课管理这个模块是核心,就像那些年我们手动排课一样,要实现课程的自动安排。

我们可以根据老师的教学任务、学生的选课情况,自动课程表。

2.教师管理这个模块要实现对教师信息的管理,就像那些年我们熟悉的教师档案一样,包括教师的基本信息、教学任务、课程安排等。

3.学生管理这个模块要实现对学生的管理,就像那些年我们的学生档案一样,包括学生的基本信息、选课情况、成绩管理等。

4.课程管理这个模块要实现对课程的管理,就像那些年我们的课程表一样,包括课程的开设、调整、查询等功能。

5.统计分析五、实施计划1.需求分析这个阶段要充分了解学校的排课需求,就像那些年我们调研市场需求一样,收集各方面的意见,确保系统功能的完整性。

2.系统设计这个阶段要根据需求分析,进行系统架构和模块设计,就像那些年我们一起画的系统架构图一样,明确各部分的职责和关系。

3.系统开发这个阶段要按照设计文档,进行系统开发,就像那些年我们一起编程一样,攻克一个个难题,实现系统功能。

教学管理信息系统分析与设计案例

教学管理信息系统分析与设计案例

图 10-2 总体业务流程图分析
10.2.4 管理功能分析
按功能划分可将系统划分为教师管理、学生管理、用户管理、课程管理、成绩管理、教 学评价、奖惩管理、学籍异动管理、院系管理、课件管理、代码管理、报表打印等模块,如 图 10-3 所示。
教师管理:教务处对教师信息的添加、修改、查看、删除,教师可查看自己的信息,修 改自己的联系方式。
图 10-4 教师管理业务流程分析
图 10-5 教师管理数据流程分析
说明:教师被聘用后,教师档案转入学校人事部门,教务处根据教师档案录入教师的基
本信息,同时创建了一个用户类型为教师,用户名和密码都是教师号的教师用户。教师登录
系统后可查看自己的基本信息及修改联系方式等信息,教务处可查看及修改所有教师的信
10.1.2 系统定义及目标
本系统的目的是开发“教学管理信息系统”,通过本系统对教务工作的各个环节进行管 理,实现教务处信息管理的电子化,提供一个电子化的管理平台。
教学管理系统的目标是:运用先进的信息处理技术和手段,建立起比较高效的教学管理 信息系统;解决教学管理中大量数据的收集、存储、检索和传递等问题,以减轻教务处工作 强度,提高工作效率和业务管理水平。其任务是建立起一个以计算机为基础的安全可靠的计 算机系统,实现业务处理电子化和管理手段科学化。
10.2 系统总体需求分析
10.2.1 组织结构
本案例系统中教务处下设 5 个科室:网络与信息管理科、教务科、学籍管理科、招生办 公室、教学研究与质量管理科。网络与信息管理科负责教务管理信息系统及处内办公设备和 网络的维护,负责对外联络与接待等事宜,处理国有资产管理。教务科负责协调日常教学运 行工作,组织实施教学计划、落实各学期开课、实习计划及教学任务;核查教师教学任务和 教学工作量,预算教学经费;组织教学秩序检查,考查教师的教学情况并处理教学中的问题; 负责办理校内外人员的进修、旁听手续。学籍管理科负责审核毕业生资格;补办毕业证明书, 组织在校生转专业、升留级、转学等工作,处理违反学籍管理规定的学生,学籍的维护和电 子注册。招生办公室负责编制、申报、落实普通本专科专业招生计划和分省来源计划;编制 学校招生章程,制定相关招生规定,组织网上招生宣传,组织实施远程录取工作;汇总新生 信息,统计分析相关信息,撰写招生总结;新生分班,编制学号,印制新生名册,维护教务 系统新生信息;审查新生入学资格;处理招生工作的遗留问题等。教学研究与质量管理科负 责新开课程的组织和评审,组织新专业的论证和申报、专业调整与建设,拟定教学改革方案, 组织课程建设工作。教务处组织结构图如图 10-1 所示。

排课系统的着色Petri网建模

排课系统的着色Petri网建模
口杨 夏 妮 ’ 龙法 宁 ,
( ,2 玉林 师范学院 计算机科学与工程学 院,广西 玉林 5 7 0 ) I . 3 0 0

[ 摘 要] 根据玉林师范学院的实际情况,建立排课系统的模型,并利用建模工具着 ̄Pti er
网 对排课系 统进行奇 建模,描 视化 述系统流程, 以期对排课系统的开发有所帮助.
合理 的 课程 表应 该满 足 以下 约束 :
( )同一 班级 在 同一 时间不 能 安排 两 门 以上 的课 程 ; 1
( )同一教 师 在 同一 时间不 能 安排两 门 以上 的课 程 ; 2 ( )同一教 室在 同一 时间不 能安排 两 门以上 的课程 ; 3 ( )同一 时间安 排 的课程 总 数不 能大 于教 室 总数 ; 4
时多 的课程 应 该优 先 安排 ;根据 是 否合 班上 课 ,合班 上课 的课 程应 该优 先安 排等 .
( )交错原则. 2 要交错 安排特点不 同的课程 ,比如理论性较强的课程和实践性较强的课程要交错安
[ 稿 日期]2 1 4 0 收 0 卜0 - 7
[ 者简介] 杨夏妮 (90 作 18  ̄),女,广 西玉 林人 ,玉 林师 范学院计算机 科学与工程 学院讲师 ,工学硕 士,主要研 究方
1 排课 的基本 问题
排 课 问题 是 一个 多 目标 、有 限资源 、带 有 复杂 约 束条 件 的 组合 规划 问题 ,是 计 算机 应 用领 域 具 有 一
定 代表 性 的 问题 . 9 3 .C o 1 e 给 出 了排 课 问题 的数 学模 型 ,1 7年E e .s 明 了排课 问题 自16 年C .G t ib l 9 6 vn 证 是N 完 全 问题 I,迄 今 为止 ,对 排课 的研 究工作 已经进 行 了 四十 几年 之 久 , 由于它 具有 规模 大 、约 束复 杂 P 2 】 以及 本 质不 断变 化 等特 点 ,因此 排课 问题 现在 仍 是令 人感 兴趣 的课题 之 一. 排 课 的五 大 基 本 因素 包 括 :课 程 、 班级 、教师 、教 室和 时 间,其 目标就 要 对这 五 大 因 素进 行 最优 化 组合 配 置 ,确 保 班级 、教 师 、教室 在 时 间上不 发 生冲突 ,同时讲 求科 学合 理性 , 安排 出合理 的课程 表 .

课程设计方案万能模板

课程设计方案万能模板

一、课程名称二、课程目标1. 知识目标:通过本课程的学习,使学生掌握……(列出具体知识点)。

2. 能力目标:培养学生……(列出具体能力)。

3. 情感目标:激发学生对……(列出具体情感)的兴趣,培养学生的……(列出具体品质)。

三、课程内容1. 课程背景(1)课程来源:……(2)课程意义:……2. 课程模块(1)模块一:……(简要介绍模块一内容)(2)模块二:……(简要介绍模块二内容)(3)模块三:……(简要介绍模块三内容)……3. 课程安排(1)学时分配:……(列出每个模块的学时分配)(2)教学进度:……(列出每个模块的教学进度)四、教学方法与手段1. 教学方法(1)讲授法:……(介绍讲授法在课程中的应用)(2)讨论法:……(介绍讨论法在课程中的应用)(3)案例分析法:……(介绍案例分析法在课程中的应用)(4)实践教学法:……(介绍实践教学法在课程中的应用)……2. 教学手段(1)多媒体教学:……(介绍多媒体教学在课程中的应用)(2)实验实训:……(介绍实验实训在课程中的应用)(3)网络教学:……(介绍网络教学在课程中的应用)……五、教学评价1. 评价方式(1)平时成绩:……(列出平时成绩的评定标准和所占比例)(2)期中考核:……(列出期中考核的评定标准和所占比例)(3)期末考核:……(列出期末考核的评定标准和所占比例)2. 评价内容(1)知识掌握程度:……(列出评价知识掌握程度的具体指标)(2)能力培养情况:……(列出评价能力培养情况的具体指标)(3)情感态度:……(列出评价情感态度的具体指标)……六、课程特色与创新1. 课程特色(1)理论与实践相结合:……(2)注重学生能力培养:……(3)激发学生兴趣:……2. 课程创新(1)教学方法的创新:……(2)教学手段的创新:……(3)课程内容的创新:…………七、课程实施与保障1. 教师队伍建设(1)教师培训:……(2)教师考核:……2. 教学资源建设(1)教材建设:……(2)实验实训设备:……(3)网络资源:……3. 教学环境建设(1)教室设施:……(2)实验室建设:……(3)校园网络:…………通过以上七个方面的设计,本课程方案旨在为学生提供一个全面、系统、具有针对性的教学体系,以提高学生的综合素质,培养适应社会需求的应用型人才。

课程设计封面排版模板图

课程设计封面排版模板图

课程设计封面排版模板图一、教学目标本课程的教学目标是使学生掌握第三章“几何图形”的相关知识,包括了解各种几何图形的性质、识别和绘制常见几何图形、解决与几何图形相关的问题。

1.掌握圆、三角形、矩形、正方形等常见几何图形的性质。

2.学会使用直尺和圆规绘制常见几何图形。

3.了解几何图形的对称性、角度测量和弧长计算。

4.能够识别和判断各种几何图形。

5.能够运用几何知识解决实际问题。

6.能够独立完成几何图形的绘制和计算。

情感态度价值观目标:1.培养学生的观察力和想象力,提高学生对几何图形的审美能力。

2.培养学生的逻辑思维和解决问题的能力。

3.激发学生对数学学科的兴趣,培养学生的自主学习意识。

二、教学内容本课程的教学内容主要包括第三章“几何图形”的相关知识,具体包括:1.圆的性质、直径、半径、弧长计算。

2.三角形的分类、三角形的内角和、直角三角形和锐角三角形的性质。

3.矩形的性质、对角线、面积计算。

4.正方形的性质、对角线、面积计算。

5.几何图形的对称性、轴对称和中心对称的概念。

教学过程中,将结合课本中的例题和习题,进行详细的讲解和练习。

三、教学方法本课程将采用多种教学方法,包括:1.讲授法:讲解几何图形的性质和公式,引导学生理解和掌握相关知识。

2.讨论法:学生进行小组讨论,分享各自的解题方法和思路,提高学生的合作能力。

3.案例分析法:分析实际问题,引导学生运用几何知识解决实际问题。

4.实验法:让学生动手绘制和测量几何图形,培养学生的实践能力。

四、教学资源本课程所需的教学资源包括:1.教材:《数学课本》第三章“几何图形”相关内容。

2.参考书:《数学辅导书》第三章“几何图形”相关内容。

3.多媒体资料:几何图形的图片、视频讲解等。

4.实验设备:直尺、圆规、测量工具等。

以上教学资源将结合教学内容和方法,为学生提供丰富的学习体验。

五、教学评估本课程的教学评估将采用多种方式,以全面、客观地评价学生的学习成果。

1.平时表现:通过观察学生在课堂上的参与度、提问回答、小组讨论等表现,评估学生的学习态度和理解程度。

稿定设计操作流程

稿定设计操作流程

稿定设计操作流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!稿定设计操作流程一、准备工作阶段在开始使用稿定设计之前,我们需要进行一系列的准备工作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

教务处排课系统建模 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】
教务处排课系统建模
摘要:为解决教务处排课系统选课问题,通过对问题的分析,设计解决问题的主要数据结构,再设计出算法程序,从时间、教师、周开课次数、冲突检测及解决等方面处理排课问题。

关键词:排课系统,数据结构,算法,冲突检测,建模。

每年开学时需要选课,有时排课系统会出现各种各样的问题,一部分是因为排课系统本身的算法问题。

设计一个合理算法对于学生选课方便至关重要,以下是一个排课系统的介绍。

1.排课系统的基本要求:
1.必修课尽可能的排在上午;例如,数学、英语、专业课等安排在上午,而体育、计
算机、实验等安排在下午。

2.一个教师如果上午连续上四节课,尽可能的将四节课都安排在一个教室;
3.一周上多次的课程尽可能间隔至少一天,比如高数,如果一周上六节课,则尽可能
安排周1、3、5上午上课;因此同一节的课程一周最多上六节课,且只能在周一、周
三、周五。

4.同一专业的课程不能有冲突。

2. 问题的描述:
根据排课的优先级,应该先将全校各个专业本学期的专业课安排好,再考虑教师的教学问题,即如果某一个教师某天上午或下午连续教四节课,确保后一节课的教室号与前一节相同。

判断同一课程一周上几次,一次则可以在五天中无课程的时间中随机抽取一天安排课程,两次则可以分为周一和周三、周二和周四、周三和周五三周时间来排课,三次则只能是周一、周三、周五一种排课时间。

3.基本算法的描述:
设要安排的课程为{ C1 , C2 , ., Cn} ,课程总数为n , 而各门课程每周安排次数为{ N1 , N2 , ., Nn} ;每周教学日共5 天,即星期一~至星期五;每个教学日最多安排4 次课程教学,即1 ~ 2 节、3 ~ 4 节、5 ~ 6 节和7 ~ 8 节(以下分别称第1 、2 、3 、4 时间段) . 在这种假设下,显然每周的教学总时间段数为5 ×4 =
20 ,并存在以下约束关系:
n ≤20 (1)
N = 6n, i =1, Ni ≤20 (2)
自动排课问题是:设计适当的数据结构和算法, 以确定{ C1 , C2 , ……, Cn } 中每个课程的教学应占据的时间段,并且保证任何一个时间段仅由一门课程占据.
4. 主要数据结构
对于每一门课程,分配2 个字节的“时间段分配字”(无符号整数) :{ T1 , T2 , ., Tn} . 其中任何一个时间段分配字(假设为Ti ) 都具有如下格式:
Ti 的数据类型C为:unsigned int 。

Ti 的最高位是该课程目前是否是有效的标志,0 表示有效,1 表示无效(如停课等) ;其它各位称为课程分配位, 每个课程分配位占连续的3 个位(bit) ,表示某教学日(星期一~星期五) 安排该课程的时间段的值,0 表示当日未安排,1 ~ 4 表示所安排的相应的时间段(超过4 的值无效) .在这种设计下, 有效的时间段分配字的值应小于32 768 (十六进制8000) , 而大于等于
32 768 的时间段分配字对应于那些当前无效的课程(既使课程分配位已设置好也如
此) , 因此很容易实现停课/ 开课处理.
5.排课算法
在上述假设下,自动排课算法的目标就是确定{ C1 , C2 , ., Cn} 所对应的{ T1 , T2 , ., Tn} .
从安排的可能性上看,共有20 !/ (20 - N) !种排法。

如果有4 门课,每门课一周上
2 次,则N = 8 ,这8 次课可能的安排方法就会有20 !/ (20 - 8) ! = 5 079 110
400 ,即50 多亿种. 如果毫无原则地在其中选择一种方案,将会耗费巨大量的时间.
所以排课的前提是必须有一个确定的排课原则。

采用轮转分配法作为排课原则:从星期一第1 时间段开始按{ C1 , C2 , ., Cn} 中所列顺序安排完各门课程之后(每门课安排1 次) ,再按该顺序继续向后面的时间段进行安排,直到所有课程的开课次数符合{ N1 , N2 , ., Nn} 中给定的值为止. 在算法描述中将用{ C[1 ] , C[2 ] , ., C[ n ]} 表示{ C1 , C2 , ., Cn} , 对{ N1 , N2 , ., Nn}和{ T1 , T2 , ., Tn} 也采用同样的表示法.
算法1 排课算法
输入{ C1 , C2 , ., Cn} 、{ N1 , N2 , ., Nn} .
输出{ T1 , T2 , ., Tn} .
①初始化:
星期值week = 1
时间段值segment = 1
{ T [1 ] , T [2 ] , ., T [ n ]} 中各时间段分配字清零
②新一轮扫描课程:
置继续处理标志flag = 0
对课程索引值c-index = 1 ,2 , ., n 进行以下操作:
如果N[c-index ] > 0 ,则做以下操作:
把segment 的值写入T[c-index ]的第(week - 1) 3 3~week 3 3 - 1 位中N[c-index ]的值减1
如果N[c-index ] > 0 ,则置flag = 1
如果week = 5 并且segment = 4
则:置flag = 1 并转③
否则:如果segment = 4
则:置segment = 1 且week 增1
否则:segment 增1
检测是否已全部安排完毕:
如果flag = 1
则:转②
否则:转③
③检测是否成功:
如果flag = 1
则:开课次数过多
否则:课程安排成功
④算法结束
6.冲突检测算法
有时在自动排课完毕后,需要人工调整某些课程的安排时间,如把第i 门课程在人工干预下改成星期数为week 、时间段为segment 的位置,则根据上述数据结构需做如下运算:
T [ i ] = T [ i ] &(~ (7 << (week - 1) * 3) ) + (segment << (week - 1)*3) ,其中&、~和n 分别为按位与、按位取反和按位左移运算符(下同) .问题是如何判断是否已有其它课程安排在同一个时间段上. 设人工调整的时间段分配
字为T[1 ] ,则该问题描述为:判断时间段分配字T [1 ] 与{ T[2 ] , T [3 ] , ., T [ n ]} 中的某个分配字是否存在相同课程分配位上的相等的非零时间段值, 或者说{ T [2 ] , T [3 ] , .,T[ n ]} 中是否存在与T [1 ] 冲突的时间段分配字. 为简化起见,在以下算法描述中假设所有时间段分配字的最高位为0.
算法2 冲突检测算法
输入T1 和{ T2 , ., Tn} .
输出与T1 冲突的{ T2 , ., Tn} 中的时间段分配字.
①对c-index = 2 ,3 , ., n 做以下操作:
初始化屏蔽字mask = 7
对星期值week = 1 ,2 ,3 ,4 ,5 做以下操作:
如果T[1] & mask 等于T[c-index] & mask ,而且二者不等于0
则: T[ 1 ]与T[c-index ]相冲突,转①
mask 左移3 位(或乘8)
②算法结束
7.总结:
通过以上算法及数据结构,将其编写为程序,可以对教务处的排课系统进行数据处理,从而可以解决出现的一部分问题。

相关文档
最新文档