课程设计(自动排课系统)
排课系统智慧管理设计方案

排课系统智慧管理设计方案智慧排课系统是一种基于人工智能技术的学校排课管理工具,可以根据课程要求、教师优势和资源利用情况等一系列因素,自动化地生成最优的排课方案。
本文将针对智慧排课系统的设计方案进行详细阐述。
一、系统需求分析1. 功能需求(1)自动排课功能:根据学校的课程要求和教师的优势,自动生成最优的课程排课方案。
(2)冲突检测功能:检测排课过程中的时间冲突和教室冲突,并及时提醒排课人员进行调整,确保排课的准确性。
(3)课程调整功能:提供对排课结果的修改和调整功能,允许排课人员根据实际情况进行灵活的调整。
(4)资源利用优化功能:根据教室和教师的资源利用情况,优化排课结果,实现资源的最大化利用。
(5)排课统计分析功能:提供排课结果的统计和分析功能,帮助学校了解课程安排情况和资源利用情况。
2. 性能需求(1)稳定性:系统要求能稳定运行,不出现系统崩溃和数据丢失等问题。
(2)高效性:系统需要能够在短时间内生成最优的排课方案,提高排课效率。
(3)安全性:系统要求保护排课数据的安全性,防止非授权人员对数据进行篡改或泄露。
二、系统设计1. 数据设计(1)教师数据:包括教师的姓名、工号、课程授课情况、时间设置等信息。
(2)课程数据:包括课程的名称、学时、上课时间要求等信息。
(3)班级数据:包括班级的名称、人数、教室安排等信息。
(4)时间数据:包括每天的上课时间段、每周的可用上课天数等信息。
(5)教室数据:包括教室的名称、容纳人数、可用时间段等信息。
2. 系统架构设计(1)前后端分离架构:将系统的前端和后端分离,减轻服务器的负担,提高系统的响应速度。
(2)采用智能算法:结合分析教师和课程数据的特点,采用智能算法进行排课,提高排课的效率和质量。
(3)使用数据库存储数据:将教师、课程、班级、时间和教室等数据存储在数据库中,提高数据的存取效率和数据的安全性。
三、系统实现1. 教师和课程数据录入:将教师和课程数据录入系统,包括教师的姓名、工号、课程授课情况、时间设置等信息,以及课程的名称、学时、上课时间要求等信息。
排课系统设计

大学自动排课算法设计与实现(课设说明书)

中北大学课程设计说明书软件工程大型实验学生姓名:史东海学号: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 添加用户顺序图管理员输用户名、密码和确认密码。
如果数据库对应表中有所输入的用户名则给出提示;没有则比较两次输入密码是否相同,相同条件成功;不同则给出相应提示。
面向高校教务管理的智能排课系统设计

面向高校教务管理的智能排课系统设计智能排课系统在现代高校教务管理中起着至关重要的作用。
随着高校规模的不断扩大和课程多样化的需求增加,传统的手工排课方法已经无法满足教务管理的要求。
因此,设计一个面向高校教务管理的智能排课系统至关重要。
该系统旨在提高排课效率、减少人力成本、优化课程安排,为学生和教师提供更好的教学环境。
首先,智能排课系统应当具备强大的算法和智能化的特征。
为了准确满足任务名称描述的内容需求,系统必须具备自动排课的能力,并能根据教务管理需求和约束条件进行合理的排课。
该系统应能根据不同的排课目标(如教室利用率最大化、教师空闲时间最大化)制定相应的排课策略。
同时,系统应当考虑到课程之间的冲突,如教室冲突、教师冲突等,并提供相应的解决方案。
其次,智能排课系统应充分利用现代信息技术手段,提供便捷的界面和友好的用户体验。
教务管理人员应能够轻松地操作系统,实现排课的各项功能。
系统应提供直观的课程信息展示、教师信息管理、教室资源管理等功能,以方便教务管理人员进行操作和决策。
同时,系统还应提供多种查询和统计功能,便于教务管理人员对排课结果进行监控和分析。
另外,智能排课系统还应当具备灵活的定制性。
高校的教学需求千差万别,所以系统应当具备灵活的配置选项,以满足不同高校的特定需求。
例如,系统应支持设置不同优先级的课程,以确保优先级较高的课程能够得到合理安排。
另外,系统还应支持对排课结果进行手动调整,以满足特殊需求或不可预测的情况。
此外,智能排课系统还应当具备良好的数据管理和安全性能。
高校的教务管理涉及大量的敏感数据,包括课程安排、教师信息、学生信息等。
因此,系统应具备强大的数据存储和管理机制,保证数据的完整性和安全性,并遵守相关的隐私法规。
另外,系统还应具备数据备份和恢复功能,以应对数据丢失和系统故障的情况。
最后,智能排课系统应当具备良好的扩展性和适应性。
高校教务管理是一个复杂而动态的过程,系统必须能够适应不断变化的需求和规模。
c课程设计排课系统

c 课程设计排课系统一、教学目标本课程旨在让学生掌握排课系统的基本原理和操作方法,理解排课系统的核心概念,培养学生运用排课系统解决实际问题的能力。
具体目标如下:1.知识目标:(1)了解排课系统的起源、发展及其在我国的应用现状。
(2)掌握排课系统的基本原理,包括课程安排、时间分配、教室资源管理等。
(3)理解排课系统中各个模块的功能及其相互关系。
2.技能目标:(1)能够熟练操作排课系统,进行课程安排和调整。
(2)能够根据实际需求,运用排课系统进行教室资源管理和调度。
(3)能够分析排课系统中存在的问题,并提出相应的优化方案。
3.情感态度价值观目标:(1)培养学生对排课系统的兴趣,提高学生运用信息技术解决实际问题的意识。
(2)培养学生团队协作、创新思维和责任意识,提高学生在排课系统使用过程中的综合素质。
二、教学内容本课程的教学内容主要包括以下几个部分:1.排课系统概述:介绍排课系统的起源、发展及其在我国的应用现状。
2.排课系统基本原理:讲解排课系统的工作原理,包括课程安排、时间分配、教室资源管理等。
3.排课系统各个模块功能:详细介绍排课系统中各个模块的功能及其相互关系。
4.排课系统操作方法:讲解如何熟练操作排课系统,进行课程安排和调整。
5.教室资源管理:讲解如何运用排课系统进行教室资源管理和调度。
6.排课系统优化:分析排课系统中存在的问题,并提出相应的优化方案。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。
具体方法如下:1.讲授法:用于讲解排课系统的基本原理、各个模块功能和操作方法。
2.讨论法:学生针对排课系统使用过程中遇到的问题进行讨论,培养学生的团队协作和创新思维。
3.案例分析法:分析实际案例,让学生了解排课系统在实际应用中的优势和局限。
4.实验法:安排实验室实践环节,让学生动手操作排课系统,提高实际操作能力。
四、教学资源本课程所需教学资源包括:1.教材:《排课系统教程》2.参考书:《现代排课系统设计与实现》、《教室资源管理策略》3.多媒体资料:排课系统使用说明书、实际应用案例视频等。
基于智能算法的校园自动化排课系统设计与实现

基于智能算法的校园自动化排课系统设计与实现校园自动化排课系统是一种基于智能算法的新一代教育管理工具,旨在帮助学校高效、准确地进行课程排定。
本文将介绍校园自动化排课系统的设计与实现,以及其所采用的智能算法。
一、系统设计1.需求分析在设计校园自动化排课系统之前,我们需要先进行需求分析。
该系统需要具备以下功能:- 自动识别学校的教学资源和班级数目,并能够根据学校的教学大纲自动生成课程表;- 能够考虑到师资的合理利用,根据教师的特长和排课偏好,分配教师给不同的班级和课程;- 能够处理课程冲突,避免同一时间段内安排了两门课;- 能够根据学生的选修课情况,合理调配教室和时间资源;- 提供灵活的排课参数设置,如考虑到体育课的时间、上课时间段的设置等等。
2.系统架构校园自动化排课系统的架构分为前端和后端两部分。
前端主要负责用户交互和展示,后端负责算法实现和数据处理。
前端采用现代化的Web技术,如HTML、CSS和JavaScript,以实现用户友好的界面;后端使用Java语言开发,并引入各种智能算法实现排课功能。
3.智能算法选择校园自动化排课系统需要选择适当的智能算法来进行排课。
目前,常用的智能算法包括遗传算法、模拟退火算法、禁忌搜索算法等。
在选择算法时,需要考虑到课程数量、教师和教室资源的规模以及排课的灵活性等因素。
针对不同的需求,可以选择合适的算法或者结合多种算法进行优化。
二、系统实现1.数据预处理在实现校园自动化排课系统之前,需要进行数据预处理。
这包括获取学校的教学资源、课程大纲、教师、班级和学生的信息,并进行整理和存储。
同时,也需要收集学生的选修课情况以及教师的排课偏好等额外信息。
2.算法实现基于智能算法的校园自动化排课系统的核心就是算法的实现。
以遗传算法为例,它可以通过模拟生物进化的方式,不断优化课程安排。
遗传算法主要包括初始化种群、评价种群适应度、选择优秀个体、交叉与变异等步骤。
在具体实现中,可以根据实际需求对算法进行调整和优化。
jsp学生排课选课系统课程设计

jsp学生排课选课系统课程设计一、课程目标知识目标:1. 学生能理解JSP技术的基本原理,掌握其在Web开发中的应用。
2. 学生能运用数据库知识,实现学生排课选课系统的数据存储和管理。
3. 学生了解并掌握SQL语言的基本操作,实现对数据库的增删改查功能。
技能目标:1. 学生能运用HTML、CSS和JavaScript等技术,设计并实现美观、易用的学生排课选课系统界面。
2. 学生能通过JSP技术实现服务器端的数据处理,提高系统的交互性。
3. 学生能够运用所学知识,独立完成一个完整的学生排课选课系统项目,提高实际编程能力。
情感态度价值观目标:1. 培养学生主动探索、合作学习的精神,增强学生对编程的兴趣和自信心。
2. 培养学生严谨、认真的学习态度,养成良好的编程习惯。
3. 通过团队协作,培养学生沟通、协调和解决问题的能力,提高学生的团队意识。
课程性质:本课程为实践性较强的课程,结合学生年级特点和教学要求,注重理论与实践相结合,培养学生的实际操作能力和编程思维。
学生特点:学生具备一定的编程基础,对Web开发有一定了解,但实践经验不足,需要通过课程学习,提高实际操作能力。
教学要求:教师应引导学生主动参与,激发学生的学习兴趣,注重个体差异,因材施教,使学生在完成课程目标的同时,提高自身综合素质。
二、教学内容1. JSP技术原理及基础应用:包括JSP运行原理、语法、内置对象、指令和脚本的使用,重点讲解如何在Web开发中运用JSP实现动态网页设计。
2. 数据库知识:介绍数据库的基本概念、SQL语言、数据库设计原则,结合学生排课选课系统,讲解数据表的设计和关系,实现数据的增删改查操作。
3. 前端技术:涉及HTML、CSS和JavaScript的基础知识,使学生能够设计和实现美观、易用的系统界面。
4. JSP与数据库的交互:讲解JDBC技术,实现JSP与数据库的连接,通过案例教学,使学生掌握服务器端数据处理的方法。
自动排课系统开发

