基于C语言开发一种自动编排课表系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国外从 20 世纪 50 年代就有人研究排课问题,到 20 世纪 90 年代关于课表 问 题 的 研究依 然 十分 活跃 。所用方 法有整 数 规划、图 论、分 支定界技 术 及模拟 退 化 法 等。国内 从 20 世 纪 80 年代初 期开 始排课问 题的研 究,从模拟 手工 排课 到 构 建 专 家 系 统 都 有 尝 试 ,采 用 的 算 法 有 分 组 优 化 决 策 算 法 、回 溯 法 [5]、遗 传 算法、专家系统法智能学习算法等。
时 开 授 ( 教 室 代 码 格 式 为 : M01, M02, M03, M04, M05, M06, M07, M08, M09,M10,M11, M12)。 2) 每节课的课时单元为两小时,连续一次排完。 3) 学院有授课老师四十位,教师职位(用输入编码代号的方式来代表输入教 授、副教授、讲师、助教)如表 3 示:
说明:第一个索引值“[4]”代表课表共有 4 列(第 1 ~ 4 节课),第二个索 引值“[5]”代表课表共有 5 行(星期一 ~ 星期五)如表 1 示:
表1
mask_array [0] [1] [2] [3] [4]
[0]
00000
[1]
00000
[2]
00100
[3]
00100
说明:若在程序执行中,若 mask_array[][]的值等于“1”,表示该老师 在该时段不能排课;若 mask_array[][]的值等于“0”,表示该老师在该时段 可以排课。在上图中表示该老师在星期三、四的下午不能排课。 2) data_array[40][12]
关键词:C语言;自动排课;系统
21 世 纪这 个信息 急 速发 达的时 代,办公 自 动化也已成 为现 实。智能 化的产 品 也 越 来 越多地 应 用于 学习 、办 公、教 育等 领域。智能化产 品不仅 能够 使人们 工作 和 学 习 越来越 轻 松,而且 可以 大大 提高 工 作效率。对于学校 来说,排 课 调课是高 校 教 务 管理的 一 项日 常工 作,因其 费时 费 力,手工 完成多易 出错,所 以 利用计算 机这个工具进行自动排课的想法自然 而生。
1 数据结构
2
在程序当中,我们使用了 两个二维数组(2D array)以及一个三维数组(3D array)。第一个 二维 数 组(mask_array[4][5])是用 来在指定某 位 老师时,协助 判 断 该 位 老 师 有 哪 些 时 段 可 以 指 定 ; 第 二 个 二 维 数 组 (data_array[40][12]) 是 用 来 储存所 有 输入 的教 师 相关资料 。在 三维 数组(classroom[4][8][5])的部 份 , 我 们 加 上 了 结 构 (structure)的 概 念 , 用 这 个 三 维 数 组 分 别 储 存 四 间 教 室 的 数 据( 包 含 :教 师 职 等 、教 师 编 号 、科 目 代 号 与 一 个 用 来 帮 助 判 断 该 教 室 特 定 时 段是 否 有 被使 用 的 指 示 旗 标(flag))。这 三个 所 使 用的 数组 所 表 示 的内容 如下所示: 1) mask_array[4][5]
上相对应的位置。如表 5 示:
如表 4 示:
表4
时段 星期一(早上) 星期一(下午) 星期二(早上) 星期二(下午) 星期三(早上) 星期三(下午) 星期四(早上) 星期四(下午) 星期五(早上) 星期五(下午)
实际代号 编码代号
MA
0
MP
1
TA
2
TP
3
WA4WP源自5HA6HP
7
FA
8
FP
9
2.3 排课算法概述 1) 从 data_array[][] 中 选 出 一 位 教 师 的 资 料 ( 假 设 : 该 位 教 师 储 存 在 data_array[][]的资 料为“ 1,3,2,2,3,17,0,0,5,7,0,0”,这些资料表 示一位 编号为 TP03 的教授,有两门课要排(教授科目编号分别为 CS0003 与 CS0017) 以及两个限制不排课的时段(分别为星期三下午与星期四下午)。 2) 将该位教师所指定的限制时段(即不能排课的时段),设定 mask_array[][]
在高等院校中,培养学生的主要途径是教学。在教学活动中,有一系列管 理 工 作 ,其中教 学计 划 的实 施是 一个 重要 的教学环 节。每 学期 管理人 员都 要整 理教学计划,根据教学计划下达教学任务书,然后根据教学任务书编排课表。
1
排 课 表 工作非 常 复杂 ,即有 大量 繁琐 的数 据整理工 作,更 有严 谨思维 的脑 力劳 动 ,还 要 填 写 大 量 的 表 格 ,通 常 手 工 操 作 要 花 费 大 量 的 精 力 ,且 效 率 低 下 ,教 学 资 源 也很难 充 分利 用 。因 此 ,这是一个 急 需解决又非 常 棘手的问 题 ,由于 高 校 教 学 单位和 课 程众 多 ,且 相互交 叉,教 师 和教室有严 重 短缺,很难 用手工 制 定出准确、统一、高 效、合理的课 表。另 一方面教学管理 的信息化不 可能建立 在 手 工 操作的 基 础上 ,而 理论 研究和 软件 技术 的成熟已为 我 们提供了 计 算机自 动排课的重要手段,编制出一套高效、实用、准确的排课表程序已成为可能。 加之,随着教学改革的进行,新的教育体制对课表的编排提出了更高的要求。 手 工 排 课时信 息 的上 通下 达 是极其麻烦的 ,而采用 计算机排 课,教 学 中信息可 以 一 目 了然 ,对 于优 化 学生 的学习 进程,评 估每位教师 对 教学的贡 献 ,领导 合 理决策具有重要意义,必将会大大推进教学的良性循环。
说明:第一个索引值“[40]”代表共有 40 列(1 ~40 位老师),第二个索引 值“[12]”代表共有 12 行(分别表示不同的资料,如表 4,一列代表一位老 师的资料)如表 2 示:
3
表2
第二
个索 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
表3
教师职等 实际代码 编码代号
5
教授
TP
1
副教授
TA
2
讲师
TT
3
助教
TL
4
4) 在数据的输入操作上,我们以编码输入方式代替字符串输入方式,来简化字
符串处理的部分,也就是说以数字选择的方式来输入所需的数据。
5)不 排 课时段 的 要求( 用输 入 编码代 号的 方式来代 表要求 哪一 个时段 不排 课 )
说 明 :第 一 个索 引值“ [12]”代表教室 共 有十二间(0:M01、1:M02、2:M03、 3:M04… …11M12), 第 二个 索引值 “ [4]” 代表该教室 的课 表共有 4 列(第 1 ~
4
4 节 课 ),第 三 个索 引值 “[5]”代表该教 室的课表共 有 5 行 (星期一 ~ 星期 五 ), classroom[3][3][4].teacher_level 用来 存放被指定 在 M04 教 室、星 期五的第四节课的教师职等; classroom[3][3][4].teacher_no 用来存放被 指 定 在 M04 教 室 、 星 期 五 的 第 四 节 课 的 教 师 编 号 ; classroom[3][3][4].score_no 用来存放被指定在 M04 教室、星期五的第四节 课的科目编号;classroom[3][3][4].flag 用来指示 M04 教室、星期五的第四 节 课 的 时间是 否 有被 使用 (0:没有被使用 ;1:有被使 用 )。
引值
代表 教师 资料 职等
教师 编号
教授 教授 教授 限制
科目 科目 科目 时段
代号 代号 数 个数
#1 #2
教授 科目 代号
#3
教授 限制 限制 科目 时段 时段 代号 编号 编号
#4 #1 #2
限制 限制 时段 时段 编号 编号
#3 #4
资料
数值 0~4 01~99 1~4 0~4
0000~9999
2 算法描述
2.1 排课中的基本原则 在 课 程 的 编 排 中 应 遵 循 一 定 的 规 则 ,只 有 按 照 基 本 规 则 来 进 行 课 程 的 排 课
才能够减少冲突的发生,这些基本规则主要有以下几条: 1) 同 一 班级 的学 生 在同 一时 间(某 些特 定的 选修 课除外)不能安 排两 门课程 。 2) 同一教室在同一时间不能安排两门课程。 3) 同一教师在同一时间不能安排两门课程。 4) 同一时间排课的课程总数不能大于所能提供的教室总数。 5) 某一课程参加学习的总人数不能大于所安排教室的座位数。 2.2 本系统的基本假设 1) 学院有十二教室可供使用,也就是说,在同一时段最多只能有十二门课同
0~9
范围
说 明 : 若 data_array[][] 第 一 个 索 引 值 为 “ [1]” 而 第 二 个 索 引 值 “[0~11]”的 数据 分别 为“1,3,2,2, 3,17,0,0,5,7,0,0”其 代表 的意义为:在此数组中第二位教师的职等为“TP”(1:TP、2:TA、3:TT 以及 4:TL), 该教 师的 编 号 为 “03”、所 教 授 的科 目共 有 两 科( 分别 为 位 于 第二个 索 引 值“ [4]” 与“ [5]” 的“ 0003” 与“ 0017” )以 及 有 两 个 限 制 排 课 的 时 段 ( 分 别 为位于 第 二个 索引 值“[8]”与“[9]” 的“ 5”与“7”)(0:MA、1:MP、 2:TA、 3:TP、 4:WA、5:WP、 6:HA、7:HP、 8:FA 以及 9:FP)。 3) classroom[12][4][5]
基于 C 语言开发一种自动编排课表系统
摘 要:排课是学校教学管理中十分重要又相当复杂的管理工作之一。其 实 质 就 是为学 校 所设 置的 课 程安排时间和 地点,从而使 整 个教学能 够 有计划有 秩 序 地 进行。而 通常 所 用的 手工 排课 费时 费力且多 易出错,因 此学校 教务 管理 对 计 算 机自动 编 排课 表的 要 求变的非常迫 切。自动编排 课 表系统是 通 过将排课 问 题 予 以简化 ,在一 定 的约 束条 件下 ,制 定针 对该条件的 算 法流程,用 C 语言 编 写 程 序,实 现计 算 机自 动编 排课 表的要 求。系统输 入教师 数据 和教室 的数 据 , 如 授 课 科目数 、每门 科 目的 代码 、不排课 时 段的特殊要 求 和教室数 目 等,就 可 自 动 生 成学院 所 使用 教室 的 课表以及每位 老师的个人 的课 表。该系 统 能在一定 程度上帮助解决相应的排课问题,提高教学管理效率。
高 校 排 课 的 主 要 任 务 是 把 全 院 各 班 或 各 授 课 部 门 的 课 进 行 汇 总 ,然 后 根 据 教 学 计 划和教 学 资源 制订 各 院系的和各班 级的专业课 课表 ,以充分 满 足专业教 学的要求,并优化配置各种教学资源,使教学工作科学、高效、顺利的进行。
计算机排课问题的难点归结为多约束条件和解的不确定性。众所周知,排 课 时 要 受到时 间 、空 间 等各 种条件 的限制 ,在一定条 件下 ,某一课程 可 排在课 表 的 位 置又不 是 唯一 的 。综 合诸多 因素,如 何才能排出 理 想的课表 ,解决课 表 的 无 冲 突性 ,合 理性 是 排课 问题的 关键,教 务工作者有 长 期实践的 经 验,有 一 套技巧和方法,而要用计算机实现自动编排课表则需要设计出一套可行的算 法,并配合人工排课的经验,设计出一套符合实际现状的实用的课表。
从 实 际 使 用 的 情 况 来 看 ,国 内 外 研 制 开 发 的 这 些 软 件 系 统 在 使 用 性 上 仍 不 尽 如 人 意。一方 面原 因 是作 为一 个很 复杂 的系统,排课要 想面 面俱到 是一 件很 困 难 的 事;另一 方面 每 个学 校由 于其 各自 的特殊性 ,自动 排课 软件很 难普 遍适 用 ,特 别是 在调 度的 过 程中 ,一个很小的 变 动要引起全 部 课程的大 调 整,着 意 味着全学院课程的大变动,在实际的应用中这是很难实现的事。
相关文档
最新文档