📄 ticketokdlg.cpp
字号:
// TicketOKDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "TicketOffice.h"
#include "TicketOKDlg.h"
#include ".\ticketokdlg.h"
#include "PassagerInfo.h"
// CTicketOKDlg 对话框
IMPLEMENT_DYNAMIC(CTicketOKDlg, CDialog)
CTicketOKDlg::CTicketOKDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTicketOKDlg::IDD, pParent)
, m_TicketID(0)
, m_ToDate(_T(""))
, m_Fi(_T(""))
, m_CardID(_T(""))
, m_Price(0)
, m_Agio(0)
, m_EffectTime(_T(""))
, m_NameC(_T(""))
, m_NameE(_T(""))
, m_Sex(_T(""))
, m_Workman(_T(""))
{
m_bValidate = false;
m_CurSlt = -1;
}
CTicketOKDlg::~CTicketOKDlg()
{
}
void CTicketOKDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT4, m_TicketID);
DDX_Text(pDX, IDC_EDIT1, m_ToDate);
DDX_Text(pDX, IDC_EDIT2, m_Fi);
DDX_Text(pDX, IDC_EDIT3, m_CardID);
DDX_Control(pDX, IDC_COMBO1, m_SeatType);
DDX_Text(pDX, IDC_EDIT6, m_Price);
DDX_Text(pDX, IDC_EDIT7, m_Agio);
DDX_Text(pDX, IDC_EDIT8, m_EffectTime);
DDX_Control(pDX, IDOK, m_kBtOK);
DDX_Text(pDX, IDC_EDIT11, m_NameC);
DDX_Text(pDX, IDC_EDIT12, m_NameE);
DDX_Text(pDX, IDC_EDIT13, m_Sex);
DDX_Text(pDX, IDC_EDIT9, m_Workman);
DDX_Control(pDX, IDC_COMBO2, m_Why);
DDX_Control(pDX, IDC_EDIT3, m_kCardID);
DDX_Control(pDX, IDC_BUTTON7, m_kBtTicket);
}
BEGIN_MESSAGE_MAP(CTicketOKDlg, CDialog)
ON_BN_CLICKED(IDC_BUTTON5, OnBnClickedButton5)
ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
ON_BN_CLICKED(IDC_BUTTON7, OnBnClickedButton7)
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
END_MESSAGE_MAP()
// CTicketOKDlg 消息处理程序
BOOL CTicketOKDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
m_kBtOK.EnableWindow( m_bValidate );
m_kBtTicket.EnableWindow( m_bValidate );
m_SeatType.AddString( "经济舱" );
m_SeatType.AddString( "公务舱" );
m_SeatType.AddString( "头等舱" );
m_SeatType.SetCurSel(0);
m_Why.AddString("购票");
m_Why.AddString("退票");
m_Why.AddString("升舱");
m_Why.SetCurSel(0);
if( m_CurSlt != -1 )
{
SetFiAndDate( m_CurSlt );
}
return TRUE; // return TRUE unless you set the focus to a control
}
// 根据航班编号确定航班号和日期
bool CTicketOKDlg::SetFiAndDate(int id)
{
_ConnectionPtr pConnection;
_RecordsetPtr pRecordset;
try
{
HRESULT hr;
// 创建Connection对象
hr = pConnection.CreateInstance("ADODB.Connection");
if( SUCCEEDED( hr ) )
{
// 连接数据库
hr = pConnection->Open(m_pMainDlg->m_DBData.Linkbuf.GetBuffer(),
m_pMainDlg->m_DBData.UserName.GetBuffer(),m_pMainDlg->m_DBData.PassWord.GetBuffer(),
adModeUnknown);
}
else
{
MessageBox("创建数据库连接失败","失败",MB_OK);
return false;
}
}
catch( ... )
{
MessageBox( "连接数据库失败","失败",MB_OK);
return false;
}
CString temp;
try
{
// 生成Recordset实例
pRecordset.CreateInstance("ADODB.Recordset");
temp.Format("SELECT * FROM FlightIDInfo WHERE (index = %d)",id);
pRecordset->Open( temp.GetBuffer(),
_variant_t((IDispatch*)pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
}
catch( _com_error * e )
{
pConnection->Close();
MessageBox( e->ErrorMessage(),"异常",MB_OK );
return false;
}
if( !pRecordset->adoEOF )
{
_variant_t value;
CString temp;
try
{
value = pRecordset->GetCollect("FlightID");
if( value.vt != VT_NULL )
temp = value.bstrVal;
else
temp = "";
m_Fi = temp.Trim();
value = pRecordset->GetCollect("Date");
if( value.vt != VT_NULL )
m_Time = value.date;
m_ToDate.Format("%d-%02d-%02d",m_Time.GetYear(),m_Time.GetMonth(),m_Time.GetDay() );
m_EffectTime.Format("%d-%02d-%02d",m_Time.GetYear()+1,m_Time.GetMonth(),m_Time.GetDay() );
UpdateData(false);
}
catch(...)
{
MessageBox("读取记录异常","异常",MB_OK );
pRecordset->Close();
pConnection->Close();
return false;
}
}
try
{
pRecordset->Close();
pConnection->Close();
}
catch( _com_error * e )
{
MessageBox(e->ErrorMessage(),"失败",MB_OK );
}
return true;
}
void CTicketOKDlg::OnBnClickedButton5()
{
CPassagerInfo dlg;
dlg.SetMyOwner(m_pMainDlg);
dlg.LockCardID( m_CardID );
if( dlg.DoModal() == IDOK )
OnBnClickedButton1();
}
// 身份证验证
void CTicketOKDlg::OnBnClickedButton1()
{
if( UpdateData() == false )
return;
if( m_CardID == "" )
{
MessageBox("请填写身份证号");
return;
}
m_bValidate = GetCardIDInfo( m_CardID );
m_kBtOK.EnableWindow( m_bValidate );
m_kBtTicket.EnableWindow( m_bValidate );
m_kCardID.SetReadOnly( m_bValidate );
if( m_bValidate == false )
{
MessageBox("没有该用户信息,请添加");
}
}
// 读取身份信息,返回用户身份是否找到
bool CTicketOKDlg::GetCardIDInfo(CString id)
{
bool bFind = false;
_ConnectionPtr pConnection;
_RecordsetPtr pRecordset;
try
{
HRESULT hr;
// 创建Connection对象
hr = pConnection.CreateInstance("ADODB.Connection");
if( SUCCEEDED( hr ) )
{
// 连接数据库
hr = pConnection->Open(m_pMainDlg->m_DBData.Linkbuf.GetBuffer(),
m_pMainDlg->m_DBData.UserName.GetBuffer(),m_pMainDlg->m_DBData.PassWord.GetBuffer(),
adModeUnknown);
}
else
{
MessageBox("创建数据库连接失败","失败",MB_OK);
return false;
}
}
catch( ... )
{
MessageBox( "连接数据库失败","失败",MB_OK);
return false;
}
CString temp;
try
{
// 生成Recordset实例
pRecordset.CreateInstance("ADODB.Recordset");
temp.Format("SELECT * FROM PassagerInfo WHERE (IDCard = '%s')",id);
pRecordset->Open( temp.GetBuffer(),
_variant_t((IDispatch*)pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
}
catch( _com_error * e )
{
pConnection->Close();
MessageBox( e->ErrorMessage(),"异常",MB_OK );
return false;
}
if( !pRecordset->adoEOF )
{
// 没有改旅客的信息,需要添加
try
{
_variant_t value;
CString temp;
value = pRecordset->GetCollect("Name");
if( value.vt != VT_NULL )
temp = value.bstrVal;
else
temp = "";
m_NameC = temp.Trim();
value = pRecordset->GetCollect("NameE");
if( value.vt != VT_NULL )
temp = value.bstrVal;
else
temp = "";
m_NameE = temp.Trim();
value = pRecordset->GetCollect("Sex");
if( value.vt != VT_NULL )
temp = value.bstrVal;
else
temp = "";
m_Sex = temp.Trim();
}
catch(...)
{
MessageBox("添加记录异常","异常",MB_OK );
pRecordset->Close();
pConnection->Close();
return false;
}
bFind = true;
UpdateData(false);
}
try
{
pRecordset->Close();
pConnection->Close();
}
catch( _com_error * e )
{
MessageBox(e->ErrorMessage(),"失败",MB_OK );
}
return bFind;
}
// 机票信息记录写入数据库
bool CTicketOKDlg::TicketAndSalInDB()
{
_ConnectionPtr pConnection;
_RecordsetPtr pRecordset;
try
{
HRESULT hr;
// 创建Connection对象
hr = pConnection.CreateInstance("ADODB.Connection");
if( SUCCEEDED( hr ) )
{
// 连接数据库
hr = pConnection->Open(m_pMainDlg->m_DBData.Linkbuf.GetBuffer(),
m_pMainDlg->m_DBData.UserName.GetBuffer(),m_pMainDlg->m_DBData.PassWord.GetBuffer(),
adModeUnknown);
}
else
{
MessageBox("创建数据库连接失败","失败",MB_OK);
return false;
}
}
catch( ... )
{
MessageBox( "连接数据库失败","失败",MB_OK);
return false;
}
CString temp;
try
{
// 生成Recordset实例
pRecordset.CreateInstance("ADODB.Recordset");
temp.Format("SELECT * FROM SaleTicketNote");
pRecordset->Open( temp.GetBuffer(),
_variant_t((IDispatch*)pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
}
catch( _com_error * e )
{
pConnection->Close();
MessageBox( e->ErrorMessage(),"异常",MB_OK );
return false;
}
try
{
pRecordset->AddNew();
pRecordset->PutCollect( "FlightID", _variant_t(m_Fi) );
COleDateTime t;
t.SetDate(m_Time.GetYear(),m_Time.GetMonth(),m_Time.GetDay() );
pRecordset->PutCollect( "Date", _variant_t(t) );
pRecordset->PutCollect( "IDCard", _variant_t(m_CardID) );
m_SeatType.GetLBText(m_SeatType.GetCurSel(),temp );
pRecordset->PutCollect( "SeatType", _variant_t(temp) );
pRecordset->PutCollect( "Price", _variant_t(m_Price) );
pRecordset->PutCollect( "Agio", _variant_t(m_Agio) );
t.SetDate(m_Time.GetYear()+1,m_Time.GetMonth(),m_Time.GetDay() );
pRecordset->PutCollect( "EffectTime", _variant_t(t) );
bool b = false;
pRecordset->PutCollect( "Boarding", _variant_t(b) );
pRecordset->Update();
}
catch(...)
{
MessageBox("添加记录异常","异常",MB_OK );
pRecordset->Close();
pConnection->Close();
return false;
}
// 得到机票的唯一编号
try
{
_variant_t value;
value = pRecordset->GetCollect("ID");
if( value.vt != VT_NULL )
m_TicketID = value.lVal;
else
m_TicketID = 0;
UpdateData(false);
}
catch( _com_error * e )
{
MessageBox(e->ErrorMessage(),"失败",MB_OK );
pRecordset->Close();
pConnection->Close();
return false;
}
try
{
pRecordset->Close();
pConnection->Close();
}
catch( _com_error * e )
{
MessageBox(e->ErrorMessage(),"失败",MB_OK );
}
return true;
}
void CTicketOKDlg::OnBnClickedButton7()
{
if( UpdateData() == false )
return;
// 将交易信息写入数据库
if( TicketAndSalInDB() )
{
MessageBox("交易成功");
}
else
{
MessageBox("交易失败");
}
}
void CTicketOKDlg::OnBnClickedOk()
{
if( UpdateData() == false )
return;
if( m_Workman == "" )
{
MessageBox("操作员必须签名");
return;
}
if( SalNoteInDB() )
OnOK();
else
OnBnClickedCancel();
}
// 交易记录写入数据库
bool CTicketOKDlg::SalNoteInDB()
{
_ConnectionPtr pConnection;
_RecordsetPtr pRecordset;
try
{
HRESULT hr;
// 创建Connection对象
hr = pConnection.CreateInstance("ADODB.Connection");
if( SUCCEEDED( hr ) )
{
// 连接数据库
hr = pConnection->Open(m_pMainDlg->m_DBData.Linkbuf.GetBuffer(),
m_pMainDlg->m_DBData.UserName.GetBuffer(),m_pMainDlg->m_DBData.PassWord.GetBuffer(),
adModeUnknown);
}
else
{
MessageBox("创建数据库连接失败","失败",MB_OK);
return false;
}
}
catch( ... )
{
MessageBox( "连接数据库失败","失败",MB_OK);
return false;
}
CString temp;
try
{
// 生成Recordset实例
pRecordset.CreateInstance("ADODB.Recordset");
temp.Format("SELECT * FROM SaleAnnal");
pRecordset->Open( temp.GetBuffer(),
_variant_t((IDispatch*)pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
}
catch( _com_error * e )
{
pConnection->Close();
MessageBox( e->ErrorMessage(),"异常",MB_OK );
return false;
}
try
{
pRecordset->AddNew();
pRecordset->PutCollect( "ID", _variant_t(m_TicketID) );
COleDateTime t;
SYSTEMTIME SysTime;
GetLocalTime(&SysTime);
t.SetDate( SysTime.wYear,SysTime.wMonth,SysTime.wDay );
pRecordset->PutCollect( "DateTime", _variant_t(t) );
pRecordset->PutCollect( "Handler", _variant_t(m_Workman) );
pRecordset->PutCollect( "Money", _variant_t(m_Price) );
m_Why.GetLBText(m_Why.GetCurSel(),temp );
pRecordset->PutCollect( "Why", _variant_t(temp) );
pRecordset->Update();
}
catch(...)
{
MessageBox("添加记录异常","异常",MB_OK );
pRecordset->Close();
pConnection->Close();
return false;
}
try
{
pRecordset->Close();
pConnection->Close();
}
catch( _com_error * e )
{
MessageBox(e->ErrorMessage(),"失败",MB_OK );
}
return true;
}
void CTicketOKDlg::OnBnClickedCancel()
{
// 删除加入的机票信息
DelTicketInfo( m_TicketID );
OnCancel();
}
// 删除指定的机票信息
bool CTicketOKDlg::DelTicketInfo( long id )
{
_ConnectionPtr pConnection;
_RecordsetPtr pRecordset;
try
{
HRESULT hr;
// 创建Connection对象
hr = pConnection.CreateInstance("ADODB.Connection");
if( SUCCEEDED( hr ) )
{
// 连接数据库
hr = pConnection->Open(m_pMainDlg->m_DBData.Linkbuf.GetBuffer(),
m_pMainDlg->m_DBData.UserName.GetBuffer(),m_pMainDlg->m_DBData.PassWord.GetBuffer(),
adModeUnknown);
}
else
{
MessageBox("创建数据库连接失败","失败",MB_OK);
return false;
}
}
catch( ... )
{
MessageBox( "连接数据库失败","失败",MB_OK);
return false;
}
try
{
_variant_t RecordsAffected;
CString temp;
temp.Format("DELETE FROM SaleTicketNote WHERE (ID = %d)",id);
pConnection->Execute( temp.GetBuffer(), &RecordsAffected,adCmdText);
}
catch( _com_error *e)
{
MessageBox(e->ErrorMessage());
return false;
}
try
{
pConnection->Close();
}
catch( _com_error * e )
{
MessageBox(e->ErrorMessage(),"失败",MB_OK );
}
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -