课程设计(自动排课系统)
- 格式:doc
- 大小:164.50 KB
- 文档页数:15
J 1SHANXI AGRIC 1UNIV 1(N at ural S cience Edition)学报(自然科学版)2009,29(3)002529收稿日期:2008211226 修回日期:2009201205作者简介:韩勇鹏(19782),男(汉),山西太谷人,主要从事计算机监控系统、教务管理方面的研究。
高校公共选修课自动排课系统的设计与实现韩勇鹏(山西农业大学教务处,山西太谷030801)摘 要:为实现教务管理中公共选修课在必修课安排的基础上合理化、智能化的安排,讨论了一个高校公共选修课自动排课系统的结构与功能。
该系统共由输入、排课、输出,查询,统计,以及Web 六个主模块组成。
算法的数据结构实现是以三个类(Teacher ,SelectClass 1Room )组成,其中,主要分析了依据必修课密度进行公共选修课分布以及在自动化排课模块中由教师T 、课程SC 、教室R 组成的三元组与时间H 的匹配问题。
该系统的设计开发为实现高校公共选修课程编排的微机化作业提供了一种有效的新途径。
关键词:排课系统;算法;类中图分类号:TP311111 文献标识码:A 文章编号:167128151(2009)0320281203Design and Implementation of a College Course Arrangement System H AN Y ong 2peng(O f f ice of A cademic A f f ai rs ,S hanx i A g ricutural Universit y ,Tai gu S hanx i 030801,China )Abstract :For the realization of the Senate in the management of public elective courses in the arrangement based on ra 2tionalization and intelligent arrangements ,in the paper ,we discussed the design and implementation of a college course arrangement system.The system is constituted of six components ,namely ,input ,arrangement ,output ,search ,sta 2tistic and web.The core data structures of the arrangement algorithm are the three classes (Teacher ,SelectClass 1Room ).Moreover ,we analyzed the distribution of electives according to the density of the required courses and solved the match problem of the quadruple ,i 1e 1,the teachers T ,the classes SC ,the class rooms R and the timeline H.The system provides an effective way for arranging lessons.K ey w ords :Arrangement system ;Algorithm ;Class 近年来,随着高校的扩招,全国各高校在校学生人数逐年增加,班级的数量也进一步增多,这就给高校的排课工作加大了难度,尤其是公共选修课。
中北大学课程设计说明书软件工程大型实验学生姓名:史东海学号:0706054208 学院: 电子与计算机科学技术学院专业: 软件工程题目: 大学自动排课算法设计与实现系统——登陆及用户管理子系统成绩指导教师:宋礼鹏职称: 讲师2010 年 1 月 21 日1.设计目的该系统并不是所有人都能随便使用的。
系统应该有不同的权限用于排课和课表的查询,通过登陆可以解决权限问题。
而用户是会经常变动的(比如毕业生的离校),所以需要对用户进行相应的管理(如添加、删除及密码的修改),所以需要实现用户管理功能。
2.设计内容在整个系统中本人主要负责登陆和用户管理功能的实现,同时也参加算法的设计与实现。
本系统要涉及到管理人员、教师、学生三个不同的参与者,有两个不同的权限。
管理员可以录入教师、教室、班级等基本的信息然后进行排课,而教师和学生只具有查询课表的权限。
所以在登录的时候要把不同的权限划分出来。
程序在设计好后数据库中有一个默认的管理员的用户名和密码,通过该用户名和密码可以登陆系统,然后通过用户管理模块可以添加教师、学生或管理员。
为了防止用户忘记密码,管理员可以在不知道原始密码的情况下修改用户的密码。
而教师或学生若想修改自己的密码必须输入旧密码。
3.需求描述图1 登陆及用户管理子系统用例图用例描述如下:表1 UserManagement用例描述表表2 Login用例描述表表3 AddUser用例描述表表4 DeleteUser用例描述表表5 ModifyPassword用例描述表4.系统详细分析设计4.1顺序图(1)登陆顺序图:图2 登陆顺序图登陆首先输入用户名和密码,然后程序到数据库中查询用户名是否存在,密码是否正确,如果正确则登陆成功;不正确登陆失败,可以继续登陆或关闭登陆窗口。
(2)添加用户顺序图:图3 添加用户顺序图管理员输用户名、密码和确认密码。
如果数据库对应表中有所输入的用户名则给出提示;没有则比较两次输入密码是否相同,相同条件成功;不同则给出相应提示。
数据库原理课程设计(2012级)黄山学院自动排课系统的数据库设计姓名:李华阳学号: 21206031023 指导教师:丁丙胜院系:信息工程学院专业:计算机科学与技术提交日期:2014—06—122012级计本数据库原理课程设计目录1. 引言 (3)2. 系统需求分析 (4)2.1 功能需求分析 (4)2.1.1本系统的功能需求分析 (4)2.1.2 排课的基本原则要求 (5)2.2 数据流图 (6)2.3 数据字典 (7)2.3.1 数据项 (7)2.3.2 数据结构 (10)2.3.3 数据流 (10)2.3.4 数据存储 (11)2.3.5 处理过程 (12)3.系统功能设计 (13)3.1 系统功能描述 (13)3.1 系统模块分析 (13)4. 数据库概念模型概念 (14)4.1 概念结构设计的方法 (14)4.2 概念结构设计的步骤 (14)4.3 数据抽象与局部视图设计 (15)4.4 视图集成设计 (15)5. 数据库逻辑结构设计 (16)5.1 数据概念模型的优化 (16)5.2 数据逻辑设计 (17)6. 数据库物理结构设计 (19)结束语 (21)参考文献 (22)22012级计本数据库原理课程设计1.引言随着我国计算机技术、互联网行业的快速发展,计算机的开发应用已渗透到各个领域,成为各行各业必不可少的工具,而且日趋普及。
自动排课管理是学校日常工作中经常要面对的事情,传统的自动排课管理只能是通过手工、分散的管理方式,查找、复核困难,资源不能充分利用,造成资源浪费。
现在相当一部分学校在进行自动排课工作时仍沿用手工方式。
老师为了组织一次排课.不仅要应付课程需要的教师安排、自动排课、学生管理。
人工排课需要经过三个步骤.一是对课程班级人员的选择.二是对课程需求教室的选择,三是根据课程教室分配学生.这些工作浪费了大量的宝贵时间,同时安排位置的工作由于人员多.容易出错.而且安排不具有随机性.不够客观。
摘要随着社会的发展,在现在的社会,信息的各种操作都需要通过计算机软件来完成。
当今,素质化教育也在校园内不断地得到深化。
自动排课模式也在许多的学校内开始遍布了,而传统的教学模式渐渐被取代了。
自动化排课系统,可以满足学校教务处对于排课管理的需求,减少教务人员工作量的同时降低排课中的并发和错选等问题。
学生通过网页可以随时随地进行选课,节约了大量统计时间;教务人员通过设置排课规则快速的完成课程的安排,易于调整修改;教师可以快速方便的安排课程信息。
该系统采用数据集中管理、统计分布式管理。
自动排课系统的系统设计是基于JSP技术的,它具有灵活的一体化发展战略,圆满完成了整个系统的全面设计。
自动排课系统,采用一个简单的界面,操作方便,灵活,实用,有效的简化了自动排课管理系统的过程,大大提高了自动排课系统的效率,使之更加系统化体系化、标准化、自动化,具有优良的可用性、可靠性和安全性。
该系统采用标准的MVC三层架构,包括表示层、控制层和业务层三个部分,降低了系统开发的复杂性。
这个项目具体是运用了JSP,提高系统的运行性和安全性,并且方便了后期的维护和操作。
系统主要实现了教师列表、班级列表、学生列表、教师列表、课程列表、排课列表、管理员列表等功能模块,具有良好的实用性。
关键词:自动排课;B/S 模式;MVC;JSPAbstractWith the development of society, in the information society, information acquisition, processing, communication and decision-making needs of high-quality computer software. Today, the quality of education are constantly deepened campus. Smart Scheduling model is also in many schools throughout the beginning, while the traditional teaching model was gradually replaced. Intelligent Scheduling System, arranging to meet the needs of the school management for Academic Affairs, reducing the workload of academic staff while reducing concurrency and arranging the wrong choice and other issues. Student enrollment at any time via the web can save a lot of statistical time; rapid completion of the academic staff by organizing courses set Scheduling rules, easy to adapt and modify; teachers can quickly and easily arrange course information. The system uses a centralized data management, statistical distributed management.Senate elective system design management system is based on JSP technology, it has a flexible integrated development strategy, the successful completion of a comprehensive design of the entire system. Academic course management system that uses a simple interface, easy to operate, flexible, practical and effective management system simplifies the Senate elective process, greatly improving the efficiency of educational administration course management system to make it more systematic system, standardization, automation with excellent availability, reliability and security. The system uses three standard MVC architecture, including the presentation layer, control layer and service layer three parts, reducing the complexity of system development. The main use of JSP technology development, improve the system performance and security, and easy to maintain and operate. System is mainly to achieve the teacher lists, class lists, list of students, teachers, lists, list of courses, arranging the list, the list of administrators and other functional modules, with good usability.Key words : Academic Course management; B / S mode; MVC; JSP目录摘要 (I)Abstract (II)1 绪论........................................................................................................................................ - 1 -1.1 课题研究背景及意义.................................................................................................. - 1 -1.2 课题研究现状.............................................................................................................. - 1 -1.3 本课题主要工作.......................................................................................................... - 2 -2 系统相关技术........................................................................................................................ -3 -2.1 J2EE技术 ...................................................................................................................... - 3 -2.2 MVC模式...................................................................................................................... - 3 -2.3 B/S结构......................................................................................................................... - 3 -2.4 数据库技术.................................................................................................................. - 3 -2.5 本章小结...................................................................................................................... - 3 -3 系统需求分析.................................................................................................................... -4 -3.1 系统总体目标.............................................................................................................. - 4 -3.2 系统可行性分析.......................................................................................................... - 4 -3.2.1 操作可行性分析................................................................................................ - 4 -3.2.2 技术可行性分析................................................................................................ - 4 -3.3 系统功能需求分析...................................................................................................... - 5 -3.4 系统非功能需求分析.................................................................................................. - 5 -3.5 系统开发环境与开发工具.......................................................................................... - 6 -4 系统设计与实现.................................................................................................................... - 7 -4.1 系统设计目标和原则.................................................................................................. - 7 -4.2 系统架构设计.............................................................................................................. - 7 -4.3 数据库设计.................................................................................................................. - 9 -4.3.1 数据库的选定.................................................................................................... - 9 -4.3.2 数据库概念模型设计........................................................................................ - 9 -4.3.3 数据库逻辑设计.............................................................................................. - 12 -5 系统详细设计与实现.......................................................................................................... - 15 -5.1 数据库连接实现........................................................................................................ - 15 -5.2 系统登录实现............................................................................................................ - 16 -5.3 系统功能模块实现.................................................................................................... - 17 -5.3.1 管理员功能模块的实现.................................................................................. - 17 -5.3.2 学生功能模块的实现...................................................................................... - 22 -5.3.3 教师功能模块的实现...................................................................................... - 23 -6 系统测试.............................................................................................................................. - 25 -6.1 软件测试.................................................................................................................... - 25 -6.2 功能检测.................................................................................................................... - 25 -6.3 系统配置要求............................................................................................................ - 25 -6.4 测试内容.................................................................................................................... - 25 -6.5 测试结果.................................................................................................................... - 29 -6.6 本章小结.................................................................................................................... - 29 - 结论.................................................................................................................................. - 30 - 参考文献............................................................................................................................ - 31 - 致谢.................................................................................................................................. - 32 -1绪论1.1课题研究背景及意义20世纪末,计算机的诞生与发展将人类带入到一个全新的领域中,如今已经成为解决很多工程问题的必要途径。
基于智能算法的校园自动化排课系统设计与实现校园自动化排课系统是一种基于智能算法的新一代教育管理工具,旨在帮助学校高效、准确地进行课程排定。
本文将介绍校园自动化排课系统的设计与实现,以及其所采用的智能算法。
一、系统设计1.需求分析在设计校园自动化排课系统之前,我们需要先进行需求分析。
该系统需要具备以下功能:- 自动识别学校的教学资源和班级数目,并能够根据学校的教学大纲自动生成课程表;- 能够考虑到师资的合理利用,根据教师的特长和排课偏好,分配教师给不同的班级和课程;- 能够处理课程冲突,避免同一时间段内安排了两门课;- 能够根据学生的选修课情况,合理调配教室和时间资源;- 提供灵活的排课参数设置,如考虑到体育课的时间、上课时间段的设置等等。
2.系统架构校园自动化排课系统的架构分为前端和后端两部分。
前端主要负责用户交互和展示,后端负责算法实现和数据处理。
前端采用现代化的Web技术,如HTML、CSS和JavaScript,以实现用户友好的界面;后端使用Java语言开发,并引入各种智能算法实现排课功能。
3.智能算法选择校园自动化排课系统需要选择适当的智能算法来进行排课。
目前,常用的智能算法包括遗传算法、模拟退火算法、禁忌搜索算法等。
在选择算法时,需要考虑到课程数量、教师和教室资源的规模以及排课的灵活性等因素。
针对不同的需求,可以选择合适的算法或者结合多种算法进行优化。
二、系统实现1.数据预处理在实现校园自动化排课系统之前,需要进行数据预处理。
这包括获取学校的教学资源、课程大纲、教师、班级和学生的信息,并进行整理和存储。
同时,也需要收集学生的选修课情况以及教师的排课偏好等额外信息。
2.算法实现基于智能算法的校园自动化排课系统的核心就是算法的实现。
以遗传算法为例,它可以通过模拟生物进化的方式,不断优化课程安排。
遗传算法主要包括初始化种群、评价种群适应度、选择优秀个体、交叉与变异等步骤。
在具体实现中,可以根据实际需求对算法进行调整和优化。
VB课程设计大学排课系统1.设计目的排课管理是高校每个学期教学教务管理工作的一个主要内容,是整个综合教学教务管理系统中必不可少的部分。
排课也是一项复杂而精细的工作,归纳起来主要有五方面相互作用、相互关联的因素,即课程、教师、时间、班级以及教室。
教务处根据教学计划的要求、实际招生人数、教师资源情况、每学期要开设的课程、开课计划,公共课程(包括公共英语、马列课、公共体育、计算机基础、高等数学等)进行分组处理,自动排课,以班为单位形成课程表,以教室为单位形成教室使用表,供教师、教学楼管理员使用。
2.设计内容本次课程设计中完成排课算法和课表查询的实现,排课包括手动排课、自动排课和手动调整,查询包括班级课表、教室课表以及教师课表的查询,手动排课是管理员可以自己选择课程名称、教师名称、班级编号、教室编号和上课时间,然后将排课信息存到数据库表中,自动排课是自动调用任课表中的课程、教师和每周节数、班级信息表中的班级编号、教室信息表中的教室编号以及时间表中的上课时间,然后根据算法自动进行排课。
查询可以根据班级编号、教室编号、教师姓名查出手动排课和自动排课后的班级课程表、教室课程表和教师课程表,自动排课后的课程表支持预览打印。
打印是通过程序调用Excel表格,显示出课程表3.需求描述图1 系统功能结构图查询老师信息修改老师信息图2 系统用例图3.1参与者学生:查询学生课表,在查询课表时首先应该登录,所以课表查询用例要包含登陆用例。
教师:查询教师课表,在查询课表时首先也应该登录。
院管理员:可以编辑信息,查询课表信息。
校管理员:可以编辑信息,查询课表信息,可以进行排课以及调整课表3.2用例描述(1)自动排课○1用例:自动排课○2简要说明:通过调用数据库表完成对课程的安排○3事件流:基本事件流○4前置条件:已成功登录系统,任课表里存在记录○5后置条件:完成对课程的安排,并形成课表○6优先级:3基本事件流:a)院管理员发出自动排课请求b)系统根据数据库存储的信息自动排课,并形成课表c)系统提示自动排课成功(2)手动排课○1用例:手动排课○2简要说明:通过手动选择相关信息完成对课程的安排○3事件流:基本事件流○4前置条件:已成功登录系统○5后置条件:完成对课程的安排,并形成课表○6优先级:3基本事件流a)院管理员选择相关信息对课程安排b)系统完成对课程安排的存档并形成课表c)系统提示手动添加成功(3)班级课表查询○1用例:班级课表查询○2简要说明:通过输入班级编号查询该班级课表○3事件流:基本事件流○4前置条件:已成功登录系统,且数据库中存在该班级课表记录○5后置条件:查询并显示出该班级课表○6优先级:3基本事件流a)学生输入班级编号请求查询该班级课程表b)系统完成对该班级课表的查询并显示出来(4)教室课表查询○1用例:教室课表查询○2简要说明:通过输入教室编号查询该教室课表○3事件流:基本事件流○4前置条件:已成功登录系统,且数据库中存在该教室课表记录○5后置条件:查询并显示出该教室课表○6优先级:3基本事件流a)管理员输入教室编号请求查询该教室课程表b)系统完成对该教室课表的查询并显示出来(5)教师课表查询○1用例:教师课表查询○2简要说明:通过输入教师姓名查询该教师课表○3事件流:基本事件流○4前置条件:已成功登录系统,且数据库中存在该教师课表记录○5后置条件:查询并显示出该教师课表○6优先级:3基本事件流c)教师输入教师请求查询该教师课程表d)系统完成对该教师课表的查询并显示出来(6)登录○1用例:登录○2简要说明:通过输入验证用户名和密码登入系统○3事件流:基本事件流和扩展事件流○4前置条件:用户启动该系统○5后置条件:通过验证并进入系统○6优先级:5基本事件流:a)系统提示用户选择用户角色,输入登录信息b)用户选择用户角色,输入用户名和密码c)用户发出登录请求d)系统验证登录信息e)验证通过A01不存在这个用户A02登录信息填写不完整f)系统跳至主界面扩展事件流:A01不存在这个用户g)系统提示不存在这个用户h)系统提示请重新选择角色、输入登录信息i)用户选择取消登录,则结束用例j)否则,系统跳至基本事件流2k)重复三次,则系统自动关闭A02 登录信息填写不完整l) 系统提示某个登录信息未输入m) 用户输入该登录信息n) 系统跳至基本事件流24.系统详细分析设计4.1顺序图(1):图3 自动排课顺序图(2):图4 手动排课顺序图(3):图5 查询课表顺序图4.2 活动图否]图6 活动图图7 类图图8 部署图4.5构件图图9 构件图4.6 数据库表表2 学院信息表表3 系信息表表4 班级信息表表7 时间表表8 课程信息表表9 任课表表10 排课表5.系统实现5.1开发工具及系统运行环境开发工具:Microsoft Visual Basic6.0、Microsoft Access2003 运行环境:Windows7、WindowsXP5.2 排课、查询子系统实现(1)手动排课图10 手动排课该界面通过下拉列表选择课程名称、任课教师、教室编号、班级编号和上课时间,点击确定即会添加至数据库表中,右面的表格也会刷新显示出最新的课程安排。
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 怎样的合班组合能避免冲突?目前采取的方式是相同或相近的专业的班级组合。
2.2 什么地方有空能排课?对教室和班级而言是查空,对教师而言是有无排课需求。
2.3 有两个以上的空哪一个更好?是要考虑离散和平衡问题。
2.4 排课前如何考虑教师宏观利用问题?例如:多媒体大班课:大学英语、高等数学尽量排在上午,思想道德修养、马克思主义哲学原理等尽量排在下午。
2.5 对于数量巨大的信息,系统仍具有较快的响应速度和较小的系统开销。
三、系统功能模块分析(25分)详细分析各功能模块之间的关系,以及各功能模块下的子模块构成。
22008—2009 学年度<<WEB 程序设计>>课程设计周秋艳31 系统总体模块分析如下2 登陆子模块分析如下3 管理员子模块分析如下教师4 教师子模块分析如下5 注销子模块分析如下返回到登录页面四、数据库设计和建立(15分)1、与前面功能模块的划分相一致的建立合理的关系数据库,详细说明各关系表的属性与描述(每张关系表适当42008—2009 学年度<<WEB 程序设计>>课程设计周秋艳5 添加说明)。
数据库名称是PK ,此数据库包含10张关系表,它们分别是: 表1:ChooseCourse表2:ClassInfo表3:CourseGeneral表4:Department表5:RoomInfo表6:Speciality表7:TermInfo表8:TimeInfo表9:Timetabel表10:UserInfo2、建立数据库及表之间的关系图。
62008—2009 学年度<<WEB 程序设计>>课程设计周秋艳7 3、说明系统与数据库的连接方式。
此系统使用的数据库是SQL Server2000,连接数据库时用的方法是在系统配置文件Web.config 中添加一连接字符串: <add key="dsn"value="server=(local);database=Paike;User ID=sa;password=123;Max Pool Size=1000" />五、 主要界面及相关代码分析(35分)通过系统目标和数据分析创建好数据库后,接下来进行系统功能的开发和实现。
该系统流程图如图所示。
系统中采用的主要技术1用打开数据库的方法程序中通过存取数据库的数据是以离线的数据为基础的,你可以在本地的机器上对数据集进行数据的添加、删除或修改,然后更新回真正的数据库。
具体实现过程为以下几步:1.第一种方案1)首先要导入名称空间<%@ Import namespace="System" %><%@ Import namespace="System.Data" %><%@ Import namespace="System.Data.SqlClient "%>2)建立与数据库的连接SqlConnection myconnection;myconnection=new SqlConnection("server=localhost;uid=sa;pwd=;database=数据库名称");3)在此数据连接上,执行SQL语句,返回所需的数据集Stringc md="select * from数据表名称";SqlDataAdapter mycommand = new SqlDataAdapter ( cmd,myconnection);DataSet ds=new DataSet();mycommand.Fill(ds,reg);数据连接成功后,利用Sql的插入(INSERT)、删除(DELETE)和更新(UPDA TE)命令82008—2009 学年度<<WEB 程序设计>>课程设计周秋艳9 就可以很方便地实现数据库的管理。
2.第二种方案当然我们也可以通过配置web.config 来实现<add key="dsn" value="Data Source=(local); UID=sa; PWD=jianglian; DATABASE=tkxt"/>2 异常的捕获与控制为了提高系统的交互性与运行的可靠性,系统对各类操作异常和运行异常进行捕获与控制。
操作异常是利用 提供的几个验证控件和设置下拉框来实现的,如录入试题时必须先选择章节、知识点、题型,采用下拉框的形式确保试题属于某一知识点;运行异常捕获是使用try()…catch()的结构实现的。
如对数据库进行操作时,对用户输入的题目进行判断,若该题目存在,则提示数据已存在。
具体实现如下:try{ mycommand.ExecuteNonQuery(); lblout.Text="插入成功"; //插入成功 }catch(SqlException exc) { if (exc.Number==2627)lblout.Text="数据已存在"; //数据已存在 elselblout.Text =" error number is:" + exc. Number + exc.Message; //其它错误 }其中lblout 为一个label 控件。
3 自动排课的算法分析用户在自动排课时,可对排课提出多方面的要求,如从教师,教室,时间,课时数目等方面,同时满足多方面的要求并非易事;另外在数据量不是很大的时候要实现自动排课的成功率难度较大,因此排课的算法的优劣直接影响到所排课程的好坏,本系统采用随机排课方式,但是解决了排课算法中的冲突问题。
(排课的具体实现代码在界面与代码分析中)4 排课算法冲突解决方法分析排课算法中的主要的冲突是教室冲突和教室冲突。
我将再通过存储过程的来解决这样的冲突,下面介绍一学期16周,某一门课程32课时为例。
存储过程名为DetectArrangeCollisionCREATE PROCEDURE DetectArrangeCollision @SureCourseID int, @RoomID int, @TimeID int, @TermID int asdeclare @Arrange_id int declare @UserID char(10)select @UserID=erID from Timetabel inner joinChooseCourse on Timetabel.SureCourseID=ChooseCourse.SureCourseID where ChooseCourse.SureCourseID=@SureCourseIDselect @Arrange_id=Arrange_id from Timetabel where ( (RoomID=@RoomID and TimeID=@TimeID ) or ( Timetabel.SureCourseID in ( selectSureCourseID from ChooseCourse where UserID=@UserID)and TimeID=@TimeID )) /*检查教室和教师冲突*/if @Arrange_id <>nullbeginselect * from Timetabel where Arrange_id=@Arrange_id /*查询出数据*/endelsebegindeclare @currentID intselect @currentID=count(*)from Timetabelwhere SureCourseID= @SureCourseID and TermID= @TermIDif ( @currentID <=0)/*查看数据库中是否有重复*/insert into Timetabel values (@TermID,@SureCourseID,@RoomID ,@TimeID)select * from Timetabel where Arrange_id=0endGO1.登录界面login.aspxpublic string[] UserLogin(string UserName,string password){String[] CheckLogin;int Permit=0;string UserID="";SqlParameter[] parameters={new SqlParameter("@UserName",SqlDbType.VarChar ,50),new SqlParameter("@UserPassword",SqlDbType.VarChar ,50),new SqlParameter("@UserID",SqlDbType.Char ,10),new SqlParameter("@result",SqlDbType.Char ,10),new SqlParameter("@Permit",SqlDbType.Int ,4) };parameters[0].Value =UserName;parameters[1].Value =password;parameters[2].Direction=ParameterDirection.Output;parameters[3].Direction=ParameterDirection.Output;parameters[4].Direction=ParameterDirection.Output;int rowsAffected;RunProcedure("sp_UserLogin",parameters,out rowsAffected);// result: NoUser// success,or nouser,or pswerror,// Permit, 如果角色还没分配怎么办if (parameters[4].Value!=DBNull.Value){Permit= Convert.ToInt32(parameters[4].Value);}//设没有这个老师,2008.9.26if (parameters[2].Value!=DBNull.Value)2008—2009 学年度<<WEB程序设计>>课程设计{UserID=Convert.ToString(parameters[2].Value); }CheckLogin=new string []{ UserID, (String)(parameters[3].Value), Convert.ToString(Permit) };return (CheckLogin);}2.自动排课界面GenerateTimeTable.aspxprivate void PK_Click(object sender, System.EventArgs e){int j;int k;string r;con.Open();SqlCommand del = new SqlCommand("delete Timetabel where TermID='"+Convert.ToInt32(ddl1.SelectedValue.ToString().Trim())+"'", con);del.ExecuteNonQuery();//清空Timetabel表里面所有教师任课的信息DataSet ds = new DataSet();SqlDataAdapter da = new SqlDataAdapter("SELECT CourseID FROM CourseGeneral",con);da.Fill(ds, "CourseID");for (int i = 0; i < ds.Tables[0].Rows.Count; i++){SqlCommand coure = new SqlCommand("select CourseName,Period from CourseGeneral where CourseID='" + ds.Tables[0].Rows[i][0] + "' ", con);SqlDataReader reader1 = coure.ExecuteReader();if(reader1.Read()){string cr = reader1.GetValue(0).ToString();pr = reader1.GetValue(1).ToString();}reader1.Close();if(int.Parse(pr)/16==2){SqlCommand cmd = new SqlCommand("select RoomID from RoomInfo", con);//调用存储过程,筛选出某门课程某个班级上SqlDataReader dr = cmd.ExecuteReader();j = 0;k = 0;while (dr.Read()){field1[j] = dr[0].ToString();j++;} //获得该课程给定时间的每个可用场地,附值给数组field1[j]dr.Close();SqlCommand cmd1 = new SqlCommand("SELECT SureCourseID FROM ChooseCourse where CourseID in (select CourseID from CourseGeneral where CourseGeneral.Period=32) ", con); SqlDataReader dr1 = cmd1.ExecuteReader();while (dr1.Read()){class1[k] = dr1[0].ToString();k++;}//获得确定,附值给class1[k]dr1.Close();Random rnd = new Random();for (int m =0; m<10; m++)//随即调换class1数组里面的成员{int x = rnd.Next(j);//得0~k的随机数r = field1[x];field1[x] = field1[0];//第一个跟第x个调换field1[0] = r;}for (int n = 0;n<k;n++)//下面为更新插入数据库的操作{SqlCommand cm=new SqlCommand("DetectArrangeCollision",con);mandType=CommandType.StoredProcedure;cm.Parameters.Add(new SqlParameter("@SureCourseID",SqlDbType.Int,4));cm.Parameters.Add(new SqlParameter("@RoomID",SqlDbType.Int,4));cm.Parameters.Add(new SqlParameter("@TimeID",SqlDbType.Int,4));cm.Parameters.Add(new SqlParameter("@TermID",SqlDbType.Int,4));cm.Parameters["@SureCourseID"].Value=Convert.ToInt32(class1[n]).ToString().Trim();if(Convert.ToInt32(field1[n])!=0){cm.Parameters["@RoomID"].Value=Convert.ToInt32(field1[n]);}else{int n1=rnd.Next(j);2008—2009 学年度<<WEB程序设计>>课程设计cm.Parameters["@RoomID"].Value=Convert.ToInt32(field1[n1]);}cm.Parameters["@TimeID"].Value=rnd.Next(24)+1;cm.Parameters["@TermID"].Value=Convert.ToInt32(ddl1.SelectedValue.ToString().Trim()); cm.ExecuteNonQuery();}}else if(int.Parse(pr)==64){SqlCommand cmd = new SqlCommand("select RoomID from RoomInfo", con);//调用存储过程,筛选出某门课程某个班级上SqlDataReader dr = cmd.ExecuteReader();j = 0;k = 0;while (dr.Read()){field1[j] = dr[0].ToString();j++;} //获得该课程给定时间的每个可用场地,附值给数组field1[j]dr.Close();SqlCommand cmd1 = new SqlCommand("SELECT SureCourseID FROM ChooseCourse where CourseID in (select CourseID from CourseGeneral where CourseGeneral.Period=64) ", con); SqlDataReader dr1 = cmd1.ExecuteReader();while (dr1.Read()){class1[k] = dr1[0].ToString();k++;}//获得确定,附值给class1[k]dr1.Close();Random rnd = new Random();for (int m =0; m<10; m++)//随即调换class1数组里面的成员{int x =rnd.Next(j);//得0~k的随机数r = field1[x];field1[x] = field1[0];//第一个跟第x个调换field1[0] = r;}for (int q = 0;q<k;q++)//下面为更新插入数据库的操作{for(int n= 0;n<k;n++){SqlCommand cm=new SqlCommand("DetectArrangeCollision1",con);mandType=CommandType.StoredProcedure;cm.Parameters.Add(new SqlParameter("@SureCourseID",SqlDbType.Int,4));cm.Parameters.Add(new SqlParameter("@RoomID",SqlDbType.Int,4));cm.Parameters.Add(new SqlParameter("@TimeID",SqlDbType.Int,4));cm.Parameters.Add(new SqlParameter("@TermID",SqlDbType.Int,4));cm.Parameters["@SureCourseID"].Value=Convert.ToInt32(class1[n]).ToString().Trim();if(Convert.ToInt32(field1[n])!=0){ int z= rnd.Next(j);cm.Parameters["@RoomID"].Value=Convert.ToInt32(field1[z]);}else{int n1=rnd.Next(j);cm.Parameters["@RoomID"].Value=Convert.ToInt32(field1[n1]);}cm.Parameters["@TimeID"].Value=rnd.Next(24)+1;cm.Parameters["@TermID"].Value=Convert.ToInt32(ddl1.SelectedValue.ToString().Trim()); cm.ExecuteNonQuery();}}}}Response.Write("<script>alert('排课完毕!')</script>");con.Close();}。