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

📄 mainmodule.cs

📁 实现课程表编排和打印功能,通过在候选列表中选择课程和教师(没有被排课且该教师教授所选择的课程)来完成排课,代码约8000行
💻 CS
📖 第 1 页 / 共 5 页
字号:
            if (School.subjects != null)
            {
                School.subjects.Clear();
            }
        }

        public static void RemoveAllTeacher()
        {
            if (School.teachers != null)
            {
                School.teachers.Clear();
            }

            if (School.grades != null)
            {
                for (int i = 0; i < grades.Count; i++)
                {
                    if (grades[i].Teachers != null)
                        grades[i].Teachers.Clear();
                }
            }

            
        }

        public static void Clear()
        {
            if (School.teachers != null)
                School.teachers.Clear();
            if (School.subjects != null)
                School.subjects.Clear();
            if (School.grades != null)
                School.grades.Clear();
            if (School.courses != null)
                School.courses.Clear();
            if (School.classes != null)
                School.classes.Clear();
        }

        public static Class GetClass(string className)
        {
            Class cls = null;
            if (School.classes != null)
            {
                for (int i = 0; i < School.classes.Count; i++)
                {
                    if (School.classes[i].ClassName == className)
                    {
                        cls = School.classes[i];
                        break;
                    }
                }
            }
            return cls;
        }

        public static Grade GetGrade(string gradeName)
        {
            Grade grade = null;
            if (School.grades != null)
            {
                for (int i = 0; i < School.grades.Count; i++)
                {
                    if (School.grades[i].GradeName == gradeName)
                    {
                        grade = School.grades[i];
                        break;
                    }
                }
            }
            return grade;
        }

        public static Subject GetSubject(string subjectName)
        {
            Subject subject = null;
            if (School.subjects != null)
            {
                for (int i = 0; i < School.subjects.Count; i++)
                {
                    if (School.subjects[i].SubjectName == subjectName)
                    {
                        subject = School.subjects[i];
                        break;
                    }
                }
            }
            return subject;
        }

        public static Teacher GetTeacher(string teacherName)
        {
            Teacher teacher = null;
            if (School.teachers != null)
            {
                for (int i = 0; i < School.teachers.Count; i++)
                {
                    if (School.teachers[i].TeacherName == teacherName)
                    {
                        teacher = School.teachers[i];
                        break;
                    }
                }
            }
            return teacher;
        }

        #region 读写数据库
        public static void ReadFromDB()
        {
            IDataOperate dataOper = DataBaseFactory.CreateAccessOperate();
            DataTable dtClass = dataOper.Search(sqlClass);
            DataTable dtRelationTable = dataOper.Search(sqlRelationTable1);
            DataTable dtTeacher = dataOper.Search(sqlTeacher);
            DataTable dtSubject = dataOper.Search(sqlSubject);
            DataTable dtCourseTable = dataOper.Search(sqlCourseTable);

            if (School.grades == null)
                School.grades = new List<Grade>();
            else
                School.grades.Clear();
            for (int i = 1; i <= 12; i++)
            {
                Grade grade = new Grade();
                grade.GradeName = i.ToString();
                School.grades.Add(grade);
            }


            if (dtTeacher != null)
            {
                if (School.teachers == null)
                    School.teachers = new List<Teacher>();
                else
                    School.teachers.Clear();
                for (int i = 0; i < dtTeacher.Rows.Count; i++)
                {
                    Teacher teacher = new Teacher();
                    teacher.TeacherName = dtTeacher.Rows[i][teacherNameField].ToString();
                    School.AddTeacher(teacher);
                }
            }

            if (dtClass != null)
            {
                if (School.classes == null)
                    School.classes = new List<Class>();
                else
                    School.classes.Clear();
                for (int i = 0; i < dtClass.Rows.Count; i++)
                {
                    //Class cls = new Class();
                    string className = dtClass.Rows[i][classNameField].ToString();
                    //cls.ClassName = dtClass.Rows[i][classNameField].ToString();
                    DateTime dateTime = Convert.ToDateTime(dtClass.Rows[i][classStartTimeField]);
                    Class cls = School.CreateClass(className, dateTime);
                    EditLevel el = Utility.GetEditLevelObject(dtClass.Rows[i][classLevelField].ToString());
                    string gradeName = Utility.GetGradeName(dateTime, el);
                    Grade grade = GetGrade(gradeName);
                    cls.Grade = grade;
                    grade.AddClass(cls);
                }
            }

            if (dtSubject != null)
            {
                if (School.subjects == null)
                    School.subjects = new List<Subject>();
                else
                    School.subjects.Clear();
                for (int i = 0; i < dtSubject.Rows.Count; i++)
                {
                    Subject subject = new Subject();
                    subject.SubjectName = dtSubject.Rows[i][subjectNameField].ToString();
                    School.AddSubject(subject);
                }
            }

            if (dtRelationTable != null)
            {
                // 获取教师和年级有关系的所有记录
                DataRow[] drs = dtRelationTable.Select(relateTypeField + " = 1");
                for (int i = 0; i < drs.Length; i++)
                {
                    string rv1 = drs[i][relatePK1Field].ToString();
                    string teacherName = GetName(dtTeacher, teacherNameField, rv1);
                    string gradeName = drs[i][relatePK2Field].ToString();

                    Teacher teacher = GetTeacher(teacherName);
                    Grade grade = GetGrade(gradeName);
                    teacher.AddGrade(grade);
                    grade.AddTeacher(teacher);
                }

                // 获取教师和科目有关系的所有记录
                drs = dtRelationTable.Select(relateTypeField + " = 2");
                for (int i = 0; i < drs.Length; i++)
                {
                    string rv1 = drs[i][relatePK1Field].ToString();
                    string rv2 = drs[i][relatePK2Field].ToString();
                    string teacherName = GetName(dtTeacher, teacherNameField, rv1);
                    string subjectName = GetName(dtSubject, subjectNameField, rv2);

                    Teacher teacher = GetTeacher(teacherName);
                    Subject subject = GetSubject(subjectName);
                    teacher.AddSubject(subject);
                    subject.AddTeacher(teacher);
                }

                // 获取年级和科目有关系的所有记录
                drs = dtRelationTable.Select(relateTypeField + " = 3");
                for (int i = 0; i < drs.Length; i++)
                {
                    string rv1 = drs[i][relatePK2Field].ToString();
                    string gradeName = drs[i][relatePK1Field].ToString();
                    string subjectName = GetName(dtSubject, subjectNameField, rv1);

                    Subject subject = GetSubject(subjectName);
                    Grade grade = GetGrade(gradeName);
                    grade.AddSubject(subject);
                }
            }

            if (School.courses == null)
                School.courses = new List<Course>();
            else
                School.courses.Clear();
            if (dtCourseTable != null)
            {
                for (int i = 0; i < dtCourseTable.Rows.Count; i++)
                {
                    string courseTimeString = dtCourseTable.Rows[i][courseTimeField].ToString();
                    string teacherId = dtCourseTable.Rows[i][courseTeacherIdField].ToString();
                    string subjectId = dtCourseTable.Rows[i][courseSubjectIdField].ToString();
                    string classId = dtCourseTable.Rows[i][courseClassIdField].ToString();

                    string teacherName = GetName(dtTeacher, teacherNameField, teacherId);
                    string subjectName = GetName(dtSubject, subjectNameField, subjectId);
                    string className = GetName(dtClass, classNameField, classId);

                    Teacher teacher = GetTeacher(teacherName);
                    Subject subject = GetSubject(subjectName);
                    Class cls = GetClass(className);

                    Course course = new Course();
                    course.Class = cls;
                    course.Teacher = teacher;
                    course.Subject = subject;
                    course.CourseTime = Utility.GetCourseTimeObject(courseTimeString);
                    School.courses.Add(course);

                    if (teacher.CourseTable == null)
                        teacher.CourseTable = new CourseTable();
                    teacher.CourseTable.AddCourse(course);

                    if (cls.CourseTable == null)
                        cls.CourseTable = new CourseTable();
                    cls.CourseTable.AddCourse(course);
                }
            }
        }

        private static string GetName(DataTable dt, string nameField, string id)
        {
            string name = "";
            DataRow[] drs = dt.Select(idField + " = " + id);
            if (drs.Length > 0)
            {
                name = drs[0][nameField].ToString();
            }
            return name;
        }

        //  将数据写入到数据库中
        public static bool WriteToDB()
        {
            bool b;
            try
            {
                IDataOperate dataOper = DataBaseFactory.CreateAccessOperate();

                dataOper.ClearTable(teacherTableName);
                DataTable dtTeacher = dataOper.Search(sqlTeacher);

                dtTeacher = dataOper.Search(sqlTeacher);
                if (School.teachers != null)
                {
                    for (int i = 0; i < School.teachers.Count; i++)
                    {
                        DataRow dr = dtTeacher.NewRow();
                        dtTeacher.Rows.Add(dr);
                        dr[teacherNameField] = School.teachers[i].TeacherName;
                    }
                    dataOper.UpdateTable(sqlTeacher, dtTeacher);
                    dtTeacher.AcceptChanges();
                }


                dataOper.ClearTable(subjectTableName);
                DataTable dtSubject = dataOper.Search(sqlSubject);
                if (School.subjects != null)
                {
                    for (int i = 0; i < School.subjects.Count; i++)
                    {
                        DataRow dr = dtSubject.NewRow();
                        dtSubject.Rows.Add(dr);
                        dr[subjectNameField] = School.subjects[i].SubjectName;
                    }
                    dataOper.UpdateTable(sqlSubject, dtSubject);
                    dtSubject.AcceptChanges();
                }


                dataOper.ClearTable(classTableName);
                DataTable dtClass = dataOper.Search(sqlClass);
                if (School.classes != null)
                {
                    for (int i = 0; i < School.classes.Count; i++)
                    {
                        string gradeName = School.classes[i].Grade.GradeName;
                        DateTime date = School.classes[i].ClassStartTime;
                        EditLevel el = Utility.GetEditLevel(gradeName);
                        string elstr = Utility.GetEditLevelString(el);

                        DataRow dr = dtClass.NewRow();
                        dtClass.Rows.Add(dr);
                        dr[classNameField] = School.classes[i].ClassName;
                        dr[classStartTimeField] = date;
                        dr[classLevelField] = elstr;
                    }
                    dataOper.UpdateTable(sqlClass, dtClass);
                    dtClass.AcceptChanges();
                }

                //  设置关系表1
                dtTeacher = dataOper.Search(sqlTeacher);
                dtSubject = dataOper.Search(sqlSubject);
                dtClass = dataOper.Search(sqlClass);

                dataOper.ClearTable(relationTableName);
                DataTable dtRelationTable = dataOper.Search(sqlRelationTable1);
                if (School.teachers != null)
                {
                    for (int i = 0; i < School.teachers.Count; i++)
                    {
                        Teacher teacher = School.teachers[i];
                        DataRow drt = Utility.GetRowByName(dtTeacher, teacherNameField, teacher.TeacherName);
                        if (teacher.Grades != null)
                        {
                            for (int j = 0; j < teacher.Grades.Count; j++)
                            {
                                if (drt != null)
                                {
                                    DataRow dr = dtRelationTable.NewRow();
                                    dtRelationTable.Rows.Add(dr);
                                    dr[relateTypeField] = 1;
                                    dr[relatePK1Field] = drt[idField].ToString();
                                    dr[relatePK2Field] = teacher.Grades[j].GradeName;
                                }
                            }
                        }

                        if (teacher.Subjects != null)
                        {
                            for (int j = 0; j < teacher.Subjects.Count; j++)
                            {
                                DataRow drs = Utility.GetRowByName(dtSubject, subjectNameField, teacher.Subjects[j].SubjectName);
                                if (drt != null && drs != null)
                                {
                                    DataRow dr = dtRelationTable.NewRow();
                                    dtRelationTable.Rows.Add(dr);
                                    dr[relateTypeField] = 2;
                                    dr[relatePK1Field] = drt[idField].ToString();
                                    dr[relatePK2Field] = drs[idField].ToString();
                                }
                            }
                        }
                    }
                }

                if (School.grades != null)
                {
                    for (int i = 0; i < School.grades.Count; i++)
                    {
                        Grade grade = School.grades[i];
                        if (grade.Subjects != null)
                        {
                            for (int j = 0; j < grade.Subjects.Count; j++)
                            {
                                DataRow drs = Utility.GetRowByName(dtSubject, subjectNameField, grade.Subjects[j].SubjectName);
                                if (drs != null)
                                {
                                    DataRow dr = dtRelationTable.NewRow();
                                    dtRelationTable.Rows.Add(dr);
                                    dr[relateTypeField] = 3;
                                    dr[relatePK1Field] = grade.GradeName;
                                    dr[relatePK2Field] = drs[idField].ToString();
                                }
                            }
                        }
                    }
        

⌨️ 快捷键说明

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