⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 排课系统
💻 CS
📖 第 1 页 / 共 2 页
字号:

		private void menuItem21_Click(object sender, System.EventArgs e)
		{
			this.panel2.Controls.Clear();
			picture c = new picture();
			this.panel2.Controls.Add(c);
			this.panel1.Controls.Clear();
			 f = new fStudyClass();
			f.SCallMessage += new EventHandler(f_SCallMessage);
			f.SCallMessageB +=new EventHandler(f_SCallMessageB);
			this.panel1.Controls.Add(f);
		}
		private void f_SCallMessageB(object sender,System.EventArgs e)
		{
			this.panel2.Controls.Clear();
			displayTable dis = new displayTable(f.getStudyClassNo,"studyClass");
			this.panel2.Controls.Add(dis);
		}
		private void f_SCallMessage(object sender,System.EventArgs e)
		{
			this.panel2.Controls.Clear();
			picture c = new picture();
			this.panel2.Controls.Add(c);
			this.panel1.Controls.Clear();
			if (st == null)
			st = new fStart();
			st.startCallMessageB += new EventHandler(st_startCallMessageB);
			this.panel1.Controls.Add(st);
		}

		private void menuItem20_Click(object sender, System.EventArgs e)
		{
			this.panel2.Controls.Clear();
			picture c = new picture();
			this.panel2.Controls.Add(c);
			this.panel1.Controls.Clear();
			d = new fTeacher();
			d.TCallMessage +=new EventHandler(d_TCallMessage);
			d.TCallMessageL +=new EventHandler(d_TCallMessageL);
			d.NoDisplayL += new EventHandler(NoDisplay);
			this.panel1.Controls.Add(d);
		}
		private void NoDisplay(object sender, System.EventArgs e)
		{
			this.panel2.Controls.Clear();
			picture c = new picture();
			this.panel2.Controls.Add(c);
		}
		private void d_TCallMessageL(object sender,System.EventArgs e)
		{
			this.panel2.Controls.Clear();
			displayTable dis = new displayTable(d.getTeacherNo,"teacher");
			this.panel2.Controls.Add(dis);
		}
		private void d_TCallMessage(object sender,System.EventArgs e)
		{
			this.panel2.Controls.Clear();
			picture c = new picture();
			this.panel2.Controls.Add(c);
			this.panel1.Controls.Clear();
			//st = null;//change
			if (st == null)
		    st = new fStart();
			st.startCallMessageL +=new EventHandler(st_startCallMessageL);
			this.panel1.Controls.Add(st);
		}

		private void menuItem14_Click(object sender, System.EventArgs e)
		{
			this.Dispose();
		}

		private void menuItem9_Click(object sender, System.EventArgs e)
		{
			this.panel2.Controls.Clear();
			deleteInfo del = new deleteInfo();
			this.panel2.Controls.Add(del);
		}

		private void menuItem17_Click(object sender, System.EventArgs e)
		{
			staticClass.clearPk();
			Connection c1 = new Connection();
			//staticClass Static = new staticClass();
			SqlConnection conn = new SqlConnection(c1.getConnectionString);
			conn.Open();
			course c = null;
			bool isHaveCourse = false;
			//int countCourse = 0;//不同课程数
			int countC = 0;//下午为空闲的天数
			ArrayList Course = new ArrayList();
			checkClass ch = new checkClass();
			string strsql1 = "select * from course";
			SqlCommand cmd1 = new SqlCommand(strsql1,conn);
			SqlDataReader dr1 = cmd1.ExecuteReader();
			while (dr1.Read())
			{
				c = new course();
				c.CourseNo = Convert.ToString(dr1["CourseNo"]);
				c.TeacherNo = Convert.ToString(dr1["TeacherNo"]);
				c.WeekCent = Convert.ToInt32(dr1["weekCent"]);
				c.StudentNum = Convert.ToInt32(dr1["studentNum"]);
				c.StudyClassNo = Convert.ToString(dr1["studyClassNo"]);
				c.CourseName = Convert.ToString(dr1["courseName"]);
				Course.Add(c);
				isHaveCourse = true;
				c = null;
			}
			dr1.Close();
			if (!isHaveCourse)
			{
				MessageBox.Show("不存在要排课的课程,请录入课程!");
				this.panel2.Controls.Clear();
				addCourse ac = new addCourse();
				this.panel2.Controls.Add(ac);
				return;
			}
			ch.addClass();
			//countCourse = staticClass.countCourse();
			ArrayList[,] time = new ArrayList[3,5];
			//ch.addClass();
			//int countC = 0;
			for (int i = 0; i < 3;i++)
			{
				for (int j = 0;j < 5;j++)
				{
					time[i,j] = null;
				}
			}
			foreach (course co in Course)
			{
				int cent = co.WeekCent;
				bool Check;
				int t = 0;//记录是否是第一次上课
				int dayj = 0;//第一次上课是星期几
				string temp = "";
				int circle = 0;
				while (cent != 0)
				{
					if (circle > 1)
					{
								MessageBox.Show("需重新安排教学计划!");
								return;
					}
					if (circle==1&&co.ClassTime==null)
					{
						MessageBox.Show("需重新安排教学计划!");
						return;
					}
		
						circle++;
					Check = true;
					countC = 0;
					if (cent == 2||cent == 4|| cent ==5)
					{
						for (int i = 0;i < 2 && Check;i++)
							for (int j = 0;j <5;j++)
							{
								if (t == 0)
								{
									if (time[i,j] == null)
									{
										time[i,j] = new ArrayList();
										co.ClassTime = j.ToString() + i.ToString();
										time[i,j].Add(co);
										while (ch.chooseClass(co) == 0)
										{
											MessageBox.Show("课程号为"+ co.CourseNo + "没有适合的教室,请提供合理的教室");
											this.panel2.Controls.Clear();
											addClass ad = new addClass();
											this.panel2.Controls.Add(ad);
											return;
										}
										t ++;//change
										dayj = j;
										cent = cent - 2;
										Check = false;
										break;
									}
									if (!staticClass.isAllNull(time,2,5,0)&&time[i,j] != null)
									{
										if (staticClass.isOk(co,time[i,j]))
										{
											temp= j.ToString() + i.ToString();
											if (ch.chooseClass(co,Course,temp) == 0)
											{
												continue;
											}
											time[i,j].Add(co);
											temp = "";
											t ++;//change
											dayj = j;
											cent = cent - 2;
											Check = false;
											break;
										}
									}
									if (!staticClass.isAllNull(time,2,5,0)&&time[i,j] != null)
									{
										if (staticClass.isOk(co,time[i,j]))
										{
											temp = j.ToString() + i.ToString();
											if (ch.chooseClass(co,Course,temp) == 0)
											{
												continue;
											}
											temp = "";
											time[i,j].Add(co);
											t ++;//change
											dayj = j;
											cent = cent - 2;
											Check = false;
											break;
										}
									}
								}//if t== 0
								if (t == 1&&Check)
								{
									if (System.Math.Abs(j-dayj) >= 2)
									{
										if (time[i,j] == null)
										{
											time[i,j] = new ArrayList();
											co.ClassTime += j.ToString() + i.ToString();
											time[i,j].Add(co);
											while (ch.chooseClass(co) == 0)
											{
												MessageBox.Show("课程号为{0}没有适合的教室,请提供合理的教室",co.CourseNo);
												this.panel2.Controls.Clear();
												addClass ad = new addClass();
												this.panel2.Controls.Add(ad);
												return;
											}
											t++;//change
											dayj = j;
											cent = cent - 2;
											Check = false;
											break;
										}
										if (!staticClass.isAllNull(time,2,5,0)&&time[i,j] != null)
										{
											if (staticClass.isOk(co,time[i,j]))
											{
												temp = j.ToString() + i.ToString();
												if (ch.chooseClass(co,Course,temp) == 0)
												{
													continue;
												}
												temp = "";
												time[i,j].Add(co);
												cent = cent - 2;
												Check = false;
												break;
											}
										}
									}
								}//t==1
							}//for1
					}//ifcent == 2.... 
					if (Check&&cent == 3||cent == 6)
					{
						//bool isEmpty = false;//判断是否有一下午是空闲的
						for (int m = 0;m < 5;m++)
						{
							if (time[2,m] == null)
								countC++;
						}
						for (int i = 1;i < 3&&Check;i++)
							for (int j = 0;j < 5;j++)
							{
								if (t == 0)
								{
									if (i == 1||countC >=2)
									{
										if (time[i,j] == null)
										{
											time[i,j] = new ArrayList();
											time[i,j].Add(co);
											co.ClassTime = j.ToString() + i.ToString();
											while (ch.chooseClass(co) == 0)
											{
												MessageBox.Show("课程号为{0}没有适合的教室,请提供合理的教室",co.CourseNo);
												this.panel2.Controls.Clear();
												addClass ad = new addClass();
												this.panel2.Controls.Add(ad);
												return;
											}
											t++;//change
											dayj = j;
											cent = cent - 3;
											Check = false;
											if (i == 2)
												countC--;
											break;
										}
										if (!staticClass.isAllNull(time,3,5,1)&&time[i,j] != null)
										{
											if (staticClass.isOk(co,time[i,j]))
											{
												temp = j.ToString() + i.ToString();
												if (ch.chooseClass(co,Course,temp) == 0)
												{
													continue;
												}
												time[i,j].Add(co);
												temp = "";
												cent = cent - 3;
												if (i == 2)
													countC--;
												t++;//change
												Check = false;
												continue;
											}
										}
									}
								}
								if (t == 1&&Check)
								{
									if (System.Math.Abs(j-dayj) >= 2&&(i == 1 || countC >= 2))
									{
										if (time[i,j] == null)
										{
											time[i,j] = new ArrayList();
											co.ClassTime += j.ToString() + i.ToString();
											time[i,j].Add(co);
											if (i == 2)
												countC--;
											while (ch.chooseClass(co) == 0)
											{
												MessageBox.Show("课程号为{0}没有适合的教室,请提供合理的教室",co.CourseNo);
												this.panel2.Controls.Clear();
												addClass ad = new addClass();
												this.panel2.Controls.Add(ad);
												return;
											}
											//t = 1;
											dayj = j;
											cent = cent - 3;
									
											Check = false;
											break;
										}
										if (!staticClass.isAllNull(time,3,5,1)&&time[i,j] != null)
										{
											if (staticClass.isOk(co,time[i,j]))
											{
												//time[i,j].Add(co);
												//co.ClassTime += j.ToString() + i.ToString();
												temp = j.ToString() + i.ToString();
												if (ch.chooseClass(co,Course,temp) == 0)
												{
													//co.ClassTime = null;
													//time[i,j].Remove(co);
													continue;
												}
												time[i,j].Add(co);
												temp = "";
												if (i == 2)
													countC--;
												cent = cent - 3;
												Check = false;
												break;
											}
										}
									}
								}//t==1
							}//for
				
					}//cent ==6
			
				}//while
//				if (t == 1)
//				{
//					if (co.WeekCent == 4||co.WeekCent == 6||co.WeekCent ==5)
//					{
//						if (co.ClassTime==null||co.ClassTime.Length == 2)
//						{
//							MessageBox.Show("需重新安排教学计划!");
//							return;
//						}
//					}
//				}
//				if (t == 0)
//				{
//					MessageBox.Show("需重新安排教学计划!");
//					return;
//				}
			}//foreach
			if (!staticClass.isFinished(Course))
			{
				MessageBox.Show("需重新安排教学计划!");
				return;
			}
			else
			{
				dealCourse dc = new dealCourse();
				dc.Open();
				string ClassNo = null;
				string ClassTime = null;
				bool isSet;
				string str2 = "select * from course";
				SqlCommand cmd3 = new SqlCommand(str2,conn);
				SqlDataReader dr2 = cmd3.ExecuteReader();
				foreach (course co in Course)
				{
					while (dr2.Read())
					{
                       ClassNo = Convert.ToString(dr2["classNo"]);
						ClassTime = Convert.ToString(dr2["classTime"]);
						if (ClassNo == ""&&ClassTime ==""&&co.CourseNo ==Convert.ToString(dr2["courseNo"])&&co.TeacherNo ==Convert.ToString(dr2["teacherNo"])&&co.StudyClassNo == Convert.ToString(dr2["studyClassNo"]))
						{ 
						   isSet = dc.InsertCourseInfo(co.ClassNo,co.ClassTime,co.CourseNo,co.StudyClassNo);
							if (!isSet)
							{
								MessageBox.Show("数据库修改失败!");
								return;
							}
                            break;
						}
					}
				}
				dr2.Close();
				dc.Close();
				conn.Close();
				this.menuItem17.Enabled = false;
				this.menuItem3.Enabled = true;
				this.menuItem18.Enabled = true;
                MessageBox.Show("排课成功!");
			}
		}

		private void menuItem18_Click(object sender, System.EventArgs e)
		{
			staticClass.clearPk();
			this.menuItem17.Enabled = true;
			this.menuItem18.Enabled = false;
			this.menuItem3.Enabled = false;
			MessageBox.Show("排课结果已清楚");
		}
	}//class
}//namespace

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -