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();
}