www.pudn.com > student_system.rar > ByClDlg.cpp


// ByClDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "student.h" 
#include "ByClDlg.h" 
#include "studentview.h" 
#include "ado.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CByClDlg dialog 
 
 
CByClDlg::CByClDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CByClDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CByClDlg) 
	m_IsBj = FALSE; 
	m_IsJb = FALSE; 
	m_IsQt = FALSE; 
	m_IsXh = FALSE; 
	m_IsXm = FALSE; 
	m_IsZy = FALSE; 
	m_Bj = _T(""); 
	m_Jb = _T(""); 
	m_Qt = _T(""); 
	m_Xh = _T(""); 
	m_Xm = _T(""); 
	m_Zy = _T(""); 
	m_Qt_G = _T(""); 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
	IsInit = false; 
	sql =""; 
} 
 
 
void CByClDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CByClDlg) 
	DDX_Control(pDX, IDC_LIST_STU, m_StuList); 
	DDX_Control(pDX, IDC_COMBO_QT, m_Qt_G_Con); 
	DDX_Control(pDX, IDC_COMBO_ZY, m_Zy_Con); 
	DDX_Control(pDX, IDC_EDIT_BJ, m_Bj_Con); 
	DDX_Control(pDX, IDC_EDIT_JB, m_Jb_Con); 
	DDX_Control(pDX, IDC_EDIT_QT, m_Qt_Con); 
	DDX_Control(pDX, IDC_EDIT_XH, m_Xh_Con); 
	DDX_Control(pDX, IDC_EDIT_XM, m_Xm_Con); 
	DDX_Check(pDX, IDC_CHECK_BJ, m_IsBj); 
	DDX_Check(pDX, IDC_CHECK_JB, m_IsJb); 
	DDX_Check(pDX, IDC_CHECK_QT, m_IsQt); 
	DDX_Check(pDX, IDC_CHECK_XH, m_IsXh); 
	DDX_Check(pDX, IDC_CHECK_XM, m_IsXm); 
	DDX_Check(pDX, IDC_CHECK_ZY, m_IsZy); 
	DDX_Text(pDX, IDC_EDIT_BJ, m_Bj); 
	DDX_Text(pDX, IDC_EDIT_JB, m_Jb); 
	DDX_Text(pDX, IDC_EDIT_QT, m_Qt); 
	DDX_Text(pDX, IDC_EDIT_XH, m_Xh); 
	DDX_Text(pDX, IDC_EDIT_XM, m_Xm); 
	DDX_CBString(pDX, IDC_COMBO_ZY, m_Zy); 
	DDX_CBString(pDX, IDC_COMBO_QT, m_Qt_G); 
		// NOTE: the ClassWizard will add DDX and DDV calls here 
	//}}AFX_DATA_MAP 
	if(!IsInit) 
	{ 
	CRect rect1,rect2; 
	this->GetClientRect(&rect1); 
	this->m_parent->GetClientRect(&rect2); 
	int x= (rect2.Width()-STATIC_MYWIN_LEFT-rect1.Width())/2 +STATIC_MYWIN_LEFT; 
	int y= (rect2.Height()-STATIC_MYWIN_TOP-rect1.Height())/2 +STATIC_MYWIN_TOP; 
	if(xMoveWindow(x,y,rect1.Width(),rect1.Height()); 
 
	// 
	m_Bj_Con.EnableWindow(false); 
	m_Jb_Con.EnableWindow(false); 
	m_Qt_G_Con.EnableWindow(false); 
	m_Qt_Con.EnableWindow(false); 
	m_Xh_Con.EnableWindow(false); 
	m_Xm_Con.EnableWindow(false); 
	m_Zy_Con.EnableWindow(false); 
	 
	m_parent->m_recSet->Open("SELECT * FROM ZyTable"); 
	CString zname; 
	while(!m_parent->m_recSet->IsEOF()) 
	{ 
		m_parent->m_recSet->GetFieldValue("Z_Name",zname); 
		m_Zy_Con.AddString(zname); 
		m_parent->m_recSet->MoveNext(); 
	} 
	m_parent->m_recSet->Close(); 
	m_Zy_Con.SetCurSel(0); 
	m_Qt_G_Con.SetCurSel(0); 
	 
	// 
	LV_COLUMN lvc; 
	 
	lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH /*| LVCF_FMT*/; 
	 
	lvc.iSubItem = 0; 
	lvc.pszText = (char *)"学号"; 
	lvc.cx = 100; 
	m_StuList.InsertColumn(0,&lvc); 
	 
	lvc.iSubItem = 1; 
	lvc.pszText = (char *)"姓名"; 
	lvc.cx = 100; 
	m_StuList.InsertColumn(1,&lvc); 
	 
	lvc.iSubItem = 2; 
	lvc.pszText = (char *)"性别"; 
	lvc.cx = 100; 
	m_StuList.InsertColumn(2,&lvc); 
	 
	lvc.iSubItem = 3; 
	lvc.pszText = (char *)"级别"; 
	lvc.cx = 100; 
	m_StuList.InsertColumn(3,&lvc); 
	 
	lvc.iSubItem = 4; 
	lvc.pszText = (char *)"班级"; 
	lvc.cx = 100; 
	m_StuList.InsertColumn(4,&lvc); 
	 
	lvc.iSubItem = 5; 
	lvc.pszText = (char *)"专业"; 
	lvc.cx = 100; 
	m_StuList.InsertColumn(5,&lvc); 
	// 
	IsInit = true; 
	} 
} 
 
 
BEGIN_MESSAGE_MAP(CByClDlg, CDialog) 
	//{{AFX_MSG_MAP(CByClDlg) 
	ON_BN_CLICKED(IDC_BU_CLOSE, OnBuClose) 
	ON_BN_CLICKED(IDC_CHECK_BJ, OnCheckBj) 
	ON_BN_CLICKED(IDC_CHECK_JB, OnCheckJb) 
	ON_BN_CLICKED(IDC_CHECK_QT, OnCheckQt) 
	ON_BN_CLICKED(IDC_CHECK_XH, OnCheckXh) 
	ON_BN_CLICKED(IDC_CHECK_XM, OnCheckXm) 
	ON_BN_CLICKED(IDC_CHECK_ZY, OnCheckZy) 
	ON_BN_CLICKED(IDC_BU_S, OnBuS) 
	ON_BN_CLICKED(IDC_BU_CL, OnBuCl) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CByClDlg message handlers 
 
