课程设计(自动排课系统)

合集下载

新高考排课系统功能设计方案

新高考排课系统功能设计方案

新高考排课系统功能设计方案目录1、排课系统介绍 (3)2、整体结构 (4)3、主要功能 (5)3.1、参数设置 (6)3.2、基本信息 (7)3.3、培养方案 (8)3.4、计划管理 (9)3.4、智能排课 (9)3.6、手动排课 (10)3.7、课表打印 (11)1、方案介绍排课系统是一款智能化的排课软件。

它通用性强,能完成各类学校的排课任务。

采用先进的概率比较分散技术,能最大限度的满足各种排课要求,预防冲突的发生。

该款软件功能性强,界面美观简洁,使用方便。

可以设置各种排课条件,具有自动排课、手动调课,查询搜索班级、老师、学科的课程表,参数设置、基本信息、培养方案、计划管理、智能排课、手动排课、课表打印等一系列较为完善的功能。

使用该排课软件能大大地减轻排课的工作强度,是广大教务工作者不可多得的得力帮手。

2、整体结构3、主要功能3.1、参数设置排课系统参数设置具体包括如下:•排课参数的设置(每学期上课周数、每周上课天数、每天上课节次等安排)。

•数据的一键清空。

•排课条件和优先级设置。

•排除规则,以教师或场地为主进行设置不排、要排和指定排。

•课表显示设置(班级课表、教师课表、教室课表和总课表)。

界面图片:3.2、基本信息排课需提供以下五个表格:•班级信息•教师信息•教学场所•课程信息•专业信息界面图片:3.3、培养方案•可在此制作所有专业及全年级的培养方案。

•表格可进行拖动方式进行分类查看。

•一键生成教学计划界面图片:3.4、计划管理•教学计划表格由培养方案一键生成,用户也可手动进行导入。

•教学计划核查无误后可一键生成开课计划。

•依据教学计划可直接进行安排教师和教学场地或修改其他基本信息。

界面图片:3.4、智能排课•只要开课计划完善则只需一键就可进行智能排课。

界面图片:3.6、手动排课•直接将课程进行拖动到课表中。

•右侧排课汇总可查看到每个班级排课进度。

•可一键分配所有教室(教室与班级名一致)。

界面图片:3.7、课表打印•打印需写入注册码。

课程安排管理系统分析与设计

课程安排管理系统分析与设计

课程安排管理系统分析与设计一、内容概述随着信息技术的不断发展,教育行业也在逐步实现信息化管理。

课程安排管理系统作为一种有效的教育管理工具,可以帮助学校和教师更加高效地进行课程安排、资源分配和教学质量监控。

本文将对课程安排管理系统进行分析与设计,从系统需求分析、功能模块设计、数据库设计等方面进行详细阐述,旨在为教育管理者和教师提供一个实用、高效的课程安排管理解决方案。

在系统需求分析阶段,我们首先对系统的使用对象进行了明确,包括学校领导、教务管理人员、教师和学生等。

针对不同使用对象的需求,我们提出了相应的功能模块,如课程信息管理、教师排课管理、学生选课管理、成绩管理等。

同时为了保证系统的安全性和稳定性,我们还对系统的性能、可靠性、易用性等方面进行了充分考虑。

在功能模块设计阶段,我们根据需求分析的结果,将系统划分为多个子模块,并为每个子模块提供了详细的功能描述。

例如在课程信息管理模块中,我们需要实现课程信息的录入、修改、查询等功能;在教师排课管理模块中,我们需要实现教师的排课工作流、冲突检测等功能;在学生选课管理模块中,我们需要实现学生的选课申请、审核等功能;在成绩管理模块中,我们需要实现成绩的录入、查询、统计等功能。

通过这些功能模块的设计,我们可以使系统具有较高的实用性和针对性。

在数据库设计阶段,我们根据系统的功能需求和数据特点,设计了合理的数据库结构。

主要包括以下几个方面:定义了各种数据表的结构和字段;为各个表之间建立了合适的关联关系;对数据库进行了规范化处理,以提高数据的完整性和一致性。

此外我们还对数据库进行了备份和恢复策略的设计,以确保数据的安全性。

通过对课程安排管理系统的分析与设计,我们可以为教育管理者和教师提供一个全面、高效的课程安排管理解决方案。

在未来的研究中,我们还可以进一步优化系统的功能和性能,以适应不断变化的教育市场需求。

1. 背景和意义随着教育信息化的不断深入,课程安排管理在教育教学过程中扮演着越来越重要的角色。

高校智能排课系统的研究设计与实现资料

高校智能排课系统的研究设计与实现资料
利用是否合理有着至关重要的作用。如果采取传统的人工排课方法容易导致课程
冲突、课程重复、课程错漏等各种问题,而且传统的人工排课方法的任务非常重
和教务人员的效率非常低下,当课程安排上出现错误要更改的时候,教务人员则
需要花费大量的时间协调老师、班级、课程、教室等各种因素。随着高校规模的
不断扩大,学生人数不断增加,人工排课的难度就呈几何级数增大。
二是,数据不仅完整,同时还要实用.在数据库设计中,我们不仅要考虑系统规模和实际需求,同时还要对工作的实际情况和实际应用特点进行全面的考虑和分析,在设计的过程中,为了保证数据的实用性,必须要遵循“先进性与实用性并重”的原则.数据库中的数据只有具备了完整性,才会具有准确性,其中通常情况下完整性是通过约束条件来控制的[15]。另外,在数据的选择中还具有一定的约束条件,约束条件可以检验进入数据库中的数据值,其目的主要是为了避免那些重复或冗余的数据进入数据库。在系统的设计中为了有效保证新建或修改后的数据能够遵循所定义的业务知识,可以对约束条件进行科学、合理的利用。
而高校通用排课系统正是为了减轻教务人员负担,减少课程安排的出错率,
降低修改课程表难度,提高教学资源的合理利用率,从而真正意义上实现教务工
作自动化,解决排课这个大难问题的教务办公软件.
1.2
国内多家专业开发教学管理信息系统的企业,如杭州正方公司、湖南强智公
司、湖南青果公司等,在其教务管理产品中均实现了自动排课功能,但由于软件设计局限,对合班课程、教师兼课、教室交叉重复使用等复杂的情况应用效果不十分理想。在实际应用中,主要使用其排课冲突检测功能进行计算机辅助排课。国内软件市场上也出现了很多通用型的排课软件,如“51智能排课”,“启智达排课",“终级排课”等等,这些通用软件可以解决简单的通用排课问题,适合学科门类和课程门数较单一的学校,不适合高校教学管理应用,不能满足高校多学科、专业、以及课程教学的特殊要求,比如完全学分制下课程教学班的排课问题等.

面向高校教务管理的智能排课系统设计

面向高校教务管理的智能排课系统设计

面向高校教务管理的智能排课系统设计智能排课系统在现代高校教务管理中起着至关重要的作用。

随着高校规模的不断扩大和课程多样化的需求增加,传统的手工排课方法已经无法满足教务管理的要求。

因此,设计一个面向高校教务管理的智能排课系统至关重要。

该系统旨在提高排课效率、减少人力成本、优化课程安排,为学生和教师提供更好的教学环境。

首先,智能排课系统应当具备强大的算法和智能化的特征。

为了准确满足任务名称描述的内容需求,系统必须具备自动排课的能力,并能根据教务管理需求和约束条件进行合理的排课。

该系统应能根据不同的排课目标(如教室利用率最大化、教师空闲时间最大化)制定相应的排课策略。

同时,系统应当考虑到课程之间的冲突,如教室冲突、教师冲突等,并提供相应的解决方案。

其次,智能排课系统应充分利用现代信息技术手段,提供便捷的界面和友好的用户体验。

教务管理人员应能够轻松地操作系统,实现排课的各项功能。

系统应提供直观的课程信息展示、教师信息管理、教室资源管理等功能,以方便教务管理人员进行操作和决策。

同时,系统还应提供多种查询和统计功能,便于教务管理人员对排课结果进行监控和分析。

另外,智能排课系统还应当具备灵活的定制性。

高校的教学需求千差万别,所以系统应当具备灵活的配置选项,以满足不同高校的特定需求。

例如,系统应支持设置不同优先级的课程,以确保优先级较高的课程能够得到合理安排。

另外,系统还应支持对排课结果进行手动调整,以满足特殊需求或不可预测的情况。

此外,智能排课系统还应当具备良好的数据管理和安全性能。

高校的教务管理涉及大量的敏感数据,包括课程安排、教师信息、学生信息等。

因此,系统应具备强大的数据存储和管理机制,保证数据的完整性和安全性,并遵守相关的隐私法规。

另外,系统还应具备数据备份和恢复功能,以应对数据丢失和系统故障的情况。

最后,智能排课系统应当具备良好的扩展性和适应性。

高校教务管理是一个复杂而动态的过程,系统必须能够适应不断变化的需求和规模。

基于人工智能的智能排课系统设计与开发

基于人工智能的智能排课系统设计与开发

基于人工智能的智能排课系统设计与开发智能排课系统是一种基于人工智能技术的创新应用,旨在实现对学校或机构的课程排布进行智能化管理和优化。

