www.pudn.com > ssproj03.zip > Page3.cpp


// Page3.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "ssproj03.h" 
#include "Page3.h" 
 
#include "airinfo.h" 
#include "city.h" 
#include "syspara.h" 
#include "ticketnum.h" 
#include "booker.h" 
#include "bookinfo.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CPage3 property page 
 
IMPLEMENT_DYNCREATE(CPage3, CPropertyPage) 
 
CPage3::CPage3() : CPropertyPage(CPage3::IDD) 
{ 
	//{{AFX_DATA_INIT(CPage3) 
	//}}AFX_DATA_INIT 
	m_SelectType=1; 
	m_dbAirInfo=new CAirInfo(&m_DB); 
	m_dbCity=new CCity(&m_DB); 
	m_dbSyspara=new CSyspara(&m_DB); 
	m_dbBookInfo=new CBookInfo(&m_DB); 
	m_dbTicketNum=new CTicketNum(&m_DB); 
	m_dbBooker=new CBooker(&m_DB); 
} 
 
CPage3::~CPage3() 
{ 
	delete m_dbAirInfo; 
	delete m_dbCity; 
	delete m_dbSyspara; 
	delete m_dbBookInfo; 
	delete m_dbTicketNum; 
	delete m_dbBooker; 
} 
 
void CPage3::DoDataExchange(CDataExchange* pDX) 
{ 
	CPropertyPage::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CPage3) 
	DDX_Control(pDX, IDC_RADIO_NAME, m_SearchBookName); 
	DDX_Control(pDX, IDC_RADIO_SERIAL, m_SearchBookNo); 
	DDX_Control(pDX, IDC_STATIC2, m_Static2); 
	DDX_Control(pDX, IDC_STATIC1, m_Static1); 
	DDX_Control(pDX, IDC_TOTALCOUNT, m_stTotalPrice); 
	DDX_Control(pDX, IDC_TOTALNUM, m_stTotalNum); 
	DDX_Control(pDX, IDC_BOOKLISTNUM, m_BookNo); 
	DDX_Control(pDX, IDC_BOOKDATE, m_BookDate); 
	DDX_Control(pDX, IDC_BOOKERGETDATE, m_BookerGetDate); 
	DDX_Control(pDX, IDC_BOOKERPHONE, m_BookerPhone); 
	DDX_Control(pDX, IDC_BOOKERPASSNO, m_BookerPassNo); 
	DDX_Control(pDX, IDC_RADIO_NOGET, m_rdioNoGet); 
	DDX_Control(pDX, IDC_RADIO_GET, m_rdioGet); 
	DDX_Control(pDX, IDC_COMBO_GETBOOKNO, m_combBookNo); 
	DDX_Control(pDX, IDC_STATIC_BOOKNO, m_stBookNo); 
	DDX_Control(pDX, IDC_STATIC_NAME, m_stName); 
	DDX_Control(pDX, IDC_LIST_INFO, m_ListInfo); 
	DDX_Control(pDX, IDC_EDIT_NAME, m_Name); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CPage3, CPropertyPage) 
	//{{AFX_MSG_MAP(CPage3) 
	ON_EN_KILLFOCUS(IDC_EDIT_NAME, OnKillfocusEditName) 
	ON_BN_CLICKED(IDC_RADIO_GET, OnRadioGet) 
	ON_BN_CLICKED(IDC_RADIO_NOGET, OnRadioNoget) 
	ON_CBN_SELCHANGE(IDC_COMBO_GETBOOKNO, OnSelchangeComboGetbookno) 
    ON_COMMAND(ID_VRETURN, OnMyEnter) 
	ON_BN_CLICKED(IDC_RADIO_SERIAL, OnRadioSerial) 
	ON_BN_CLICKED(IDC_RADIO_NAME, OnRadioName) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CPage3 message handlers 
 
