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

📄 search.cpp

📁 数据库实验代码。实现一个旅行管理数据库的应用软件。
💻 CPP
字号:
// Search.cpp : 实现文件
//

#include "stdafx.h"
#include "travel.h"
#include "Search.h"
#include "FLIGHTS.h"
#include "HOTELS.h"
#include "CARS.h"
#include "CUSTOMERS.h"
#include "RESERVATIONS.h"
#include "CUSTOMERSDLG.h"
#include "PATHDLG.h"

#define MAX_COLUMN 10
// Search 对话框

IMPLEMENT_DYNAMIC(Search, CDialog)

Search::Search(CWnd* pParent /*=NULL*/)
	: CDialog(Search::IDD, pParent)
{


}

Search::~Search()
{
}

void Search::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_TAB1, Tab);
	DDX_Control(pDX, IDC_LIST4, List);
	Tab.InsertItem(0,"航班信息");
	Tab.InsertItem(1,"宾馆信息");
	Tab.InsertItem(2,"汽车信息");
	Tab.InsertItem(3,"客户信息");
	Tab.InsertItem(4,"预订信息");
	List.ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS|LVS_SORTASCENDING);
	List.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
	Search::FreshFlight();
}


BEGIN_MESSAGE_MAP(Search, CDialog)
	ON_BN_CLICKED(IDOK, &Search::OnBnClickedOk)
	ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &Search::OnTcnSelchangeTab1)
	ON_BN_CLICKED(IDC_BUTTON2, &Search::OnBnClickedReservation)
END_MESSAGE_MAP()


// Search 消息处理程序

void Search::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	switch (Tab.GetCurFocus())
	{
	case 0:
		FreshFlight();break;
	case 1:
		FreshHotels();break;
	case 2:
		FreshCars();break;
	case 3:
		FreshCustomer();break;
	case 4:
		FreshReservation();
	}
	//OnOK();
}

void Search::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;
	switch (Tab.GetCurFocus())
	{
	case 0:
		FreshFlight();break;
	case 1:
		FreshHotels();break;
	case 2:
		FreshCars();break;
	case 3:
		FreshCustomer();break;
	case 4:
		FreshReservation();
	}
	
}

void Search::FreshFlight(void)
{
	List.DeleteAllItems();
    for (int i = 0; i < MAX_COLUMN; i++)
    {
        if (!List.DeleteColumn(0)) break;
    }
	CDC* pDC=GetDC();
	TEXTMETRIC tm;
	pDC->GetTextMetrics(&tm);
	List.InsertColumn(0,"ID",LVCFMT_LEFT,10*tm.tmAveCharWidth,0);
	List.InsertColumn(1,"flightNum",LVCFMT_LEFT,10*tm.tmAveCharWidth,1);
	List.InsertColumn(2,"price",LVCFMT_LEFT,10*tm.tmAveCharWidth,2);
	List.InsertColumn(3,"numSeats",LVCFMT_LEFT,10*tm.tmAveCharWidth,3);
	List.InsertColumn(4,"numAvail",LVCFMT_LEFT,10*tm.tmAveCharWidth,4);
	List.InsertColumn(5,"fromCity",LVCFMT_LEFT,10*tm.tmAveCharWidth,5);
	List.InsertColumn(6,"AvailCity",LVCFMT_LEFT,10*tm.tmAveCharWidth,6);
	CFlights Record;
	Record.Open();
	CString temp;
	for (int i=0;!Record.IsEOF();Record.MoveNext(),i++)
	{
		//int i=0;
		temp.Format(_T("%d"),i);
		List.InsertItem(i,temp);
		//List.InsertItem(i,Record.m_flightNum);
		List.SetItemText(i,1,Record.m_flightNum);
		temp.Format(_T("%d"),Record.m_price);
		
		List.SetItemText(i,2,temp);
		temp.Format(_T("%d"),Record.m_numSeats);
		List.SetItemText(i,3,temp);
		temp.Format(_T("%d"),Record.m_numAvail);
		List.SetItemText(i,4,temp);
		List.SetItemText(i,5,Record.m_FromCity);
		List.SetItemText(i,6,Record.m_ArivCity);

/*		i=1;
		Record.MoveNext();
				temp.Format(_T("%d"),i);
		List.InsertItem(i,temp);
		//List.InsertItem(i,Record.m_flightNum);
		List.SetItemText(i,1,Record.m_flightNum);
		temp.Format(_T("%d"),Record.m_price);
		
		List.SetItemText(i,2,temp);
		temp.Format(_T("%d"),Record.m_numSeats);
		List.SetItemText(i,3,temp);
		temp.Format(_T("%d"),Record.m_numAvail);
		List.SetItemText(i,4,temp);
		List.SetItemText(i,5,Record.m_FromCity);
		List.SetItemText(i,6,Record.m_ArivCity);

		i=2;
		Record.MoveNext();
				temp.Format(_T("%d"),i);
		List.InsertItem(i,temp);
		//List.InsertItem(i,Record.m_flightNum);
		List.SetItemText(i,1,Record.m_flightNum);
		temp.Format(_T("%d"),Record.m_price);
		
		List.SetItemText(i,2,temp);
		temp.Format(_T("%d"),Record.m_numSeats);
		List.SetItemText(i,3,temp);
		temp.Format(_T("%d"),Record.m_numAvail);
		List.SetItemText(i,4,temp);
		List.SetItemText(i,5,Record.m_FromCity);
		List.SetItemText(i,6,Record.m_ArivCity);*/


	}
	Record.Close();
	List.Invalidate();
}