通过对教师、学生以及教室等资源的动态调度和合理分配,智能排课系统能够有效提高教学效率、减轻教务工作压力,并为学校提供更好的教学环境与学生个性化需求的满足。

一、系统需求分析在开始设计和开发智能排课系统之前,我们需要对该系统的需求进行全面而细致的分析。

首先,系统需要能够自动化地对学校的课程需求进行统计和分析,根据教师的排课意愿和学生的选课情况,智能地生成排课方案。

其次,系统还需要具备良好的可视化界面,方便教务人员进行操作和管理。

此外,系统应具备较好的交互性和稳定性,确保排课过程的正常进行和结果的准确性。

二、系统设计与开发基于以上的需求分析,我们可以开始进行智能排课系统的设计与开发。

首先,我们需要构建一个合适的数据库,用于存储教师、学生和课程等相关信息。

通过数据库的建立,我们可以实现对数据的查询和修改,方便系统对学校资源的管理与调度。

其次,我们需要设计一套智能算法,通过对教师、学生和教室等资源的状态进行实时监测和分析,生成最优的排课方案。

这个算法可以通过机器学习等技术不断优化和调整,提升系统的智能化程度。

三、系统功能与特点智能排课系统的核心功能是根据学校资源和需求,自动生成合理且高效的课程排课方案。

该方案应考虑到教师的工作量和时间安排、学生的学习需求和选课情况,以及教室等资源的利用效率。

此外,系统还可以提供具体的排课建议和调整方案,以满足教务人员的个性化需求。

并且,智能排课系统应具备一定的灵活性和动态性,能够在教务人员的指导下不断优化和调整。

智能排课系统的特点之一是高效性。

传统的排课方式需要人工进行统计、分析和生成方案,耗费了大量的时间和人力。

而通过智能排课系统,可以实现大规模资源调度和排课计划的快速生成,大大提高了排课效率和准确性。

同时,智能排课系统具备强大的数据处理和计算能力,可以处理复杂的排课需求和约束条件,确保生成的排课方案合理性和有效性。

学生排课系统分析与设计说明

学生排课系统分析与设计说明

1研究背景课程表是一个学校日常教学工作和其他各项活动的指挥调度表。

它不仅是学生和教师上课的依据,对学校其他工作的统一安排也有直接影响。

高校排课工作是执行教学计划、实现学校培养目标的重要一环,是学校教学教务管理工作中最基本而又非常重要的一项,它是学校建立稳定的教学秩序的最根本的保证,是学校贯彻教育方针、培养合格人才的具体体现,并对学生的学习效果和课堂的教学质量有直接的影响。

它不仅可以从侧面反映出学校领导的办学思想,也能体现出学校教育教学管理的能力和水平。

课程表是地方高校开展教学活动的指令性文件。

在地方高校的传统排课方式下,课表编排主要是靠手工完成的,排课人员需要花费大量的时间和精力,并且容易出错,同时手工操作也不能满足资源需求的经常变化。

当前地方高校普遍利用计算机进行自动排课,不但能使教务人员从繁杂的排课任务中解脱出来,提高教务管理工作效率,而且能改善教学管理质量,合理、高效地利用有限的教学资源,使学校的各种教学活动、教学管理及其它相关的工作能够有序、规范地进行,维持正常的教学秩序,同时对推动教务管理的信息化起到非常重要的作用。

由此出现了众多的计算机排课软件。

但是当前地方高校再采用计算机进行排课过程中,大多采用传统方法进行程序设计,把程序作为系统核心。

系统中所使用的排课数据主要考虑了一般性排课原则,而对于不同学校的特点考虑不足,特别是学生层次的关注度不够。

并且数据与程序结合过于紧密,程序的修改维护有很大难度,不便于系统扩充和升级,因此限制了系统的通用性。

而且在发生特殊情形下,只能依赖于人工调整,虽然有很多地方高校先后购买过多个排课软件,但都不能圆满地解决课表编排的问题,造成了大量的浪费。

同时课表编排问题涉及教师、教室、学生、课程及教学时间等多种因素的组合规划,具有规模大、约束条件复杂以及不断变化等特点,根据上文的分析,缺乏人性化,没有对学校内的学生进行考虑是问题存在的原因。

2排课系统分析2.1 排课系统业务描述排课是每个学期都必须面临的一件繁重的日常教务工作,是为下学期教学工作能顺利组织实施的一个前提条件。

基于PHP的工程训练计算机自动排课系统设计

基于PHP的工程训练计算机自动排课系统设计

基于PHP的工程训练计算机自动排课系统设计【摘要】本文介绍了一个用PHP开发的工程训练课程表管理软件。

