예제 #1
0
파일: Matching.cs 프로젝트: cinli/GUIDesign
        private void btmatch_Click(object sender, EventArgs e)//第一轮一键匹配
        {
            ad_ServicesBLL bLL = new ad_ServicesBLL();
            DialogResult   dr  = MessageBox.Show(bLL.match(), "提示", MessageBoxButtons.OKCancel);

            if (dr == DialogResult.OK)
            {
                ViewResults cform = new ViewResults(); //实例化一个子窗口
                                                       //设置子窗口不显示为顶级窗口
                cform.TopLevel = false;
                //设置子窗口的样式,没有上面的标题栏
                cform.FormBorderStyle = FormBorderStyle.None;
                //填充
                cform.Dock = DockStyle.Fill;
                //清空控件
                this.Controls.Clear();
                //加入控件
                this.Controls.Add(cform);
                //让窗体显示
                cform.Show();
                //跳转页面
            }
            else
            {
                //
            }
            //获取学生的对象数组
            sx_student[] sx_Students = new sx_student[50];
            sx_Students = Keepinformation.sx_Students;
            //获取教师的对象数组
            sx_teacher[] sx_Teachers = new sx_teacher[20];
            sx_Teachers = Keepinformation.sx_Teachers;
        }
예제 #2
0
        //加载一轮匹配结果
        private void jiazaiyilun()
        {
            //加载一轮匹配结果
            sx_student[] sx_Students = new sx_student[100];
            sx_Students = Keepinformation.sx_Students;
            sx_teacher[] sx_Teachers = new sx_teacher[100];
            sx_Teachers = Keepinformation.sx_Teachers;
            DataTable dataTable = new DataTable();

            dataTable.Columns.Add("教师工号", typeof(string));
            dataTable.Columns.Add("教师姓名", typeof(string));
            dataTable.Columns.Add("学生组号", typeof(int));
            dataTable.Columns.Add("组长姓名", typeof(string));
            dataTable.Columns.Add("组长学号", typeof(string));
            dataTable.Columns.Add("论文课题", typeof(string));
            DataColumn[] PrimaryKeyColumns = new DataColumn[1]; //声明了一个datacolumn的数组,该数组只有一个元素
            PrimaryKeyColumns[0] = dataTable.Columns["学生组号"];   //把主键列赋给数组元素
            dataTable.PrimaryKey = PrimaryKeyColumns;           //指定表的主键为PrimaryKeyColumns主键数组
            if (sx_Teachers != null)
            {
                foreach (sx_teacher sx in sx_Teachers)
                {
                    if (sx != null)
                    {
                        for (int i = 1; i <= sx.LovestuList.GetLength(); i++)
                        {
                            try
                            {
                                DataRow dataRow = dataTable.NewRow();
                                dataRow["教师工号"] = sx.Teano;
                                dataRow["教师姓名"] = sx.Teaname;
                                dataRow["学生组号"] = sx.LovestuList.GetElem(i).Groupid;
                                dataRow["组长姓名"] = sx.LovestuList.GetElem(i).Stuname;
                                dataRow["组长学号"] = sx.LovestuList.GetElem(i).Leaderno;
                                dataRow["论文课题"] = sx.LovestuList.GetElem(i).Topic;
                                dataTable.Rows.Add(dataRow);
                                Console.WriteLine(dataRow["教师姓名"].ToString());
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(e.Message);
                                continue;
                            }
                        }
                        dataGridView1.DataSource = dataTable;
                    }
                }
            }
        }
