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


// Page2.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "ssproj03.h" 
#include "Page2.h" 
#include "bookinfo.h" 
#include "booker.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CPage2 property page 
 
IMPLEMENT_DYNCREATE(CPage2, CPropertyPage) 
 
CPage2::CPage2() : CPropertyPage(CPage2::IDD) 
{ 
	//{{AFX_DATA_INIT(CPage2) 
	//}}AFX_DATA_INIT 
	m_dbBookInfo=new CBookInfo(&m_DB); 
	m_dbBooker=new CBooker(&m_DB); 
} 
 
CPage2::~CPage2() 
{ 
	delete m_dbBookInfo; 
	delete m_dbBooker; 
} 
 
void CPage2::DoDataExchange(CDataExchange* pDX) 
{ 
	CPropertyPage::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CPage2) 
	DDX_Control(pDX, IDC_BOOKLISTNUM, m_BookListNum); 
	DDX_Control(pDX, IDC_BOOKERPHONE, m_BookerPhone); 
	DDX_Control(pDX, IDC_BOOKERPASSNO, m_BookerPassNo); 
	DDX_Control(pDX, IDC_BOOKERNAME, m_BookerName); 
	DDX_Control(pDX, IDC_BOOKERGETDATE, m_BookerGetDate); 
	DDX_Control(pDX, IDC_BOOKDATE, m_BookDate); 
	DDX_Control(pDX, IDC_BOOKNUM, m_Serial); 
	DDX_Control(pDX, IDC_TOTALNUM, m_TotalNum); 
	DDX_Control(pDX, IDC_TOTALCOUNT, m_TotalCount); 
	DDX_Control(pDX, IDC_LIST1, m_BookInfo); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CPage2, CPropertyPage) 
	//{{AFX_MSG_MAP(CPage2) 
//	ON_BN_CLICKED(IDC_SEARCH, OnSearch) 
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1) 
	ON_CBN_SELCHANGE(IDC_BOOKNUM, OnSelchangeBooknum) 
	ON_CBN_SELENDOK(IDC_BOOKNUM, OnSelendokBooknum) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CPage2 message handlers 
///////////////////////////////////////////////////////////////////////////// 
///////////////////////////////////////////////////////////////////////////// 
// CPage2 message handlers 
 
void CPage2::Ini() 
{ 
	CString str; 
 
	//从注册表取打开数据库参数串 
	str=AfxGetApp()->GetProfileString("DataBase","DSN","AirLine"); 
	TRY{ 
		 
		if(!m_DB.IsOpen()){ 
			if(!m_DB.Open(str)){ 
				m_DB.Open(NULL); 
			} 
		} 
	} 
	CATCH(CDBException, e) 
	{ 
				m_DB.Open(NULL);	//显示数据库参数设置窗口(ODBC) 
 
	} 
	END_CATCH 
 
	str=m_DB.GetConnect(); 
	AfxGetApp()->WriteProfileString("DataBase","DSN",str); 
	AddSerial(); 
} 
 