本软件在可视化窗口下操作,能够自动生成课程表,也可以对自动生成的课表进行手动调节,能同时生成教室课表、教师课表、学生课表。

极大地方便了老师对工程训练课表的编排和课程的管理,改善人工排课出现的问题,从而提高老师的工作效率。

【关键词】工程训练;排课;调课;系统设计近几年来,由于高校办学规模扩大,学分制、专业主辅修制、主要基础课分级、分层次教学等多项教学改革措施不断推出,使工程训练课程管理工作的复杂程度、难度及工作强度明显加大,传统的教学手段已经不能适应当前的高校教育的发展趋势。

同时,课程表的管理在各大中院校都是一项重要的日常工作。

目前各高校的工程训练课程课表管理多是人工的,不但编排费时费力,效率不高,并且还避免不了错误的出现。

本软件就是针对工程训练课程,使用计算机进行自动排课。

排课系统软件是为了帮助老师对工程训练基地的排课更加方便和快速制作出课程表及其管理课程的工具,避免了人工排课错误的出现,方便了师生的管理和查询。

1.工程训练计算机排课系统概述计算机排课的模拟人工对各种数据信息进行组合和调整的过程,需要从工程训练任务书、工程训练学时分配、训练室资源信息中提取基本数据,经过用户既定的数据流优先级控制、调配、编排,生成最优化的排课结果。

整个系统由本系统由PHP语言开发,基于B/S架构。

数据库部分采用了与PHP语言粘合程度最高的MySQL数据库。

交互部分采用了表单直接提交的方式来达到输入输出信息的目的,图1所示为系统基本设计结构图。

2.软件功能描述本软件可以完成:基本数据录入与维护、课表编排、课表输出及打印、系统管理。

如图2所示。

外部功能:实现了可视化窗口,排课,调课。

内部功能:基本信息的录入、训练项目的设置、录入、场地限制的录入;排课操作、调课操作、总课表、学生课表及老师课表的生成及打印。

3.工程训练课程介绍机械工程训练课包括八个项目:车工、铣刨磨、钳工、数控、特种加工、锻压、铸造、焊接。

课程管理系统中自动排课算法的分析与设计

课程管理系统中自动排课算法的分析与设计

Abstract: When designing the automat ic course arrangement system, the data structures and algorithms for course automatic arranging system were designed according to the conditions of Jiamusi University by ways of looping, discriminat ing and so on. The system resolved the problems in course arrangement, and it is effective. Key words: automatic course arranging system; data structure and algorithm
收稿日期: 2009- 08- 25 作者简介: 张磊 ( 1982- ) , 男 , 黑龙江绥化人 , 佳木斯大学教务处研究实习员 , 在读硕士研究生 .
第5 期

磊 : 课程管理系统中自动排课算法的分析与设计
707
个标志 , 即将其赋值为 1, 这样在进行第二轮随机 排课中可以进行一个检验比较 , 来判断是为 1 还是 为 0, 具体操作就是 : [ 3] for( int i= 1; i< = 5; i+ + ) for( int j= 1; j< = 7; j+ + ) int c[ i] [ j] ; int x= 0; x= c[ i] [ j] ; if ( x! = 0) else x= 0; 中间省略掉处理的代码. 这样在判断为 1 的情 况下说明此位置已被占用如果安排将会冲突 , 如果 为 0 则说明未被使用可以安排. 这样同一个数组可 以解决几个冲突的问题. ( 使用中 i, j 的值在不安 排校内公选课的时候 i 取 1 到 4, j 取 1 到 5, 也就是 一天四节课一周五天 ) . 同样这样设计很容易就解决了课程学时较多 的课程的时间间隔问题 , 在随机安 排了第一次课 后, 将 j 的值进行处理即 j= j+ 2, 如果安排在周一 j = 1 的时候 , 处理之后将安排在周三, 这样就出现 了 j= 7 的问题在处理之后 j= 9, 而一个星期没有 周九 , 所以增加了一段判断返回的代码 : if( j= 6) j= 1; if( j= 7) j= 2; 这样如果在周六安排课程之后下次的课程将 安排在周一 , 如果在周日则下次安排在周二 , 这样 能很好的解决课程间隔的问题 . 2) 教室的距离问题需要进行单独的考虑, 不妨 [4] 设一个 y 进行校验 , 也就是在安排教师授课的时 候, 对 y 进行赋值 , 例如我校有三个学区这样 y 的 取值范围就在 1~ 3 之间 , 在第一次排课选则教室 之后如果在第一学区则 y= 1, 在进行下次排课时 新的 y 值与继承所得的前一个进行比较 , 若相同则
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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();}。

相关文档
最新文档