📄 teacherui.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 + -