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

📄 leftview.cpp

📁 为学校教导用的排课系统。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	CTreeView::OnKeyUp(nChar, nRepCnt, nFlags);
}

void CLeftView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
{
	// TODO: Add your specialized code here and/or call the base class
	CLessonDoc * pDoc = GetDocument();
	CMainFrame * pf=(CMainFrame *)AfxGetApp()->m_pMainWnd;
	if(pf)
	{
		CStatusBar * Bar=&pf->m_wndStatusBar;
		if(Bar)
		{
			CString str;
			str.Format("%d个教师,%d个任务",pDoc->GetTeacherCount(),pDoc->GetMissionCount());
			Bar->SetPaneText(1,str);
		}
	}
	if(pDoc->m_TeacherArray.GetSize()<1)
	{
		GetTreeCtrl().DeleteAllItems();
		return;
	}
	switch(pDoc->m_Info.m_ViewStatus)
	{
	case TEACHER_MISSION:
	case TEACHER_LESSON:
		UpdateTeacher();
		break;
	case CLASS_LESSON:
		UpdateClass();
		break;
	default:
		GetTreeCtrl().DeleteAllItems();
	}	
	
}

void CLeftView::UpdateTeacher()
{
	CLessonDoc * pDoc = GetDocument();
	int SelectGrade=pDoc->m_Info.m_SelectGrade;
	int SelectClass=pDoc->m_Info.m_SelectClass;
	CString SelectName=pDoc->m_Info.m_SelectTeacherName;
	GetTreeCtrl().DeleteAllItems();
	int count=pDoc->m_TeacherArray.GetSize();
	for(int i=0;i<count;i++)
	{
		GetTreeCtrl().InsertItem(((CTeacher *)pDoc->m_TeacherArray.GetAt(i))->m_Name);
	}

	pDoc->m_Info.m_SelectGrade=SelectGrade;
	pDoc->m_Info.m_SelectClass=SelectClass;
	pDoc->m_Info.m_SelectTeacherName=SelectName;

	if(pDoc->m_Info.m_SelectTeacherName.GetLength()>0)
	{
		HTREEITEM hItem=FindStrItem(pDoc->m_Info.m_SelectTeacherName);
		GetTreeCtrl().SelectItem(hItem);
	}
	else
	{
		HTREEITEM hItem=GetTreeCtrl().GetFirstVisibleItem();
		GetTreeCtrl().SelectItem(hItem);
		pDoc->m_Info.m_SelectTeacherName=GetTreeCtrl().GetItemText(hItem);
	}
}

void CLeftView::UpdateClass()
{
	CLessonDoc * pDoc = GetDocument();
//	GetTreeCtrl().SelectItem(0);
	int SelectGrade=pDoc->m_Info.m_SelectGrade;
	int SelectClass=pDoc->m_Info.m_SelectClass;
	CString SelectName=pDoc->m_Info.m_SelectTeacherName;
	HTREEITEM hItem;
	CString str;
	GetTreeCtrl().DeleteAllItems();
	int GradeCount=pDoc->GetGradeCount();
	for(int i=1;i<=GradeCount;i++)
	{
		str.Format("%d年级",i);
		hItem=GetTreeCtrl().InsertItem(str);
		{
			int ClassCount=pDoc->GetClassCount(i);
			for(int j=1;j<=ClassCount;j++)
			{
				str.Format("%d班",j);
				GetTreeCtrl().InsertItem(str,hItem);
			}
		}
	}
	GetTreeCtrl().InsertItem("总课表");


	pDoc->m_Info.m_SelectGrade=SelectGrade;
	pDoc->m_Info.m_SelectClass=SelectClass;
	pDoc->m_Info.m_SelectTeacherName=SelectName;

	if(pDoc->m_Info.m_SelectGrade>0)
	{
		str.Format("%d年级",pDoc->m_Info.m_SelectGrade);
		hItem=FindStrItem(str);
		if(pDoc->m_Info.m_SelectClass>0)
		{
			GetTreeCtrl().Expand(hItem,TVE_EXPAND);
			str.Format("%d班",pDoc->m_Info.m_SelectClass);
			hItem=FindStrItem(str,hItem);
			GetTreeCtrl().SelectItem(hItem);
		}
		else
			GetTreeCtrl().SelectItem(hItem);
	}
	else
		GetTreeCtrl().SelectItem(FindStrItem("总课表"));
}

HTREEITEM CLeftView::FindStrItem(CString Name, HTREEITEM hItem)
{
	CString str;
	if(hItem==NULL)
	{
		HTREEITEM h=GetTreeCtrl().GetFirstVisibleItem();
		while(h)
		{
			str=GetTreeCtrl().GetItemText(h);
			if(!str.CompareNoCase(Name))
				return h;
			h=GetTreeCtrl().GetNextVisibleItem(h);
		}
		return NULL;
	}
	else 
	{
		HTREEITEM h=GetTreeCtrl().GetChildItem(hItem);
		while(GetTreeCtrl().GetChildItem(h)==NULL)
		{
			str=GetTreeCtrl().GetItemText(h);
			if(!str.CompareNoCase(Name))
				return h;
			h=GetTreeCtrl().GetNextVisibleItem(h);
		}
		return NULL;
	}
}

void CLeftView::AddTeacher()
{
	CLessonDoc * pDoc=GetDocument();
	CString NewName=pDoc->NewName();
	HTREEITEM hItem=GetTreeCtrl().InsertItem(NewName);
	CTeacher * Teacher=new(CTeacher);
	Teacher->m_Name=NewName;
	pDoc->m_TeacherArray.Add(Teacher);
	GetTreeCtrl().EditLabel(hItem);
	GetTreeCtrl().SelectItem(hItem);
	pDoc->m_Info.m_IsArrangeRight=FALSE;
	pDoc->SetModifiedFlag();
}

