www.pudn.com > ODBC.rar > AutoStuMisDoc.cpp


// AutoStuMisDoc.cpp : implementation of the CAutoStuMisDoc class 
// 
 
#include "stdafx.h" 
#include "AutoStuMis.h" 
#include "RstStudent.h" 
#include "RstStudentType.h" 
#include "RstExamType.h" 
#include "Class.h" 
#include "RstClass.h" 
#include "RstClassList.h" 
 
#include "AutoStuMisDoc.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CAutoStuMisDoc 
 
IMPLEMENT_DYNCREATE(CAutoStuMisDoc, CDocument) 
 
BEGIN_MESSAGE_MAP(CAutoStuMisDoc, CDocument) 
	//{{AFX_MSG_MAP(CAutoStuMisDoc) 
		// NOTE - the ClassWizard will add and remove mapping macros here. 
		//    DO NOT EDIT what you see in these blocks of generated code! 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CAutoStuMisDoc construction/destruction 
 
CAutoStuMisDoc::CAutoStuMisDoc() 
{ 
	// TODO: add one-time construction code here 
 
} 
 
CAutoStuMisDoc::~CAutoStuMisDoc() 
{ 
	FreeAllData(); 
} 
 
BOOL CAutoStuMisDoc::OnNewDocument() 
{ 
	if (!CDocument::OnNewDocument()) 
		return FALSE; 
 
	// TODO: add reinitialization code here 
	// (SDI documents will reuse this document) 
	CAutoStuMisApp *pApp=(CAutoStuMisApp*)AfxGetApp(); 
	pApp->m_pDoc = this; 
 
	ReadInitData(); 
 
	return TRUE; 
} 
 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CAutoStuMisDoc diagnostics 
 
#ifdef _DEBUG 
void CAutoStuMisDoc::AssertValid() const 
{ 
	CDocument::AssertValid(); 
} 
 
void CAutoStuMisDoc::Dump(CDumpContext& dc) const 
{ 
	CDocument::Dump(dc); 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CAutoStuMisDoc commands 
 
void CAutoStuMisDoc::ReadInitData() 
{ 
	BeginWaitCursor(); 
 
	CItem *pItem; 
 
	CRstStudentType rsSt; 
	rsSt.Open(); 
	while(!rsSt.IsEOF()) 
	{ 
		pItem = new CItem; 
		pItem->m_F_ID = rsSt.m_F_ID; 
		pItem->m_F_ItemName = rsSt.m_F_ItemName; 
		m_arrStudentType.Add(pItem); 
		rsSt.MoveNext(); 
	} 
	rsSt.Close(); 
 
	CRstExamType rsExam; 
	rsExam.Open(); 
	while(!rsExam.IsEOF()) 
	{ 
		pItem = new CItem; 
		pItem->m_F_ID = rsExam.m_F_ID; 
		pItem->m_F_ItemName = rsExam.m_F_ItemName;  
		m_arrExamType.Add(pItem); 
		rsExam.MoveNext(); 
	} 
	rsExam.Close(); 
	 
	CStudent *pStu; 
	CRstStudent rsStudent; 
	rsStudent.Open(); 
	while(!rsStudent.IsEOF()) 
	{ 
		pStu = new CStudent; 
		pStu->m_F_ID = rsStudent.m_F_ID; 
		pStu->m_F_Address = rsStudent.m_F_Address; 
		pStu->m_F_AutoNo = rsStudent.m_F_AutoNo; 
		pStu->m_F_Date = rsStudent.m_F_Date; 
		pStu->m_F_ItemName = rsStudent.m_F_Name; 
		pStu->m_F_Sex = rsStudent.m_F_Sex; 
		pStu->m_F_SN = rsStudent.m_F_SN; 
		pStu->m_F_Tel = rsStudent.m_F_Tel; 
		pStu->m_F_TypeID = rsStudent.m_F_TypeID; 
		pStu->m_F_Remark = rsStudent.m_F_Remark; 
		m_arrStudent.Add(pStu); 
		rsStudent.MoveNext(); 
	} 
	rsStudent.Close(); 
 
	EndWaitCursor(); 
} 
 
CItem* CAutoStuMisDoc::GetItemByID(CObArray *pArr, long nID) 
{ 
	ASSERT(pArr); 
	CItem *pItem=NULL; 
	for(int i=0;iGetSize();i++) 
	{ 
		pItem = (CItem*)pArr->GetAt(i); 
		if(pItem->m_F_ID == nID) 
			return pItem; 
	} 
	return NULL; 
} 
 
int CAutoStuMisDoc::FillItemsToComboBox(CComboBox *pcbo, CObArray *pArr) 
{ 
	ASSERT(pArr); 
	pcbo->ResetContent(); 
	int iPos=0; 
	CItem *pItem; 
	for(int i= 0;iGetSize();i++) 
	{ 
		pItem = (CItem*)pArr->GetAt(i); 
		if(pItem) 
		{ 
			iPos = pcbo->InsertString(pcbo->GetCount(),pItem->m_F_ItemName); 
			pcbo->SetItemData(iPos,pItem->m_F_ID); 
		} 
	} 
	if(pcbo->GetCount()>0) 
		pcbo->SetCurSel(0); 
	return pcbo->GetCount(); 
} 
 
void CAutoStuMisDoc::FreeAllData() 
{ 
	CItem *pItem; 
	CStudent *pStu; 
	for(int i=0;iDeleteAllItems(); 
	while(pListCtrl->DeleteColumn(0)){} 
	LV_ITEM lvitem; 
	CStudent *pStu; 
	CItem *pItem; 
	CString sTmp; 
	int i=0,iPos=0; 
	pListCtrl->InsertColumn(0,"*",LVCFMT_LEFT,30,-1); 
	pListCtrl->InsertColumn(1,"姓名",LVCFMT_LEFT,80,-1); 
	pListCtrl->InsertColumn(2,"性别",LVCFMT_LEFT,50,-1); 
	pListCtrl->InsertColumn(3,"身份证",LVCFMT_LEFT,130,-1); 
	pListCtrl->InsertColumn(4,"联系地址",LVCFMT_LEFT,150,-1); 
	pListCtrl->InsertColumn(5,"电话",LVCFMT_LEFT,100,-1); 
	pListCtrl->InsertColumn(6,"日期",LVCFMT_LEFT,80,-1); 
	pListCtrl->InsertColumn(7,"车号",LVCFMT_LEFT,80,-1); 
	pListCtrl->InsertColumn(8,"类别",LVCFMT_LEFT,80,-1); 
	pListCtrl->InsertColumn(9,"备注",LVCFMT_LEFT,200,-1); 
	BOOL bShow=false; 
	for(i = 0;iGetItemCount(); 
		lvitem.iSubItem = 0; 
		sTmp.Format("%d",pListCtrl->GetItemCount()+1); 
		lvitem.pszText = sTmp.GetBuffer(MAX_PATH) ; 
		lvitem.iImage = 0; 
		pStu = m_arrStudent.GetAt(i); 
		if(pStu) 
		{ 
			bShow = true; 
			if(!sSex.IsEmpty()) 
			{ 
				bShow = (pStu->m_F_Sex.Compare(sSex)==0); 
			} 
			if(!sName.IsEmpty()) 
			{ 
				bShow = (pStu->m_F_ItemName.Find(sName,0)>=0); 
			} 
			//*/姓名/性别/身份证/联系地址/电话/日期/车号/类别/备注 
			if(bShow) 
			{ 
				iPos = pListCtrl->InsertItem(&lvitem); 
				pListCtrl->SetItemText(iPos,1,pStu->m_F_ItemName); 
				pListCtrl->SetItemText(iPos,2,pStu->m_F_Sex); 
				pListCtrl->SetItemText(iPos,3,pStu->m_F_SN); 
				pListCtrl->SetItemText(iPos,4,pStu->m_F_Address); 
				pListCtrl->SetItemText(iPos,5,pStu->m_F_Tel); 
				sTmp.Format("%d-%d-%d",pStu->m_F_Date.GetYear(),pStu->m_F_Date.GetMonth(),pStu->m_F_Date.GetDay()); 
				pListCtrl->SetItemText(iPos,6,sTmp); 
				pListCtrl->SetItemText(iPos,7,pStu->m_F_AutoNo); 
				pItem = GetItemByID(&m_arrStudentType,pStu->m_F_TypeID);   
				if(pItem) 
					pListCtrl->SetItemText(iPos,8,pItem->m_F_ItemName); 
				pListCtrl->SetItemText(iPos,9,pStu->m_F_Remark); 
				pListCtrl->SetItemData(iPos,pStu->m_F_ID); 
			} 
		} 
	} 
	return pListCtrl->GetItemCount(); 
} 
 
int CAutoStuMisDoc::ReadClasss(CTime tmStart, CTime tmEnd,CString sAutoNo,CString sTeacher) 
{ 
	FreeAllClass(); 
	CRstClass rsBill; 
	CClass *pClass; 
	if(sAutoNo.IsEmpty()) 
		sAutoNo = '%'; 
	if(sTeacher.IsEmpty()) 
		sTeacher = '%'; 
	if(tmStart>0 && tmEnd>0) 
	{ 
		rsBill.m_strFilter.Format("F_Date>=#%d-%d-%d# And F_Date<=#%d-%d-%d# And F_AutoNo Like '%s' And F_Teacher Like '%s'", 
			tmStart.GetYear(),tmStart.GetMonth(),tmStart.GetDay(), 
			tmEnd.GetYear(),tmEnd.GetMonth(),tmEnd.GetDay(), 
			sAutoNo,sTeacher); 
	} 
	else 
		rsBill.m_strFilter.Format("F_AutoNo Like '%s' And F_Teacher Like '%s'",sAutoNo,sTeacher); 
	rsBill.m_strSort = "F_Date,F_Noon"; 
	rsBill.Open(); 
	while(!rsBill.IsEOF()) 
	{ 
		pClass = new CClass; 
		pClass->m_F_AutoNo = rsBill.m_F_AutoNo; 
		pClass->m_F_Date = rsBill.m_F_Date; 
		pClass->m_F_ID = rsBill.m_F_ID; 
		pClass->m_F_NoonID = rsBill.m_F_Noon; 
		pClass->m_F_Remark = rsBill.m_F_Remark; 
		pClass->m_F_Teacher = rsBill.m_F_Teacher; 
		m_arrClass.Add(pClass); 
		rsBill.MoveNext(); 
	} 
	rsBill.Close(); 
	//明细 
	CRstClassList rsSub; 
	CStudent *pStu,*pStu1; 
	rsSub.m_strSort = "F_ClassID,F_ID"; 
	rsSub.Open(); 
	while(!rsSub.IsEOF()) 
	{ 
		pClass = (CClass*)GetItemByID(&m_arrClass,rsSub.m_F_ClassID); 
		if(pClass) 
		{ 
			pStu1 = (CStudent*)GetItemByID(&m_arrStudent,rsSub.m_F_StudentID); 
			if(pStu1) 
			{ 
				pStu = new CStudent; 
				pStu->m_F_Address = pStu1->m_F_Address; 
				pStu->m_F_AutoNo = pStu1->m_F_AutoNo; 
				pStu->m_F_Date = pStu1->m_F_Date; 
				pStu->m_F_ID = pStu1->m_F_ID; 
				pStu->m_F_ItemName = pStu1->m_F_ItemName; 
				pStu->m_F_Remark = pStu1->m_F_Remark; 
				pStu->m_F_Sex = pStu1->m_F_Sex; 
				pStu->m_F_SN = pStu1->m_F_SN; 
				pStu->m_F_Tel = pStu1->m_F_Tel; 
				pStu->m_F_TypeID = pStu1->m_F_TypeID; 
 
				pStu->m_nExamTypeID = rsSub.m_F_ExamTypeID; 
				pStu->m_tmEnd = rsSub.m_F_DateEnd; 
				pStu->m_tmExamField = rsSub.m_F_DateField; 
				pStu->m_tmExamRoad = rsSub.m_F_DateRoad; 
				pStu->m_tmUpAuto = rsSub.m_F_DateUpAuto; 
				 
				pClass->m_arrStudent.Add(pStu); 
			} 
		} 
		rsSub.MoveNext(); 
	} 
	rsSub.Close(); 
 
	return m_arrClass.GetSize(); 
} 
 
void CAutoStuMisDoc::FreeAllClass() 
{ 
	for(int i=0;i