www.pudn.com > vc++ODBC+student.zip > BaDialog.cpp


// BaDialog.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "lhwy.h" 
#include "BaDialog.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CBaDialog dialog 
 
 
CBaDialog::CBaDialog(CWnd* pParent /*=NULL*/) 
	: CDialog(CBaDialog::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CBaDialog) 
	//}}AFX_DATA_INIT 
} 
 
 
void CBaDialog::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CBaDialog) 
	DDX_Control(pDX, IDC_STATR, m_StaButton); 
	DDX_Control(pDX, IDC_DELECT, m_DelButton); 
	DDX_Control(pDX, IDC_FIND, m_FindButton); 
	DDX_Control(pDX, IDC_EDIT, m_EditButton); 
	DDX_Control(pDX, IDC_ALL, m_AllButton); 
	DDX_Control(pDX, IDC_ADD, m_AddButton); 
	DDX_Control(pDX, IDC_COMBO1, m_cob); 
	DDX_Control(pDX, IDC_LIST1, m_ListCtrlb); 
	DDX_Control(pDX, IDC_LIST2, m_ListCtrll); 
	DDX_Control(pDX, IDC_LIST3, m_ListCtrlx); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CBaDialog, CDialog) 
	//{{AFX_MSG_MAP(CBaDialog) 
	ON_BN_CLICKED(IDC_STATR, OnStatr) 
	ON_WM_TIMER() 
	ON_BN_CLICKED(IDC_ADD, OnAdd) 
	ON_BN_CLICKED(IDC_DELECT, OnDelect) 
	ON_BN_CLICKED(IDC_FIND, OnFind) 
	ON_BN_CLICKED(IDC_ALL, OnAll) 
	ON_BN_CLICKED(IDC_EDIT, OnEdit) 
	ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST3, OnColumnclickList3) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CBaDialog message handlers 
 
BOOL CBaDialog::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
   CDRecordset m_Set(&theApp.m_DB); 
   CBRecordset m_bSet(&theApp.m_DB); 
   CTRecordset m_tSet(&theApp.m_DB); 
 
    unsigned i=0; 
	CODBCFieldInfo Info; 
	m_Set.Open(); 
	m_ListCtrlx.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); 
	for( i=0;iEnable(FALSE); 
   m_Timer=SetTimer(1,2,NULL); 
   m_bIsAsc=TRUE; 
   m_bS=TRUE; 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CBaDialog::OnStatr()  
{ 
	// TODO: Add your control notification handler code here 
	m_ListCtrlx.DeleteAllItems(); 
	m_ListCtrlb.DeleteAllItems(); 
	m_ListCtrll.DeleteAllItems(); 
	if(m_Set.IsOpen()) 
	m_Set.Close(); 
	if(m_bSet.IsOpen()) 
	m_bSet.Close(); 
 
    m_cob.GetLBText(m_cob.GetCurSel(),m_Getstring); 
	this->Select(); 
	if(m_Getstring=="一班") 
	 m_tSet.Open(); 
	 if(m_Getstring=="二班") 
	 m_tSet.Open(AFX_DB_USE_DEFAULT_TYPE,"[NO2TECHER]"); 
 
	 
    m_nRecordCount=this->Show(); 
    this->display(); 
    this->exhibit(); 
    m_bS = GetDlgItem(IDC_STATR)->EnableWindow(FALSE); 
	this->Enable(TRUE); 
 
	 
} 
int  CBaDialog::Show() 
{ 
  int i=0; 
  m_Set.MoveFirst(); 
  do 
  {   
  CString s; 
  s.Format("%d",m_Set.m_column1); 
  m_ListCtrlx.InsertItem(i,s,0); 
  m_ListCtrlx.SetItemText(i,1,m_Set.m_column2); 
  s.Format("%.1f",m_Set.m_column3); 
  m_ListCtrlx.SetItemText(i,2,s); 
  s.Format("%.1f",m_Set.m_column4); 
  m_ListCtrlx.SetItemText(i,3,s); 
  s.Format("%.1f",m_Set.m_column5); 
  m_ListCtrlx.SetItemText(i,4,s); 
  s.Format("%.1f",m_Set.m_column6); 
  m_ListCtrlx.SetItemText(i,5,s); 
  s.Format("%.1f",m_Set.m_column7); 
  m_ListCtrlx.SetItemText(i,6,s); 
  s.Format("%.1f",m_Set.m_column8); 
  m_ListCtrlx.SetItemText(i,7,s); 
  s.Format("%.2f",m_Set.m_column9); 
  m_ListCtrlx.SetItemText(i,8,s); 
		 
  i++; 
  m_Set.MoveNext(); 
		 
  }  while(!m_Set.IsEOF()); 
  m_Set.Close(); 
  return i; 
   
} 
 
 
 void CBaDialog::display() 
 { 
   int i=0; 
   m_bSet.MoveFirst(); 
   do 
	 {   
    	CString s; 
	    m_ListCtrlb.InsertItem(i,m_bSet.m_column1,0); 
		s.Format("%.1f",m_bSet.m_column2); 
		m_ListCtrlb.SetItemText(i,1,s); 
	    s.Format("%.2f",m_bSet.m_column3); 
        m_ListCtrlb.SetItemText(i,2,s); 
        s.Format("%d",m_bSet.m_column4); 
        m_ListCtrlb.SetItemText(i,3,s); 
        s.Format("%d",m_bSet.m_column5); 
        m_ListCtrlb.SetItemText(i,4,s); 
       
		i++; 
        m_bSet.MoveNext(); 
		 
		} while(!m_bSet.IsEOF()); 
        m_bSet.Close(); 
 } 
 
 
 void CBaDialog::exhibit() 
 { 
  int i=0; 
  do 
  {   
   m_ListCtrll.InsertItem(i,m_tSet.m_column1,0); 
   m_ListCtrll.SetItemText(i,1,m_tSet.m_column2); 
   i++; 
   m_tSet.MoveNext(); 
  }while(!m_tSet.IsEOF()); 
   m_tSet.Close(); 
 } 
 
 void CBaDialog::Enable( BOOL p) 
 { 
	 BOOL HB; 
	 HB=p; 
	 GetDlgItem(IDC_ADD)->EnableWindow(HB); 
	 GetDlgItem(IDC_DELECT)->EnableWindow(HB); 
	 GetDlgItem(IDC_EDIT)->EnableWindow(HB); 
	 GetDlgItem(IDC_FIND)->EnableWindow(HB); 
	 GetDlgItem(IDC_ALL)->EnableWindow(HB); 
 } 
 
 CString CBaDialog::Select() 
 {	 
     if(m_Getstring=="一班") 
	  { 
	  m_Set.Open(); 
	  m_bSet.Open(); 
	  } 
     else 
	 { 
      m_Set.Open(AFX_DB_USE_DEFAULT_TYPE,"[NO2STUDENT]"); 
      m_bSet.Open(AFX_DB_USE_DEFAULT_TYPE,"[NO2OBJECT]"); 
	 } 
	 return m_Getstring; 
 }   
  
 void CBaDialog::Equal() 
 {   
	 for(int i=0;i<5;i++) 
	 {   
     float p=0; 
	 if(i==0) 
	  p=m_Set.m_column3; 
	   
     if(i==1) 
		p=m_Set.m_column4; 
   if(i==2) 
		p=m_Set.m_column5; 
	if(i==3) 
	    p=m_Set.m_column6; 
    if(i==4) 
		p=m_Set.m_column7; 
 
 
      m_bSet.Edit(); 
	  if(Selec==FALSE) 
	  { 
	  m_bSet.m_column2-=p; 
	  m_bSet.m_column3=(float)(m_bSet.m_column2/m_nRecordCount); 
	  if(p>=60) 
	  m_bSet.m_column4-=1; 
	  if(p>=80) 
	  m_bSet.m_column5-=1; 
	  } 
	  else 
	  { 
	  m_bSet.m_column2+=p; 
	  m_bSet.m_column3=(float)(m_bSet.m_column2/m_nRecordCount); 
	  if(p>=60) 
	  m_bSet.m_column4+=1; 
	  if(p>=80) 
	  m_bSet.m_column5+=1; 
	  } 
	   
	  m_bSet.Update(); 
	  if(!m_bSet.IsEOF()) 
      m_bSet.MoveNext(); 
	  else 
	  break; 
	  } 
 } 
 
 void CBaDialog::Xuan() 
 { 
     m_ListCtrlb.DeleteAllItems(); 
	 this->display(); 
     m_ListCtrlx.DeleteAllItems(); 
     this->Show(); 
 } 
 
void CBaDialog::OnTimer(UINT nIDEvent)  
{ 
	// TODO: Add your message handler code here and/or call default 
	CString m_string; 
    m_cob.GetLBText(m_cob.GetCurSel(),m_string); 
	if(m_Getstring!=m_string) 
	{ 
	GetDlgItem(IDC_STATR)->EnableWindow(TRUE); 
	this->Enable(FALSE); 
	} 
	CDialog::OnTimer(nIDEvent); 
} 
 
void CBaDialog::OnAdd()  
{ 
	// TODO: Add your control notification handler code here 
	Selec=TRUE; 
	CAddialog dlg; 
	if( dlg.DoModal()==IDOK) 
	{   
      if(this->Select()=="一班") 
	  { 
	   if(dlg.m_nxue>=200) 
	   {AfxMessageBox("一班学号在1—200之间"); 
	   return;} 
	   } 
	   else 
	   { 
		if(dlg.m_nxue<200||dlg.m_nxue>=400) 
	  {AfxMessageBox("二班学号在200—400之间"); 
		return;} 
	   } 
 
 
	  m_Set.AddNew(); 
	  m_nRecordCount+=1; 
	  m_Set.m_column1=dlg.m_nxue; 
	  m_Set.m_column2=dlg.m_strName; 
      m_Set.m_column3=dlg.m_fmaths; 
      m_Set.m_column4=dlg.m_fphysical; 
      m_Set.m_column5=dlg.m_fchemistry; 
	  m_Set.m_column6=dlg.m_fenglish; 
	  m_Set.m_column7=dlg.m_fpolitic; 
	  m_Set.m_column8=dlg.m_fmaths+dlg.m_fphysical+dlg.m_fchemistry+dlg.m_fenglish+dlg.m_fpolitic; 
	  m_Set.m_column9=(float)(m_Set.m_column8/5); 
      this->Equal(); 
	  m_Set.Update();//Update()一定放在Equal()后 
      m_Set.Requery(); 
	  this->Xuan(); 
 
	 } 
	} 
	 
 
 
void CBaDialog::OnDelect()  
{ 
	// TODO: Add your control notification handler code here 
    CDelectDialog dlg; 
	Selec=FALSE; 
	if(dlg.DoModal()==IDOK) 
	{ 
	if(dlg.m_nPass!=1234) 
	AfxMessageBox("密码不正确!你没有权限删除记录"); 
    else 
	{ 
	this->Select(); 
    m_Set.MoveFirst(); 
	BOOL sel=FALSE; 
	do 
	{ 
	 if(m_Set.m_column1!=dlg.m_nxue) 
	 m_Set.MoveNext();	  
	 else 
	 { 
     m_nRecordCount-=1; 
	 sel=TRUE; 
     m_bSet.MoveFirst(); 
     this->Equal(); 
      m_Set.Delete(); 
	  m_Set.Requery(); 
	  break; 
	 } 
	}while(!m_Set.IsEOF()); 
 	if(sel==FALSE) 
	{ 
	AfxMessageBox("没有此记录"); 
	return; 
	} 
	else 
	this->Xuan(); 
	} 
	} 
	 
} 
 
void CBaDialog::OnFind()  
{ 
	// TODO: Add your control notification handler code here 
CFinDialog dlg; 
if( dlg.DoModal()==IDOK) 
{  
this->Select(); 
m_bSet.Close(); 
 
if(dlg.m_Getstring2==">=") 
m_Set.m_strFilter.Format("[%s]>=%.2f",dlg.m_Getstring1,dlg.m_find); 
if(dlg.m_Getstring2=="=") 
m_Set.m_strFilter.Format("[%s]=%.2f",dlg.m_Getstring1,dlg.m_find); 
if(dlg.m_Getstring2=="<=") 
m_Set.m_strFilter.Format("[%s]<=%.2f",dlg.m_Getstring1,dlg.m_find); 
m_ListCtrlx.DeleteAllItems(); 
m_Set.Requery(); 
if(m_Set.IsEOF()) 
{  
 AfxMessageBox("没有符合条件的记录"); 
 m_Set.Close(); 
 return ; 
 } 
else 
this->Show(); 
 
} 
} 
 
void CBaDialog::OnAll()  
{ 
	// TODO: Add your control notification handler code here 
     
	this->Select(); 
	m_bSet.Close(); 
	 
	m_Set.m_strFilter.Empty(); 
	m_Set.Requery(); 
	m_ListCtrlx.DeleteAllItems(); 
	this->Show(); 
} 
 
void CBaDialog::OnEdit()  
{ 
	// TODO: Add your control notification handler code here 
     
	CEditDialog dlg; 
	if(dlg.DoModal()==IDOK) 
	{ 
    if(strcmp(dlg.m_pass,"1234")!=0) 
	AfxMessageBox("你没有权限更改记录!请重输入密码:"); 
    else 
	{ 
	 this->Select(); 
	 m_Set.m_strFilter.Format("[学号]=%d",dlg.m_xue); 
	 m_Set.Requery(); 
	 if(m_Set.IsEOF()) 
	 AfxMessageBox("没有此记录"); 
	  else 
	  {    
	  for(int i=0;i<5;i++) 
	  { 
	  float p=0,q=0; 
	 if(i==0) 
	 { 
	  p=dlg.m_fmaths; 
	  q=m_Set.m_column3; 
	 } 
     if(i==1) 
	 { 
	 p=dlg.m_fphysical; 
	 q=m_Set.m_column4; 
	 } 
   if(i==2) 
   { 
   p=dlg.m_fchemistry; 
   q=m_Set.m_column5; 
   } 
	if(i==3) 
	{  
	p=dlg.m_fenglish; 
	 q=m_Set.m_column6; 
	} 
    if(i==4) 
	{	 
	p=dlg.m_fpolitic; 
	q=m_Set.m_column7; 
	} 
 
	m_bSet.Edit(); 
    m_bSet.m_column2=m_bSet.m_column2+p-q; 
	m_bSet.m_column3=m_bSet.m_column2/m_nRecordCount; 
	if(p>=60 && q<60) 
	m_bSet.m_column4+=1; 
	if(p<60 && q>=60) 
	m_bSet.m_column4-=1; 
 
	if(p>=80 && q<80) 
	m_bSet.m_column5+=1; 
	if(p<80 && q>=80) 
	m_bSet.m_column5-=1; 
 
    m_bSet.Update(); 
   if(!m_bSet.IsEOF()) 
   m_bSet.MoveNext(); 
   else 
  break; 
	  } 
 
      m_Set.Edit(); 
     m_Set.m_column2=dlg.m_strName; 
      m_Set.m_column3=dlg.m_fmaths; 
      m_Set.m_column4=dlg.m_fphysical; 
      m_Set.m_column5=dlg.m_fchemistry; 
	  m_Set.m_column6=dlg.m_fenglish; 
	  m_Set.m_column7=dlg.m_fpolitic; 
	  m_Set.m_column8=dlg.m_fmaths+dlg.m_fphysical+dlg.m_fchemistry+dlg.m_fenglish+dlg.m_fpolitic; 
	  m_Set.m_column9=(float)(m_Set.m_column8/5); 
      m_Set.Update(); 
	   
	  } 
      m_Set.m_strFilter.Empty(); 
	  m_bSet.Close(); 
	  m_Set.Close(); 
	  m_ListCtrlx.DeleteAllItems(); 
	  m_ListCtrlb.DeleteAllItems(); 
	  this->Select(); 
	  this->Show(); 
	  this->display(); 
	 } 
	} 
} 
 
 
void CBaDialog::Sort(BOOL isAsc,int secol) 
{    
	if(m_Set.IsOpen()) 
      m_Set.Close(); 
	this->Select(); 
	m_bSet.Close(); 
	CODBCFieldInfo fieldInfo; 
	m_Set.GetODBCFieldInfo(secol,fieldInfo); 
	if(isAsc) 
	{ 
		m_Set.m_strSort=fieldInfo.m_strName+" ASC"; 
       m_bIsAsc=TRUE; 
	} 
	else 
	{ 
		m_Set.m_strSort=fieldInfo.m_strName+" DESC"; 
		m_bIsAsc=FALSE; 
	} 
	m_Set.Requery();	 
 
} 
 
 
 
void CBaDialog::OnColumnclickList3(NMHDR* pNMHDR, LRESULT* pResult)  
{ 
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; 
	// TODO: Add your control notification handler code here 
	if(FALSE== m_bS) 
	{ 
	  int k= pNMListView->iSubItem; 
	  Sort(!m_bIsAsc,k); 
	  m_ListCtrlx.DeleteAllItems(); 
	  this->Show(); 
	} 
	*pResult = 0; 
}