BOOL CPage2::OnInitDialog()  
{ 
	CPropertyPage::OnInitDialog(); 
	 
	// TODO: Add extra initialization here 
	m_hAccel = ::LoadAccelerators(AfxGetResourceHandle(), 
		MAKEINTRESOURCE(IDR_ACCELERATOR1)); // use same resource name as dialog 
	ASSERT(m_hAccel); 
	AddBookInfoColumns(); 
	Ini();	 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
 
 
 
void CPage2::OnSearch()  
{ 
	// TODO: Add your control notification handler code here 
	CString str; 
	 
	m_Total=0; 
	m_TotalPrice=0; 
	m_Serial.GetWindowText(str); 
	m_BookInfo.DeleteAllItems(); 
	GetBookInfo(str);	 
} 
 
void CPage2::GetBookInfo(CString SerialNum) 
{ 
	CString SQL; 
	CString SQL1; 
	CString str; 
	CString Pr; 
 
	if(SerialNum.IsEmpty()){ 
		AfxMessageBox("请输入订单序号."); 
		return; 
	}else{ 
		SQL="select * from info where serial='"+SerialNum+"' AND Getted=0"; 
		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_BookerName.SetWindowText(m_dbBooker->m_BookerName); 
	m_BookerPassNo.SetWindowText(m_dbBooker->m_BookerPassno); 
	m_BookerPhone.SetWindowText(m_dbBooker->m_BookerPhone); 
	m_BookerGetDate.SetWindowText(m_dbBooker->m_BookerGetDate); 
	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(); 
 
 
} 
 
void CPage2::AddToInfo() 
{ 
		LV_ITEM lvi; 
		int Count; 
		CString str; 
 
		Count=m_BookInfo.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_BookInfo.InsertItem(&lvi); 
		 
// set item text for additional columns 
		m_BookInfo.SetItemText(Count,0,struInfo.sName); 
		m_BookInfo.SetItemText(Count,1,struInfo.sPassNo); 
		m_BookInfo.SetItemText(Count,2,struInfo.sAirNo); 
		m_BookInfo.SetItemText(Count,3,struInfo.sStart); 
		m_BookInfo.SetItemText(Count,4,struInfo.sTarget); 
		m_BookInfo.SetItemText(Count,5,struInfo.sDate); 
		m_BookInfo.SetItemText(Count,6,struInfo.sTime); 
		m_BookInfo.SetItemText(Count,7,struInfo.sClass); 
		m_BookInfo.SetItemText(Count,8,struInfo.sPrice); 
		m_BookInfo.SetItemText(Count,9,struInfo.sNum); 
		float f=atof(struInfo.sPrice.GetBuffer(0)); 
		int i=atol(struInfo.sNum); 
		m_Total+=i; 
		m_TotalPrice+=f*i; 
		str.Format("%d",m_Total); 
		m_TotalNum.SetWindowText(str); 
 
		str.Format("%.2f",m_TotalPrice); 
		m_TotalCount.SetWindowText(str); 
 
		m_BookInfo.EnsureVisible( Count, 0 ); 
 
} 
 
void CPage2::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)  
{ 
	// TODO: Add your control notification handler code here 
::SendMessage(m_BookInfo.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 
LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT); 
	 
	*pResult = 0; 
} 
 
void CPage2::OnOK()  
{ 
	// TODO: Add extra validation here 
	CString SQL; 
	int nIndex; 
	CString str; 
	CString Pr; 
 
	m_Serial.GetWindowText(str); 
	SQL="UPDATE info SET Getted=1 where serial='"+str+"'";; 
	m_DB.ExecuteSQL(SQL); 
	 
	m_BookInfo.DeleteAllItems(); 
	nIndex=m_Serial.FindString(0,str); 
	m_Serial.DeleteString(nIndex); 
	m_BookerName.SetWindowText(""); 
	m_BookerPassNo.SetWindowText(""); 
	m_BookerPhone.SetWindowText(""); 
	m_BookerGetDate.SetWindowText(""); 
	m_TotalNum.SetWindowText(""); 
	m_TotalCount.SetWindowText(""); 
	m_Serial.SetWindowText(""); 
	m_BookDate.SetWindowText(""); 
} 
 
BOOL CPage2::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 CPage2::AddSerial() 
{ 
	CString SQL; 
	CString BookNo; 
	int nIndex; 
 
	SQL="SELECT * FROM Info where getted=0;"; 
	if(m_dbBookInfo->IsOpen()) 
		m_dbBookInfo->Close(); 
	m_dbBookInfo->Open(AFX_DB_USE_DEFAULT_TYPE,SQL); 
	if(m_dbBookInfo->GetRecordCount()<=0) 
	{ 
	//	AfxMessageBox("无订票."); 
		return; 
	} 
	m_dbBookInfo->MoveFirst(); 
 
	while(!m_dbBookInfo->IsEOF()){ 
		BookNo=m_dbBookInfo->m_Serial; 
		nIndex=m_Serial.FindString(0,BookNo); 
		if(nIndex==-1) 
			m_Serial.AddString(BookNo); 
		m_dbBookInfo->MoveNext(); 
	} 
	nIndex=m_dbBookInfo->GetRecordCount(); 
	BookNo.Format("%d",nIndex); 
	m_BookListNum.SetWindowText(BookNo); 
	m_dbBookInfo->Close(); 
	m_Serial.SetCurSel(0); 
	OnSearch(); 
} 
 
void CPage2::Clear() 
{ 
	m_Serial.ResetContent(); 
	m_BookInfo.DeleteAllItems(); 
} 
 
void CPage2::AddBookInfoColumns() 
{ 
	//为订票信息(ListCtrl)添加项目标题 
	m_BookInfo.InsertColumn(0,"姓名",LVCFMT_LEFT,100,0); 
	m_BookInfo.InsertColumn(1,"身份证号",LVCFMT_LEFT,100,0); 
	m_BookInfo.InsertColumn(2,"航班号",LVCFMT_LEFT,100,0); 
	m_BookInfo.InsertColumn(3,"出发地",LVCFMT_LEFT,100,0); 
	m_BookInfo.InsertColumn(4,"目的地",LVCFMT_LEFT,100,0); 
	m_BookInfo.InsertColumn(5,"日期",LVCFMT_LEFT,100,0); 
	m_BookInfo.InsertColumn(6,"起飞时间",LVCFMT_LEFT,100,0); 
	m_BookInfo.InsertColumn(7,"等级",LVCFMT_LEFT,100,0); 
	m_BookInfo.InsertColumn(8,"价格",LVCFMT_LEFT,100,0); 
	m_BookInfo.InsertColumn(9,"订票数",LVCFMT_LEFT,100,0); 
 
} 
 
void CPage2::OnSelchangeBooknum()  
{ 
	// TODO: Add your control notification handler code here 
	CString str; 
 
	m_Serial.GetWindowText(str); 
	OnSearch(); 
} 
 
 
 
void CPage2::OnSelendokBooknum()  
{ 
	// TODO: Add your control notification handler code here 
	OnSearch(); 
	 
}