mysql自动排课_高校智能排课系统算法
1 ///
2 ///取最优的时间片id3 ///
4 /// 教室id
5 /// 星期id
6 /// 授课id
7 /// 班级id
8 /// 教室id(S)
9 ///
10 private int GetBestTime(int roomid,int wk,int tlid,intclid)11 {12 //定义初始化存放已排的时间片的数组
13 ArrayList uTime = newArrayList();14 //定义初始化存放空时间片的数组
15 ArrayList nTime = newArrayList();16
17 for (int i = 1; i <= 20; i++)18 {19 if (i != 7 && i != 8)20 {21 //==判断当前时间片是否为空
22 int timeid =wbgd.GetTimeID(wk, i);23 int rtlid =wbgd.GetTlIDByRoomATime(roomid, timeid);24 if (rtlid == 0)25 {26 //检测冲突
27 bool flag = true;28 DataTable dtteach =wbgd.GetTeachNameByTLID(tlid);29 for (int t = 0; t < dtteach.Rows.Count; t++)30 {31 int teachid = int.Parse(dtteach.Rows[t]["id"].ToString());32 if (!wbgd.CheckClash(timeid, teachid, roomid, clid))33 {34 flag = false;35 }36 }37 if(flag)38 {39 //加入空时间片数组
40 nTime.Add(timeid);41 }42 else
43 {44 continue;45 }46 }47 else if (rtlid ==tlid)48 {49 //加入已排时间片数组
50 uTime.Add(timeid);51 }52 else
53 {54 continue;55 }56 }57 }58 if (nTime.Count == 0)59 {60 return 0;61 }62 //判断这门授课已经插入了几条记录
63 if (uTime.Count == 0)64 {65 //如果没有则取最近的
66 return (int)nTime[0];67 }68 else if (uTime.Count == 1)69 {70 //如果有一条则取最远的
71
72 return (int)nTime[nTime.Count - 1];73
74 }75 else
76 {77 //否则进入已下循环,求出权值最大的时间片78 //max 存放最大的权值,index 存放最大权值空时间片数组的索引
79 int max = 0,index=0;80 for (int p = 0; p < nTime.Count; p++)81 {82 //m存放uTime中略大于nTine[i]的数83 //l存放uTime中略小于nTine[i]的数
84 intm, l;85 m = (int)uTime[1];86 l = (int)uTime[0];87 for (int j = 0; j < uTime.Count; j++)88 {89 if ((int)nTime[p] < (int)uTime[j])90 {91 m = (int)uTime[j];92 l = (int)uTime[j - 1];93 break;94 }95 }96 //如果权值大于max 则记录新的权值和索引
97 if (Math.Abs(m - (int)nTime[p]) *Math.Abs ((int)nTime[p] - l) >max)98 {99 max = Math.Abs(m - (int)nTime[p]) * Math.Abs((int)nTime[p] -l);100 index =p;101 }102 }103 //返回权值最大的时间片id
104 return (int)nTime[index];105 }106 }107
108
109 ///
110 ///取最优的连课时间片id111 ///
112 ///
113 ///
114 ///
115 ///
116 ///
117 private int GetBestTimeLK(int roomid, int wk, int tlid, intclid)118 {119 //定义初始化存放已排的时间片的数组
120 ArrayList uTime = newArrayList();121 //定义初始化存放空时间片的数组
122 ArrayList nTime = newArrayList();123
124 for (int i = 1; i <= 20; i+=2)125 {126 if (i != 7)127 {128 //==判断当前时间片是否为空
129 int timeid1 =wbgd.GetTimeID(wk, i);130 int timeid2 = wbgd.GetTimeID(wk, i + 1);131 int rtlid1 =wbgd.GetTlIDByRoomATime(roomid, timeid1);132 int rtlid2 =wbgd.GetTlIDByRoomATime(roomid, timeid2);133 if (rtlid1 == 0 && rtlid2 == 0)134 {135 //检测冲突
136 bool flag = true;137 DataTable dtteach =wbgd.GetTeachNameByTLID(tlid);138 for (int t = 0; t < dtteach.Rows.Count; t++)139 {140 int teachid = int.Parse(dtteach.Rows[t]["id"].ToString());141 if ((!wbgd.CheckClash(timeid1, teachid, roomid, clid)) && (!wbgd.CheckClash(timeid2, teachid, roomid, clid)))142 {143 flag = false;144 }145 }146 if(flag)147 {148 //加入空时间片数组
149 nTime.Add(timeid1);150 }151
152 }153 else if (rtlid1 == tlid || rtlid2 ==tlid)154 {155 //加入已排时间片数组
156 uTime.Add(timeid1);157 }158 else
159 {160 continue;161 }162 }163 }164 if (nTime.Count == 0)165 {166 return 0;167 }168 //判断这门授课已经插入了几条记录
169 if (uTime.Count == 0)170 {171 //如果没有则取最近的
172 return (int)nTime[0];173 }174 else if (uTime.Count == 1)175 {176 //如果有一条则取最远的
177 return (int)nTime[nTime.Count - 1];178 }179 else
180 {181 //否则进入已下循环,求出权值最大的时间片182 //max 存放最大的权值,index 存放最大权值空时间片数组的索引
183 int max = 0, index = 0;184 for (int p = 0;p < nTime.Count; p++)185 {186 int m = 0, l = 0;187 m = (int)uTime[1];188 l = (int)uTime[0];189 for (int j = 0; j < uTime.Count; j++)190 {191 if ((int)nTime[p] < (int)uTime[j])192 {193 m = (int)uTime[j];194 l = (int)uTime[j - 1];195 break;196 }197 }198 //如果权值大于max 则记录新的权值和索引
199 if (Math.Abs(m - (int)nTime[p]) * Math.Abs((int)nTime[p] - l) >max)200 {201 max = Math.Abs(m - (int)nTime[p]) * Math.Abs((int)nTime[p] -l);202 index =p;203 }204 }205 //返回权值最大的时间片id
206 return (int)nTime[index];207 }208 }209
210
211 ///
212 ///检测授课id是否有变动213 ///
214 /// 授课表
215 /// 是否有变动
mysql自动排课_高校智能排课系统算法相关推荐
- mysql自动排课_jsp1934高校智能排课系统 mysql
jsp1934高校智能排课系统 mysql 该设计有演示视频 100%能运行 买重包换 保密发送 一校一份 编号: jsp1934 语言+数据库: jsp+mysql 论文字数: 12159字 内容摘 ...
- java毕业设计——基于JSP+sqlserver的高校智能排课系统设计与实现(毕业论文+程序源码)——高校智能排课系统
基于JSP+sqlserver的高校智能排课系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于JSP+sqlserver的高校智能排课系统设计与实现,文章末尾附有本毕业设计的论文和源码下 ...
- java计算机毕业设计高校智能排课系统源程序+mysql+系统+lw文档+远程调试
java计算机毕业设计高校智能排课系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计高校智能排课系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目架构:B/S ...
- 智能排课系统设计 c语言设计,高校智能排课系统的研究设计与实现.doc
摘 要 现如今,随着我国高校的快速发展,各个大学早已朝着综合大学的发展,所开设的学科.专业以及学院都如迅猛发展,尤其是扩招以来,各个大学的在校学生数量猛增,在这种情况,以前学校的教务排课系统已远远不能 ...
- 基于jsp(java)高校智能排课系统设计
随着我国科学技术的进步和综合国力的增强,计算机在我们学习生活中有着越来越多的应用,我们对计算机的依赖也越来越强烈.可以说,离开了计算机我们的日常生活都不能得到保证.然而,在计算机如此普及的今天,有一些 ...
- 广州大学软件方向综合课程设计报告(专业课程数据库系统,模拟一个学期选课退课)带智能排课算法(遗传算法)
广州大学软件方向综合课程设计目录 序章 第一章 系统需求简介 1.1 需求分析 1.2 数据结构需求分析 1.3系统功能设计 第二章 需求描述 2.1 数据流图 2.2 数据字典 第三章 概念设计 3 ...
- mos 控制交流_小米智能排插的220V交流电压信号的开关控制电路设计
在硬件电路设计过程中,开发工程师经常多半处理一些直流弱电信号,如传感器的模拟电压信号0V~3V,数字逻辑高低电平信号0V与3.3V:控制这些直流弱电信号,相信稍微有些工作经验的硬件工程师都会驾轻熟路, ...
- mysql自动备份工具_|Mysql自动备份工具(Auto MySQL Backup)下载v1.5 官方版 附教程 - 欧普软件下载...
Auto MySQL Backup是一款好用的Mysql自动备份工具,可以对MySQL数据库进行每日.每周和每月备份,可同时备份多个数据库.压缩备份.备份远程数据和发送日志等,小编还带来了详细的使用方 ...
- mysql 自动更新时间_如何设置mysql自动更新创建时间和更新时间
做项目时,希望: 新增记录时,mysql自动将系统的当前时间set到创建时间和更新时间这两个字段中. 更新记录时,mysql只update更新时间字段的时间. 设置mysql自动更新创建时间和更新时间 ...
最新文章
- Android旋转视频工具类,Android开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等操作功能】...
- HTML学习04之内联框架和表单
- 在学习Python中,这个知识我们一定要看一遍,记不住没关系单一定要知道,字符串常用函数用法
- Web自适应布局你需要知道的所有事儿
- Jdk1.8新特性(二)——lambda表达式(参数列表)-{}和函数式接口@FunctionalInterface
- undefined reference to `pthread_create‘(linux下Clion使用thread报错)
- [css] 如何取消从父级元素继承下来的CSS样式呢?
- 多路查找树之2-3树的插入原理
- 烟台大学计算机学院宋宜斌教授,宋宜斌
- LaTeX最全的数学符号大全(更新中…… )
- H3C官方培训课件大全
- 钽电容器为什么被要求降额到额定值的1/3使用
- 《黄帝内经.生气通天论篇》不生病的智慧节选02
- Day1ps设计基础作业第一章第二章
- 【华为OD机试 2023】二元组个数(C++ 100%)
- 使用word2vec训练词向量
- Thinkpad笔记本散热器与风扇的寿命与清理问题
- 【高项】进度管理(ITTO)
- 【JAVASE】Java泛型实例化
- GPU的硬件结构中与CUDA相关的几个概念:thread block grid warp sp sm