void CByClDlg::OnBuClose()  
{ 
	// TODO: Add your control notification handler code here 
	this->m_parent->m_Dlg_ByCl = NULL; 
	LVFINDINFO info; 
	info.psz = "毕业处理"; 
	info.flags = LVFI_STRING; 
	this->m_parent->m_listCtrlGN.DeleteItem(this->m_parent->m_listCtrlGN.FindItem(&info))	;	 
	this->DestroyWindow(); 
} 
 
void CByClDlg::OnCheckBj()  
{ 
	// TODO: Add your control notification handler code here 
	this->UpdateData(true); 
	if(m_IsBj) 
	{ 
		m_Bj_Con.EnableWindow(true); 
	} 
	else 
	{ 
		m_Bj_Con.EnableWindow(false); 
	} 
	this->UpdateData(false); 
} 
 
void CByClDlg::OnCheckJb()  
{ 
	// TODO: Add your control notification handler code here 
	this->UpdateData(true); 
	if(m_IsJb) 
	{ 
		m_Jb_Con.EnableWindow(true); 
	} 
	else 
	{ 
		m_Jb_Con.EnableWindow(false); 
	} 
	this->UpdateData(false); 
} 
 
void CByClDlg::OnCheckQt()  
{ 
	// TODO: Add your control notification handler code here 
	this->UpdateData(true); 
	if(m_IsQt) 
	{ 
		m_Qt_Con.EnableWindow(true); 
		m_Qt_G_Con.EnableWindow(true); 
	} 
	else 
	{ 
		m_Qt_Con.EnableWindow(false); 
		m_Qt_G_Con.EnableWindow(false); 
	} 
	this->UpdateData(false); 
} 
 
void CByClDlg::OnCheckXh()  
{ 
	// TODO: Add your control notification handler code here 
	this->UpdateData(true); 
	if(m_IsXh) 
	{ 
		m_Xh_Con.EnableWindow(true); 
	} 
	else 
	{ 
		m_Xh_Con.EnableWindow(false); 
	} 
	this->UpdateData(false); 
} 
 
void CByClDlg::OnCheckXm()  
{ 
	// TODO: Add your control notification handler code here 
	this->UpdateData(true); 
	if(m_IsXm) 
	{ 
		m_Xm_Con.EnableWindow(true); 
	} 
	else 
	{ 
		m_Xm_Con.EnableWindow(false); 
	} 
	this->UpdateData(false); 
} 
 
void CByClDlg::OnCheckZy()  
{ 
	// TODO: Add your control notification handler code here 
	this->UpdateData(true); 
	if(m_IsZy) 
	{ 
		m_Zy_Con.EnableWindow(true); 
	} 
	else 
	{ 
		m_Zy_Con.EnableWindow(false); 
	} 
	this->UpdateData(false); 
} 
 
void CByClDlg::OnBuS()  
{ 
	// TODO: Add your control notification handler code here 
	this->UpdateData(true); 
	if(!(m_IsBj || m_IsJb || m_IsQt || m_IsXh || m_IsXm || m_IsZy)) 
	{ 
		MessageBox("请选择查询条件"); 
		return; 
	} 
	sql = "SELECT * FROM student,ZyTable WHERE student.Z_ID = ZyTable.Z_ID"; 
	if(m_IsBj) 
	{ 
		sql+=" AND S_Bj='"+m_Bj+"'"; 
	} 
	if(m_IsJb) 
	{ 
		sql+=" AND S_Jb='"+m_Jb+"'"; 
	} 
	if(m_IsQt) 
	{ 
		CString temp; 
		if(m_Qt_G.Compare("性别")==0) 
		{ 
			temp = "S_Xb"; 
		} 
		else if(m_Qt_G.Compare("学籍状态")==0) 
		{ 
			temp = "S_Zt"; 
		} 
		else if(m_Qt_G.Compare("民族")==0) 
		{ 
			temp = "S_Mz"; 
		} 
		else if(m_Qt_G.Compare("政治面貌")==0) 
		{ 
			temp = "S_Zzmm"; 
		} 
		else if(m_Qt_G.Compare("住宿情况")==0) 
		{ 
			temp = "S_Zsqk"; 
		} 
		else if(m_Qt_G.Compare("全部") == 0) 
		{ 
			temp = "'"+m_Qt+"'"; 
		} 
		else 
		{ 
			temp = m_Qt_G; 
		} 
		sql+=" AND "+temp+"='"+m_Qt+"'"; 
	} 
	if(m_IsXh) 
	{ 
		sql+=" AND S_ID='"+m_Xh+"'"; 
	} 
	if(m_IsXm) 
	{ 
		sql+=" AND S_Name='"+m_Xm+"'"; 
	} 
	if(m_IsZy) 
	{ 
		sql+=" AND Z_Name='"+m_Zy+"'"; 
	} 
	 
	m_parent->m_recSet->Open(sql.GetBuffer(200)); 
	if(!m_parent->m_recSet->IsEOF()) 
	{ 
		m_StuList.DeleteAllItems(); 
		CString temp; 
		COleDateTime dateTemp; 
		int i=0; 
		LV_ITEM lvitem; 
		lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE; 
		lvitem.state = 0;       
		lvitem.stateMask = 0;  
		char temp1[50]; 
		 
		while(!m_parent->m_recSet->IsEOF()) 
		{ 
			 
			 
			lvitem.iItem = i; 
			lvitem.iSubItem = 0; 
			lvitem.pszText =itoa(i, temp1, 10);  
			m_StuList.InsertItem(&lvitem); 
			 
			m_parent->m_recSet->GetFieldValue("S_ID",temp); 
			m_StuList.SetItemText(i,0,temp); 
			m_parent->m_recSet->GetFieldValue("S_Name",temp); 
			m_StuList.SetItemText(i,1,temp); 
			m_parent->m_recSet->GetFieldValue("S_Xb",temp); 
			m_StuList.SetItemText(i,2,temp); 
			m_parent->m_recSet->GetFieldValue("S_Jb",temp); 
			m_StuList.SetItemText(i,3,temp); 
			m_parent->m_recSet->GetFieldValue("S_Bj",temp); 
			m_StuList.SetItemText(i,4,temp); 
			m_parent->m_recSet->GetFieldValue("Z_Name",temp); 
			m_StuList.SetItemText(i,5,temp); 
			 
			i++; 
			m_parent->m_recSet->MoveNext(); 
		} 
	} 
	else 
	{ 
		MessageBox("未找到此人"); 
	} 
	m_parent->m_recSet->Close(); 
} 
 
