⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 changeticketdlg.cpp

📁 飞机售票系统。本系统按照实际项目的工作流程开发
💻 CPP
字号:
// ChangeTicketDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "TicketOffice.h"
#include "ChangeTicketDlg.h"
#include ".\changeticketdlg.h"
#include "PassagerChangeDlg.h"
#include "ChangeFiDlg.h"

// CChangeTicketDlg 对话框

IMPLEMENT_DYNAMIC(CChangeTicketDlg, CDialog)
CChangeTicketDlg::CChangeTicketDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CChangeTicketDlg::IDD, pParent)
	, m_TicketID(0)
	, m_Price(0)
	, m_Fi(_T(""))
	, m_CardID(_T(""))
	, m_Date(_T(""))
	, m_ChangeMoney(0)
	, m_Workman(_T(""))
{
	m_pMainDlg = NULL;
}

CChangeTicketDlg::~CChangeTicketDlg()
{
}

void CChangeTicketDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_EDIT1, m_kTicketID);
	DDX_Text(pDX, IDC_EDIT1, m_TicketID);
	DDX_Control(pDX, IDC_COMBO3, m_BoardCombo);
	DDX_Control(pDX, IDC_COMBO4, m_SeatType);
	DDX_Text(pDX, IDC_EDIT6, m_Price);
	DDX_Text(pDX, IDC_EDIT2, m_Fi);
	DDX_Text(pDX, IDC_EDIT4, m_CardID);
	DDX_Text(pDX, IDC_EDIT3, m_Date);
	DDX_Text(pDX, IDC_EDIT11, m_ChangeMoney);
	DDX_Text(pDX, IDC_EDIT9, m_Workman);
	DDX_Control(pDX, IDC_COMBO2, m_Why);
}


BEGIN_MESSAGE_MAP(CChangeTicketDlg, CDialog)
	ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
	ON_BN_CLICKED(IDC_BUTTON3, OnBnClickedButton3)
	ON_BN_CLICKED(IDC_BUTTON8, OnBnClickedButton8)
	ON_BN_CLICKED(IDC_BUTTON5, OnBnClickedButton5)
END_MESSAGE_MAP()


// CChangeTicketDlg 消息处理程序

BOOL CChangeTicketDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	m_BoardCombo.AddString("否");
	m_BoardCombo.AddString("是");
	m_BoardCombo.SetCurSel(0);
	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);

	return TRUE;  // return TRUE unless you set the focus to a control
}
// 查询机票
void CChangeTicketDlg::OnBnClickedButton1()
{
	if( UpdateData() == false )
		return;
	if( m_TicketID == 0 )
	{
		MessageBox("请输入机票ID");
		return;
	}
	if( LoadTicketInfo( m_TicketID ) )
	{
		m_kTicketID.EnableWindow(false);
	}
}
// 读取机票信息
bool CChangeTicketDlg::LoadTicketInfo(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;
	}

	CString temp;
	try
	{
		// 生成Recordset实例
		pRecordset.CreateInstance("ADODB.Recordset");

		temp.Format("SELECT * FROM SaleTicketNote WHERE (ID = %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 )
	{
		try
		{
			_variant_t value;
			COleDateTime time;
			CString temp;
			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 )
				time = value.date;
			m_Time = time;
			m_Date.Format("%4d-%02d-%02d",time.GetYear(),time.GetMonth(),time.GetDay());

			value = pRecordset->GetCollect("IDCard");
			if( value.vt != VT_NULL )
				temp = value.bstrVal;
			else
				temp = "";
			m_CardID = temp.Trim();
			value = pRecordset->GetCollect("SeatType");
			if( value.vt != VT_NULL )
				temp = value.bstrVal;
			else
				temp = "";
			if( temp == "经济舱" )
			{
				m_SeatType.SetCurSel(0);
			}
			else if( temp == "公务舱" )
			{
				m_SeatType.SetCurSel(1);
			}
			else if( temp == "头等舱" )
			{
				m_SeatType.SetCurSel(2);
			}
			else
				m_SeatType.SetCurSel(0);

			value = pRecordset->GetCollect("Price");
			if( value.vt != VT_NULL )
				m_Price = value.dblVal;
			else
				m_Price = 0;
			BOOL bBoard = false;
			value = pRecordset->GetCollect("Boarding");
			if( value.vt != VT_NULL )
				bBoard = value.boolVal;
			if( bBoard )
			{
				m_BoardCombo.SetCurSel(1);
			}
			else
			{
				m_BoardCombo.SetCurSel(0);
			}

			UpdateData(false);
		}
		catch(...)
		{
			MessageBox("读取记录异常","异常",MB_OK );
		}
	}
	else
	{
		MessageBox("没有该机票信息");
		pRecordset->Close();
		pConnection->Close();
		return false;
	}
	try
	{
		pRecordset->Close();
		pConnection->Close();
	}
	catch( _com_error * e )
	{
		MessageBox(e->ErrorMessage(),"失败",MB_OK );
	}
	return true;
}
// 变更
void CChangeTicketDlg::OnBnClickedButton3()
{
	if( UpdateData() == false)
		return;
	if( m_Workman == "" && m_ChangeMoney != 0)
	{
		MessageBox("操作员必须签名");
		return;
	}
	if( ChangeFiInfo() && SalNoteInDB() )
	{
		MessageBox("更改成功");
	}
	else
	{
		MessageBox("更改失败");
	}
}
// 交易情况入库
bool CChangeTicketDlg::SalNoteInDB()
{
	if( m_ChangeMoney == 0 )
		return true;
	_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_ChangeMoney) );
		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;
}
// 改变航班信息
bool CChangeTicketDlg::ChangeFiInfo()
{
	_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 WHERE (ID = %d)",m_TicketID);
		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;
	}

	bool b = true;
	if( !pRecordset->adoEOF )
	{
		try
		{
			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) );
			pRecordset->PutCollect( "Price", _variant_t(m_Price) );
			m_SeatType.GetLBText(m_SeatType.GetCurSel(),temp);
			pRecordset->PutCollect( "SeatType", _variant_t(temp) );
			bool b;
			if( m_BoardCombo.GetCurSel() == 0 )
				b = false;
			else
				b = true;
			pRecordset->PutCollect( "Boarding", _variant_t(b) );

			pRecordset->Update();
		}
		catch(...)
		{
			MessageBox("更改记录异常","异常",MB_OK );
			b = false;
		}
	}
	else
	{
		MessageBox("没有该机票信息");
		b = false;
	}

	try
	{
		pRecordset->Close();
		pConnection->Close();
	}
	catch( _com_error * e )
	{
		MessageBox(e->ErrorMessage(),"失败",MB_OK );
	}
	return b;
}
// 旅客变更
void CChangeTicketDlg::OnBnClickedButton8()
{
	CPassagerChangeDlg dlg;
	dlg.SetMyOwner( m_pMainDlg );
	dlg.LockCardID( m_CardID );
	if( dlg.DoModal() == IDOK )
		UpdateData(false);
}
// 变更航班
void CChangeTicketDlg::OnBnClickedButton5()
{
	CChangeFiDlg dlg;
	dlg.SetMyOwner( m_pMainDlg );
	dlg.LockValue( m_Fi, m_Time );
	if( dlg.DoModal() == IDOK )
	{
		m_Date.Format("%4d-%02d-%02d",m_Time.GetYear(),m_Time.GetMonth(),m_Time.GetDay());
		UpdateData(false);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -