// 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;i<m_Set.m_nFields;i++)
{
m_Set.GetODBCFieldInfo(i,Info);
m_ListCtrlx.InsertColumn(i,Info.m_strName,LVCFMT_LEFT,70);
}
m_Set.Close();
m_bSet.Open();
m_ListCtrlb.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
for( i=0;i<m_bSet.m_nFields;i++)
{
m_bSet.GetODBCFieldInfo(i,Info);
m_ListCtrlb.InsertColumn(i,Info.m_strName,LVCFMT_LEFT,80);
}
m_bSet.Close();
m_ListCtrll.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_ListCtrll.InsertColumn(0,_T("科目"),LVCFMT_IMAGE|LVCFMT_LEFT);
m_ListCtrll.InsertColumn(1,"任课老师");
for(i=0;i<2;i++)
m_ListCtrll.SetColumnWidth(i,80);
m_cob.SetCurSel(1);
this->Enable(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()==IDO