void Search::FreshHotels(void)
{
	List.DeleteAllItems();
    for (int i = 0; i < MAX_COLUMN; i++)
    {
        if (!List.DeleteColumn(0)) break;
    }
	CDC* pDC=GetDC();
	TEXTMETRIC tm;
	pDC->GetTextMetrics(&tm);
	List.InsertColumn(0,"ID",LVCFMT_LEFT,15*tm.tmAveCharWidth,0);
	List.InsertColumn(1,"location",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
	List.InsertColumn(2,"price",LVCFMT_LEFT,15*tm.tmAveCharWidth,2);
	List.InsertColumn(3,"numRooms",LVCFMT_LEFT,15*tm.tmAveCharWidth,3);
	List.InsertColumn(4,"numAvail",LVCFMT_LEFT,15*tm.tmAveCharWidth,4);

	CHotels Record;
	Record.Open();
	CString temp;
	for (int i=0;!Record.IsEOF();Record.MoveNext(),i++)
	{
		temp.Format(_T("%d"),i);
		List.InsertItem(i,temp);
		List.SetItemText(i,1,Record.m_location);
		temp.Format(_T("%d"),Record.m_price);
		List.SetItemText(i,2,temp);
		temp.Format(_T("%d"),Record.m_numRooms);
		List.SetItemText(i,3,temp);
		temp.Format(_T("%d"),Record.m_numAvail);
		List.SetItemText(i,4,temp);
	}
	Record.Close();
}

void Search::FreshCars(void)
{
	List.DeleteAllItems();
    for (int i = 0; i < MAX_COLUMN; i++)
    {
        if (!List.DeleteColumn(0)) break;
    }
	CDC* pDC=GetDC();
	TEXTMETRIC tm;
	pDC->GetTextMetrics(&tm);
	List.InsertColumn(0,"ID",LVCFMT_LEFT,15*tm.tmAveCharWidth,0);
	List.InsertColumn(1,"location",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
	List.InsertColumn(2,"price",LVCFMT_LEFT,15*tm.tmAveCharWidth,2);
	List.InsertColumn(3,"numCars",LVCFMT_LEFT,15*tm.tmAveCharWidth,3);
	List.InsertColumn(4,"numAvail",LVCFMT_LEFT,15*tm.tmAveCharWidth,4);

	CCars Record;
	Record.Open();
	CString temp;
	for (int i=0;!Record.IsEOF();Record.MoveNext(),i++)
	{
		temp.Format(_T("%d"),i);
		List.InsertItem(0,temp);
		List.SetItemText(i,1,Record.m_location);
		temp.Format(_T("%d"),Record.m_price);
		List.SetItemText(i,2,temp);
		temp.Format(_T("%d"),Record.m_numCars);
		List.SetItemText(i,3,temp);
		temp.Format(_T("%d"),Record.m_numAvail);
		List.SetItemText(i,4,temp);
	}
	Record.Close();
}

void Search::FreshCustomer(void)
{
	List.DeleteAllItems();
    for (int i = 0; i < MAX_COLUMN; i++)
    {
        if (!List.DeleteColumn(0)) break;
    }
	CDC* pDC=GetDC();
	TEXTMETRIC tm;
	pDC->GetTextMetrics(&tm);
	List.InsertColumn(0,"ID",LVCFMT_LEFT,20*tm.tmAveCharWidth,0);
	List.InsertColumn(1,"CustName",LVCFMT_LEFT,20*tm.tmAveCharWidth,1);

	CCustomers Record;
	Record.Open();
	CString temp;
	for (int i=0;!Record.IsEOF();Record.MoveNext(),i++)
	{
		temp.Format(_T("%d"),i);
		List.InsertItem(i,temp);
		List.SetItemText(i,1,Record.m_custName);
	}
	Record.Close();
}

void Search::FreshReservation(void)
{
	List.DeleteAllItems();
    for (int i = 0; i < MAX_COLUMN; i++)
    {
        if (!List.DeleteColumn(0)) break;
    }
	CDC* pDC=GetDC();
	TEXTMETRIC tm;
	pDC->GetTextMetrics(&tm);
	List.InsertColumn(0,"ID",LVCFMT_LEFT,20*tm.tmAveCharWidth,0);
	List.InsertColumn(1,"CustName",LVCFMT_LEFT,20*tm.tmAveCharWidth,1);
	List.InsertColumn(2,"ResvType",LVCFMT_LEFT,20*tm.tmAveCharWidth,2);
	List.InsertColumn(3,"ResvKey",LVCFMT_LEFT,20*tm.tmAveCharWidth,3);
	CReservations Record;
	Record.Open();
	CString temp;
	for (int i=0;!Record.IsEOF();Record.MoveNext(),i++)
	{
		temp.Format(_T("%d"),i);
		List.InsertItem(i,temp);
		List.SetItemText(i,1,Record.m_custName);
		temp.Format(_T("%d"),Record.m_resvType);
		List.SetItemText(i,2,temp);
		List.SetItemText(i,3,Record.m_resvKey);
	}
	Record.Close();
}

void Search::OnBnClickedReservation()
{
	// TODO: 在此添加控件通知处理程序代码
	CUSTOMERSDLG Customer;
	CReservations res;
	CString name;
            res.Open();
            switch(Tab.GetCurSel())
            {
            case 0:
				Customer.DoModal();
				for (int i = -1; (i = List.GetNextItem(i, LVIS_SELECTED)) != -1;)
				{
					CFlights Flights;
					Flights.Open();
					for (int j=0;j<i;j++)
					{
						Flights.MoveNext();	
					}
					if (Flights.m_numAvail>0)
					{
						Flights.Edit();
						Flights.m_numAvail--;
						Flights.Update();
						Flights.Requery();
						res.AddNew();
						name=Customer.CustName;
						res.m_custName = Customer.CustName;
						res.m_resvKey = List.GetItemText(i, 1);
						res.m_resvType = 1;
						res.Update();
						res.Requery();
						res.Close();
					}
					Flights.Close();
				}
				break;
            case 1:
				Customer.DoModal();
                for (int i = -1; (i = List.GetNextItem(i, LVIS_SELECTED)) != -1;)
                {
					CHotels Hotels;
					Hotels.Open();
					for (int j=0;j<i;j++)
					{
						Hotels.MoveNext();
					}
					if (Hotels.m_numAvail>0)
					{
						Hotels.Edit();
						Hotels.m_numAvail--;
						Hotels.Update();
						Hotels.Requery();
                    res.AddNew();
					name=Customer.CustName;
					res.m_custName = Customer.CustName;
                    res.m_resvKey = List.GetItemText(i, 1);
                    res.m_resvType = 2;
                    res.Update();
                    res.Requery();
					res.Close();
					}
					Hotels.Close();
                }
                break;
            case 2:
				Customer.DoModal();
				name=Customer.CustName;
                for (int i = -1; (i = List.GetNextItem(i, LVIS_SELECTED)) != -1;)
                {
					CCars Cars;
					Cars.Open();
					for (int j=0;j<i;j++)
					{
						Cars.MoveNext();
					}
					if (Cars.m_numAvail)
					{
						Cars.Edit();
						Cars.m_numAvail--;
						Cars.Update();
						Cars.Requery();
                    res.AddNew();
					res.m_custName = Customer.CustName;
                    res.m_resvKey = List.GetItemText(i, 1);
                    res.m_resvType = 3;
                    res.Update();
                    res.Requery();
					res.Close();
					}
					Cars.Close();
                }
                break;
            default:
                break;
            }
			res.Close();
			CCustomers db;
			/*			db.Open();
			db.AddNew();
			db.m_custName=res.m_custName;
			db.Update();
			db.Requery();
			db.Close();*/
			db.Open();
			for (int i=0;!db.IsEOF();i++,db.MoveNext())
			{
				if (db.m_custName==name) break; 
			}
			if (db.IsEOF()) 
			{
				db.AddNew();
				db.m_custName=name;
				db.Update();
				db.Requery();
			}
			db.Close();
}

⌨️ 快捷键说明

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