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自动排课_高校智能排课系统算法相关推荐

  1. mysql自动排课_jsp1934高校智能排课系统 mysql

    jsp1934高校智能排课系统 mysql 该设计有演示视频 100%能运行 买重包换 保密发送 一校一份 编号: jsp1934 语言+数据库: jsp+mysql 论文字数: 12159字 内容摘 ...

  2. java毕业设计——基于JSP+sqlserver的高校智能排课系统设计与实现(毕业论文+程序源码)——高校智能排课系统

    基于JSP+sqlserver的高校智能排课系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于JSP+sqlserver的高校智能排课系统设计与实现,文章末尾附有本毕业设计的论文和源码下 ...

  3. java计算机毕业设计高校智能排课系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计高校智能排课系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计高校智能排课系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目架构:B/S ...

  4. 智能排课系统设计 c语言设计,高校智能排课系统的研究设计与实现.doc

    摘 要 现如今,随着我国高校的快速发展,各个大学早已朝着综合大学的发展,所开设的学科.专业以及学院都如迅猛发展,尤其是扩招以来,各个大学的在校学生数量猛增,在这种情况,以前学校的教务排课系统已远远不能 ...

  5. 基于jsp(java)高校智能排课系统设计

    随着我国科学技术的进步和综合国力的增强,计算机在我们学习生活中有着越来越多的应用,我们对计算机的依赖也越来越强烈.可以说,离开了计算机我们的日常生活都不能得到保证.然而,在计算机如此普及的今天,有一些 ...

  6. 广州大学软件方向综合课程设计报告(专业课程数据库系统,模拟一个学期选课退课)带智能排课算法(遗传算法)

    广州大学软件方向综合课程设计目录 序章 第一章 系统需求简介 1.1 需求分析 1.2 数据结构需求分析 1.3系统功能设计 第二章 需求描述 2.1 数据流图 2.2 数据字典 第三章 概念设计 3 ...

  7. mos 控制交流_小米智能排插的220V交流电压信号的开关控制电路设计

    在硬件电路设计过程中,开发工程师经常多半处理一些直流弱电信号,如传感器的模拟电压信号0V~3V,数字逻辑高低电平信号0V与3.3V:控制这些直流弱电信号,相信稍微有些工作经验的硬件工程师都会驾轻熟路, ...

  8. mysql自动备份工具_|Mysql自动备份工具(Auto MySQL Backup)下载v1.5 官方版 附教程 - 欧普软件下载...

    Auto MySQL Backup是一款好用的Mysql自动备份工具,可以对MySQL数据库进行每日.每周和每月备份,可同时备份多个数据库.压缩备份.备份远程数据和发送日志等,小编还带来了详细的使用方 ...

  9. mysql 自动更新时间_如何设置mysql自动更新创建时间和更新时间

    做项目时,希望: 新增记录时,mysql自动将系统的当前时间set到创建时间和更新时间这两个字段中. 更新记录时,mysql只update更新时间字段的时间. 设置mysql自动更新创建时间和更新时间 ...

最新文章

  1. httpd-2.2和httpd-2.4安装部署
  2. Python 函数式编程
  3. apache 编译安装php mysql_编译安装APACHE+PHP+MYSQL
  4. 虚拟机无法开机数据恢复 (建议在做之前做测试,数据双重备份)
  5. [leetcode] 704.二分查找
  6. 在Windows Mobile模拟器(Emulator)建立网络连接
  7. SpringAOP的SchemaBase方式
  8. Keepalived 安装配置
  9. mysql完整性约束命名_第5章--MySQL索引与完整性约束.ppt
  10. 多路I/O转接之select模型
  11. 2019女性开发者报告:3成16岁就会编程、JS/Python成女性掌握最多语言
  12. 099 《少有人走的路:心智成熟的旅程》简记
  13. rust怎么传送坐标_这几天很多人问我传奇到底该怎么玩,有没有攻略什么的
  14. 淘宝商品信息爬取(已登录)
  15. 利用autojs制作抢购支付宝消费劵的手机脚本
  16. 【历史上的今天】8 月 26 日:jQuery 发布;中国第一台百万次计算机试制成功
  17. css动画在线生成,在线制作css动画——cssanimate
  18. BZOJ 4408: [Fjoi 2016]神秘数(可持久化线段树)
  19. 如何判断一件事值不值得做?
  20. 指南解读:急性心力衰竭中国急诊管理指南(2022)

热门文章

  1. 嵌入式 SIMCOM平台AT命令中文参考
  2. Autocad Electrical 标题栏设置 WD_TB方法
  3. Oracle初学者入门指南-什么是Metalink -MOS ?
  4. matlab网络图,Matlab实现网络拓补图
  5. 嵌入式linux的运行过程,嵌入式linux的启动流程--详解
  6. ftp服务器怎么用,3步完成ftp的安装与使用
  7. ThinkPhp6+Vue外贸进出口后台管理系统源码
  8. 雷达基础系列文章之一:雷达信号的波形、调制形式以及工作模式
  9. The Swift Programming Language swift 4 下载地址
  10. springboot日志输出格式