void CLeftView::AddMission()
{
	CLessonDoc * pDoc=GetDocument();
	HTREEITEM hItem=GetTreeCtrl().GetSelectedItem();
	if(hItem==NULL)return;
	CString Name=GetTreeCtrl().GetItemText(hItem);
	CMission * Mission=new(CMission);
	CAddMissionDlg dlg;
	dlg.Mission=Mission;
	dlg.pDocument=pDoc;
	dlg.m_Head=pDoc->m_Info.m_SelectTeacherName+"(增加任务)";
	if(dlg.DoModal()==IDOK)
	{
		if(pDoc->GetMission(Mission->m_Grade,Mission->m_Class,Mission->m_Subject)==NULL)
		{
			CTeacher * Teacher=pDoc->GetTeacher(Name);
			Teacher->m_MissionArray.Add(Mission);
			pDoc->UpdateAllViews(pDoc->GetListView());
			pDoc->m_Info.m_IsArrangeRight=FALSE;
			pDoc->SetModifiedFlag();
			if(dlg.m_IsAllCopy)
			{
				for(int i=pDoc->m_TeacherArray.GetSize()-1;i>=0;i--)
				{
					Teacher=(CTeacher *)pDoc->m_TeacherArray.GetAt(i);
					for(int j=Teacher->m_MissionArray.GetSize()-1;j>=0;j--)
					{
						CMission * TMiss=(CMission *)Teacher->m_MissionArray.GetAt(j);
						if(TMiss->m_Grade==Mission->m_Grade&&TMiss->m_Class==Mission->m_Class)
							continue;
						if(!TMiss->m_Subject.CompareNoCase(Mission->m_Subject))
						{
							TMiss->m_Request.RemoveAll();
							TMiss->m_Request.Append(Mission->m_Request);
						}
					}
				}
			}
		}
		else 
		{
			MessageBox("此项任务已经存在","错误",MB_ICONERROR);
			delete Mission;
		}
	}
	else delete Mission;
}

void CLeftView::DelTeacher()
{
	HTREEITEM hItem=GetTreeCtrl().GetSelectedItem();
	if(!hItem)return;
	CString Name=GetTreeCtrl().GetItemText(hItem);
	CLessonDoc * pDoc=GetDocument();
	if(MessageBox("确实要删除该教师吗?","删除教师",MB_OKCANCEL|MB_ICONQUESTION)==IDOK)
	{
		int nIndex=pDoc->GetTeacherIndex(Name);
		delete pDoc->m_TeacherArray.GetAt(nIndex);
		pDoc->m_TeacherArray.RemoveAt(nIndex);
		GetTreeCtrl().DeleteItem(hItem);
		pDoc->UpdateAllViews(pDoc->GetListView());
		pDoc->m_Info.m_IsArrangeRight=FALSE;
		pDoc->SetModifiedFlag();
	}
}

void CLeftView::FixTeacher()
{
	HTREEITEM hItem=GetTreeCtrl().GetSelectedItem();
	if(!hItem)return;
	CString Name=GetTreeCtrl().GetItemText(hItem);
	CLessonDoc * pDoc=GetDocument();
	CTeacherInfoDlg dlg;
	dlg.pDocument=pDoc;
	dlg.m_TeacherName=Name;
	if(dlg.DoModal()==IDOK)
	{
		CTeacher * Teacher=pDoc->GetTeacher(Name);
		Teacher->m_Request.RemoveAll();
		CString Str;
		Teacher->m_Request.Append(dlg.m_Request);
		pDoc->m_Info.m_IsArrangeRight=FALSE;
		pDoc->SetModifiedFlag();
	}
}

void CLeftView::OnAddteacher() 
{
	// TODO: Add your command handler code here
	AddTeacher();
}

void CLeftView::OnUpdateAddteacher(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	CLessonDoc * pDoc=GetDocument();
	if(pDoc->m_Info.m_ViewStatus==TEACHER_MISSION)
		pCmdUI->Enable();
	else
		pCmdUI->Enable(FALSE);	
}

void CLeftView::OnFix() 
{
	// TODO: Add your command handler code here
	FixTeacher();
}

void CLeftView::OnUpdateFix(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	CLessonDoc * pDoc=GetDocument();
	if(pDoc->m_Info.m_ViewStatus!=CLASS_LESSON&&pDoc->m_TeacherArray.GetSize()>0)
		pCmdUI->Enable();
	else
		pCmdUI->Enable(FALSE);	
}

void CLeftView::OnDelete() 
{
	// TODO: Add your command handler code here
	DelTeacher();
}

void CLeftView::OnUpdateDelete(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	CLessonDoc * pDoc=GetDocument();
	if(pDoc->m_Info.m_ViewStatus==TEACHER_MISSION&&pDoc->m_TeacherArray.GetSize()>0)
		pCmdUI->Enable();
	else
		pCmdUI->Enable(FALSE);	
}

void CLeftView::OnAddmission() 
{
	// TODO: Add your command handler code here
	AddMission();
}

void CLeftView::OnUpdateAddmission(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	CLessonDoc * pDoc=GetDocument();
	if(pDoc->m_Info.m_ViewStatus==TEACHER_MISSION&&pDoc->m_TeacherArray.GetSize()>0)
		pCmdUI->Enable();
	else
		pCmdUI->Enable(FALSE);
}




void CLeftView::OnFilePrintSetup() 
{
	// TODO: Add your command handler code here
	CLessonApp * pa=(CLessonApp *)AfxGetApp();
	CPageSetDlg dlg;
	if(dlg.DoModal()==IDOK)
		pa->m_Print.WriteReg();
}

⌨️ 快捷键说明

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