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

📄 utility.cs

📁 实现课程表编排和打印功能,通过在候选列表中选择课程和教师(没有被排课且该教师教授所选择的课程)来完成排课,代码约8000行
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Data;

using System.Text.RegularExpressions;

namespace 课程安排
{
    public class Utility
    {
        // 匹配日期
        public static bool isDateString(string strIn)
        {
            return true;
            //return Regex.IsMatch(strIn, @"^2\d{3}-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|[1-2]\d|3[0-1])(?:0?[1-9]|1\d|2[0-3]):(?:0?[1-9]|[1-5]\d):(?:0?[1-9]|[1-5]\d)$");
        }

        // 匹配年份
        public static bool isYearString(string strIn)
        {
            return true;
            //return Regex.IsMatch(strIn, @"^2\d{3}-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|[1-2]\d|3[0-1])(?:0?[1-9]|1\d|2[0-3]):(?:0?[1-9]|[1-5]\d):(?:0?[1-9]|[1-5]\d)$");
        }

        public static bool CheckComboText(object o)
        {
            bool b = false;
            if (o is ComboBox)
            {
                ComboBox cmb = o as ComboBox;
                if (cmb.Text != "")
                {
                    for (int i = 0; i < cmb.Items.Count; i++)
                    {
                        if (cmb.Text == cmb.Items[i].ToString())
                        {
                            b = true;
                            break;
                        }
                    }
                }
            }
            return b;
        }

        // 判断名称是否符合格式
        public static bool IsNameString(string name)
        {
            bool b = true;
            if (name == null || name == "")
                b = false;
            return b;
        }


        //  将枚举类型转换成字符串
        public static string WeekToString(Week week)
        {
            string weekString = "";
            if (week == Week.星期一)
                weekString = "1";
            else if (week == Week.星期二)
                weekString = "2";
            else if (week == Week.星期三)
                weekString = "3";
            else if (week == Week.星期四)
                weekString = "4";
            else if (week == Week.星期五)
                weekString = "5";
            else if (week == Week.星期六)
                weekString = "6";
            else if (week == Week.星期日)
                weekString = "7";
            return weekString;

        }
        //  将字符串转换成枚举类型
        public static Week StringToWeek(string weekString)
        {
            Week week = Week.星期一;
            if (weekString == "1")
                week = Week.星期一;
            else if (weekString == "2")
                week = Week.星期二;
            else if (weekString == "3")
                week = Week.星期三;
            else if (weekString == "4")
                week = Week.星期四;
            else if (weekString == "5")
                week = Week.星期五;
            else if (weekString == "6")
                week = Week.星期六;
            else if (weekString == "7")
                week = Week.星期日;
            return week;
        }
        //  将枚举类型转换成字符串
        public static int WeekToInt(Week week)
        {
            int weekString = 0;
            if (week == Week.星期一)
                weekString = 1;
            else if (week == Week.星期二)
                weekString = 2;
            else if (week == Week.星期三)
                weekString = 3;
            else if (week == Week.星期四)
                weekString = 4;
            else if (week == Week.星期五)
                weekString = 5;
            else if (week == Week.星期六)
                weekString = 6;
            else if (week == Week.星期日)
                weekString = 7;
            return weekString;

        }
        //  将字符串转换成枚举类型
        public static Week IntToWeek(int weekString)
        {
            Week week = Week.星期一;
            if (weekString == 1)
                week = Week.星期一;
            else if (weekString == 2)
                week = Week.星期二;
            else if (weekString == 3)
                week = Week.星期三;
            else if (weekString == 4)
                week = Week.星期四;
            else if (weekString == 5)
                week = Week.星期五;
            else if (weekString == 6)
                week = Week.星期六;
            else if (weekString == 7)
                week = Week.星期日;
            return week;
        }

        //  由入学时间和教学级别计算获得年级
        public static string GetGradeName(DateTime dateTime, EditLevel level)
        {
            if (dateTime == null)
                return "";
            int year = Convert.ToInt32(DateTime.Today.Date.Year);
            int month = Convert.ToInt32(DateTime.Today.Date.Month);
            int day = Convert.ToInt32(DateTime.Today.Date.Day);

            int sYear = Convert.ToInt32(dateTime.Year);
            int sMonth = Convert.ToInt32(dateTime.Month);
            int sDay = Convert.ToInt32(dateTime.Day);

            int g;
            if (month > sMonth)
            {
                g = year - sYear + 1;
            }
            else
            {
                g = year - sYear;
            }

            string gradeName = "";
            if (level == EditLevel.小学)
            {
                gradeName = g.ToString();
            }
            else if (level == EditLevel.初中)
            {
                g = g + 6;
                gradeName = g.ToString();
            }
            else if (level == EditLevel.高中)
            {
                g = g + 9;
                gradeName = g.ToString();
            }
            return gradeName;
        }

        public static DateTime GetStartTime(string gradeName, EditLevel level)
        {
            DateTime dt = DateTime.Today;
            try
            {
                int year = 0;
                int month = 0;
                int day = 0;
                int g = Convert.ToInt32(gradeName);
                if (g > 0 && g <= 12)
                {
                    if (level == EditLevel.初中)
                        g = g - 3;
                    else if (level == EditLevel.高中)
                        g = g - 6;
                    
                    dt = new DateTime();
                    if (DateTime.Today.Month < 9)
                        year = DateTime.Today.Year - g;
                    else
                        year = DateTime.Today.Year - g + 1;
                    month = 9;
                    day = 1;
                    dt = new DateTime(year, month, day);
                }
            }
            catch (Exception ex)
            {

            }
            return dt;
        }