BOOL CPage3::OnInitDialog()  
{ 
	CPropertyPage::OnInitDialog(); 
	 
	// TODO: Add extra initialization here 
	m_hAccel = ::LoadAccelerators(AfxGetResourceHandle(), 
		MAKEINTRESOURCE(IDR_ACCELERATOR1)); // use same resource name as dialog 
	ASSERT(m_hAccel); 
 
	m_SearchBookName.SetCheck(1); 
	m_rdioNoGet.SetCheck(1); 
	m_combBookNo.ShowWindow(SW_SHOW); 
	AddColumns(); 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
BOOL CPage3::PreTranslateMessage(MSG* pMsg)  
{ 
	// TODO: Add your specialized code here and/or call the base class 
	if (WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST) { 
		HACCEL hAccel = m_hAccel; 
		if (hAccel && ::TranslateAccelerator(m_hWnd, hAccel, pMsg)) 
			return TRUE; 
	} 
	 
	return CPropertyPage::PreTranslateMessage(pMsg); 
} 
void CPage3::OnMyEnter() 
{ 
	CWnd* w=this->GetFocus(); 
	this->NextDlgCtrl(); 
} 
 
 
 
void CPage3::AddToSerial() 
{ 
	CString SQL; 
	CString strBookNo; 
	CString Name; 
	int nIndex; 
 
	m_BookDate.SetWindowText(""); 
	m_BookerGetDate.SetWindowText(""); 
	m_BookerPassNo.SetWindowText(""); 
	m_BookerPhone.SetWindowText(""); 
	m_BookNo.SetWindowText(""); 
	m_stTotalNum.SetWindowText(""); 
	m_stTotalPrice.SetWindowText(""); 
	m_combBookNo.ResetContent(); 
	m_Name.GetWindowText(Name); 
 
	strBookNo=GetBookNo(Name); 
	m_combBookNo.SetCurSel(0); 
	m_ListInfo.DeleteAllItems(); 
 
} 
 
void CPage3::OnKillfocusEditName()  
{ 
	// TODO: Add your control notification handler code here 
	AddToSerial(); 
} 
 
void CPage3::OnRadioGet()  
{ 
	// TODO: Add your control notification handler code here 
	CString str; 
 
	m_rdioGet.SetCheck(1); 
	m_rdioNoGet.SetCheck(0); 
	if(m_SearchBookName.GetCheck()==1){ 
		m_Name.GetWindowText(str); 
		if(str=="") 
			return; 
	} 
	AddToSerial();	 
} 
 
void CPage3::OnRadioNoget()  
{ 
	// TODO: Add your control notification handler code here 
	CString str; 
 
	m_rdioGet.SetCheck(0); 
	m_rdioNoGet.SetCheck(1); 
	if(m_SearchBookName.GetCheck()==1){ 
		m_Name.GetWindowText(str); 
		if(str=="") 
			return; 
	} 
	AddToSerial();	 
} 
 
void CPage3::AddColumns() 
{ 
	//为订票信息(ListCtrl)添加项目标题 
	m_ListInfo.InsertColumn(0,"姓名",LVCFMT_LEFT,100,0); 
	m_ListInfo.InsertColumn(1,"身份证号",LVCFMT_LEFT,100,0); 
	m_ListInfo.InsertColumn(2,"航班号",LVCFMT_LEFT,100,0); 
	m_ListInfo.InsertColumn(3,"出发地",LVCFMT_LEFT,100,0); 
	m_ListInfo.InsertColumn(4,"目的地",LVCFMT_LEFT,100,0); 
	m_ListInfo.InsertColumn(5,"起飞日期",LVCFMT_LEFT,100,0); 
	m_ListInfo.InsertColumn(6,"起飞时间",LVCFMT_LEFT,100,0); 
	m_ListInfo.InsertColumn(7,"等级",LVCFMT_LEFT,100,0); 
	m_ListInfo.InsertColumn(8,"价格",LVCFMT_LEFT,100,0); 
	m_ListInfo.InsertColumn(9,"订票数",LVCFMT_LEFT,100,0); 
 
} 
 
void CPage3::GetBookInfo(CString SerialNum) 
{ 
	CString SQL; 
	CString SQL1; 
	CString str; 
	CString Pr; 
 
	m_Total=0; 
	m_TotalPrice=0; 
	if(SerialNum.IsEmpty()){ 
		AfxMessageBox("请输入订单序号."); 
		return; 
	}else{ 
		SQL="select * from info where serial='"+SerialNum+"'"; 
		SQL1="select * from booker where serial='"+SerialNum+"'"; 
	} 
	if(m_dbBookInfo->IsOpen()) 
		m_dbBookInfo->Close(); 
	m_dbBookInfo->Open(AFX_DB_USE_DEFAULT_TYPE,SQL); 
	if(m_dbBookInfo->GetRecordCount()==0){ 
		str.Format("没有找到订票信息。订单号=%s",SerialNum); 
		AfxMessageBox(str); 
		return; 
	} 
	m_dbBookInfo->MoveFirst(); 
 
	if(m_dbBooker->IsOpen()) 
		m_dbBooker->Close(); 
	m_dbBooker->Open(AFX_DB_USE_DEFAULT_TYPE,SQL1); 
	if(m_dbBooker->GetRecordCount()==0){ 
		str.Format("没有找到订票人信息。订单号=%s",SerialNum); 
		AfxMessageBox(str); 
		return; 
	} 
	m_dbBooker->MoveFirst(); 
 
	 
	m_BookDate.SetWindowText(m_dbBookInfo->m_Today); 
	m_BookerPassNo.SetWindowText(m_dbBooker->m_BookerPassno); 
	m_BookerPhone.SetWindowText(m_dbBooker->m_BookerPhone); 
	m_BookerGetDate.SetWindowText(m_dbBooker->m_BookerGetDate); 
	m_Name.SetWindowText(m_dbBooker->m_BookerName); 
	do{ 
		struInfo.sAirNo=m_dbBookInfo->m_AirNo; 
		struInfo.sName=m_dbBookInfo->m_Name; 
		struInfo.sClass=m_dbBookInfo->m_Class; 
		struInfo.sDate=m_dbBookInfo->m_StartDate; 
		struInfo.sTime=m_dbBookInfo->m_StartTime; 
		struInfo.sStart=m_dbBookInfo->m_Start; 
		struInfo.sTarget=m_dbBookInfo->m_Target; 
		struInfo.sPassNo=m_dbBookInfo->m_PassNo; 
		struInfo.sPrice=m_dbBookInfo->m_Price; 
		struInfo.sNum=m_dbBookInfo->m_Num; 
		AddToInfo(); 
		m_dbBookInfo->MoveNext(); 
	}while(!m_dbBookInfo->IsEOF()); 
	m_dbBookInfo->Close(); 
 
	str.Format("%d",m_Total); 
	m_stTotalNum.SetWindowText(str); 
 
	str.Format("%.2f",m_TotalPrice); 
	m_stTotalPrice.SetWindowText(str); 
 
 
} 
 
void CPage3::AddToInfo() 
{ 
		LV_ITEM lvi; 
		int Count; 
		CString str; 
 
		Count=m_ListInfo.GetItemCount(); 
		lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE; 
		lvi.iItem = Count; 
		lvi.iSubItem = 0; 
		lvi.pszText ="" ; 
		lvi.stateMask = LVIS_STATEIMAGEMASK|LVIF_TEXT|LVS_EX_GRIDLINES; 
		lvi.state = INDEXTOSTATEIMAGEMASK(1); 
 
		m_ListInfo.InsertItem(&lvi); 
		 
// set item text for additional columns 
		m_ListInfo.SetItemText(Count,0,struInfo.sName); 
		m_ListInfo.SetItemText(Count,1,struInfo.sPassNo); 
		m_ListInfo.SetItemText(Count,2,struInfo.sAirNo); 
		m_ListInfo.SetItemText(Count,3,struInfo.sStart); 
		m_ListInfo.SetItemText(Count,4,struInfo.sTarget); 
		m_ListInfo.SetItemText(Count,5,struInfo.sDate); 
		m_ListInfo.SetItemText(Count,6,struInfo.sTime); 
		m_ListInfo.SetItemText(Count,7,struInfo.sClass); 
		m_ListInfo.SetItemText(Count,8,struInfo.sPrice); 
		m_ListInfo.SetItemText(Count,9,struInfo.sNum); 
		float f=atof(struInfo.sPrice.GetBuffer(0)); 
		int i=atol(struInfo.sNum); 
		m_Total+=i; 
		m_TotalPrice+=f*i; 
 
		m_ListInfo.EnsureVisible( Count, 0 ); 
 
 
} 
 
void CPage3::OnSelchangeComboGetbookno()  
{ 
	// TODO: Add your control notification handler code here 
	CString str; 
 
	m_combBookNo.GetWindowText(str); 
	m_ListInfo.DeleteAllItems(); 
	GetBookInfo(str);	 
	 
} 
 
 
 
 
 
 
 
CString CPage3::GetBookNo(CString BookerName) 
{ 
	CString SQL; 
	CString strBookNo; 
	int nIndex,bn; 
 
	if(m_SearchBookName.GetCheck()==1) 
		SQL="SELECT * FROM Booker WHERE BookerName='"+BookerName+"';"; 
	else 
		SQL="SELECT * FROM Booker"; 
	bn=0; 
	if(m_dbBooker->IsOpen()) 
		m_dbBooker->Close(); 
	m_dbBooker->Open(AFX_DB_USE_DEFAULT_TYPE,SQL); 
	if(m_dbBooker->GetRecordCount()<=0) 
	{ 
		AfxMessageBox("没有找到此订票人."); 
		return ""; 
	} 
	m_dbBooker->MoveFirst(); 
	while(!m_dbBooker->IsEOF()){ 
		strBookNo=m_dbBooker->m_Serial; 
		if(m_rdioNoGet.GetCheck()==1) 
			SQL="SELECT * FROM Info WHERE getted=0 AND Serial='"+strBookNo+"'"; 
		else 
			SQL="SELECT * FROM Info WHERE getted=1 AND Serial='"+strBookNo+"'"; 
		if(m_dbBookInfo->IsOpen()) 
			m_dbBookInfo->Close(); 
		m_dbBookInfo->Open(	AFX_DB_USE_DEFAULT_TYPE,SQL); 
		if(m_dbBookInfo->GetRecordCount()>0){ 
			nIndex=m_combBookNo.FindString(0,strBookNo); 
			if(nIndex==-1){ 
				m_combBookNo.AddString(strBookNo); 
				bn++; 
			} 
		} 
		m_dbBooker->MoveNext(); 
	} 
	strBookNo.Format("%d",bn); 
	m_BookNo.SetWindowText(strBookNo); 
	m_dbBooker->Close(); 
	m_dbBookInfo->Close(); 
return ""; 
} 
 
void CPage3::OnRadioSerial()  
{ 
	// TODO: Add your control notification handler code here 
	m_SearchBookNo.SetCheck(1); 
	m_SearchBookName.SetCheck(0); 
	AddToSerial(); 
} 
 
void CPage3::OnRadioName()  
{ 
	// TODO: Add your control notification handler code here 
	m_SearchBookNo.SetCheck(0); 
	m_SearchBookName.SetCheck(1); 
	m_Name.SetWindowText(""); 
	m_combBookNo.ResetContent(); 
	m_BookNo.SetWindowText(""); 
//	AddToSerial(); 
		 
}