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

📄 teacherui.cs

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

namespace 课程安排
{
    public partial class TeacherUI : Form
    {
        private bool hasModify = false;
        private Teacher curTeacher = null;

        public TeacherUI()
        {
            InitializeComponent();
            LoadData();
        }

        //  载入初始数据
        private void LoadData()
        {
            this.listBox1.Items.Clear();
            if (School.Teachers != null)
            {
                for (int i = 0; i < School.Teachers.Count; i++)
                {
                    this.listBox1.Items.Add(School.Teachers[i].TeacherName);
                }
            }
            if (listBox1.Items.Count <= 0)
                return;
            this.listBox1.SelectedIndex = 0;
            if (Utility.IsNameString(this.listBox1.SelectedItem.ToString()))
            {
                this.lblTeacherName.Text = this.listBox1.SelectedItem.ToString();
                LoadRelateData(School.GetTeacher(this.listBox1.SelectedItem.ToString()));
            }
        }

        //  载入与教师相关的信息(年级和科目)
        private void LoadRelateData(Teacher teacher)
        {
            if (teacher != null)
            {
                List<string> sGrades = new List<string>();
                List<string> dGrades = new List<string>();

                if (teacher.Grades != null)
                {
                    for (int i = 0; i < School.Grades.Count; i++)
                    {
                        if (teacher.HasGrade(School.Grades[i]))
                        {
                            sGrades.Add(Utility.GetShowGradeNameFromObject(School.Grades[i]));
                        }
                        else
                        {
                            dGrades.Add(Utility.GetShowGradeNameFromObject(School.Grades[i]));
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < School.Grades.Count; i++)
                    {
                        dGrades.Add(Utility.GetShowGradeNameFromObject(School.Grades[i]));
                    }
                }
                this.dragInfoControlGrade.SourceStrings = sGrades;
                this.dragInfoControlGrade.DestinationStrings = dGrades;


                List<string> sSubject = new List<string>();
                List<string> dSubject = new List<string>();
                if (teacher.Subjects != null)
                {
                    for (int i = 0; i < School.Subjects.Count; i++)
                    {
                        if (teacher.HasSubject(School.Subjects[i]))
                            sSubject.Add(School.Subjects[i].SubjectName);
                        else
                            dSubject.Add(School.Subjects[i].SubjectName);
                    }
                }
                else
                {
                    for (int i = 0; i < School.Subjects.Count; i++)
                    {
                        dSubject.Add(School.Subjects[i].SubjectName);
                    }
                }
                this.dragInfoControlSubject.SourceStrings = sSubject;
                this.dragInfoControlSubject.DestinationStrings = dSubject;
            }
        }

        //  保存与教师相关的信息(年级和科目)
        private void SaveRelateData(Teacher teacher)
        {
            if (teacher != null)
            {
                IList<string> sGrade = dragInfoControlGrade.SourceStrings;
                IList<string> dGrade = dragInfoControlGrade.DestinationStrings;
                for (int i = 0; i < sGrade.Count; i++)
                {
                    Grade grade = Utility.GetGradeObjectFromShowName(sGrade[i]);
                    grade.AddTeacher(teacher);
                    teacher.AddGrade(grade);
                }
                for (int i = 0; i < dGrade.Count; i++)
                {
                    Grade grade = Utility.GetGradeObjectFromShowName(dGrade[i]);
                    grade.RemoveTeacher(teacher);
                    teacher.RemoveGrade(grade);
                }

                IList<string> sSubject = dragInfoControlSubject.SourceStrings;
                IList<string> dSubject = dragInfoControlSubject.DestinationStrings;
                for (int i = 0; i < sSubject.Count; i++)
                {
                    Subject subject = School.GetSubject(sSubject[i]);
                    subject.AddTeacher(teacher);
                    teacher.AddSubject(subject);
                }
                for (int i = 0; i < dSubject.Count; i++)
                {
                    Subject subject = School.GetSubject(dSubject[i]);
                    subject.RemoveTeacher(teacher);
                    teacher.RemoveSubject(subject);
                }
            }
        }

        //  将信息保存到数据库中
        private void 保存到数据库ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.mDispose();  // 保存数据到内存数据结构中
            if (School.WriteTeachersToDB())  // 将内存数据结构中的数据保存到数据库中
            {
                MessageBox.Show("教师信息已经保存到数据库中", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("信息保存失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        //  改变所选择的老师
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listBox1.SelectedItem == null)
            {
                if (listBox1.Items.Count > 0)
                    this.listBox1.SelectedIndex = 0;
                else
                    return;
            }
            if (this.hasModify || this.dragInfoControlGrade.HasModify || this.dragInfoControlSubject.HasModify)
            {
                this.hasModify = false;
                this.dragInfoControlSubject.HasModify = false;
                this.dragInfoControlGrade.HasModify = false;
                if (MessageBox.Show("是否保存修改?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    SaveRelateData(this.curTeacher);
                }
            }
            if (Utility.IsNameString(listBox1.SelectedItem.ToString()))
            {
                this.curTeacher = School.GetTeacher(listBox1.SelectedItem.ToString());
                LoadRelateData(this.curTeacher);
                this.lblTeacherName.Text = "当前教师:  " + listBox1.SelectedItem.ToString();
            }
        }

        //  添加教师
        private void 添加教师ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.AddTeacher();
        }

        // 修改教师姓名
        private void 修改教师姓名ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.ModifyTeacherName();
        }

        //  删除所选择的教师
        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.RemoveTeacher();
        }

        //  删除所有教师
        private void 删除所有教师ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.ClearTeacher();
        }

        #region 销毁对象
        protected override void OnClosing(CancelEventArgs e)
        {
            this.mDispose();
            base.OnClosing(e);
        }

        protected override void OnFormClosing(FormClosingEventArgs e)
        {
            this.mDispose();
            base.OnFormClosing(e);
        }
        #endregion

        #region 失去或获得焦点
        protected override void OnLostFocus(EventArgs e)
        {
            this.mDispose();
            base.OnLostFocus(e);
        }
        protected override void OnGotFocus(EventArgs e)
        {
            this.LoadData();
            base.OnGotFocus(e);
        }

        
        #endregion

        #region 内部函数
        private void mDispose()
        {
            if (this.hasModify || this.dragInfoControlGrade.HasModify || this.dragInfoControlSubject.HasModify)
            {
                this.hasModify = false;
                this.dragInfoControlSubject.HasModify = false;
                this.dragInfoControlGrade.HasModify = false;
                if (MessageBox.Show("是否保存修改?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    SaveRelateData(this.curTeacher);
                }
                
            }
        }

        private void AddTeacher()
        {
            frmTeacherName f = new 课程安排.frmTeacherName();
            f.ShowDialog();
            if (f.DialogResult == DialogResult.Yes)
            {
                string name = f.TeacherName;
                if (Utility.IsNameString(name))
                {
                    if (Utility.isRepeat(School.Teachers, name))
                    {
                        if (MessageBox.Show("该名称已经被使用,是否要重新输入?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                        {
                            AddTeacher();
                        }
                    }
                    else
                    {
                        this.listBox1.Items.Add(name);
                        School.CreateTeacher(name);
                        //this.hasModify = true;
                    }
                }
                else
                {
                    if (MessageBox.Show("该名称中包含了特殊字符(或为空值),是否要重新输入", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                    {
                        AddTeacher();
                    }
                }
            }
        }

        private void ModifyTeacherName()
        {
            if (this.listBox1.SelectedIndex >= 0)
            {
                string oldName = listBox1.SelectedItem.ToString();
                frmTeacherName f = new 课程安排.frmTeacherName(oldName);
                f.ShowDialog();
                if (f.DialogResult == DialogResult.Yes)
                {
                    string name = f.TeacherName;
                    if (name != oldName)
                    {
                        if (Utility.IsNameString(name))
                        {
                            if (Utility.isRepeat(School.Teachers, name))
                            {
                                if (MessageBox.Show("该名称已经被使用,是否要重新输入?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                                {
                                    ModifyTeacherName();
                                }
                            }
                            else
                            {
                                this.listBox1.Items[listBox1.SelectedIndex] = name;
                                Teacher teacher = School.GetTeacher(oldName);
                                teacher.TeacherName = name;
                            }
                        }
                        else
                        {
                            if (MessageBox.Show("该名称中包含了特殊字符(或为空值),是否要重新输入", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                            {
                                ModifyTeacherName();
                            }
                        }
                    }
                }
            }
        }

        private void RemoveTeacher()
        {
            if (this.listBox1.SelectedItems != null)
            {
                if (this.listBox1.SelectedItems.Count > 0)
                {
                    for (int i = 0; i < this.listBox1.SelectedItems.Count; i++)
                    {
                        string teacherName = this.listBox1.SelectedItems[i].ToString();
                        School.RemoveTeacher(School.GetTeacher(teacherName));
                        this.listBox1.Items.Remove(this.listBox1.SelectedItems[i]);
                    }
                }
            }
        }

        private void ClearTeacher()
        {
            if (this.listBox1.Items.Count > 0)
            {
                this.listBox1.Items.Clear();
                School.RemoveAllTeacher();
            }
        }
        #endregion
    }
}

⌨️ 快捷键说明

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