//0 不毕业 1毕业 2结业 
int CByClDlg::IsBy(CString SID) 
{ 
	CString sqlt; 
	sqlt.Format("SELECT * FROM Student,ZyTable WHERE Student.Z_ID = ZyTable.Z_ID AND S_ID='%s'" \ 
		,SID); 
	m_parent->m_recSet->Open(sqlt.GetBuffer(100)); 
	int i_xz,i_jb,i_now; 
	CString s_jb; 
	m_parent->m_recSet->GetFieldValue("Z_Xz",i_xz); 
	m_parent->m_recSet->GetFieldValue("S_Jb",s_jb); 
	m_parent->m_recSet->Close(); 
 
	COleDateTime dateTemp; 
	m_parent->m_recSet->Open("SELECT DATE() AS NOW"); 
	m_parent->m_recSet->GetFieldValue(0,dateTemp); 
	m_parent->m_recSet->Close(); 
 
	i_now = dateTemp.GetYear(); 
	dateTemp.ParseDateTime(s_jb+"/01/01"); 
	i_jb = dateTemp.GetYear(); 
//不够学制	 
	if(i_now - i_jb < i_xz) 
	{ 
		return 0; 
	} 
 
	sqlt.Format("SELECT * FROM CjTable WHERE S_ID='%s' AND CJ_Ps+CJ_Ks <60",SID); 
	m_parent->m_recSet->Open(sqlt.GetBuffer(100)); 
//有不及格课程 
	if(m_parent->m_recSet->GetRecordCount()>0) 
	{ 
		m_parent->m_recSet->Close(); 
		return 0; 
	} 
	m_parent->m_recSet->Close(); 
 
	sqlt.Format("SELECT AVG(Cj_Ps+Cj_Ks) AS aver FROM CjTable WHERE S_ID='%s'",SID); 
	m_parent->m_recSet->Open(sqlt.GetBuffer(100)); 
	double aver=0; 
	m_parent->m_recSet->GetFieldValue(0,aver); 
	m_parent->m_recSet->Close(); 
 
//平均分不够80 
	if(aver<80) 
	{ 
		if(aver>=60) 
		{ 
			return 2; 
		} 
		else 
		{ 
			return 0; 
		} 
	} 
	return 1; 
} 
 
void CByClDlg::OnBuCl()  
{ 
	// TODO: Add your control notification handler code here 
	int count = m_StuList.GetItemCount(); 
	if(count<=0) 
	{ 
		MessageBox("请查询出学生"); 
		return; 
	} 
	CString SID,sqlt; 
	for(int i=0;im_recSet->Open(sqlt.GetBuffer(100)); 
			 
			//已毕业 
			if(m_parent->m_recSet->GetRecordCount()>0) 
			{ 
				m_parent->m_recSet->Close(); 
				break; 
			} 
			m_parent->m_recSet->Close(); 
			 
			sqlt.Format("INSERT INTO ByTable([S_ID],[BY_Date]) VALUES('%s',DATE())",SID); 
			m_parent->m_conn->Execute(sqlt); 
			sqlt.Format("UPDATE Student SET S_Zt='毕业' WHERE S_ID='%s'",SID); 
			m_parent->m_conn->Execute(sqlt); 
 
			break; 
		case 2: 
			sqlt.Format("SELECT * FROM JyTable WHERE S_ID ='%s'",SID); 
			m_parent->m_recSet->Open(sqlt.GetBuffer(100)); 
			 
			//已结业 
			if(m_parent->m_recSet->GetRecordCount()>0) 
			{ 
				m_parent->m_recSet->Close(); 
				break; 
			} 
			m_parent->m_recSet->Close(); 
			 
			sqlt.Format("INSERT INTO JyTable(S_ID,JY_Date) VALUES('%s',DATE())",SID); 
			m_parent->m_conn->Execute(sqlt); 
 
			sqlt.Format("UPDATE Student SET S_Zt='毕业' WHERE S_ID='%s'",SID); 
			m_parent->m_conn->Execute(sqlt); 
			break; 
		} 
	} 
	MessageBox("已完成"); 
}