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

📄 custominfodlg.cpp

📁 利用odbc编程实现以下功能: 航班
💻 CPP
字号:
// custominfodlg.cpp : implementation file
//

#include "stdafx.h"
#include "dbexe.h"
#include "custominfodlg.h"
#include "reserveset.h"
#include "flightset.h"
#include "carset.h"
#include "hotelset.h"
#include <vector>
using namespace std;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// Ccustominfodlg dialog


Ccustominfodlg::Ccustominfodlg(CWnd* pParent /*=NULL*/)
	: CDialog(Ccustominfodlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(Ccustominfodlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void Ccustominfodlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Ccustominfodlg)
	DDX_Control(pDX, IDC_LIST3, m_hotelbasic);
	DDX_Control(pDX, IDC_LIST2, m_carbasic);
	DDX_Control(pDX, IDC_LIST1, m_flightbasic);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(Ccustominfodlg, CDialog)
	//{{AFX_MSG_MAP(Ccustominfodlg)
	ON_BN_CLICKED(IDC_CHECK, OnCheck)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Ccustominfodlg message handlers

struct line{
		CString fromaddress;
		CString arriveaddress;
	};
line flightline;
vector<line> tour;

BOOL Ccustominfodlg::OnInitDialog(void){
	CDialog::OnInitDialog();
	m_flightbasic.InsertColumn(0,"航班号");
    m_flightbasic.InsertColumn(1,"价格");
	m_flightbasic.InsertColumn(2,"总座位数");
	m_flightbasic.InsertColumn(3,"剩余座位数");
	m_flightbasic.InsertColumn(4,"始发点");
    m_flightbasic.InsertColumn(5,"终点");
	RECT rectbasic;
	m_flightbasic.GetWindowRect(&rectbasic);
	int widbasic=rectbasic.right-rectbasic.left;
	m_flightbasic.SetColumnWidth(0,widbasic/8);
	m_flightbasic.SetColumnWidth(1,widbasic/8);
	m_flightbasic.SetColumnWidth(2,widbasic/8);
	m_flightbasic.SetColumnWidth(3,widbasic/8);
	m_flightbasic.SetColumnWidth(4,widbasic/8);
	m_flightbasic.SetColumnWidth(5,widbasic/8);
	m_flightbasic.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	m_carbasic.InsertColumn(0,"地点");
    m_carbasic.InsertColumn(1,"价格");
	m_carbasic.InsertColumn(2,"汽车总数");
	m_carbasic.InsertColumn(3,"剩余汽车数");
	m_carbasic.GetWindowRect(&rectbasic);
	 widbasic=rectbasic.right-rectbasic.left;
	m_carbasic.SetColumnWidth(0,widbasic/4);
	m_carbasic.SetColumnWidth(1,widbasic/4);
	m_carbasic.SetColumnWidth(2,widbasic/4);
	m_carbasic.SetColumnWidth(3,widbasic/4);
	m_carbasic.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	m_hotelbasic.InsertColumn(0,"地点");
    m_hotelbasic.InsertColumn(1,"价格");
	m_hotelbasic.InsertColumn(2,"总房间数");
	m_hotelbasic.InsertColumn(3,"剩余房间数");
	m_hotelbasic.GetWindowRect(&rectbasic);
    widbasic=rectbasic.right-rectbasic.left;
	m_hotelbasic.SetColumnWidth(0,widbasic/4);
	m_hotelbasic.SetColumnWidth(1,widbasic/4);
	m_hotelbasic.SetColumnWidth(2,widbasic/4);
	m_hotelbasic.SetColumnWidth(3,widbasic/4);
	m_hotelbasic.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	showdata();
	return true;
	
}

void Ccustominfodlg::showdata()
{
if(!m_database.IsOpen()){
		m_database.Open(_T("database1"));
	}
//MessageBox("od");
Creserveset m_basicset(&m_database);
CString p_query;
p_query.Format("select * from reservations where custname='%s'",m_customname);
m_basicset.Open(AFX_DB_USE_DEFAULT_TYPE,p_query);
CDBVariant varValue;
if(m_basicset.GetRecordCount()!=0)
  m_basicset.MoveFirst();
else MessageBox("没有您需要的内容");
//    char buf[20];
	while(!m_basicset.IsEOF())
	{m_basicset.GetFieldValue(1,varValue);
	if(varValue.m_lVal==1){
        m_basicset.GetFieldValue(2,varValue);
		p_query.Format("select * from flights where flightnum='%s'",varValue.m_pstring->GetBuffer(1));
		Cflightset m_flightbasicset(&m_database);
        m_flightbasicset.Open(AFX_DB_USE_DEFAULT_TYPE,p_query);
        CDBVariant varValue1;
        if(m_flightbasicset.GetRecordCount()!=0)
           m_flightbasicset.MoveFirst();
          char buf[20];
          int i=0;
	      while(!m_flightbasicset.IsEOF())
		  {int temp=0;
		m_flightbasicset.GetFieldValue(temp,varValue1);
		m_flightbasic.InsertItem(i,varValue1.m_pstring->GetBuffer(1));//插入元组
		m_flightbasicset.GetFieldValue(1,varValue1);
		sprintf(buf,"%d",varValue1.m_lVal); m_flightbasic.SetItemText(i,1,buf);
		m_flightbasicset.GetFieldValue(2,varValue1);
		sprintf(buf,"%d",varValue1.m_lVal); m_flightbasic.SetItemText(i,2,buf);
		m_flightbasicset.GetFieldValue(3,varValue1);
		sprintf(buf,"%d",varValue1.m_lVal); m_flightbasic.SetItemText(i,3,buf);
		m_flightbasicset.GetFieldValue(4,varValue1);
		m_flightbasic.SetItemText(i,4,varValue1.m_pstring->GetBuffer(1));
		flightline.fromaddress=varValue1.m_pstring->GetBuffer(1);
		m_flightbasicset.GetFieldValue(5,varValue1);
		m_flightbasic.SetItemText(i,5,varValue1.m_pstring->GetBuffer(1));
		flightline.arriveaddress=varValue1.m_pstring->GetBuffer(1);
		tour.push_back(flightline);
		m_flightbasicset.MoveNext();
		i++;
	}
		  }
		  if(varValue.m_lVal==3){
        m_basicset.GetFieldValue(2,varValue);
		p_query.Format("select * from cars where location='%s'",varValue.m_pstring->GetBuffer(1));
		Ccarset m_carbasicset(&m_database);
        m_carbasicset.Open(AFX_DB_USE_DEFAULT_TYPE,p_query);
        CDBVariant varValue1;
        if(m_carbasicset.GetRecordCount()!=0)
           m_carbasicset.MoveFirst();
          char buf[20];
          int i=0;
	      while(!m_carbasicset.IsEOF())
		  {int temp=0;
	    m_carbasicset.GetFieldValue(temp,varValue1);
		m_carbasic.InsertItem(i,varValue1.m_pstring->GetBuffer(1));//插入元组
		m_carbasicset.GetFieldValue(1,varValue1);
		sprintf(buf,"%d",varValue1.m_lVal); m_carbasic.SetItemText(i,1,buf);
		m_carbasicset.GetFieldValue(2,varValue1);
		sprintf(buf,"%d",varValue1.m_lVal); m_carbasic.SetItemText(i,2,buf);
		m_carbasicset.GetFieldValue(3,varValue1);
		sprintf(buf,"%d",varValue1.m_lVal); m_carbasic.SetItemText(i,3,buf);
		m_carbasicset.MoveNext();
		i++;
	}
		  }
		  if(varValue.m_lVal==2){
        m_basicset.GetFieldValue(2,varValue);
		p_query.Format("select * from hotels where location='%s'",varValue.m_pstring->GetBuffer(1));
		Chotelset m_hotelbasicset(&m_database);
        m_hotelbasicset.Open(AFX_DB_USE_DEFAULT_TYPE,p_query);
        CDBVariant varValue1;
        if(m_hotelbasicset.GetRecordCount()!=0)
           m_hotelbasicset.MoveFirst();
          char buf[20];
          int i=0;
	      while(!m_hotelbasicset.IsEOF())
		  {int temp=0;
	    m_hotelbasicset.GetFieldValue(temp,varValue1);
		m_hotelbasic.InsertItem(i,varValue1.m_pstring->GetBuffer(1));//插入元组
		m_hotelbasicset.GetFieldValue(1,varValue1);
		sprintf(buf,"%d",varValue1.m_lVal); m_hotelbasic.SetItemText(i,1,buf);
		m_hotelbasicset.GetFieldValue(2,varValue1);
		sprintf(buf,"%d",varValue1.m_lVal); m_hotelbasic.SetItemText(i,2,buf);
		m_hotelbasicset.GetFieldValue(3,varValue1);
		sprintf(buf,"%d",varValue1.m_lVal); m_hotelbasic.SetItemText(i,3,buf);
		m_hotelbasicset.MoveNext();
		i++;
	}
		  }
    m_basicset.MoveNext();
	}
}


void Ccustominfodlg::OnCheck() 
{
	// TODO: Add your control notification handler code here
	int flag=1;
for(int i=0;i<tour.size();i++)
{ 
	for(int j=0;j<tour.size();j++)
	{   if(j!=i){
		if(tour[i].arriveaddress.Compare(tour[j].fromaddress))
	       break;
	}
	}
	if(j==tour.size()){
		flag=0;
		break;
	}
}
	if(flag)
		MessageBox("您的旅行航线是完备的");
	else
        MessageBox("您的旅行航线是不完备的");
}

⌨️ 快捷键说明

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