智能排课系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以智能排课系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对排课信息进行管理,有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事劳资管理的效率,也是学校的科学化、正规化管理,与世界接轨的重要条件。
在学校的教务管理工作中,课程表的编排是一项十分复杂、棘手的工作。在排课过程中,除了满足大量的制约条件以外,还必须解决许多冲突与矛盾,例如:两位教师不能同一时间在同一班级上课、一位教师不能在同一时间上两门课等等。利用计算机辅助进行课表编排工作,既提高了排课工作的科学性,又可大大减轻管理人员的工作强度,提高工作效率,从而使学校教务管理现代化迈上了一个新台阶。
一、系统功能:系统设置、课程计划、排课管理、课表管理四个模块。
系统
| 设置 | 课程维护 | 对各学科主课、普通课、副课进行设置,课程安排按照主课、副课、普通课的先后顺序进行排课 |
| 周课时 | 设置各年级周作息天数、上午课时和下午课时 | |
| 年级课时 | 设置各个年级的各个学科的课时数 | |
| 场所名 | 录入场所名称和该场所可同时上课的班级数 | |
| 学科不排 | 对全校学科不排课进行设置 | |
| 教师不排 | 对部门教师不排课和教师个人不排课进行设置 | |
| 固定课 | 对年级固定课进行设置 | |
| 合并课 | 对教师多个班级合班上课和合班上课的连堂次数进行设定 | |
| 连堂课 | 设置各班级学科的连堂课次数 | |
| 课程 计划 | 班级开课 | 为班级设置开课信息 |
| 教师申请 | 教师根据班级开课信息,申请教学岗位 | |
| 教师任课 | 教师任教课程和任教班级的设置 | |
| 排课 管理 | 自动排课 | 根据设置条件进行自动排课 |
| 手动调课 | 对自动排课后的课程进行手动调整 | |
| 课表录入 | 自动排课和手动调课后还不合理的,进行手动录入和课表修改 | |
| 课表 管理 | 课表查询 | 查询年级、班级教师课表,课表可进行打印和导出 |
| 课表统计 | 统计出各年级、各学科课表中的课时,统计各部门教师的课表课时 |
(1)界面友好,操作简单,帮您轻松上手。
(2)系统具有灵活、严格的权限设定功能,采用非常周密有效的权限设置,确保学校各类资料的可靠性和保密性,防止错误和违规操作。
(3)智能排课系统,资料详细周到,同窗多页的界面方式让你轻松完成所有工作。
(4)友善的用户界面,让您轻松实现智能排课。
三、数据库设计:
1、课程信息表(Course_Info)
用于存放课程信息,设置记录号Course_No为主键,以便与各排课信息表建立关系,具体字段设置如下:
| 字段名 | 数据类型 | 允许为空 | 说明 |
| Course_No | int | 不允许 | 课程编号,主键 |
| Course_Name | varchar | 允许 | 课程名称 |
| Course_Subject | varchar | 允许 | 所属科目 |
| Course_Order | int | 允许 | 序号 |
| Course_Grade | varchar | 允许 | 开课年级 |
| Course_Semester | int | 允许 | 开课学期 |
| Course_Nature | char | 允许 | 课程性质 |
| Course_Type | char | 允许 | 课程类型 |
| Course_Credits | int | 允许 | 课程学分 |
| Course_Classhours | int | 允许 | 总学时 |
| Course_Theoryhours | int | 允许 | 理论学时 |
| Course_Practicehours | int | 允许 | 实验学时 |
| Course_Planehours | int | 允许 | 上机学时 |
| Course_Weekhours | int | 允许 | 周学时 |
| Course_Remarks | text | 允许 | 课程简介 |
| Course_Open | char | 允许 | 是否开设 |
班级教学计划是班级开设课程的唯一依据。只要班级教学计划发生变更,班级课程信息须重新设置,以保证班级教学计划与实际开设课程数据对应。
用于存储各班级教学计划,设置记录号Plan_No为主键,以便与各排课信息表建立关联,具体字段设计如下:
| 列名 | 数据类型 | 允许为空 | 说明 |
| Plan_No | Int | 不允许 | 记录编号,主键 |
| Course_No | Int | 不允许 | 课程编号,外键 |
| Class_No | Int | 不允许 | 班级编号,外键 |
| Plan_Year | Vchar(10) | 允许 | 年度 |
| Plan_Semester | Vchar(10) | 允许 | 学期 |
用于存储工作岗位信息,主要分教学岗位和非教学岗位,其中教学岗位来自班级开课计划。设置记录编号Position_No为主键,以便与各排课信息表建立关联,具体字段设置如下:
| 列名 | 数据类型 | 允许为空 | 说明 |
| Position_No | Int | 不允许 | 工作编号 |
| Course_No | Int | 不允许 | 课程编号 |
| Class_No | Int | 不允许 | 班级编号 |
| Department_No | Int | 不允许 | 部门编号 |
| Position_Year | Vchar(10) | 允许 | 学期 |
| Position_Semester | Vchar(10) | 允许 | 年度 |
| Position_Name | Vchar(50) | 允许 | 岗位名称 |
| Position_Type | Vchar(10) | 允许 | 岗位类型 |
| Position_Workload | Float | 允许 | 工作量 |
| Position_Statement | Vchar(max) | 允许 | 声明 |
| Position_State | Char(10) | 允许 | 状态 |
用于存储教师课程申请信息,设置记录号Application_No为主键,以便与各排课信息表建立关联,具体字段设计如下:
| 列名 | 数据类型 | 允许为空 | 说明 |
| Application_No | Int | 不允许 | 记录编号,主键 |
| Position_No | Int | 不允许 | 岗位编号,外键 |
| Teacher_No | Int | 不允许 | 教师编号,外键 |
| Application_State | Char(10) | 允许 | 申请状态 |
用于存储班级开课信息,设置记录编号Teaching_No为主键,以便与各排课信息表建立关联。其中Teaching_period用于标记排课过程已排课时,其值必须小于等于Course_No制定周课时,通过该值判断是否完成排课。注意:Teaching_Info表中的Teaching_ period仅仅用于排课表。在排课之前务必将其置零,以免排课数据有误。
| 列名 | 数据类型 | 允许为空 | 说明 |
| Teaching _No | Int | 不允许 | 记录编号,主键 |
| Class_No | Int | 不允许 | 班级编号,外键 |
| Course_No | Int | 不允许 | 课程编号,外键 |
| Teacher_No | Int | 不允许 | 教师编号,外键 |
| Teaching_Year | Vchar(10) | 允许 | 年度 |
| Teaching_Semester | Vchar(10) | 允许 | 学期 |
| Teaching_LianTang | Boole | 允许 | 是否连堂 |
| Teaching_Weight | Int | 允许 | 权重 |
| Teaching_False | Vchar(max) | 允许 | 不排 |
| Teaching_Must | Vchar(max) | 允许 | 必排 |
| Teaching_ period | Int | 允许 | 已排 |
用于存储班级课表信息,设置记录编号CSchedule_No为主键,以便与各排课信息表建立关联,具体字段设计如下:
| 列名 | 数据类型 | 允许为空 | 说明 |
| CSchedule_No | Int | 不允许 | 记录编号,主键 |
| Class_No | Int | 不允许 | 班级编号,外键 |
| CSchedule_Morning | Int | 允许 | 上午课时 |
| CSchedule_Afternoon | Int | 允许 | 下午课时 |
| CSchedule_Days | Int | 允许 | 天数 |
| CSchedule_Info | Vchar(max) | 允许 | 课表信息 |
| CSchedule_Early | Int | 允许 | 早自习课表 |
| CSchedule_Night | int | 允许 | 晚自习课表 |
| CSchedule_Year | Char(10) | 允许 | 学年 |
| CSchedule_Semester | Char(10) | 允许 | 学期 |
| CSchedule_State | Char(10) | 允许 | 课表状态 |
7、教师课表信息(TSchedule_Info)
用于存储教师课表信息,设置记录编号TSchedule_No为主键,以便与各排课信息表建立关联,具体字段设计如下:
| 列名 | 数据类型 | 允许为空 | 说明 |
| TSchedule_No | Int | 不允许 | 记录编号,主键 |
| Teacher_No | Int | 不允许 | 教师编号,外键 |
| TSchedule_Morning | Int | 允许 | 上午课时 |
| TSchedule_Afternoon | Int | 允许 | 下午课时 |
| TSchedule_Days | Int | 允许 | 天数 |
| TSchedule_Info | Vchar(max) | 允许 | 课表信息 |
| TSchedule_Early | Int | 允许 | 早自习课表 |
| TSchedule_Night | Int | 允许 | 晚自习课表 |
| TSchedule_Year | Char(10) | 允许 | 学年 |
| TSchedule_Semester | Char(10) | 允许 | 学期 |
| TSchedule_State | Char(10) | 允许 | 课表状态 |
整个排课过程必须严格按分以下步骤操作且不可逆。
A) 确定某学期某班级的教学计划;
B)根据班级教学计划生成教学岗位;
C) 任课教师申请教学岗位;
D) 学校审核、审批教师教学岗位申请;
E)确定班级开课信息;
F) 根据排课参数,自动或手动排课。
五、操作流程
打印课表
生成排课结果
生成排课结果
合理性运算
班级开课
排课基本参数设置
生成教学岗位
审核、审批申请
申请教学岗位
设置教学计划下载本文