高校自动排课系统
基于C语言开发一种自动编排课表系统
![基于C语言开发一种自动编排课表系统](https://img.taocdn.com/s3/m/15239e81bceb19e8b8f6baf8.png)
时 开 授 ( 教 室 代 码 格 式 为 : 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 世 纪这 个信息 急 速发 达的时 代,办公 自 动化也已成 为现 实。智能 化的产 品 也 越 来 越多地 应 用于 学习 、办 公、教 育等 领域。智能化产 品不仅 能够 使人们 工作 和 学 习 越来越 轻 松,而且 可以 大大 提高 工 作效率。对于学校 来说,排 课 调课是高 校 教 务 管理的 一 项日 常工 作,因其 费时 费 力,手工 完成多易 出错,所 以 利用计算 机这个工具进行自动排课的想法自然 而生。
高校排课系统设计研究
![高校排课系统设计研究](https://img.taocdn.com/s3/m/d745c80c02020740be1e9b70.png)
给我们 带来 很大的便 利,为什 么我们不考虑使用云存储技术 实现系统的无环 境限制办公呢?计算机技术 日新月异 的变化,
2 0 1 3 年 第 8 期
( 总第 1 3 0期 )
信 息 通 信
I NF 0RM AT1 0N & C0M M UNI CAT1 0NS
2 O1 3
( S u m . N o 1 3 0 )
高校排课 系统设计研 究
翟 勇, 程高飞
( 攀枝 花学院 , 四川 攀枝花 6 1 7 0 0 0 )
相 关 论 文 的 研 究与 分 析 , 总 结 出 目前 系统 设 计 的优 势及 存在 问题 , 并 提 出今 后 系统 设 计 研 究 的发 展 方 向 。 关键词 : 排课 系统 ; 软件 ; 学分制 ; 教 学 中图分类号 : T P 3 l 1 . 5 2 文献标识码 : A 文 章编 号 : 1 6 7 3 — 1 1 3 1 ( 2 0 1 3 ) 0 8 一 O 1 5 6 — 0 l
配 教 学 资源 。 因 此 ,充 分 利 用 教 学 资 源 是 每 个 高校 需 要 解 决 的 问题 , 目前 也有 很 多 软件 公 司 涉 足 教 学 软 件 的 设 计 , 在 查 阅 了高 校排 课 系 统 相 关 论 文 后 ,结 合 我 校 的 实 际情 况 提 出 以下 看法 。
1 系统 设 计前 期 研 究方面
各设计人员在对高校教务需求方面 , 分别从学生人数、 教 学资源、 教师 、 课程等方面做了精 心的调研 。能根据各个高校 的实际情7 兄出发找到解 决方 案。但 是对 于适用于所有高校的 排课系统研 究方面还存在不 足。或者说只能认识到 问题但没 有具体的解决方案。 排课 系统是一个复杂的工程 , 课程安排是 否合理直接影响到教学效果。因此 , 应该有 专业 的团队来研 究 教学规律 、 教 学课表实施合理性等方面 。目前国内的几大教学 管理系统公司 ( 例如正方 、 金窗 、 青果) , 在排课系统设计方面 , 通用性框架搭建 比较合理, 基本 能满足普通高校的需求 。 但是
高校综合教务管理系统功能详解
![高校综合教务管理系统功能详解](https://img.taocdn.com/s3/m/920e110fbed5b9f3f90f1c21.png)
高校综合教务管理系统功能详解in 教务管理, 教务管理系统, 教学管理系统高校综合教务管理系统(JWGL )是一个大型复杂的计算机网络信息系统,采用基于浏览器/ 服务器(B/S ),客户端/ 服务器(C/S )混合的应用体系结构来建设高校网络教务管理系统,使高校教务管理真正实现远程办公、异地办公。
满足各类高校现在和将来对信息资源采集、存储、处理、组织、管理和利用的需求,实现信息资源的高度集成与共享,实现信息资源的集中管理和统一调度。
为各级决策管理部门提出准确、及时的相关信息和快捷、方便、科学的决策分析处理系统;为信息交流、教务管理提供一个高效快捷的电子化手段;最终达到进一步提高各级领导科学决策水平,提高各院系、各部门管理人员管理水平与办公效率,减轻工作负担的目的。
系统简介随着我国高校教学体制改革的发展,更加体现出以人为本的教育方针政策。
学生自主地选择专业及专业方向、课程的选修机制、实验预约、成绩审核、学分制等管理方式的改革向传统的管理软件提出了新的挑战。
基于这种广泛的需求。
在充分综合各高校特点的前提下,在多年深入研究的基础上,推出了一整套能够适应新的教学体制、能够最大程度满足高校现代化管理要求的教务管理系统。
教务管理涉及到学生从入学到毕业的全过程管理,包括学籍管理、教学计划、开课/ 排课、选课、成绩管理、实验管理、毕业设计及教学质量监控等多个环节。
“高校综合教务管理系统”包括系统工具、教学资源、学籍管理、教学计划、开课管理、智能排课、选课、考务、成绩管理、毕业设计、开放性试验室、毕业资格审查,毕业环节管理,教学质量监控、教材管理等十余个子系统,适用于综合性大学、学院、专科、中专及职业学校,能够完成学年制、学年学分制、完全学分制学校教务管理部门对学生从入学到毕业离校的全过程管理。
高校教务管理工作是高等教育中的一个极为重要的环节,是整个院校管理的核心和基础。
面对种类繁多的数据和报表,手工处理方式已经很难跟上现代化管理的步伐,随着计算机及通讯技术的飞速发展,高等教育对教务管理工作提出了更高的要求。
智能排课系统设计与实现
![智能排课系统设计与实现](https://img.taocdn.com/s3/m/e98a7df5dd3383c4ba4cd241.png)
智能排课系统设计与实现摘要排课问题是所有教育行业都要面对的问题,尤其针对高校纷繁复杂的课程和专业,一直没有很好解决方法。
但这又是每个学校在每个学期都会碰到的必修课。
本文在相关理论的指导下,在分析以往一些排课软件的基础上,提出一种排课系统的设计方法,对一些具体的...<P>摘 要<BR>排课问题是所有教育行业都要面对的问题,尤其针对高校纷繁复杂的课程和专业,一直没有很好解决方法。
但这又是每个学校在每个学期都会碰到的必修课。
本文在相关理论的指导下,在分析以往一些排课软件的基础上,提出一种排课系统的设计方法,对一些具体的问题给出相应解决方案。
希望对于相关部门有所帮助。
此系统主要被分为三个部分:界面的设计、排课算法的设计、以及报表的自动生成。
纵观全局,我们确定用Visual Basic 语言作为程序设计语言以及运用ACCESS 数据库作为后台的数据库支持(所有权: 毕业设计网) <BR><BR>目 录<BR>摘 要. I <BR>Abstract II <BR>第一章 引言. 1 <BR>第二章 可行性研究. 3 <BR>2.1 系统目标及任务. 3 <BR>2.2 开发工具的选择和介绍. 3 <BR>2.3 对现有的排课系统的分析. 5 <BR>2.4系统的逻辑模型. 6 <BR>2.4.1 系统结构图. 6 <BR>2.4.2 系统流程图. 6 <BR>2.4.3数据字典. 7 <BR>2.5 系统的可行性. 8 <BR>2.5.1经济可行性分析. 8 <BR>2.5.2操作可行性分析. 9<BR>2.5.3 技术可行性分析. 9 <BR>2.6成本效益分析. 9 <BR>第三章 需求分析. 10 <BR>3.1 系统的运行环境要求. 10 <BR>3.1.1硬件要求. 10 <BR>3.1.2软件要求. 10 <BR>3.2 系统的功能要求. 10<BR>3.3系统的性能要求. 11 <BR>3.3.1 E-R图. 11 <BR>第四章 总体设计. 13 <BR>4.1 模块设计. 13 <BR>4.2 功能分解. 14<BR>4.3 数据库设计. 14 <BR>4.3.1 定义属性表. 14 <BR>4.4 排课系统总构架. 16 <BR>第五章 详细设计. 17 <BR>(所有权: 毕业设计网) <BR>5.1用户界面设计. 17 <BR>5.1.1简单易用和个性化需求. 17<BR>5.1.2对数据的查询. 17 <BR>5.1.3系统菜单功能. 17 <BR>5.2 课程表的生成. 19 <BR>5.2.1 班级课程表查询打印设计. 19 <BR>5.2.2 教师课程表查询打印设计. 25 <BR>5.2.3 教室课程表查询打印设计. 31<BR>第六章 测试. 37 <BR>6.1 排课系统功能测试. 37<BR>6.2 排课系统课表合理性测试. 37 <BR>6.3 该系统的不足和改进方案. 37 <BR>第七章 总结. 39 <p class='Hfh874'></p> <BR>7.1软件设计小结. 39 <BR>参考文献. 40 <BR>附 录. 41<BR>Survey Report 45 <BR><BR>功能分解<BR>基本信息管理子系统功能:班级信息,教室信息和教室信息的添加、保存、编辑和删除:<BR>1、用户管理子系统功能:用户密码的设置和修改,用户权限的设置,用户重新登陆;<BR>2、数据管理子系统功能:包括对教室、教师、班级、教学计划和课表数据的保存、查询、更新、删除;<BR>3、教学计划管理子系统功能:某一确定的学期的教学工作计划,对于班级而言,每门课程的学时、开始周、结束周以及每门课程的任课教师,该子系统对教学计划进行管理和完善;<BR>4、排课管理子系统功能:包括自动排课,手动排课两个部分;<BR>5、课表查询子系统功能:对于具体的班级、教师、教室进行课表查询,打印<span class='Hfh874'></span> </P><P> </P><P> <font color='#9a9a9a'></font> </P><P></P><p>1、研究思路<br />本文首先从选题研究的背景、意义进行归纳研究。
高校自动排课算法的研究与实现
![高校自动排课算法的研究与实现](https://img.taocdn.com/s3/m/a801947f15791711cc7931b765ce05087632752d.png)
高校自动排课算法的研究与实现一、什么是自动排课你有没有遇到过这种情况:一到新学期,课程安排就像一场“天书”,你摸不着头脑,感觉整个时间表就像是用魔法弄出来的。
班级、教师、教室、时间,明明是这些看似简单的东西,却总是难得凑齐,仿佛是天上的星星每一颗都不在同一个轨道上。
别着急,其实我们要讲的就是这个“自动排课”——给你一个神器,它能把这些东西都给排好,让你不再迷失在一堆杂乱无章的课程表里。
说白了,自动排课其实就是一套系统,它帮助学校自动把各种课程、教室、老师、学生的安排都搞定。
听上去是不是很高大上?其实呢,它就是个程序,通过一堆看不见的算法,把这些繁琐的任务化繁为简,让你省下好多时间去做更有趣的事。
自动排课的好处,简直不言而喻,省时、省力,还能避免排错课、时间冲突这些糟心的事。
谁不希望能轻松一把,提前看到安排好的课程表?二、自动排课的难点说起自动排课,大家可能以为这就是一件简单的事,嗯,像点外卖一样,随便点点就好。
但你知道吗,排课可真不是那么简单!如果说排课是做饭,那自动排课就是一门高难度的烹饪技艺。
得确保教师的空闲时间与课程安排对上;得安排合适的教室,最好每个教室都有符合要求的设备;学生的选课情况得时刻盯着,不能让学生重复上同一门课或者时间冲突。
这些看似简单的小事,真是能让人头大。
有时候你会发现,一些课程本来应该按计划进行的,但就是有那么几个原因,让整个排课计划乱得不成样子。
比如说,老师突然生病了,或者有学生要参加什么重要的活动,这时候,怎么调整就变成了一个难题。
大家都知道,排课这事儿,真是个“见缝插针”的活儿。
哪怕是一个小小的调整,背后都可能牵扯到一大堆其他的事情。
所以,自动排课系统就成了各大高校的“救星”,它能通过精准的运算,把这些变量一一考虑进去,尽量避免冲突。
三、如何实现自动排课自动排课系统究竟是怎么做的呢?这里面可大有玄机!得把所有的课程、老师、教室、学生信息都给收集齐全。
你可能觉得这只是些数据,但实际上,这些数据就像一个个“线索”,只有把它们拼凑在一起,才能做出完整的排课方案。
基于.NET的高校排课系统设计与实现
![基于.NET的高校排课系统设计与实现](https://img.taocdn.com/s3/m/4454cc262af90242a895e563.png)
第32卷第2期2013年2月绵阳师范学院学报Journal of Mianyang Normal University Vol.32No.2Feb.,2013收稿日期:2012-10-26作者简介:张正柱(1983-),男,讲师,硕士,主要研究方向:.NET 平台软件开发与教学工作.E -mail :zh.zz@qq.com基于.NET 的高校排课系统设计与实现张正柱,林风人(福建工程学院软件学院,福建福州350003)摘要:计算机信息管理与数据库处理技术,对高校排课问题进行归纳和分析,提出排课系统的逻辑模型以及基于SQL 关系运算的排课算法.结合实际排课需求,基于.NET 平台设计并实现了一个对全校的课程进行汇总,按照教学计划及教学资源,完成自动教学班组建,自动课程安排的高校排课系统.关键词:.NET ;排课系统;SQL 关系运算中图分类号:TP331.52文献标识码:A 文章编号:1672-612x (2013)02-0086-051引言随着计算机以及网络的飞速发展,高校招生规模逐年增加,班级数量、专业课程数量不断增多,采用传统的手工排课方式去实现排课,工作量巨大.由于学校资源众多,教学所需的教室类型也繁杂,加上人数众多,课程顺应技术的发展经常变化,所以,合理管理教学资源并且资源的充分利用及教学信息的管理非常重要.目前,高校排课问题已被证明是一个NP 完全问题,由于其具有难解性和复杂性,因此一直没有得到很好解决受到研究者的关注[1].大部分高校都相继推出教学管理系统并投入使用,但是在实际上的项目开发中,排课系统是一个相对复杂的系统.本文所设计的高校排课系统的主要任务是对全校的课程进行汇总,按照教学计划及教学资源,在学校范围内统一安排产生一个合适逻辑及规定的教学实践及教学空间,来满足教学的需要,并尽量优化教学资源及资源的使用顺序,来满足教学工作的需要.手工排课是件非常复杂、耗时、严谨思维、任务繁重的工作,计算机自动排课代替手工排课势在必行.2排课系统问题分析2.1排课问题概述由于扩招,排课最需要的教室资源在学生规模逐年增加的趋势下越发显得紧张.课表编排是一个充满着冲突的过程,主要冲突包括所开课程、上课时间、上课班级、上课地点、任课教师等多方面争夺某一教学资源,从而出现矛盾,导致教学工作不能正常进行[2].排课工作进行的难度就在于所受到的相对复杂的排课约束.只有系统了解排课所受的约束,才能根据约束在现有的资源情况下,更高效、更合理地安排上课时间地点[3].排课主要问题包括:必须根据教学计划进行课程安排;允许自由指定排课的节次;每门课可允许指定一天之内最多上几节,包括理论与实验节数;允许指定某教师一天最大的上课节数;指定某些节次不排课;指定某教室在某个节次不能排课;指定整个学院级的课程在某个节次排课或者不排课;指定某个专业班级课程在某个节次排课或者不排课;指定某个任课教师在某个节次上课或者不安排课;指定某课程在某个教室上课;指定某专业的所有课程都安排在哪个教学楼上课;排课顺序可以按照某种字段进行排序;选择教室时,必须考虑教学楼之间的间距;排课结束后,可以打印出班级课程表、教师课程表、教室课程表;能产生教师汇总表、教室汇总表,并统计使用率;产生的课程表一周之内的分布尽量均匀合理;班级使用的教室尽量集中;排课结果可以方便调整;排课结果不能冲突等.满足并解决这些问题,即可实现一个比较通用、使用方便、效率高的排课系统.可以看出,排课问题是一个多目标、有限资源条件下、并且带有模糊约束条件的组合规划问题,称为模糊组合规划.这里所指的多目标是指排课结果有多个解集,目标非唯一性.有限资源指有限的教室资源、时间节次资源、授课教师资源等.2.2排课系统的逻辑模型本排课系统在充分研究手工排课系统的基础上,结合计算机信息管理与数据库处理的技术,进行教学计划管理、开课课程信息管理、教师选课管理、教学班管理、排课管理等内容.本系统确定的排课对象是专业班级课程、节次、教室.整个排课的过程分成以下步骤:1.确定开课计划.开课计划是整个系统的起始,影响到各个专业班级的开课课程、选课与排课.2.确定某学年度某学期某专业班级的开课课程信息.3.教师选课、审核、审批.4.组建教学班.教学班是实施教学的基本单位,引入教学班的目的是区别大小班上课,通过教学班的管理,可以节约教师资源与教室资源.5.自动排课.在组建教学班的基础上,教学班是一个重要的排课对象,教学班所包含的信息很多、班级信息、教师选课信息、需要的授课教室类型信息、课程信息等,通过自动排课算法,根据需要的教室类型信息、寻找合适的节次,即可安排某教学班在某一节次在某一教室上课了.当然,为实现计算机自动排课,需要对以上这些表格进行编码管理,同时,还需要一系列的代码信息如教师信息、专业班级信息、教室类型信息、教室信息、周节次信息、课程信息等,采用数据库的管理,实现合理的安排.3排课算法分析与设计3.1排课对象分析排课算法研究的对象是上课班级、所开课程、任课教师、上课时间、上课地点这5个方面,在各种的排列组合中所发生的冲突和矛盾现象的解决与排除,进而得到一个符合教学习惯,满足各种约束条件的效果良好的最优课程表.综合上面5个排课对象问题,本排课系统引入教学班的概念,把排课对象问题从5个变成3个,即课程教学班、节次、教室问题.教学班是指,某门具体的课程,由哪些共同上这门课的班级组成,对该教学班指定一些重要的属性如课程名称、课时、授课教师、班级组成、人数、需要的教室类型等.对教学班课程排课,就是对教师排课,对班级排课,这样,就把班级、教师、课程这3个排课对象合并在一起考虑,根据内在的属性以及这些对象的约束条件进行系统的统一的规划.排课时,针对课程教学班,把它无冲突地放在一个周课程表的二维表中,并为这个周课程表的具体节次安排合适的满足要求的无冲突的教室,即可完成该课程教学班的排课任务.3.2排课算法的总体设计排课的过程主要分为两个步骤,首先对课程教学班进行时间节次分配,然后在时间节次分配的基础上进行教室分配.排课算法的作用就是将各种无序的原始数据(开课计划、选课课程)进行一系列操作,而生成有序的最终数据(课程表).目前的排课算法有基于优先级自动排课算法[4]、人工智能排课算法、专家系统排课算法、基于分组优化和矩阵运算的自动排课算法等,各自采用不同的方式实现排课系统的算法研究及实现[5].这一系列操作主要包括两个算法:时间节次安排算法和教室安排算法.在这2个算法的过程中,充分考虑各种条件因素,从而生成有效课表.其中时间节次安排算法和教室安排算法中,都采用基于SQL 的关系运算算法进行处理.教室安排算法依赖节次安排算法产生的节次结果,不同节次可能建立产生的教室资源不同,所以在动态的教室集合中,去寻找“最合适”的教室资源.自动排课算法选择尚未排课的教学班,然后顺序地对教学班进行课程表安排.优先安排带有约束条件的教学班,完成后,再安排正常的尚未排课的教学班,算法描述如图1所示.·78·张正柱等:基于.NET 的高校排课系统设计与实现第2期图1自动排课算法Fig.1Auto course scheduling algorithm4排课系统设计与实现4.1开发及运行平台本文所设计的排课系统是基于C /S 结构,采用微软的.NET 平台,以C#作为开发语言,使用Visual Stu-dio .NET 开发工具完成的.考虑版本升级及跟踪最新技术的各种新特性应用,以及各个版本的运行库安装包大小,选择.NET Framework 4.0作为我们系统的最低运行平台..NET Framework 4.0是一个集成在Win-dows 中的组件,它支持生成和运行下一代应用程序与XML Web Services.Visual Studio 2010是微软推出的集成化开发环境.这个工具集成了多语言环境的项目开发能力.可以说在.NET 平台上,只需要一个VisualStudio ,就能实现所要实现的大多数应用程序[6].4.2主程序框架本系统采用了基于Add -In 模式的可扩展框架,添加几个文件或者移除几个文件,就可以做到功能模块的添加和删除,方便未来版本的功能扩展与模块定制.易用的、可扩展的、即插即用的框架模式,是本系统框架的基本特征.通过带命令行参数-r 的主程序运行,即可动态缓存更新系统功能模块的更新与扩展,以响应动态链接库变化.以该框架技术为基础,C /S 模式下的软件版本升级、系统更新及维护后,客户端可实现免分发自动升级.4.3代码框架为使系统具有柔性的管理、并使得系统具有良好的可扩充行、可维护行,采用三层代码架构进行代码的开发.用户界面层(UI ):UI 用户处理用户界面与用户的操作.·88·第32卷绵阳师范学院学报(自然科学版)业务逻辑层(BLL ):BLL 用于处理业务逻辑.数据访问层(DAL ):DAL 用于处理数据访问.每个层次间提供清晰的访问界面,通过接口或者实体对象封装来访问.4.4系统实现本排课系统包括六大子系统:基础信息管理、专业班级开课管理、教师选课管理、排课管理、查询统计、系统管理,以及一些辅助的子系统如用户子系统、窗口管理等.系统功能结构图如图2所示.图2系统功能结构图Fig.2Structure chart of system function排课系统主界面如图3所示,自动排课界面如图4所示,综合统计报表界面如图5所示.图3排课系统主界面Fig.3Main interface of course scheduling system 图4自动排课界面Fig.4Interface of auto course scheduling·98·张正柱等:基于.NET 的高校排课系统设计与实现第2期图5报表界面Fig.5Interface of reports 5总结本系统最大的特色是引入专业培养方案开课计划以及教学班的概念.专业培养方案开课计划确定完整学年的开课计划,并在此基础上自动创建专业班级课程,教师选课后,自动组建教学班后自动排课,操作简单明了.本系统的另一特色是立足管理,从管理的角度进行排课系统的开发,排课不仅仅是一种目的,更是一种手段,后续的统计报表分析在排课结果及相关排课对象信息管理的基础上,整合相关模块,形成一个完整的教学系统管理体系.本系统经过福建工程学院软件学院近5个学期的试运行,运行效果良好,各项管理及参数设置简单有效,操作方便,达到预想的效果,在日常的查询与课程调整中,均有效方便.实践表明,该排课系统能完成日常的管理与课程安排任务,并在教务管理中,能实现开课计划管理、教学班管理、课程表查询与资源使用情况分析,并可进行课程调整与教室使用情况监督等功能,满足教务日常课程安排管理的需要.参考文献:[1]薛冬梅.充分利用资源科学合理排课[J ].中原工学院学报,2002,13(7):78-81.[2]宗薇.高校智能排课系统算法的研究与实现[J ].计算机仿真,2011,28(12):389-392.[3]赵晓瑜.基于.net 的高校排课管理系统[J ].软件导刊,2011(11):188-190.[4]陈谊,杨怡,张国龙,等.基于优先级自动排课算法PCSA 的设计与实现方案[J ].北京工商大学学报(自然科学版),2002,20(2):32-35.[5]林风人,焦宁波,张铮彬,等.基于关系运算的高校排课系统设计[J ].福建工程学院学报,2011,9(3):297-302.[6]吴绍兴,刘岩,明廷堂.C#项目开发案例导航[M ].北京:电子工业出版社,2012,2.Design and Implementation of CollegeCourse Scheduling System based on .NETZHANG Zheng -zhu ,LIN Feng -ren(Software College ,Fujian University of Technology ,Fuzhou ,Fujian 350003)Abstract :With the computer information management and the data processing technology ,the problem of college course arrangement was summarized and analyzed in this paper ,by putting forward course scheduling sys-tem based on course scheduling algorithm of SQL logical model and relational operation.An auto course schedu-ling system based on .NET was designed ,with the function of summarizing courses ,organizing teaching classes ,and arranging courses.Key words :NET ;course scheduling system ;relationship operation based on SQL ·09·第32卷绵阳师范学院学报(自然科学版)。
高校排课系统的应用与研究
![高校排课系统的应用与研究](https://img.taocdn.com/s3/m/f62e1838eefdc8d376ee321d.png)
ห้องสมุดไป่ตู้
遵 守 的最基本 的标准 ,T — S Q L 是 对S Q L 功 能 的 增 强 。T ~ S Q L( 事 务 查 询 语 句 ) 是 个 程 序 集 合 , 它对 现 有 的S Y b a S e 和 M i c r o s o f t 结 构 化 查 询 语 句 进 行 了扩 展 , 包 括 事 务 控 制 , 异 常 和 错 误 处 理 , 行 处 理 和 声 明 的 变 量 。M i c r o s o f t 的S Q L 服 务 器和S y b a s e 的服 务 器 都 支 持 T — S Q L 语句 。 T - S Q L 对使 用S O L S e r v e r  ̄ 常 重 要 。与 S Q L S e r v e r 通 讯 的 所 有 应 用 程 序 都 通 过 向服 务 器 发送 T — S Q L 语 句 来 进 行 通 讯 ,而 与 应 用程 序 的 用户 界 面 无关 。 2 . 3前 台开 发 工具M a c r o m e d i a D r e a m —
一
3 . 3 排 课 系 统 详 细 设 计 与 开 发 3 . 3 . 1用 户 登 陆 模 块 3 . 3 . 1 . 1 管 理 员 与 教 师 用 户 的 登 入 与注 销
W ea v eI
排 课 系 统 作 为 教 学 管 理 系 统 中地 位 重 要 , 也是 算 法 相 当 复 杂 的部 分 , 已经 成 为 国 内外 众 多 高 校 以 及 软 件 开 放 人 员 的 研 究 课 题 , 取 得 了许 多 这 方 面 的 理 论 成 果和 实现 方法 。但也存 在着 一些 问题 , 如 : 出 现 教 学 资 源 冲 突 或 利 用 率 低 下 的 情 况 , 工 作 琐 碎 , 工 作 量 大 , 尤 其 是 在 给 大 学 校 园 进 行 排 课 时 出 现 的 问 题 更 多 。 在 排 课 系 统 建 构 过 程 中 , 要 考 虑 到 许 多 细 致 繁 琐 的 问 题 , 比 如 教 室 资 源 时 间 安 排 、 教 师 个 人 时 间 安 排 、 学 生 课 程 时 间 安 排 :还 有 一 些 特 殊 的 条 件 限 制 ,
高校排课系统算法探究
![高校排课系统算法探究](https://img.taocdn.com/s3/m/c6350b1042323968011ca300a6c30c225901f0b4.png)
高校排课系统算法探究排课问题早在上个世纪70年代,S.Even就证明是一个NP完全问题,即算法的计算时间是呈指数增长的,这一论断确立了排课问题的理论深度。
之后很多人尝试采用各种方法对此问题求解,如回溯算法、反复比较法、整数规划、规则系统、模糊理论。
这些非智能算法虽然在一定程度上解决了大学课程表问题,但都存在所求非最优解,课表质量不够满意的问题。
至9O年代初期,Colomim等人首先尝试应用遗传算法来解决课程表问题后,模拟退火、禁忌搜索、蚁群算法等智能优化算法,以及在此基础上的改进方法,都在课程表问题研究特别是理论研究上取得了一定的进展。
然而,面对纷繁复杂的实际情况,课程表问题在理论研究及其工程应用之间仍然存在很大的差距。
目前人们对NP完全问题研究的主要思想是如何降低其计算复杂度,即利用一个近似算法来代替,力争使得解决问题的时间从指数增长化简到多项式增长,这是解决排课问题一个很常见的思路。
一、几种常见排课算法1、遗传算法遗传算法是美国Michigan大学J.Holland教授于1975年首先提出来的,它是模拟达尔文生物进化论的计算模型,是一种具有鲁棒性、全局最优性、可并行处理性及高效性的搜索算法,用来对复杂系统进行优化,该算法应用到排课系统中的主要演算步骤如下:(1)根据排课因素产生基因编码和染色体,并随机产生一定数目的初始种群(一定数目的班级课程表);(2)对个体(班级课程表)适应度进行评估,如果个体的适应度符合优化准则,则输出最佳个体及其代表的最优解,并结束计算,否则转向第(3)步;(3)依据适应度选择再生个体;(4)按照一定的交叉概率和交叉方法生成新的个体;(5)按照一定的变异概率和变异方法生成新的个体;(6)由交叉和变异生成新一代的种群,然后返回第(2)步。
最后进行冲突的检测与消除。
2、蚂蚁算法20世纪90年代初意大利学者Dorigo.Maniez—ZO依照蚂蚁觅食原理提出了第一个“蚂蚁算法(antcolony algorithm)”。
高校排课系统的设计
![高校排课系统的设计](https://img.taocdn.com/s3/m/7cf72baf0029bd64783e2c37.png)
图1 业 务 流程 图 2 . 3 关键 技 术 本 系 统 采 用 了模 拟 退 火 排 课 算 法 , 主 要使 用 了M y E c l i p s e 8 . 6 作 编 译 软 件 。模 拟 退 火 算法 ( S i m u l a t e d A n n e a l i n g ,S A ) 最 早 由K i r k p a t r i c k 等 应用 于 组 合 优 化领 域 ,它 是 基 于M o n t e — C a r l o 迭 代 求 解 策 略 的 一 种 随 机 寻 优 算 法 ,其 出 发 点 是 基 于 物 理 中 固体 物 质 的 退 火 过 程 与 一 般 组 合 优 化 问题 之 间 的 相似 性 。 模 拟 退 火 算 法 是通 过 赋 予 搜 索 过 程 一 种 时 变 且 最 终趋 于零 的 概 率 突 跳 性 ,从 而 可 有 效 避 免 陷入 局 部 极 小 并 最 终 趋 于 全 局
2高校排 课系统 的设计
2 . 1系 统 功 能 高 校 排 课 管 理 系 统 建 立 以学 生 为 中心 的 全 校 集 中 的排 课 活 动 管 理 , 从 而 规 范 排 课 管 理 业 务 处 理 方 式 ,提 高 处 理 效 率 , 为 教 师 和 学 生 提 供 优 质 服 务 ,为 服 务创 新 提 供 坚 实 的基 础 ,为 管
2 . 2 系 统 处 理 流 程
学 效 率 , 更 好 地 完 成 教 学 任 务 , 跟 上 社 会 发 展 步 伐 , 这 是 一个 摆 在 教 学 工 作 者 面 前 的 一 个 迫 切 的 问题 。高 校 通 用 排 课 系 统 正 是 为 了 减 轻 教 务 人 员 工 作 量 , 实 现 教 务 工 作 自动 化 ,解 决排 课 这 一 老 大 难 问题 的 教务 办 公 软件 。
智能排课系统1
![智能排课系统1](https://img.taocdn.com/s3/m/0a3f7f1b14791711cc79173f.png)
综合实验报告题目:智能排课系统学生姓名:专业:信息管理与信息系统班级:信管1002班学号: 1002100231一、概述(一)开发背景随着信息技术的飞速发展,各个行业的信息化势在必行。
正所谓“科学技术是第一生产力”,科技的进步大大地提高了生产率。
然而,在高校这个知识密集的地方,如何才能提高办学效率,更好地完成教学任务,跟上社会发展步伐,这是一个摆在教学工作者面前的一个迫切的问题。
应用信息化来改造传统的教学管理模式是一个重要途径。
近几年来,随着各高校办公自动化工作的推进,教务管理自动化也被摆上了日程。
在教务工作中占有很大比重的一项就是每学期的课程排定工作。
由于教工、教室和设备的相对紧张,如何进行合理地安排和分配,从而充分利用教学资源是我们不得不面对的问题。
而人工进行排课不仅任务重,效率低,而且易出错,难于维护,想要排出一张各方面都满意的课表非常困难。
并且随着高校规模的扩大手工排课的难度和工作量呈几何级数增长。
排课系统正是为了减轻教务人员的工作量,实现教务工作自动化,解决排课这一老大难问题的教务办公软件。
尤其针对高校的排课一直都没有很好的解决方法,但是此问题又是每个学校在每个学期都会碰到的必要行政作业。
本文在相关理论的指导下,在分析以往一些排课软件的基础上,提出一个高校通用排课系统的设计方法,并对一些具体的问题给出相应解决方案。
但是,由于技术、经验的有限和数据量过大,目前我们很难做出一个满足所有需要的排课系统。
因为它不仅要考虑到教室冲突问题和教师冲突问题,还要考虑到分段课、单双周课时的资源利用问题;另外由于高校的教学特点,还要处理合班课、分班课、体育课与选修课等特殊课程。
针对这些问题,在此专门对数据库设计作了一些探索,并于架构的选择和模块的划分上经过精心调整,在菜单的设计上也体现了人性化的操作。
该设计贴近用户需求,功能完整,架构合理,并用大量的框图模型体现了系统的规划。
(二)项目的任务及意义当今学校内部没有完善的高校排课系统,管理水平差,学校课程不能得到合理分配。
基于.net的高校排课管理系统
![基于.net的高校排课管理系统](https://img.taocdn.com/s3/m/ad2570422e3f5727a5e96224.png)
基于.net的高校排课管理系统摘要:介绍了高校排课管理系统中遇到的多种冲突矛盾,给出了解决这些矛盾的方法;提出了一种依据教学计划,以教学班级的授课任务为单位,自动完成选取学期课程、选择教室、安排授课时间和教学场地的高效的智能排课系统方案。
实现算法为:先安排教学任务时间,再根据授课时间和所授课程类别安排教室。
关键词:智能排课;算法;系统设计;函数;数据库;约束0 引言目前我国大多数高校采用的计算机辅助排课系统中,由于存在较多的冲突课程无法进行排课,因此需要对较多的冲突课程进行手工排课。
本文全面综合地分析教师、教室、课程、班级、时间等因素,统筹兼顾,通过计算机编程逐一寻找合适的时间和教室,最终完成符合教学规律,且满足各方面要求的课表。
1 排课问题描述1.1 术语解释常规排课:该门课的教师从学期开始到学期结束每周的授课时间相对稳定。
板块课:学校内全部班级在规定的相同时间进行教授同一门课程如公共英语、公共体育等,在排课时已经为这类课程分配好了时间和地点。
行政班:由同一年级、同一专业、按同一教学计划培养的一定数量的学生组成的,便于管理和课外活动的学生集合,如:电信01班,计算机应用技术04班。
教学班:在相同时间、相同教室,学习由相同教师讲授同一课程的一定数量的学生组成,便于教学和课堂活动的学生集合。
一个教学班可以包含一个院系或多个院系的一个或多个行政班。
单双周问题:每周上课时间为奇数时,在排课时,出现单双周课时分配不等的情况,如周学时为3时,可分配单周4课时,双周2课时或单周2课时,双周4课时。
1.2 排课所受的约束排课工作进行的难度就在于所受到的相对复杂的排课约束。
只有系统了解了排课所受的约束,才能根据这些约束在现有的教学资源情况下,更高效、更合理地安排上课时间地点。
在排课过程中,将约束条件分为3类:时间约束、空间约束和特定约束。
时间约束包括以下几条:①同一时间同一学生不能上两门不同的课程;②同一时间同一教师不能讲授两门不同的课程;③同一时间同一教室不能安排两门不同的课程。
本科毕业论文-基于Java Web的高校排课系统的设计与实现(终稿 )
![本科毕业论文-基于Java Web的高校排课系统的设计与实现(终稿 )](https://img.taocdn.com/s3/m/6e933821910ef12d2af9e7f4.png)
密级:NANCHANG UNIVERSITY学士学位论文THESIS OF BACHELOR(2010—2014年)题目基于Java Web的高校排课系统的设计与实现学院:信息工程学院系信管系专业班级:学生姓名:学号:指导教师:职称:起讫日期:2014.2.16—2014.5.30基于Java Web排课系统的设计与实现摘要排课问题是一个NP完全问题,是一个多约束的、多目标的组合优化问题。
而传统的手工排课的方式,不仅繁琐、极易出错,而且不能全面地考虑对教学资源的合理利用。
因此,设计一个能够根据约束条件,自动安排课程的智能排课系统,是现在高校教务管理的迫切需求。
本文通过对排课系统的分析,阐述了基于Java Web平台下的排课系统的Web 解决方案。
本系统采用了B/S结构,采用了基于JSP Model2的MVC设计模式,大大简化了系统开发的困难。
本文选用了遗传算法来解决排课问题,阐述了遗传算法的基本原理与算法流程,以及在排课问题中的具体实现。
关键词:排课系统;MVC;JSP Model2 ;Java WebCourse Arrangement System Design andImplementation Based on WebAbstractCourse timetabling problem is a NP complete problem, and is a combinatorial optimization problem with a variety of constraints and a multiobjective optimization. the traditional manual method , is not only tedious and error-prone, and can not fully take the reasonable use of the teaching resources into consideration. Therefore, designing a course arrangement system that can arrange the course arrangement automatically according to the constraints is the urgent demand of university educational administration management now.Through the analysis of the curriculum arrangement system, this paper expounds the web solutions of curriculum arrangement system based on Java Web platform . This system adopts B/S structure, and using the MVC design pattern based on JSP Model2,greatly simplifying the difficulties of system development. This paper use genetic algorithm to solve the course timetabling problem, and expounds the basic principle of genetic algorithm , the algorithm flow, and the concrete implementation in the problem.Keyword: Course Arrangement System;MVC;JSP Model2;Java Web目录摘要 (I)Abstract (II)第一章绪论 (1)1.1 课题背景与意义 (1)1.2 国内外发展现状 (1)1.3 本文的研究目标 (2)第二章相关开发技术 (3)2.1 网络结构 (3)2.2 JSP技术 (3)2.3 MVC模式介绍 (5)2.4本章小结 (6)第三章排课系统分析与设计 (7)3.1 排课系统需求分析 (7)3.2 排课系统功能架构分析 (9)3.3 数据库设计 (12)第四章排课系统算法设计 (18)4.1 遗传算法介绍 (18)4.2 排课系统算法设计 (19)4. 3 本章小结 (26)第五章排课系统实现与测试 (27)5.1登录模块实现与测试 (27)5.2 基本信息管理模块实现与测试 (28)5.3 手动排课模块实现与测试 (29)5.4 自动排课模块实现与测试 (30)5.5 课表查询模块实现实现与测试 (30)5.6 本章小结 (31)第六章总结与展望 (32)6.1 总结 (32)6.2 展望 (32)参考文献 (33)致谢 (35)第一章绪论1.1 课题背景与意义随着我国在校大学生人数快速增长,教学资源相对紧缺,合理安排课程变得尤为重要。
基于关联规则算法的排课系统设计与实现
![基于关联规则算法的排课系统设计与实现](https://img.taocdn.com/s3/m/04afd46a1ed9ad51f01df2a3.png)
基于关联规则算法的排课系统设计与实现作者:张建安杨学俊吴文一来源:《现代电子技术》2010年第02期摘要:为达到教学资源利用的最优化,在分析高校排课需求及目前排课系统现状的基础上,基于 FP_Growth关联规则算法,设计和实现基于C/S模式的高校自动排课系统。
该系统实现课表的自动生成、动态调整,解决了教务部门的迫切需要。
关键词:排课系统;FP_Growth算法;资源冲突;C/S模式中图分类号:TP311文献标识码:A文章编号:1004-373X(2010)02-060-05Design and Implementation of Online Course Arrangement SystemBased on Association Rule AlgorithmZHANG Jian′an,YANG Xuejun,WU Wenyi(Kunming Branch of Electronic Technology,Institute PLA Information Engineering University,Kunming,650231,China)Abstract:In order to achieve the optimization of teaching resources usage,on the basis of analysing class demands of university and the present situation of course arrangement system,based on FP_Growth association rule algorithm,C/S pattern_based university automatic course arrangement system is designed and realized.This system realizes class schedule automatic production,dynamic alignment,the educational administration department′s urgent need is solved.Keywords:course arrangement system;FP_Growth algorithm;resource conflict;C/S mode0 引言随着高校扩招力度的加大,目前高等院校中普遍存在着学生基数大、专业设置多而教学资源(教师、场地、器材等)有限的瓶颈问题。
高校教室排课系统的设计与实现
![高校教室排课系统的设计与实现](https://img.taocdn.com/s3/m/106889e74afe04a1b071de35.png)
高校教室排课系统的设计与实现摘要:本文对在网络环境下计算机在排课管理中的应用进行了研究,实现了全计算机和纯网络化排课,设计了一种高校自动排课系统的教室安排算法,对算法中四类不同的教室安排方式结果的合理性和效率进行了详细的比较和分析。
经过对排课问题的研究,利用lindo for windows,提出了排课问题的数学模型。
该模型具有较强的实用性。
关键词:排课系统辅助功能教室安排算法教师安排方式数据库一、关于网络环境下高校教室安排与管理系统自动排课系统是教育信息化的一项重要内容。
特别是高校自动排课系统,由于约束条件繁多、教学资源要求复杂,涉及上课时间、教室、教师、学生,目前,自动排课系统很难达到由计算机自动排出课表,需要一定程度的人工辅助完成自动排课。
通常情况下,自动排课系统分为课程的时间安排子系统和教室安排子系统两个部分。
课程的时间安排子系统完成课程的上课时间安排任务,教室安排子系统完成课程的教室分配任务。
本文描述了网络环境下高校教室安排与管理系统(classroom allocation and management system,cams)中的教室安排算法。
目前,高校教育具有一些新的特点,如招生人数不断增加、课程种类繁多、教学资源紧张、教学计划频繁变动,人工安排容易出现错误和教室冲突现象。
大多数高校也已经广泛实行选课制,进行网上选课,但是自动排课系统的功能仍不完善。
cams正是为了解决这些问题而提出的,它能为已经确定上课时间的课程合理地分配教室,提高课程安排的灵活性和高效性,实现自动化的教室管理。
同时,目前很多高校分布多个校区,这给自动排课系统提出了特殊的要求。
本文实现了一种网络环境下的高校自动排课系统中教室安排功能。
二、cams中的教室安排算法设计1.cams系统总体设计自动排课系统由四大模块构成,分别是输入模块、排课模块、查看模块和打印模块,自动排课系统运行体系图(如图1所示)。
图1(1)输入模块输入模块包括输入教师信息、班级信息、教室信息、课程信息、制订开课计划、绑定合上班等信息。
高校综合教务管理系统功能详解
![高校综合教务管理系统功能详解](https://img.taocdn.com/s3/m/920e110fbed5b9f3f90f1c21.png)
高校综合教务管理系统功能详解in 教务管理, 教务管理系统, 教学管理系统高校综合教务管理系统(JWGL )是一个大型复杂的计算机网络信息系统,采用基于浏览器/ 服务器(B/S ),客户端/ 服务器(C/S )混合的应用体系结构来建设高校网络教务管理系统,使高校教务管理真正实现远程办公、异地办公。
满足各类高校现在和将来对信息资源采集、存储、处理、组织、管理和利用的需求,实现信息资源的高度集成与共享,实现信息资源的集中管理和统一调度。
为各级决策管理部门提出准确、及时的相关信息和快捷、方便、科学的决策分析处理系统;为信息交流、教务管理提供一个高效快捷的电子化手段;最终达到进一步提高各级领导科学决策水平,提高各院系、各部门管理人员管理水平与办公效率,减轻工作负担的目的。
系统简介随着我国高校教学体制改革的发展,更加体现出以人为本的教育方针政策。
学生自主地选择专业及专业方向、课程的选修机制、实验预约、成绩审核、学分制等管理方式的改革向传统的管理软件提出了新的挑战。
基于这种广泛的需求。
在充分综合各高校特点的前提下,在多年深入研究的基础上,推出了一整套能够适应新的教学体制、能够最大程度满足高校现代化管理要求的教务管理系统。
教务管理涉及到学生从入学到毕业的全过程管理,包括学籍管理、教学计划、开课/ 排课、选课、成绩管理、实验管理、毕业设计及教学质量监控等多个环节。
“高校综合教务管理系统”包括系统工具、教学资源、学籍管理、教学计划、开课管理、智能排课、选课、考务、成绩管理、毕业设计、开放性试验室、毕业资格审查,毕业环节管理,教学质量监控、教材管理等十余个子系统,适用于综合性大学、学院、专科、中专及职业学校,能够完成学年制、学年学分制、完全学分制学校教务管理部门对学生从入学到毕业离校的全过程管理。
高校教务管理工作是高等教育中的一个极为重要的环节,是整个院校管理的核心和基础。
面对种类繁多的数据和报表,手工处理方式已经很难跟上现代化管理的步伐,随着计算机及通讯技术的飞速发展,高等教育对教务管理工作提出了更高的要求。
正方教务管理体系系统中智能排课模块
![正方教务管理体系系统中智能排课模块](https://img.taocdn.com/s3/m/f69394fc1eb91a37f0115c64.png)
正方教务管理体系系统中智能排课模块————————————————————————————————作者:————————————————————————————————日期:正方教务管理系统中的智能排课模块一、计划任务的录入教学计划表和教学任务表是排课工作的基础数据表,排课系统的运行高度依赖教学任务表,因此教学任务表的数据需要完整准确且无冗余。
教学任务录入路径如下图单击计划任务安排弹出教学任务录入窗体在左上角选择学年、学期,(年级、校区可不选),单击课程代码右边的按钮弹出课程选择窗体任务是以课程为索引录入的,在开课学院、开课系等选择框中输入条件,查看课程列表,双击需要安排任务的课程,会在任务录入窗体的右上部分“未落实记录数”下属列表中出现该门课程需要录入任务的各个专业,如下图选中需要安排的一条任务,单击(或右键选择新建教学班),弹出任务录入操作窗体输入框是浅黄色为是必填项,字体是灰色的为不可修改项。
对于排课而言,关键条目包括:班级名称、教师职工号(教师姓名、选课课号、上课编号)、周学时、总学时、讲课学时、实验学时、起止周、教室要求。
班级的录入:在班级名称的下拉菜单中选择班级、需要合班的再次点开下拉菜单选择另一个班级,需要跨专业合班的点击右侧的按钮,弹出合班选择窗体双击各个需要合班的班级条目,会在已选择的班级下属列表框中显示选中信息,点击选定,完成合班选择。
教师的录入:在教师职工号框中输入职工号后回车,或者点击右侧的按钮,弹出教师选择窗体可以选择部门、科室查询教师列表,也可以在姓名框中输入姓名,点击查询,支持模糊搜索,选中条目后点击确定(或者双击条目)。
选择教师后选课课号、上课编号会自动填入。
周学时的录入:进入任务安排操作窗体时周学时、起止周、各种学时会根据专业计划中的信息自动填入,但安排任务是常需要根据具体情况做出修改。
周学时字段长为7,中间由短线连接。
如2.0-4.0,前面的2.0表示理论周学时,后面的4.0表示实验周学时,即每周理论课上两节,实验课上四节(每节1学时)。
启智达云排课系统1
![启智达云排课系统1](https://img.taocdn.com/s3/m/9111d17e0812a21614791711cc7931b765ce7be4.png)
二、排课系统功能特点
1、 本系统采用先进的概率统计分散技术能筛选出最优的排课方案进行排课,以最 大化地满足各种排课需求。 2、 具有按大周排课、合班上课、单双周排课、多个教师同时上课、早晚自习安排 等丰富的功能,能满足各类学校的特殊需求。 3、 自动排课过程分三个层次:全校自动排课、班级自动排课、手动调课。全校自 动排课对全校的所有班级进行自动化的排课,用户可以多次执行全校自动排课命令 以使排课结果符合要求。如果在完成全校自动排课后,只是对个别班级排课结果不 满意,可以专门针对该班进行班级重排,以提高效率。也可以针对班级课表、教师 课表、场地课表进行手动调课。手动调课非常方便。只要按下鼠标采用拖动的方式, 将某节课拖动到需要的位置,就能完成调课的过程。系统能智能化地检测对调的两 节课是否发生位置冲突,并且给出信息提示以便于作出合理调整。 4、 在自动排课过程中,系统会详细地记录下整个排课过程的情况,用户可以通过 查看自动排课日志来了解整个排课完成情况。 5、 对于条件过于苛刻而导致发生冲突,本排课系统将采取逐步取消限排条件的方 法,来最终完成排课任务。用户可以查看排课日志来了解自动排课情况,以便作出 适当的调整。
相关的课程计划和课程表也将被删除。
点
可以将存在于电子表格文件(EXCEL文件)中的教师信息纪录成批的导入进来,
从而提高输入数据的效率。按下[导入]按钮,出现打开文件对话框,选择要导入
的文件名,然后[打开]。
注意:要导入的电子表格文件其格式有一定的要求。具体格式见《数据的导入和 导出》一文。 不受课时数限制的职务名称:是指非具体某一教师,而是一职务名称,系统不对其 作冲突检查,安排的课时数没有限制。
课程设计(自动排课系统)
![课程设计(自动排课系统)](https://img.taocdn.com/s3/m/adbc804e27d3240c8447eff0.png)
2008~2009学年度《WEB 程序设计》课程设计班级:05网络3班学号:姓名:周秋艳2008年12月17日2008—2009 学年度<<WEB 程序设计>>课程设计周秋艳1 基于WEB 的高校教师排课系统一、 用户需求分析(10分)学校教务的管理作为高校教育信息化工作中的一项重要工作,如何构建一个具有开放性、实用性和灵活性的平台,是一个值得探讨的课题。
其中,作为学校教务重点环节之一的排课系统也尤为重要。
先前,在统筹安排各班级上课的时间需要人工实现,而且经常会出现同时有多个班级要使用教室的冲突。
既耗时又耗精力,随着计算机技术的不断发展,计算机技术在各领域的充分完美应用,以学校的教务管理为该系统的应用背景,开发一个教室智能排课系统。
此系统开发主要包括后台数据库的建立和前端应用程序的开发两个方面。
系统采用Visual Basic 6.0开发工具和SQL Server 2000作为后台数据库开发的应用软件。
该系统实现上机时间的安排,课程的安排,教室的安排,以及它们之间的不冲突和资源的高效利用;这更切合学院教学需要,降低了排课管理工作的工作量和节省了时间,同时课程安排完成后,学院可迅速获得课表情况信息,为教学工作带来方便。
本系统界面友好,操作简单,使用方便。
二、 系统总体设计(15分) 1.系统功能描述1.1 基本信息管理:教师、教室、班级、课程、教学任务等数据的输入、编辑功能;1.2 数据处理:自动排课、课表修改、删除功能;1.3 数据输出:桌面查询教师、教室、班级课程表,报表打印教师、教室、班级课程表;1.4 帮助:指导用户使用该系统及其他相关说明。
2 系统功能设计分析目前市场上流行的各种排课软件,它们都具有比较完善的功能,但在真正的排课算法上都会有些问题,因为排课算法最关键的问题是如何解决各式各样的冲突。
在做需求分析的过程中,通过调查得知目前排课人员对排课算法的主要要求有:2.1 怎样的合班组合能避免冲突?目前采取的方式是相同或相近的专业的班级组合。
高校智能排课系统算法的研究与实现
![高校智能排课系统算法的研究与实现](https://img.taocdn.com/s3/m/e2a8e9f2fab069dc502201cb.png)
3 )一个 班 级 在 同一 时 间 最 多 只 能 上 一 门课 , 有 : 即
排课 问题 。
∑∑∑
2 高校 排课 问题分 析和 描述
2 1 高 校 排 课 原 则 .
4 即有 同一 门课 的班级能 同时 上课 , ) 同时要求每 门课 的
周 课次 合规 上 数符 定要求, 有: ∑ ∑HX加 即 ∑ ≤
I l l l m l , l
高校 的课表编排 是一个 复杂 的工程 , 涉及 专业 老师 、 学 生多 , 因此要 合量 对课程 进行安 排 , 必须采 取科学 的排 课原 则, 主要 原则 有 :
h, 中 h 其 表示一 门 z 的授课 对 象 总人数 , 即有 :
Re e r h a d Re l a i n o i e st m ea l y tm g rt m s a c n ai t fUn v r iy Ti t b e S se Alo i z o h
ZONG e W i
( hn oe nA ar U i rt, eig10 3 , hn ) C iaF ri f i nv s y B in 00 7 C ia g s ei j
二
』:I
1 课程表要根据教学计 划 , ) 将授课 教师 、 室和学 生等 教 资源合理 起 合 , 守 时 间没 有 冲 突 的原 则 , 部 服从 全 局 遵 局
原则 。
C u ( )≤ Cp 1 。 Nmc ) a( ) k
从高校排课的数 学模 型可知 , 其是一 个多 目标 、 限资 有
源、 带有约束条件 的组合优化 问题 , 一个典 型的 N 是 P完全难
2 在保证时间没有冲突的条件下 , ) 将课程心量 安排在上
高校排课系统开题报告
![高校排课系统开题报告](https://img.taocdn.com/s3/m/697af81e6edb6f1aff001f51.png)
青岛农业大学毕业论文(设计)开题报告题目:青岛农业大学排课系统的设计与实现姓名:学院:理学与信息科学学院专业:计算机科学与技术班级:学号:指导教师:2013 年3 月18 日说明一、有关说明毕业论文(设计)题目确定后,学生应尽快征求导师意见,讨论题意与整个毕业论文(或设计)的工作计划,然后根据课题要求查阅、收集有关资料并编写研究提纲,主要由以下几个部分构成:1.研究(或设计)的目的与意义。
应说明此项研究(或设计)在生产实践上或对某些技术进行改革带来的经济、生态与社会效益。
有的课题过去曾进行过,但缺乏研究,现在可以在理论上做些探讨,说明其对科学发展的意义。
2.国内外同类研究(或同类设计)的概况综述。
在广泛查阅有关文献后,对该类课题研究(或设计)已取得的成就与尚存在的问题进行简要综述,只对本人所承担的课题或设计部分的已有成果与存在问题有条理地进行阐述,并提出自己对一些问题的看法。
3.课题研究(或设计)的内容。
要具体写出将在哪些方面开展研究,要重点突出。
研究的主要内容应是物所能及、力所能及、能按时完成的,并要考虑与其它同学的互助、合作。
4.研究(或设计)方法。
科学的研究方法或切合实际的具有新意的设计方法,是获得高质量研究成果或高水平设计成就的关键。
因此,在开始实践前,学生必须熟悉研究(或设计)方法,以避免蛮干造成返工,或得不到成果,甚至于写不出毕业论文或完不成设计任务。
5.实施计划。
要在研究提纲中按研究(或设计)内容落实具体时间与地点,有计划地进行工作。
二、注意事项1.开题报告的撰写完成,意味着毕业论文(设计)工作已经开始,学生已对整个毕业论文(设计)工作有了周密的思考,是完成毕业论文(设计)关键的环节。
在开题报告的编写中指导教师只可提示,不可包办代替。
2.无开题报告者,不准申请答辩。
3.本表要用计算机填写,签字要手写,一式三份,本人、导师、所在学院(要原件)各一份。
4.学生可根据内容的多少调整表格的大小。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//简化版高校自动排课系统//排课任务简化后包含:年级专业(教学班级,如计科13)、课程名称、任课教师、上课地点和时间//教学班级简化为不分人数,不分专业方向。
//上课教室简化为不分理论课、实验课,不分教室容纳人数,不分是否多媒体。
//上课时段简化为:一周五天,周一到周五,白天上课,上午四节,下午四节,//1~2(8:00~9:400)、3~4(10:00~11:40)、5~6(14:00~15:40)、7~8(16:00~17:40)//为了便于处理,将五天的所有上课时段用数字0~19表示//上课地点和时间组合成一个整数数组(位集,bitset),每20个为1组为一个教室的上课时段安排//约束条件:1、教学班级的上课时间不能冲突//2、每个教室不能同时安排多个教学班级上课//3、任课教师的上课时间不能冲突//#include <iostream>#include <fstream>#include <sstream>#include <string>#include <vector>#include <bitset>#include <random>#include <iomanip>using namespace std;//原始数据文件中的每一行数据的数据结构struct schedule {string grade_special; //年级专业string course; //课程名称string teacher; //任课教师string total_hour; //总学时string teach_hour; //讲课学时string experiment_hour; //实验学时string practice_hour; //课程实践学时string credit; //学分string week_hour; //周学时string start_stop; //起止周string speciality_orientation; //专业方向string person_num; //人数};//排课任务的数据结构struct arrange {arrange(string gs, string c, string t, int ct = -1) : grade_special(gs), course(c), teacher(t),classroom_time(ct) {}string grade_special;//年级专业string course;//课程名称string teacher;//任课教师//string classroom;//上课地点//string time;//上课时间int classroom_time;//上课地点、时间};//教师倒排表数据结构,通过教师姓名找到该教师的排课情况struct teacher_inverted {teacher_inverted(string tea, int cl = -1, int ar = -1) : teacher(tea), class_loc(cl), arrange_loc(ar) {}string teacher;int class_loc;int arrange_loc;};//教室倒排表数据结构,通过教室名称查找该教室的排课情况struct classroom_inverted {classroom_inverted(string cr, int cl = -1, int ar = -1) : classroom(cr), class_loc(cl), arrange_loc(ar) {}string classroom;int class_loc;int arrange_loc;};int main(int argc, char** argv) {if (argc != 3) {cout << "程序调用格式错误!\n调用格式:csp 排课计划文件可用教室文件\n";return 0;}ifstream infile(argv[1]);vector<schedule> plan;string s;getline(infile, s);while (getline(infile, s)) {schedule sch;istringstream record(s);record >> sch.grade_special >> sch.course >> sch.teacher >> sch.total_hour >> sch.teach_hour>> sch.experiment_hour >> sch.practice_hour >> sch.credit >> sch.week_hour >> sch.start_stop>> sch.speciality_orientation >> sch.person_num;plan.push_back(sch);}infile.close();vector<vector<arrange>> arranges; //整个系的排课安排vector<arrange> arr; //一个班的排课安排string gs(""); //教学班级for (auto it = plan.begin(); it != plan.end(); ++it) {if (gs != it->grade_special) {if (!arr.empty()) {arranges.push_back(arr); //教学计划按教学班级顺序排列arr.clear();}gs = it->grade_special;}arr.push_back(arrange(it->grade_special, it->course, it->teacher));}arranges.push_back(arr);vector<vector<teacher_inverted>> teachers; //教师数组for (unsigned i = 0; i < arranges.size(); ++i) {for (unsigned j = 0; j < arranges[i].size(); ++j) {string tea = arranges[i][j].teacher;if (tea == "未定") continue;unsigned k = 0;for (; k < teachers.size(); ++k) {if (teachers[k][0].teacher == tea) {teachers[k].push_back(teacher_inverted(tea, i, j));break;}}if (k == teachers.size()) {vector<teacher_inverted> ti; //一个教师的排课信息倒排表ti.push_back(teacher_inverted(tea, i, j));teachers.push_back(ti);}}}const int N = 256;bitset<N> ct; //教室时段的分配状况infile.open(argv[2]);;vector<string> classrooms;//教室数组while (getline(infile, s)) {classrooms.push_back(s);}infile.close();unsigned arrange_num = plan.size(); //待排课数目unsigned class_num = arranges.size(); //教学班级数目unsigned classroom_num = classrooms.size(); //教室数目uniform_int_distribution<unsigned> u(0, classroom_num * 20 - 1); //为教室时段分配随机数default_random_engine e(time(0));vector<unsigned> class_loc(class_num, 0); //教学班级已分配状况unsigned class_cur = 0; //待分配的教学班级序号,轮流为每个班级排课,一次安排一个班的一门课for (unsigned n = 0; n < arrange_num; ++n) {unsigned k = u(e);//如果某个班级的排课任务已经分配完成,则选择下一个班级继续排课while (class_loc[class_cur] == arranges[class_cur].size()) {class_cur = (class_cur + 1) % class_num;}//找到待排课任务的对应教师string tea = arranges[class_cur][class_loc[class_cur]].teacher;unsigned i = 0;for (; i < teachers.size(); ++i) {if (tea == teachers[i][0].teacher) break;}//找出与该教师无时间冲突的时段do {do {while (ct.test(k)) { k = (k + 1) % (classroom_num * 20); }unsigned m = 0;for (; m < class_loc[class_cur]; ++m) {if (arranges[class_cur][m].classroom_time % 20 == k % 20) break;}if (m == class_loc[class_cur]) break; //如果与前面已安排的该班级时间无冲突,则k可用k = (k + 1) % (classroom_num * 20); //如果有冲突则检查下一个教室时段是否可用} while (1);if (i == teachers.size()) break; //教师未定unsigned j = 0;for (; j < teachers[i].size(); ++j) {int m = arranges[teachers[i][j].class_loc][teachers[i][j].arrange_loc].classroom_time;if (m != -1 && (m % 20 == k % 20)) break;}if (j == teachers[i].size()) break; //如果与该教师的时间无冲突,则k可用k = (k + 1) % (classroom_num * 20); //如果有冲突则检查下一个教室时段是否可用} while (1);//排课arranges[class_cur][class_loc[class_cur]].classroom_time = k;ct.set(k);//将当前班级的排课号+1++class_loc[class_cur];//将待排课班级号+1class_cur = (class_cur + 1) % class_num;}loop: //输出cout << "\t\t高校自动排课系统\n";cout << "选择查询条件:1. 按班级2. 按教师3. 按教室\n";cout << "请输入查询序号:(输入-1退出系统)";unsigned choice = 0;cin >> choice;if (-1 == choice) {cout << "正常退出系统\n";return 0;}else if (1 == choice) {unsigned i = 0, j = 0;for (; i < arranges.size(); ++i) {cout << i << ". " << arranges[i][0].grade_special << "\t";if ((i + 1) % 4 == 0) cout << "\n";}cout << "\n";do {cout << "\n请输入待查询班级的序号:(输入-1结束查询)";cin >> i;if (i == -1) {break;}else if (i >= arranges.size()) {cout << "非法选择\n";continue;}int class_table[4][5];for (unsigned m = 0; m < 4; ++m)for (unsigned n = 0; n < 5; ++n)class_table[m][n] = -1;for (j = 0; j < arranges[i].size(); ++j) {unsigned m = arranges[i][j].classroom_time % 20;class_table[m / 5][m % 5] = j;}string time_slot[4] = { "8:00-9:40", "10:00-11:40", "14:00-15:40", "16:00-17:40" };cout << setiosflags(ios_base::left);cout << setw(54) << " " << arranges[i][0].grade_special << "班级课程表\n";cout << "============================================================================== ======================================================\n";cout << setw(12) << " " << setw(24) << "星期一" << setw(24) << "星期二" << setw(24) << "星期三" << setw(24) << "星期四" << setw(24) << "星期五" << "\n";for (unsigned m = 0; m < 4; ++m) {if (m % 2 == 0)cout << "============================================================================== ======================================================\n";elsecout << "------------------------------------------------------------------------------------------------------------------------------------\n";for (unsigned m1 = 0; m1 < 3; ++m1) {if (m1 == 1)cout << setw(12) << time_slot[m];elsecout << setw(12) << "";for (unsigned n = 0; n < 5; ++n) {if (class_table[m][n] != -1) {j = class_table[m][n];if (m1 == 0)cout << setw(24) << arranges[i][j].course;else if (m1 == 1)cout << setw(24) << classrooms[arranges[i][j].classroom_time / 20];elsecout << setw(24) << arranges[i][j].teacher;}elsecout << setw(24) << " ";}cout << "\n";}}cout << "============================================================================== ======================================================\n";cout << resetiosflags(ios_base::left);} while (1);}else if (2 == choice) {unsigned i = 0, j = 0;for (; i < teachers.size(); ++i) {cout << i << ". " << teachers[i][0].teacher << "\t";if ((i + 1) % 4 == 0) cout << "\n";}cout << "\n";do {cout << "\n请输入待查询教师的序号:(输入-1结束查询)";cin >> i;if (i == -1) {break;}else if (i >= teachers.size()) {cout << "非法选择\n";continue;}int class_table[4][5];for (unsigned m = 0; m < 4; ++m)for (unsigned n = 0; n < 5; ++n)class_table[m][n] = -1;for (j = 0; j < teachers[i].size(); ++j) {unsigned m = arranges[teachers[i][j].class_loc][teachers[i][j].arrange_loc].classroom_time / 20;class_table[m / 5][m % 5] = j;}string time_slot[4] = { "8:00-9:40", "10:00-11:40", "14:00-15:40", "16:00-17:40" };cout << setiosflags(ios_base::left);cout << setw(54) << " " << teachers[i][0].teacher << "老师课程表\n";cout << "============================================================================== ======================================================\n";cout << setw(12) << " " << setw(24) << "星期一" << setw(24) << "星期二" << setw(24) << "星期三" << setw(24) << "星期四" << setw(24) << "星期五" << "\n";for (unsigned m = 0; m < 4; ++m) {if (m % 2 == 0)cout << "============================================================================== ======================================================\n";elsecout << "------------------------------------------------------------------------------------------------------------------------------------\n";for (unsigned m1 = 0; m1 < 3; ++m1) {if (m1 == 1)cout << setw(12) << time_slot[m];elsecout << setw(12) << "";for (unsigned n = 0; n < 5; ++n) {if (class_table[m][n] != -1) {j = class_table[m][n];if (m1 == 0)cout << setw(24) << arranges[teachers[i][j].class_loc][teachers[i][j].arrange_loc].course;else if (m1 == 1)cout << setw(24) << classrooms[arranges[teachers[i][j].class_loc][teachers[i][j].arrange_loc].classroom_time / 20];elsecout << setw(24) << arranges[teachers[i][j].class_loc][teachers[i][j].arrange_loc].grade_special;}elsecout << setw(24) << " ";}cout << "\n";}}cout << "============================================================================== ======================================================\n";cout << resetiosflags(ios_base::left);} while (1);} else if (3 == choice) {vector<vector<classroom_inverted>> classroomes;for (unsigned i = 0; i < classrooms.size(); ++i) {classroom_inverted cr(classrooms[i]);vector<classroom_inverted> crs;crs.push_back(cr);classroomes.push_back(crs);}unsigned i = 0, j = 0;for (i = 0; i < arranges.size(); ++i) {for (j = 0; j < arranges[i].size(); ++j) {unsigned m = arranges[i][j].classroom_time;if (classroomes[m / 20][0].class_loc == -1) {classroomes[m / 20][0].class_loc = i;classroomes[m / 20][0].arrange_loc = j;}else {classroomes[m / 20].push_back(classroom_inverted(classroomes[m / 20][0].classroom, i, j));}}}for (i = 0; i < classrooms.size(); ++i) {cout << i << ". " << classrooms[i] << "\t";if ((i + 1) % 4 == 0) cout << "\n";}cout << "\n";do {cout << "\n请输入待查询教室的序号:(输入-1结束查询)";cin >> i;if (i == -1) {break;}else if (i >= classrooms.size()) {cout << "非法选择\n";continue;}int class_table[4][5];for (unsigned m = 0; m < 4; ++m)for (unsigned n = 0; n < 5; ++n)class_table[m][n] = -1;for (j = 0; j < classroomes[i].size(); ++j) {unsigned m = arranges[classroomes[i][j].class_loc][classroomes[i][j].arrange_loc].classroom_time % 20;class_table[m / 5][m % 5] = j;}string time_slot[4] = { "8:00-9:40", "10:00-11:40", "14:00-15:40", "16:00-17:40" };cout << setiosflags(ios_base::left);cout << setw(54) << " " << classrooms[i] << "教室课程表\n";cout << "============================================================================== ======================================================\n";cout << setw(12) << " " << setw(24) << "星期一" << setw(24) << "星期二" << setw(24) << "星期三" << setw(24) << "星期四" << setw(24) << "星期五" << "\n";for (unsigned m = 0; m < 4; ++m) {if (m % 2 == 0)cout << "============================================================================== ======================================================\n";elsecout << "------------------------------------------------------------------------------------------------------------------------------------\n";for (unsigned m1 = 0; m1 < 3; ++m1) {if (m1 == 1)cout << setw(12) << time_slot[m];elsecout << setw(12) << "";for (unsigned n = 0; n < 5; ++n) {if (class_table[m][n] != -1) {j = class_table[m][n];if (m1 == 0)cout << setw(24) << arranges[classroomes[i][j].class_loc][classroomes[i][j].arrange_loc].course;else if (m1 == 1)cout << setw(24) << arranges[classroomes[i][j].class_loc][classroomes[i][j].arrange_loc].teacher;elsecout << setw(24) << arranges[classroomes[i][j].class_loc][classroomes[i][j].arrange_loc].grade_special;}elsecout << setw(24) << " ";}cout << "\n";}}cout << "============================================================================== ======================================================\n";cout << resetiosflags(ios_base::left);} while (1);}else {cout << "非法选择\n";}goto loop;}。