计算机教学134 自动排课系统开发◆何德华排课问题是学校教务管理中一个非常重要的问题,具有非常重要的现实意义,为此,笔者开发一款自动排课系统,无论是对校领导还是普通教师都有很大的帮助和意义。
排课问题是学校教务管理中一个非常重要的问题,具有非常重要的现实意义。
一、系统自动排课系统的条件每一个技工院校的排课过程都是比较复杂多样,主要涉及到教师、课程、教室(教室所能容纳学生人数的多少)、班级(学生人数)、时间这五个相互制约的因素。
其中课程、教师、班级这三者已经固定不变,要变的是教室和时间,后二者是能够调配的。
系统自动排课问题的求解过程就是把任意的一门课程对应一个合适的老师,同时满足一个教室能让一个合适的班级上课。
在实际排课的中可能出现冲突现象,主要有这二大类约束,分别是软约束条件和硬约束条件。
下边我们先来分析软约束条件:(1)学生的上课时间在周一至周五尽量均匀分布,应避免一天课程很满而另一天却一整天没课的情况;(2)单门课程在一周中应尽量分散分布,这样教师有充足的时间备课和批改作业,学生也有时间做作业和复习消化;(3)单个教师的所有课程在一周中应分散分布,避免单个教师的课排满一整天;(4)尽量满足教师首选的上课时间;(5)尽量满足教师首选的上课地点。
硬约束条件(如有下列任何条件之一出现,则该课表是无效的):(1)在一个教室安排一堂课,这个教室必须要具备这堂课所需要的教学设备;(2)一个教室必须要有足够的座位来容纳这堂课的所有的学生;(3)在同一时间段内,一个教师或一个班级只能安排一门课程;(4)在同一时间段内,一问教室只能安排一门课程。
二、遗传算法设计我们所讲到的遗传算法进化中是以每个个体的适应度值为依据来选取下一代种群的。
用适应度函数设定的好坏直接影响到遗传算法的收敛速度和能否找到最优解。
在这一次的系统设计中,适应度值的设计只与硬约束条件有关。
我们设计的每一类可以是00到05分,如果一位老师在某一个时间段没有其他班的课,我们就再次递增加这门课的分数,我们检查的最后一件事情;如果要上某门课的学生班级里在同一时间没有其它课,就加一分,而一个课程表的总分是所有门课分数的总和;如果一门课要求是多媒体教室而它安排的教室是多媒体的教室,我们就增加它的分数;如果一个课表按照某一时空槽所制定的规则已经被占用,则不增加其得分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2008~2009学年度《WEB 程序设计》课程设计班级:05网络3班学号:090205338姓名:周秋艳2008年12月17日基于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分)详细分析各功能模块之间的关系,以及各功能模块下的子模块构成。
1 系统总体模块分析如下2 登陆子模块分析如下3 管理员子模块分析如下教师4 教师子模块分析如下5 注销子模块分析如下返回到登录页面四、数据库设计和建立(15分)1、与前面功能模块的划分相一致的建立合理的关系数据库,详细说明各关系表的属性与描述(每张关系表适当添加说明)。
数据库名称是PK,此数据库包含10张关系表,它们分别是:表1:ChooseCourse表2:ClassInfo表3:CourseGeneral表4:Department表5:RoomInfo表6:Speciality表7:TermInfo表8:TimeInfo表9:Timetabel表10:UserInfo2、建立数据库及表之间的关系图。
3、说明系统与数据库的连接方式。
此系统使用的数据库是SQL Server2000,连接数据库时用的方法是在系统配置文件Web.config中添加一连接字符串:<add key="dsn"value="server=(local);database=Paike;UserID=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)命令就可以很方便地实现数据库的管理。
2.第二种方案当然我们也可以通过配置web.config来实现<add key="dsn" value="Data Source=(local); UID=sa; PWD=jianglian; DA TABASE=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课时为例。
存储过程名为DetectArrangeCollisionCREA TE PROCEDURE DetectArrangeCollision@SureCourseID int,@RoomID int,@TimeID int,@TermID intasdeclare @Arrange_id intdeclare @UserID char(10)select @UserID=erID from Timetabel inner joinChooseCourse on Timetabel.SureCourseID=ChooseCourse.SureCourseIDwhere 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){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);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();}。