        public static EditLevel GetEditLevel(string gradeName)
        {
            EditLevel el = EditLevel.NULL;
            try
            {
                int g = Convert.ToInt32(gradeName);
                if (g > 0 && g <= 12)
                {
                    if (g <= 6)
                        el = EditLevel.小学;
                    else if (g <= 9)
                        el = EditLevel.初中;
                    else
                        el = EditLevel.高中;
                }
            }
            catch (Exception ex)
            {

            }
            return el;
        }

        public static CourseTime GetCourseTimeObject(string ct)
        {
            CourseTime courseTime = null;
            try
            {
                string[] strs = ct.Split('-');
                if (strs.Length == 2)
                {
                    courseTime = new CourseTime();
                    courseTime.Week = StringToWeek(strs[0]);
                    courseTime.CourseNum = Convert.ToInt32(strs[1]);
                }
            }
            catch (Exception ex)
            {

            }
            return courseTime;
        }

        public static string GetCourseTimeString(CourseTime ct)
        {
            string str = "";
            if (ct != null)
            {
                str = WeekToString(ct.Week);
                str = str + "-" + ct.CourseNum.ToString();
            }
            return str;
        }

        public static string GetEditLevelString(EditLevel el)
        {
            string str = "";
            if (el != null)
            {
                if (el == EditLevel.小学)
                    str = "小学";
                else if (el == EditLevel.初中)
                    str = "初中";
                else if (el == EditLevel.高中)
                    str = "高中";
            }
            return str;
        }

        public static EditLevel GetEditLevelObject(string el)
        {
            EditLevel editLevel = EditLevel.NULL;
            if (el != null && el != "")
            {
                if (el == "小学")
                    editLevel = EditLevel.小学;
                else if (el == "初中")
                    editLevel = EditLevel.初中;
                else if (el == "高中")
                    editLevel = EditLevel.高中;
            }
            return editLevel;
        }

        public static string GetShowGradeNameFromObject(Grade grade)
        {
            int i = Convert.ToInt32(grade.GradeName);
            string str = "";
            if (i <= 6)
            {
                str = grade.GradeName + "年级";
            }
            else if (i > 6 && i <= 9)
            {
                int t = i - 6;
                str = "初" + t.ToString();
            }
            else
            {
                int t = i - 9;
                str = "高" + t.ToString();
            }
            return str;
        }

        public static Grade GetGradeObjectFromShowName(string showName)
        {
            string str = "";
            if (showName.Contains("年级"))
            {
                str = showName.Replace("年级", "");
            }
            else if (showName.Contains("初"))
            {
                str = showName.Replace("初", "");
                int i = Convert.ToInt32(str);
                i = i + 6;
                str = i.ToString();
            }
            else
            {
                str = showName.Replace("高", "");
                int i = Convert.ToInt32(str);
                i = i + 9;
                str = i.ToString();
            }
            Grade grade = School.GetGrade(str);
            return grade;
        }

        #region 数据表操作
        public static string GetMaxId(DataTable dt, string field)
        {
            int maxId = 0;
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (maxId < Convert.ToInt32(dt.Rows[i][field]))
                    maxId = Convert.ToInt32(dt.Rows[i][field]);
            }
            maxId++;
            return maxId.ToString();
        }

        public static DataRow GetRow(DataTable dt, string field, string id)
        {
            DataRow[] drs = dt.Select(field + " = " + id);
            if (drs.Length <= 0)
                return null;
            else
                return drs[0];
        }

        public static DataRow GetRowByName(DataTable dt, string field, string name)
        {
            DataRow[] drs = dt.Select(field + " = '" + name + "'");
            if (drs.Length <= 0)
                return null;
            else
                return drs[0];
        }
        #endregion

        #region 判断名称是否重复
        public static bool isRepeat(object collect, string name)
        {
            bool b = false;
            if (collect != null)
            {
                if (collect is List<Subject>)
                {
                    List<Subject> subjects = collect as List<Subject>;
                    for (int i = 0; i < subjects.Count; i++)
                    {
                        if (subjects[i].SubjectName == name)
                        {
                            b = true;
                            break;
                        }
                    }
                }
                else if (collect is List<Teacher>)
                {
                    List<Teacher> teachers = collect as List<Teacher>;
                    for (int i = 0; i < teachers.Count; i++)
                    {
                        if (teachers[i].TeacherName == name)
                        {
                            b = true;
                            break;
                        }
                    }
                }
                else if (collect is List<Class>)
                {
                    List<Class> classes = collect as List<Class>;
                    for (int i = 0; i < classes.Count; i++)
                    {
                        if (classes[i].ClassName == name)
                        {
                            b = true;
                            break;
                        }
                    }

                }
            }
            return b;
        }

        // 在同一老师(或同一班级)不可能同一时间上两门课,即只用判断 教师和课程时间, 班级和课程时间都不重复(课程目前没有使用)
        public static bool isRepeatCourse(List<Course> courses, Teacher teacher, Class cls, CourseTime courseTime, Subject subject)
        {
            bool b = false;
            if (courses != null)
            {
                for (int i = 0; i < courses.Count; i++)
                {
                    if (courses[i].Class.Equals(cls) && courses[i].CourseTime.Equals(courseTime))
                    {
                        b = true;
                        break;
                    }
                    if (courses[i].Teacher.Equals(teacher) && courses[i].CourseTime.Equals(courseTime))
                    {
                        b = true;
                        break;
                    }
                }
            }
            return b;
        }
        #endregion
    }
}

⌨️ 快捷键说明

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