예제 #3
0
        //将剩余的结果继续加到老师的链表中去并提交
        public void Merge_First_Sec()
        {
            sx_student[] sx_Students = new sx_student[50];
            sx_teacher[] sx_Teachers = new sx_teacher[20];
            sx_Students = Keepinformation.stsx_Students;
            sx_Teachers = Keepinformation.stsx_Teachers;

            ////将datatable中的值赋给sx_teacher对象数组
            //for (int i = 0; i < sx_Teachers.Length; i++)
            //{
            //    sx_teacher teacher = new sx_teacher(20);//实例化对象
            //    sx_Teachers[i] = teacher;
            //    sx_Teachers[i].LovestuList = new MyLinkList<sx_student>();//初始化一个链表,用于选择学生
            //}

            for (int i = 0; i < sx_Students.Length; i++)
            {
                for (int j = 0; j < sx_Teachers.Length; j++)
                {
                    if (sx_Teachers[j] != null && sx_Teachers[j].Kexuan > 0 && sx_Students[i] != null && sx_Students[i].Beixuan == 0)
                    {
                        sx_Students[i].Beixuan = 1;
                        sx_Teachers[j].LovestuList.Append(sx_Students[i]);

                        Console.WriteLine("学生" + sx_Students[i].Groupid + "被老师" + sx_Teachers[j].Teaname + "录取啦");
                        sx_Teachers[j].Kexuan -= 1;
                        Console.WriteLine(sx_Teachers[j].Teaname + "的可选数为" + sx_Teachers[j].Kexuan);
                    }
                }
            }

            for (int k = 0; k < sx_Students.Length; k++)
            {
                if (sx_Students[k] != null && sx_Students[k].Beixuan == 0)
                {
                    Console.WriteLine("不好啦,学生" + sx_Students[k].Groupid + "被漏选啦");
                }
            }
            Keepinformation.stsx_Students = sx_Students;
            //    Keepinformation.sx_Teachers = sx_Teachers;
            Keepinformation.stsx_Teachers = sx_Teachers;
        }
예제 #4
0
        //加载二轮匹配结果
        private void jiazaierlun()
        {
            //加载二轮匹配结果
            sx_student[] sx_Students = new sx_student[50];
            sx_Students = Keepinformation.stsx_Students;
            sx_teacher[] sx_Teachers = new sx_teacher[20];
            sx_Teachers = Keepinformation.stsx_Teachers;
            DataTable dataTable = new DataTable();

            dataTable.Columns.Add("教师工号", typeof(string));
            dataTable.Columns.Add("教师姓名", typeof(string));
            dataTable.Columns.Add("学生组号", typeof(int));
            dataTable.Columns.Add("组长姓名", typeof(string));
            dataTable.Columns.Add("组长学号", typeof(string));
            dataTable.Columns.Add("论文课题", typeof(string));
            if (sx_Teachers != null)
            {
                foreach (sx_teacher sx in sx_Teachers)
                {
                    if (sx != null)
                    {
                        for (int i = 1; i <= sx.LovestuList.GetLength(); i++)
                        {
                            DataRow dataRow = dataTable.NewRow();
                            dataRow["教师工号"] = sx.Teano;
                            dataRow["教师姓名"] = sx.Teaname;
                            dataRow["学生组号"] = sx.LovestuList.GetElem(i).Groupid;
                            dataRow["组长姓名"] = sx.LovestuList.GetElem(i).Stuname;
                            dataRow["组长学号"] = sx.LovestuList.GetElem(i).Leaderno;
                            dataRow["论文课题"] = sx.LovestuList.GetElem(i).Topic;
                            dataTable.Rows.Add(dataRow);
                            //Console.WriteLine(dataRow["教师姓名"].ToString());
                        }
                        dataGridView1.DataSource = dataTable;
                    }
                }
            }
        }
예제 #5
0
        //将剩余的结果继续加到老师的链表中去并提交
        public void Merge_First_Sec()
        {
            sx_student[] sx_Students = new sx_student[50];
            sx_teacher[] sx_Teachers = new sx_teacher[20];
            sx_Students = Keepinformation.stsx_Students;
            sx_Teachers = Keepinformation.stsx_Teachers;

            //sx_student[] sx_Students =new Keepinformation.stsx_Students;
            //sx_teacher[] sx_Teachers =new Keepinformation.stsx_Teachers;
            for (int i = 0; i < sx_Students.Length; i++)
            {
                for (int j = 0; j < sx_Teachers.Length; j++)
                {
                    if (sx_Teachers[j] != null && sx_Teachers[j].Kexuan > 0 && sx_Students[i] != null && sx_Students[i].Beixuan == 0)
                    {
                        sx_Students[i].Beixuan = 1;
                        Console.WriteLine(sx_Students[i].Stuname + ";" + sx_Students[i].Groupid);
                        Console.WriteLine(sx_Teachers[j].Teaname + ";");

                        sx_Teachers[j].LovestuList.Append(sx_Students[i]);

                        Console.WriteLine("学生" + sx_Students[i].Groupid + "被老师" + sx_Teachers[j].Teaname + "录取啦");
                        sx_Teachers[j].Kexuan -= 1;
                        Console.WriteLine(sx_Teachers[j].Teaname + "的可选数为" + sx_Teachers[j].Kexuan);
                    }
                }
            }
            for (int k = 0; k < sx_Students.Length; k++)
            {
                if (sx_Students[k] != null && sx_Students[k].Beixuan == 0)
                {
                    Console.WriteLine("不好啦,学生" + sx_Students[k].Groupid + "被漏选啦");
                }
            }
            Keepinformation.stsx_Students = sx_Students;
            //    Keepinformation.sx_Teachers = sx_Teachers;
            Keepinformation.stsx_Teachers = sx_Teachers;
        }
