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

📄 passagerchangedlg.cpp

📁 使用Visual C++ .NET实现简单了一个票务管理系统
💻 CPP
字号:
// PassagerChangeDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "TicketOffice.h"
#include "PassagerChangeDlg.h"
#include ".\passagerchangedlg.h"
#include "PassagerInfo.h"

// CPassagerChangeDlg 对话框

IMPLEMENT_DYNAMIC(CPassagerChangeDlg, CDialog)
CPassagerChangeDlg::CPassagerChangeDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CPassagerChangeDlg::IDD, pParent)
	, m_CardID(_T(""))
	, m_NameC(_T(""))
	, m_NameE(_T(""))
	, m_Sex(_T(""))
	, m_Tel(_T(""))
{
	m_pCardID = NULL;
}

CPassagerChangeDlg::~CPassagerChangeDlg()
{
}

void CPassagerChangeDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT1, m_CardID);
	DDX_Text(pDX, IDC_EDIT2, m_NameC);
	DDX_Text(pDX, IDC_EDIT3, m_NameE);
	DDX_Text(pDX, IDC_EDIT4, m_Sex);
	DDX_Text(pDX, IDC_EDIT6, m_Tel);
	DDX_Control(pDX, IDOK, m_kBtOK);
}


BEGIN_MESSAGE_MAP(CPassagerChangeDlg, CDialog)
	ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
	ON_EN_CHANGE(IDC_EDIT1, OnEnChangeEdit1)
	ON_BN_CLICKED(IDC_BUTTON5, OnBnClickedButton5)
END_MESSAGE_MAP()


// CPassagerChangeDlg 消息处理程序

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

	// TODO:  在此添加额外的初始化
	if( m_pCardID != NULL )
	{
		OnBnClickedButton1();
	}

	return TRUE;  // return TRUE unless you set the focus to a control
}
// 检索旅客信息
void CPassagerChangeDlg::OnBnClickedButton1()
{
	if( UpdateData() == false )
		return;
	bool b = SetPassageInfo( m_CardID );
	m_kBtOK.EnableWindow( b );
	if( !b )
	{
		MessageBox("没有找到该旅客信息");
	}
}
// 根据身份证ID,填写旅客信息
bool CPassagerChangeDlg::SetPassageInfo( CString id )
{
	_ConnectionPtr pConnection;
	_RecordsetPtr pRecordset;

	try
	{
		HRESULT hr;

		// 创建Connection对象
		hr = pConnection.CreateInstance("ADODB.Connection");
		if( SUCCEEDED( hr ) )
		{
			// 连接数据库
			hr = pConnection->Open(m_pDlg->m_DBData.Linkbuf.GetBuffer(),
				m_pDlg->m_DBData.UserName.GetBuffer(),m_pDlg->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;
	}
	bool b = true;
	if( !pRecordset->adoEOF )
	{
		// 没有改旅客的信息,需要添加
		_variant_t value;
		try
		{
			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();
			value = pRecordset->GetCollect("Tel");
			if( value.vt != VT_NULL )
				temp = value.bstrVal;
			else
				temp = "";
			m_Tel = temp.Trim();
			m_CardID = id;
			UpdateData(false);
		}
		catch(...)
		{
			MessageBox("读取记录异常","异常",MB_OK );
			pRecordset->Close();
			pConnection->Close();
			return false;
		}
	}
	else
	{
		b = false;
	}

	try
	{
		pRecordset->Close();
		pConnection->Close();
	}
	catch( _com_error * e )
	{
		MessageBox(e->ErrorMessage(),"失败",MB_OK );
		b = false;
	}
	return b;
}

void CPassagerChangeDlg::OnBnClickedOk()
{
	*m_pCardID = m_CardID;
	OnOK();
}

void CPassagerChangeDlg::OnEnChangeEdit1()
{
	// TODO:  如果该控件是 RICHEDIT 控件,则它将不会
	// 发送该通知,除非重写 CDialog::OnInitDialog()
	// 函数并调用 CRichEditCtrl().SetEventMask(),
	// 同时将 ENM_CHANGE 标志“或”运算到掩码中。

	// TODO:  在此添加控件通知处理程序代码
	m_kBtOK.EnableWindow(false);
}
// 没有该旅客信息,需要添加
void CPassagerChangeDlg::OnBnClickedButton5()
{
	if( UpdateData() == false )
		return;
	CPassagerInfo dlg;
	dlg.SetMyOwner( m_pDlg );
	dlg.LockCardID( m_CardID );
	if( dlg.DoModal() == IDOK )
	{
		UpdateData(false);
		OnBnClickedButton1();
	}
}

⌨️ 快捷键说明

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