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