예제 #6
0
        private void button1_Click(object sender, EventArgs e)//加载学生列表
        {
            //获取学生对象数组
            sx_student[] sx_Students = new sx_student[50];
            sx_Students = Keepinformation.sx_Students;
            //获取教师对象数组
            sx_teacher[] sx_Teachers = new sx_teacher[20];
            sx_Teachers = Keepinformation.sx_Teachers;

            DataTable dataTable = new DataTable();

            dataTable.Columns.Add("学生组号", typeof(string));
            dataTable.Columns.Add("组长姓名", typeof(string));
            dataTable.Columns.Add("论文课题", typeof(string));
            dataTable.Columns.Add("组内人数", typeof(int));
            dataTable.Columns.Add("志愿一", typeof(string));
            dataTable.Columns.Add("志愿二", typeof(string));
            dataTable.Columns.Add("志愿三", typeof(string));
            dataTable.Columns.Add("综测均分", typeof(double));
            //dataTable.Columns.Add("是否被选", typeof(string));
            if (sx_Students != null)
            {
                for (int i = 0; i < sx_Students.Length; i++)
                {
                    if (sx_Students[i] != null && sx_Students[i].Beixuan > 0)
                    {
                        continue;
                    }
                    // Console.WriteLine(sx_Students[i].Beixuan);

                    DataRow dataRow = dataTable.NewRow();
                    if (sx_Students[i] != null && sx_Students[i].Groupid != 0)
                    {
                        dataRow["学生组号"] = sx_Students[i].Groupid;
                    }
                    if (sx_Students[i] != null && sx_Students[i].Stuname != null)
                    {
                        dataRow["组长姓名"] = sx_Students[i].Stuname;
                    }
                    if (sx_Students[i] != null && sx_Students[i].Topic != null)
                    {
                        dataRow["论文课题"] = sx_Students[i].Topic;
                    }
                    if (sx_Students[i] != null && sx_Students[i].Membernum != 0)
                    {
                        dataRow["组内人数"] = sx_Students[i].Membernum;
                    }
                    if (sx_Students[i] != null && sx_Students[i].LoveTeacher[0] != null)
                    {
                        dataRow["志愿一"] = sx_Students[i].LoveTeacher[0];
                    }
                    if (sx_Students[i] != null && sx_Students[i].LoveTeacher[1] != null)
                    {
                        dataRow["志愿二"] = sx_Students[i].LoveTeacher[1];
                    }
                    if (sx_Students[i] != null && sx_Students[i].LoveTeacher[2] != null)
                    {
                        dataRow["志愿三"] = sx_Students[i].LoveTeacher[2];
                    }
                    if (sx_Students[i] != null && sx_Students[i].Grade != 0)
                    {
                        dataRow["综测均分"] = sx_Students[i].Grade;
                    }
                    dataTable.Rows.Add(dataRow);


                    //dataRow["是否被选"] = sx_Students[i].Beixuan > 0 ? "是" : "不是";
                }
                dataGridView1.DataSource = dataTable;
            }
        }
예제 #7
0
        private void button2_Click(object sender, EventArgs e)//加载教师列表
        {
            //获取学生对象数组
            sx_student[] sx_Students = new sx_student[50];
            sx_Students = Keepinformation.sx_Students;
            //获取教师对象数组
            sx_teacher[] sx_Teachers = new sx_teacher[20];
            sx_Teachers = Keepinformation.sx_Teachers;

            DataTable dataTable = new DataTable();

            dataTable.Columns.Add("教师姓名", typeof(string));
            dataTable.Columns.Add("应带组数", typeof(int));
            dataTable.Columns.Add("已匹配组数", typeof(int));
            dataTable.Columns.Add("匹配组数一", typeof(string));
            dataTable.Columns.Add("匹配组数二", typeof(string));
            dataTable.Columns.Add("匹配组数三", typeof(string));
            dataTable.Columns.Add("匹配组数四", typeof(double));
            dataTable.Columns.Add("匹配组数五", typeof(double));
            //dataTable.Columns.Add("是否被选", typeof(string));
            if (sx_Teachers != null)
            {
                for (int i = 0; i < sx_Teachers.Length; i++)
                {
                    if (sx_Teachers[i] == null)
                    {
                        continue;
                    }
                    if (sx_Teachers[i].Groupnumber > sx_Teachers[i].LovestuList.GetLength())
                    {
                        DataRow dataRow = dataTable.NewRow();
                        if (sx_Teachers[i] != null && sx_Teachers[i].Teaname != null)
                        {
                            dataRow["教师姓名"] = sx_Teachers[i].Teaname;
                        }
                        if (sx_Teachers[i] != null && sx_Teachers[i].Groupnumber != 0)
                        {
                            dataRow["应带组数"] = sx_Teachers[i].Groupnumber;
                        }
                        if (sx_Teachers[i] != null && sx_Teachers[i].LovestuList.GetLength() != 0)
                        {
                            dataRow["已匹配组数"] = sx_Teachers[i].LovestuList.GetLength();
                        }
                        for (int j = 1; j <= sx_Teachers[i].LovestuList.GetLength(); j++)
                        {
                            switch (j)
                            {
                            case 1:
                                dataRow["匹配组数一"] = sx_Teachers[i].LovestuList.GetElem(j).Groupid;
                                break;

                            case 2:
                                dataRow["匹配组数二"] = sx_Teachers[i].LovestuList.GetElem(j).Groupid;
                                break;

                            case 3:
                                dataRow["匹配组数三"] = sx_Teachers[i].LovestuList.GetElem(j).Groupid;
                                break;

                            case 4:
                                dataRow["匹配组数四"] = sx_Teachers[i].LovestuList.GetElem(j).Groupid;
                                break;

                            case 5:
                                dataRow["匹配组数五"] = sx_Teachers[i].LovestuList.GetElem(j).Groupid;
                                break;
                            }
                        }
                        dataTable.Rows.Add(dataRow);
                    }



                    //dataRow["是否被选"] = sx_Students[i].Beixuan > 0 ? "是" : "不是";
                }
                dataGridView2.DataSource = dataTable;
            }
        }
예제 #8
0
        public string MatchSecondtime()
        {
            sx_student[] sx_Students  = new sx_student[50];
            sx_teacher[] sx_Teachers  = new sx_teacher[20];
            DataTable    stutable     = ST_GetStuMatchtable();
            int          row_stucount = stutable.Rows.Count;
            DataTable    teatable     = ST_GetTeaMatchtable();
            int          row_teacount = teatable.Rows.Count;

            //将datatable中的值赋给sx_student对象数组
            for (int i = 0; i < row_stucount; i++)
            {
                sx_student student = new sx_student(10);
                //if(sx_Students[i]!=null)
                // {
                if (stutable.Rows[i][0] != DBNull.Value)//组号
                {
                    student.Groupid = Convert.ToInt32(stutable.Rows[i][0]);
                }

                if (stutable.Rows[i][1] != DBNull.Value)//组长姓名
                {
                    student.Stuname = stutable.Rows[i][1].ToString();
                }
                if (stutable.Rows[i][2] != DBNull.Value)//学生课题
                {
                    student.Topic = stutable.Rows[i][2].ToString();
                }
                if (stutable.Rows[i][3] != DBNull.Value)//志愿一
                {
                    student.LoveTeacher[0] = stutable.Rows[i][3].ToString();
                }
                if (stutable.Rows[i][4] != DBNull.Value)//志愿二
                {
                    student.LoveTeacher[1] = stutable.Rows[i][4].ToString();
                }
                if (stutable.Rows[i][5] != DBNull.Value)//志愿三
                {
                    student.LoveTeacher[2] = stutable.Rows[i][5].ToString();
                }
                if (stutable.Rows[i][6] != DBNull.Value)//小组平均成绩
                {
                    student.Grade = Convert.ToDouble(stutable.Rows[i][6]);
                }
                if (stutable.Rows[i][7] != DBNull.Value)//组内人数
                {
                    student.Membernum = Convert.ToInt16(stutable.Rows[i][7]);
                }
                if (stutable.Rows[i][8] != DBNull.Value)//组长学号
                {
                    student.Leaderno = stutable.Rows[i][8].ToString();
                }
                student.Beixuan = 0;//初始化被选=0

                sx_Students[i] = student;
            }

            //将datatable中的值赋给sx_teacher对象数组
            for (int i = 0; i < row_teacount; i++)
            {
                sx_teacher teacher = new sx_teacher(20);                    //实例化对象
                teacher.Teano       = teatable.Rows[i][0].ToString();       //工号
                teacher.Teaname     = teatable.Rows[i][1].ToString();       //姓名
                teacher.Groupnumber = Convert.ToInt32(teatable.Rows[i][2]); //应带组数
                if (teatable.Rows[i][3] != DBNull.Value)                    //可选组数
                {
                    teacher.Kexuan = Convert.ToInt32(teatable.Rows[i][3]);
                }

                if (teatable.Rows[i][4] != DBNull.Value)//已选组数
                {
                    teacher.Yixuan = Convert.ToInt32(teatable.Rows[i][4]);
                }
                if (teatable.Rows[i][5] != DBNull.Value)//志愿一
                {
                    teacher.Groupid[0] = Convert.ToInt32(teatable.Rows[i][5]);
                }
                if (teatable.Rows[i][6] != DBNull.Value)//志愿二
                {
                    teacher.Groupid[1] = Convert.ToInt32(teatable.Rows[i][6]);
                }
                if (teatable.Rows[i][7] != DBNull.Value)//志愿三
                {
                    teacher.Groupid[2] = Convert.ToInt32(teatable.Rows[i][7]);
                }
                if (teatable.Rows[i][8] != DBNull.Value)//志愿四
                {
                    teacher.Groupid[3] = Convert.ToInt32(teatable.Rows[i][8]);
                }
                if (teatable.Rows[i][9] != DBNull.Value)//志愿五
                {
                    teacher.Groupid[4] = Convert.ToInt32(teatable.Rows[i][9]);
                }
                sx_Teachers[i]             = teacher;
                sx_Teachers[i].LovestuList = new MyLinkList <sx_student>();//初始化一个链表,用于选择学生
            }
            Console.WriteLine("第二轮表白游戏开始啦!!!");
            //教师有可选组数,遍历每个志愿学生,看学生是否喜欢他
            for (int i = 0; i < row_teacount; i++)                  //遍历每个教师,由教师追学生
            {
                if (sx_Teachers[i].Kexuan > 0)                      //该教师是否还有名额可以收徒
                {
                    for (int k = 0; k < sx_Teachers[i].Yixuan; k++) //遍历该教师的已选志愿
                    {
                        Console.WriteLine(sx_Teachers[i].Teaname + "老师向学生" + sx_Teachers[i].Groupid[k] + "表白啦");
                        for (int j = 0; j < row_stucount; j++)
                        {
                            if (sx_Students[j].Groupid == sx_Teachers[i].Groupid[k]) //找到相应志愿的学生
                            {
                                for (int l = 0; l < 3; l++)                          //看学生的三个志愿老师里面有没有他
                                {
                                    if (sx_Students[j].LoveTeacher[l] == sx_Teachers[i].Teano && sx_Students[j].Beixuan == 0)
                                    {
                                        sx_Students[j].Beixuan = 1;
                                        sx_Teachers[i].LovestuList.Append(sx_Students[j]);
                                        Console.WriteLine("该学生被" + sx_Teachers[i].Teaname + "老师录取啦");
                                        sx_Teachers[i].Kexuan -= 1;
                                        Console.WriteLine("该老师目前可选人数为" + sx_Teachers[i].Kexuan + "人\n");



                                        break;
                                    }
                                    else if (sx_Students[j].LoveTeacher[l] == sx_Teachers[i].Teano && sx_Students[j].Beixuan == 1)
                                    {
                                        //找到该学生但却已经被录取了,那也没办法了
                                    }
                                }
                                break;
                            }
                            break;
                        }
                    }
                }
            }

            int[]  vs       = new int[40];
            int    e        = 0;
            string weipipei = "第二轮匹配失败组数[";

            foreach (sx_student sx in sx_Students)
            {
                if (sx != null && sx.Beixuan == 0)
                {
                    vs[e] = sx.Groupid;
                    e++;
                }
            }
            for (int h = 0; h < vs.Length; h++)
            {
                if (vs[h] != 0)
                {
                    weipipei += vs[h].ToString() + ",";
                }
            }
            weipipei += "]";
            Console.WriteLine(weipipei);
            Keepinformation.sx_Students   = sx_Students;
            Keepinformation.sx_Teachers   = sx_Teachers;
            Keepinformation.stsx_Students = sx_Students;
            Keepinformation.stsx_Teachers = sx_Teachers;
            Console.WriteLine("\n\n\n\n");
            Merge_First_Sec();


            return("二轮匹配结束,点击确定查看匹配结果");
        }
예제 #9
0
        //匹配算法
        public string Match()
        {
            //初始化对象数组
            sx_student[]            sx_Students = new sx_student[50];            //50个地址值
            sx_teacher[]            sx_Teachers = new sx_teacher[20];            //20个地址值
            MyLinkList <sx_student> myLinkList  = new MyLinkList <sx_student>(); //声明对象链表

            DataTable stutable     = GetStuMatchtable();                         //获取学生列表
            int       row_stucount = stutable.Rows.Count;
            DataTable teatable     = GetTeaMatchtable();                         //获取教师列表
            int       row_teacount = teatable.Rows.Count;

            //将datatable中的值赋给sx_student对象数组
            for (int i = 0; i < row_stucount; i++)
            {
                sx_student student = new sx_student(10);
                //if(sx_Students[i]!=null)
                // {
                if (stutable.Rows[i][0] != DBNull.Value)//组号
                {
                    student.Groupid = Convert.ToInt32(stutable.Rows[i][0]);
                }

                if (stutable.Rows[i][1] != DBNull.Value)//组长姓名
                {
                    student.Stuname = stutable.Rows[i][1].ToString();
                }
                if (stutable.Rows[i][2] != DBNull.Value)//学生课题
                {
                    student.Topic = stutable.Rows[i][2].ToString();
                }
                if (stutable.Rows[i][3] != DBNull.Value)//志愿一
                {
                    student.LoveTeacher[0] = stutable.Rows[i][3].ToString();
                }
                if (stutable.Rows[i][4] != DBNull.Value)//志愿二
                {
                    student.LoveTeacher[1] = stutable.Rows[i][4].ToString();
                }
                if (stutable.Rows[i][5] != DBNull.Value)//志愿三
                {
                    student.LoveTeacher[2] = stutable.Rows[i][5].ToString();
                }
                if (stutable.Rows[i][6] != DBNull.Value)//小组平均成绩
                {
                    student.Grade = Convert.ToDouble(stutable.Rows[i][6]);
                }
                if (stutable.Rows[i][7] != DBNull.Value)//组内人数
                {
                    student.Membernum = Convert.ToInt16(stutable.Rows[i][7]);
                }
                if (stutable.Rows[i][8] != DBNull.Value)//组长学号
                {
                    student.Leaderno = stutable.Rows[i][8].ToString();
                }
                student.Beixuan = 0;//初始化被选=0

                sx_Students[i] = student;
                //}
            }
            //将datatable中的值赋给sx_teacher对象数组
            for (int i = 0; i < row_teacount; i++)
            {
                sx_teacher teacher = new sx_teacher(20);                    //实例化对象
                teacher.Teano       = teatable.Rows[i][0].ToString();       //工号
                teacher.Teaname     = teatable.Rows[i][1].ToString();       //姓名
                teacher.Groupnumber = Convert.ToInt32(teatable.Rows[i][2]); //应带组数
                if (teatable.Rows[i][3] != DBNull.Value)                    //已选组数
                {
                    teacher.Yixuan = Convert.ToInt32(teatable.Rows[i][3]);
                }
                if (teatable.Rows[i][4] != DBNull.Value)//志愿一
                {
                    teacher.Groupid[0] = Convert.ToInt32(teatable.Rows[i][4]);
                }
                if (teatable.Rows[i][5] != DBNull.Value)//志愿二
                {
                    teacher.Groupid[1] = Convert.ToInt32(teatable.Rows[i][5]);
                }
                if (teatable.Rows[i][6] != DBNull.Value)//志愿三
                {
                    teacher.Groupid[2] = Convert.ToInt32(teatable.Rows[i][6]);
                }
                if (teatable.Rows[i][7] != DBNull.Value)//志愿四
                {
                    teacher.Groupid[3] = Convert.ToInt32(teatable.Rows[i][7]);
                }
                if (teatable.Rows[i][8] != DBNull.Value)//志愿五
                {
                    teacher.Groupid[4] = Convert.ToInt32(teatable.Rows[i][8]);
                }
                sx_Teachers[i]             = teacher;
                sx_Teachers[i].LovestuList = new MyLinkList <sx_student>();//初始化一个链表,用于选择学生
            }

            Console.WriteLine("表白游戏开始啦!!!");
            //学生有三个志愿,遍历三个志愿,找对应的teacher,看老师是否喜欢他
            for (int i = 0; i < row_stucount; i++)
            {
                Console.WriteLine("\n\n学生" + sx_Students[i].Groupid + "进来啦");
                if (sx_Students[i].Beixuan != 0)//若已经被选了就直接轮到下一个学生
                {
                    continue;
                }
                for (int m = 0; m < 3; m++)//三个志愿老师
                {
                    string get_Lovetea = sx_Students[i].LoveTeacher[m];
                    for (int k = 0; k < row_teacount; k++)       //遍历老师列表,查找当前学生的心仪老师
                    {
                        if (sx_Teachers[k].Teano == get_Lovetea) //找到这个老师
                        {
                            Console.WriteLine("学生" + sx_Students[i].Groupid + "向" + "第" + (m + 1) + "志愿老师" + sx_Teachers[k].Teaname + "表白了");

                            for (int a = 0; a < 5; a++)                                                                      //教师的志愿个数,最多循环5个志愿
                            {
                                if (sx_Teachers[k].Groupid[a].Equals(sx_Students[i].Groupid) && sx_Students[i].Beixuan == 0) //这个老师也喜欢他
                                {
                                    Console.WriteLine("老师也喜欢他");
                                    //判断他招的学生满了没有
                                    if (sx_Teachers[k].LovestuList.GetLength() < sx_Teachers[k].Groupnumber && sx_Students[i].Beixuan == 0)//没满
                                    {
                                        int flag = 0;
                                        //   判断这个老师列表里是不是已经有了该学生了
                                        for (int f = 1; f <= sx_Teachers[k].LovestuList.GetLength(); f++)
                                        {
                                            if (sx_Teachers[k].LovestuList.GetElem(f).Groupid == sx_Students[i].Groupid)//该老师列表已有这个学生
                                            {
                                                flag += 1;
                                                Console.WriteLine("学生重复,不加入链表");
                                                break;
                                            }
                                        }
                                        if (flag == 0 && sx_Students[i].Beixuan == 0)//这个老师列表里还没有这个学生且学生未被其他老师选
                                        {
                                            sx_student item = sx_Students[i];
                                            item.Beixuan = 1;
                                            sx_Teachers[k].LovestuList.Append(item);
                                            Console.WriteLine("恭喜学生" + item.Groupid + "被" + sx_Teachers[k].Teaname + "老师录取了");

                                            string str = "此时教师" + sx_Teachers[k].Teaname + "的心仪学生有:[";
                                            for (int t = 1; t <= sx_Teachers[k].LovestuList.GetLength(); t++)
                                            {
                                                str += sx_Teachers[k].LovestuList.GetElem(t).Groupid + ",";
                                            }
                                            str += "]";
                                            Console.WriteLine(str);
                                            //break;
                                        }
                                        else
                                        {
                                            break;
                                        }
                                    }
                                    else//满了
                                    {
                                        Console.WriteLine("啊哦,这个老师的可选人数已满了,让我们来看看可不可以抢位置");
                                        int length = sx_Teachers[k].LovestuList.GetLength();                        //获取已选学生列表长度
                                        for (int p = 1; p <= length; p++)                                           //替换掉比当前学生成绩低的学生
                                        {
                                            if (sx_Teachers[k].LovestuList.GetElem(p).Grade < sx_Students[i].Grade) //有比该学生成绩还要低的
                                            {
                                                for (int g = 1; g <= row_stucount; g++)
                                                {
                                                    if (sx_Students[g].Groupid == sx_Teachers[k].LovestuList.GetElem(p).Groupid)//根据教师列表中的groupid定位到学生对象数组中对应学生
                                                    {
                                                        sx_Students[g].Beixuan = 0;
                                                    }
                                                }
                                                Console.WriteLine("找到" + sx_Teachers[k].LovestuList.GetElem(p).Groupid + "比" + sx_Students[i].Groupid + "成绩还要低!抢他!!");
                                                Console.WriteLine("学生" + sx_Teachers[k].LovestuList.GetElem(p).Groupid + "失恋了,他的指导老师被学生" + sx_Students[i].Groupid + "抢了");
                                                sx_Teachers[k].LovestuList.Delete(p);              //删除第p个节点
                                                sx_Students[i].Beixuan = 1;
                                                sx_Teachers[k].LovestuList.Append(sx_Students[i]); //插入第i个节点
                                                Console.WriteLine("恭喜学生" + sx_Students[i].Groupid + "被" + sx_Teachers[k].Teaname + "老师录取了");
                                                string str = "此时教师" + sx_Teachers[k].Teaname + "的心仪学生有:[";
                                                for (int t = 1; t <= sx_Teachers[k].LovestuList.GetLength(); t++)
                                                {
                                                    str += sx_Teachers[k].LovestuList.GetElem(t).Groupid + ",";
                                                }
                                                str += "]";
                                                Console.WriteLine(str);
                                                //break;
                                            }
                                            else//没有比当前学生成绩还要低的了
                                            {
                                                Console.WriteLine("你的段位才" + sx_Students[i].Grade + ",打不过这个组" + sx_Teachers[k].LovestuList.GetElem(p).Groupid + ",他的段位" + sx_Teachers[k].LovestuList.GetElem(p).Grade);
                                                continue;
                                            }
                                        }
                                    }
                                }
                                else//这个老师不喜欢当前学生
                                {
                                    //若有空位则暂时接受该学生
                                    if (sx_Teachers[k].LovestuList.GetLength() < sx_Teachers[k].Groupnumber && sx_Students[i].Beixuan == 0)
                                    {
                                        sx_Students[i].Beixuan = 1;
                                        sx_Teachers[k].LovestuList.Append(sx_Students[i]);//
                                        Console.WriteLine("该老师不喜欢这个学生,不过可以暂时接受他");
                                        Console.WriteLine("恭喜学生" + sx_Students[i].Groupid + "被老师" + sx_Teachers[k].Teaname + "录取啦!");
                                        string str = "此时教师" + sx_Teachers[k].Teaname + "的心仪学生有:[";
                                        for (int t = 1; t <= sx_Teachers[k].LovestuList.GetLength(); t++)
                                        {
                                            str += sx_Teachers[k].LovestuList.GetElem(t).Groupid + ",";
                                        }
                                        str += "]";
                                        Console.WriteLine(str);
                                        //break;
                                    }
                                    //break;
                                }
                            }
                        }
                        else//没找到这个老师,不可能吧
                        {
                            //Console.WriteLine("没找到"+ sx_Teachers[k].Teano  + "老师不可能呀"+ ",我要找的是:"+ get_Lovetea);
                            if (sx_Students[i].Beixuan == 1)
                            {
                                break;
                            }
                            else
                            {
                                continue;
                            }
                        }
                    }
                }
            }


            int[]  vs       = new int[40];
            int    e        = 0;
            string weipipei = "第一轮匹配失败组数[";

            foreach (sx_student sx in sx_Students)
            {
                if (sx != null && sx.Beixuan == 0)
                {
                    vs[e] = sx.Groupid;
                    e++;
                }
            }
            for (int h = 0; h < vs.Length; h++)
            {
                if (vs[h] != 0)
                {
                    weipipei += vs[h].ToString() + ",";
                }
            }
            weipipei += "]";
            Console.WriteLine(weipipei);



            for (int h = 0; h < sx_Teachers.Length; h++)  //检测教师心仪的学生链表里的值
            {
                MyLinkList <sx_student> myLinkList1 = new MyLinkList <sx_student>();
                if (sx_Teachers[h] != null && sx_Teachers[h].LovestuList.GetLength() > 0)
                {
                    myLinkList1 = sx_Teachers[h].LovestuList;
                    string str = "教师" + sx_Teachers[h].Teano + "   ___" + sx_Teachers[h].Teaname + "选的学生是[";
                    for (int i = 1; i <= sx_Teachers[h].LovestuList.GetLength(); i++)
                    {
                        str += myLinkList1.GetElem(i).Groupid + ",";
                    }
                    str += "]";
                    Console.WriteLine(str);
                }
            }


            Keepinformation.sx_Students = sx_Students; //没办法同时返回两个对象数组,只能通过第三方存储了???
            Keepinformation.sx_Teachers = sx_Teachers;



            return("一轮匹配结束,点击确定查看匹配结果");
        }