www.pudn.com > ssproj03.zip > Page4.cpp


// Page4.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "ssproj03.h" 
#include "Page4.h" 
#include "city.h" 
#include "syspara.h" 
#include "resource.h" 
#include "myedit.h" 
#include "airinfo.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CPage4 property page 
 
IMPLEMENT_DYNCREATE(CPage4, CPropertyPage) 
 
CPage4::CPage4() : CPropertyPage(CPage4::IDD) 
{ 
	//{{AFX_DATA_INIT(CPage4) 
	//}}AFX_DATA_INIT 
	m_dbAirInfo=new CAirInfo(&m_DB); 
	m_dbCity=new CCity(&m_DB); 
	m_dbSyspara=new CSyspara(&m_DB); 
} 
 
CPage4::~CPage4() 
{ 
	delete m_dbCity; 
	delete m_dbSyspara; 
	delete m_dbAirInfo; 
} 
 
void CPage4::DoDataExchange(CDataExchange* pDX) 
{ 
	CPropertyPage::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CPage4) 
	DDX_Control(pDX, IDC_DELETE, m_BtnDelAirInfo); 
	DDX_Control(pDX, IDC_AIRINFOSAVE, m_BtnAirSave); 
	DDX_Control(pDX, IDC_START, m_Start); 
	DDX_Control(pDX, IDC_NEWCITY, m_NewCity); 
	DDX_Control(pDX, IDC_CITY, m_City); 
	DDX_Control(pDX, IDC_EDITAIRNO, m_AirNo); 
	DDX_Control(pDX, IDC_COMBOTARGET, m_AirTarget); 
	DDX_Control(pDX, IDC_COMBOSTART, m_AirStart); 
	DDX_Control(pDX, IDC_TIMEPICKER, m_StartTime); 
	DDX_Control(pDX, IDC_EDITDISCOUNT1, m_Discount1); 
	DDX_Control(pDX, IDC_EDITDISCOUNT2, m_Discount2); 
	DDX_Control(pDX, IDC_EDITDISCOUNT3, m_Discount3); 
	DDX_Control(pDX, IDC_EDITLEFTNUM1, m_LeftNum1); 
	DDX_Control(pDX, IDC_EDITLEFTNUM2, m_LeftNum2); 
	DDX_Control(pDX, IDC_EDITLEFTNUM3, m_LeftNum3); 
	DDX_Control(pDX, IDC_EDITPRICE1, m_Price1); 
	DDX_Control(pDX, IDC_EDITPRICE2, m_Price2); 
	DDX_Control(pDX, IDC_EDITPRICE3, m_Price3); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CPage4, CPropertyPage) 
	//{{AFX_MSG_MAP(CPage4) 
	ON_CBN_EDITCHANGE(IDC_CITY, OnEditchangeCity) 
	ON_CBN_EDITUPDATE(IDC_CITY, OnEditupdateCity) 
	ON_BN_CLICKED(IDC_ADDCITY, OnAddcity) 
	ON_LBN_DBLCLK(IDC_CITY, OnDblclkCity) 
	ON_BN_CLICKED(IDC_CREATEDB, OnCreatedb) 
	ON_BN_CLICKED(IDC_DELETECITY, OnDeletecity) 
	ON_CBN_SELCHANGE(IDC_START, OnSelchangeStart) 
    ON_COMMAND(ID_VRETURN, OnMyEnter) 
    ON_COMMAND(ID_VCANCEL, OnMyCancel) 
	ON_EN_KILLFOCUS(IDC_SERIAL, OnKillfocusSerial) 
	ON_BN_CLICKED(IDC_AIRINFOSAVE, OnAirinfosave) 
	ON_EN_KILLFOCUS(IDC_EDITAIRNO, OnKillfocusEditairno) 
	ON_BN_CLICKED(IDC_DELETE, OnDelete) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CPage4 message handlers 
 
 
 
 
 
BOOL CPage4::OnInitDialog()  
{ 
	CPropertyPage::OnInitDialog(); 
	 
	// TODO: Add extra initialization here 
	m_hAccel = ::LoadAccelerators(AfxGetResourceHandle(), 
		MAKEINTRESOURCE(IDR_ACCELERATOR1)); // use same resource name as dialog 
	ASSERT(m_hAccel); 
	MyEdit.SubclassDlgItem(IDC_SERIAL,this); 
	m_BtnAirSave.EnableWindow(); 
	m_BtnDelAirInfo.EnableWindow(false); 
	Ini(); 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CPage4::GetCity() 
{ 
	CString SQL; 
	int i; 
	CString str; 
	CString Pr; 
 
	i=0; 
	SQL="select * from City;"; 
	if(m_dbCity->IsOpen()) 
		m_dbCity->Close(); 
	m_dbCity->Open(AFX_DB_USE_DEFAULT_TYPE,SQL); 
	if(m_dbCity->GetRecordCount()==0){ 
		return; 
	} 
	m_dbCity->MoveFirst(); 
	do{ 
		str=m_dbCity->m_CityName; 
		AddCity(str); 
		m_dbCity->MoveNext(); 
	}while(!m_dbCity->IsEOF()); 
 
 
} 
 
void CPage4::Ini() 
{ 
	CString str; 
 
	//从注册表取打开数据库参数串 
	str=AfxGetApp()->GetProfileString("DataBase","DSN","111"); 
	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); 
//	m_dbBookInfo=new CBookInfo(&m_DB); 
 
	str="select * from sys"; 
	if(m_dbSyspara->IsOpen()) 
		m_dbSyspara->Close(); 
	m_dbSyspara->Open(AFX_DB_USE_DEFAULT_TYPE,str); 
	m_dbSyspara->MoveFirst(); 
	str.Format("%d",m_dbSyspara->m_SerialNo); 
	MyEdit.SetWindowText(str); 
 
	GetCity();	//从数据库取出城市名 
	int index=m_Start.FindString(0,m_dbSyspara->m_Local); 
	m_Start.SetCurSel(index); 
	m_AirStart.SetCurSel(index); 
	m_AirTarget.SetCurSel(index); 
 
} 
 
void CPage4::AddCity(CString str) 
{ 
	m_City.AddString(str); 
	m_Start.AddString(str); 
	m_AirStart.AddString(str); 
	m_AirTarget.AddString(str); 
} 
 
void CPage4::OnEditchangeCity()  
{ 
	// TODO: Add your control notification handler code here 
	 
} 
 
void CPage4::OnEditupdateCity()  
{ 
	// TODO: Add your control notification handler code here 
	CString str; 
	int index; 
 
	m_City.GetWindowText(str); 
	index=m_City.FindString(0,str);	 
	if(index==-1){ 
		if(str==""){ 
			 
//			AfxMessageBox("是否删除 
		} 
 
		m_City.AddString(str); 
		str="INSERT INTO City (CityName) VALUES('"+str+"');"; 
		m_DB.ExecuteSQL(str); 
	}else 
		m_City.SetCurSel(index); 
} 
 
void CPage4::OnAddcity()  
{ 
	// TODO: Add your control notification handler code here 
	CString str; 
	int index; 
 
	m_NewCity.GetWindowText(str); 
	if(str.IsEmpty()){ 
		str="机场名不能为空."; 
		AfxMessageBox(str); 
		return; 
	} 
	index=m_City.FindString(0,str); 
	if(index!=-1){ 
		str="<"+str+">已存在."; 
		AfxMessageBox(str); 
		return; 
	} 
	m_City.AddString(str); 
	m_AirStart.AddString(str); 
	m_AirTarget.AddString(str); 
	str="INSERT INTO City (CityName) VALUES('"+str+"');"; 
	m_DB.ExecuteSQL(str); 
	m_NewCity.SetWindowText(""); 
} 
 
void CPage4::OnDblclkCity()  
{ 
	// TODO: Add your control notification handler code here 
	CString str; 
	int index; 
 
	index=m_City.GetCurSel(); 
	if(index<0){ 
		str="请选择要取消的机场."; 
		AfxMessageBox(str); 
		return; 
	} 
	m_City.GetText(index,str); 
	index=m_City.DeleteString(index); 
	 
	str="DELETE FROM city where cityname='"+str+"';"; 
	m_DB.ExecuteSQL(str); 
		 
} 
 
void CPage4::OnCreatedb()  
{ 
	// TODO: Add your control notification handler code here 
	CString DSN; 
	CString DRV; 
 
//	DSN="AirLine1"; 
//	DRV="Microsoft Access Driver (*.mdb)"; 
//	bool b=SQLCreateDataSource(this->m_hWnd, DSN); 
//SQLManageDataSources(this->m_hWnd); 
 
//	DSN="AirLine2"; 
//	if( SQLWriteDSNToIni(DSN,DRV)){ 
//		CreateTables(); 
//	}; 
	 
	if (SQLConfigDataSource(NULL, ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)", "DSN=AirLineBook\0DBQ=D:\\aaa.mdb\0Description=机票预定\0FIL=MicrosoftAccess\0DEFAULTDIR=D:\\Database1\0\0")) 
	{ 
//		m_DB.Open("airlinebook"); 
	} 
} 
 
void CPage4::CreateTables() 
{ 
	CString str; 
 
	str=""; 
} 
 
 
 
void CPage4::OnDeletecity()  
{ 
	// TODO: Add your control notification handler code here 
	OnDblclkCity(); 
} 
 
void CPage4::OnSelchangeStart()  
{ 
	// TODO: Add your control notification handler code here 
	CString SQL; 
	CString str; 
 
	m_Start.GetWindowText(str); 
	SQL="UPDATE sys SET Local='"+str+"'"; 
	m_DB.ExecuteSQL(SQL); 
} 
 
 
 
 
 
void CPage4::OnCancel()  
{ 
	// TODO: Add your specialized code here and/or call the base class 
	 
	CPropertyPage::OnCancel(); 
} 
 
 
 
void CPage4::OnMyEnter() 
{ 
	CWnd* w=this->GetFocus(); 
	this->NextDlgCtrl(); 
} 
 
void CPage4::OnMyCancel() 
{ 
	CWnd* w=this->GetFocus(); 
} 
 
BOOL CPage4::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 CPage4::OnKillfocusSerial()  
{ 
	// TODO: Add your control notification handler code here 
	CString SQL; 
	CString str; 
 
	MyEdit.GetWindowText(str); 
	if(str.IsEmpty()){ 
		str="机场名不能为空."; 
		AfxMessageBox(str); 
		return; 
	} 
 
	SQL="UPDATE sys SET SerialNo='"+str+"'"; 
	m_DB.ExecuteSQL(SQL); 
	 
} 
 
void CPage4::Clear() 
{ 
 
	m_City.ResetContent(); 
	m_Start.ResetContent(); 
	m_AirStart.ResetContent(); 
	m_AirTarget.ResetContent(); 
} 
 
void CPage4::OnAirinfosave()  
{ 
	// TODO: Add your control notification handler code here 
	CString SQL; 
	CString str; 
 
	if(m_IsUpdate==true){ 
		UpdateAirInfo(); 
	}else{ 
		InsertAirInfo(); 
		m_AirNo.SetWindowText(""); 
	} 
} 
 
void CPage4::OnKillfocusEditairno()  
{ 
	// TODO: Add your control notification handler code here 
	CString SQL; 
	CString str; 
 
	SQL="SELECT * FROM airinfo WHERE airno='"; 
	m_AirNo.GetWindowText(str); 
	SQL+=str+"'"; 
	if(m_dbAirInfo->IsOpen()) 
		m_dbAirInfo->Close(); 
	m_dbAirInfo->Open(AFX_DB_USE_DEFAULT_TYPE,SQL); 
	if(m_dbAirInfo->GetRecordCount()>0){ 
		m_Price1.SetWindowText(m_dbAirInfo->m_Price1); 
		m_Price2.SetWindowText(m_dbAirInfo->m_Price2); 
		m_Price3.SetWindowText(m_dbAirInfo->m_Price3); 
		m_Discount1.SetWindowText(m_dbAirInfo->m_Discount1); 
		m_Discount2.SetWindowText(m_dbAirInfo->m_Discount2); 
		m_Discount3.SetWindowText(m_dbAirInfo->m_Discount3); 
		str.Format("%d",m_dbAirInfo->m_LeftNum1); 
		m_LeftNum1.SetWindowText(str); 
		str.Format("%d",m_dbAirInfo->m_LeftNum2); 
		m_LeftNum2.SetWindowText(str); 
		str.Format("%d",m_dbAirInfo->m_LeftNum3); 
		m_LeftNum3.SetWindowText(str); 
		m_AirStart.SelectString(0,m_dbAirInfo->m_Start); 
		m_AirTarget.SelectString(0,m_dbAirInfo->m_Target); 
		m_IsUpdate=true; 
		m_BtnAirSave.SetWindowText("更新"); 
		m_BtnDelAirInfo.EnableWindow(); 
	}else{ 
		m_BtnAirSave.SetWindowText("添加"); 
		m_BtnDelAirInfo.EnableWindow(false); 
		m_IsUpdate=false; 
	} 
} 
 
void CPage4::InsertAirInfo() 
{ 
	CString SQL; 
	CString str; 
 
		SQL="INSERT INTO AirInfo (AirNo,Start,Target,StartTime,Price1,Price2,Price3,"; 
		SQL+="Discount1,Discount2,Discount3,LeftNum1,LeftNum2,LeftNum3)"; 
		SQL+=" VALUES('"; 
 
		m_AirNo.GetWindowText(str);			//航班号 
		SQL+=str+"','"; 
		m_AirStart.GetWindowText(str);		//出发港 
		SQL+=str+"','"; 
		m_AirTarget.GetWindowText(str);		//目的港 
		SQL+=str+"','"; 
		m_StartTime.GetWindowText(str);		//起飞时间 
		SQL+=str+"','"; 
		m_Price1.GetWindowText(str);		//经济舱价格 
		SQL+=str+"','"; 
		m_Price2.GetWindowText(str);		//商务舱价格 
		SQL+=str+"','"; 
		m_Price3.GetWindowText(str);		//头等舱价格 
		SQL+=str+"','"; 
		m_Discount1.GetWindowText(str);		//经济舱折扣 
		SQL+=str+"','"; 
		m_Discount2.GetWindowText(str);		//商务舱折扣 
		SQL+=str+"','"; 
		m_Discount3.GetWindowText(str);		//头等舱折扣 
		SQL+=str+"','"; 
		m_LeftNum1.GetWindowText(str);		//经济舱位数 
		SQL+=str+"','"; 
		m_LeftNum2.GetWindowText(str);	//商务舱位数 
		SQL+=str+"','"; 
		m_LeftNum3.GetWindowText(str);		//头等舱位数 
		SQL+=str+"')"; 
		m_DB.ExecuteSQL(SQL); 
 
	SQL.GetBufferSetLength(512); 
	SQL="INSERT INTO num (AirNo,N01,N02,N03,"; 
	SQL+="N11,N12,N13,N21,N22,N23,"; 
	SQL+="N31,N32,N33,N41,N42,N43,"; 
	SQL+="N51,N52,N53,N61,N62,N63)"; 
	SQL+=" VALUES('"; 
	m_AirNo.GetWindowText(str); 
	SQL+=str+"'"; 
	for(int i=0;i<7;i++){ 
		m_LeftNum1.GetWindowText(str); 
		SQL+=",'"+str+"'"; 
		m_LeftNum2.GetWindowText(str); 
		SQL+=",'"+str+"'"; 
		m_LeftNum3.GetWindowText(str); 
		SQL+=",'"+str+"'"; 
	} 
	SQL+=")"; 
 
	m_DB.ExecuteSQL(SQL);	 
} 
 
void CPage4::UpdateAirInfo() 
{ 
	CString str; 
	CString SQL; 
	CString n1; 
	CString n2; 
	CString n3; 
 
		SQL="UPDATE AirInfo SET AirNo='"; 
		m_AirNo.GetWindowText(str);			//航班号 
		SQL+=str+"',Start='"; 
		m_AirStart.GetWindowText(str);		//出发港 
		SQL+=str+"',Target='"; 
		m_AirTarget.GetWindowText(str);		//目的港 
		SQL+=str+"',StartTime='"; 
		m_StartTime.GetWindowText(str);		//起飞时间 
		SQL+=str+"',Price1='"; 
		m_Price1.GetWindowText(str);		//经济舱价格 
		SQL+=str+"',Price2='"; 
		m_Price2.GetWindowText(str);		//商务舱价格 
		SQL+=str+"',Price3='"; 
		m_Price3.GetWindowText(str);		//头等舱价格 
		SQL+=str+"',Discount1='"; 
		m_Discount1.GetWindowText(str);		//经济舱折扣 
		SQL+=str+"',Discount2='"; 
		m_Discount2.GetWindowText(str);		//商务舱折扣 
		SQL+=str+"',Discount3='"; 
		m_Discount3.GetWindowText(str);		//头等舱折扣 
		SQL+=str+"',LeftNum1='"; 
		m_LeftNum1.GetWindowText(str);		//经济舱位数 
		SQL+=str+"',LeftNum2='"; 
		m_LeftNum2.GetWindowText(str);	//商务舱位数 
		SQL+=str+"',LeftNum3='"; 
		m_LeftNum3.GetWindowText(str);		//头等舱位数 
		 
		SQL+=str+"' WHERE AirNo='"; 
		m_AirNo.GetWindowText(str);			//航班号 
		SQL+=str+"'"; 
		m_DB.ExecuteSQL(SQL); 
 
	SQL.GetBufferSetLength(512); 
	SQL="UPDATE num SET AirNo='"; 
	m_AirNo.GetWindowText(str); 
	SQL+=str+"'"; 
	m_LeftNum1.GetWindowText(n1); 
	m_LeftNum2.GetWindowText(n2); 
	m_LeftNum3.GetWindowText(n3); 
 
	for(int i=0;i<7;i++){ 
		str.Format("N%d",i); 
		SQL+=","+str+"1='"+n1+"',"+str+"2='"+n2+"',"+str+"3='"+n3+"'"; 
	} 
	m_AirNo.GetWindowText(str); 
	SQL+="WHERE AirNo='"+str+"'"; 
 
	m_DB.ExecuteSQL(SQL);	 
} 
 
void CPage4::OnDelete()  
{ 
	// TODO: Add your control notification handler code here 
	CString SQL; 
	CString str; 
 
	m_AirNo.GetWindowText(str); 
	SQL="DELETE FROM AirInfo WHERE AirNo='"+str+"'"; 
	m_DB.ExecuteSQL(SQL); 
	SQL="DELETE FROM Num WHERE AirNo='"+str+"'"; 
	m_DB.ExecuteSQL(SQL); 
	OnKillfocusEditairno(); 
}