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

📄 changeinfodialog.cpp

📁 全国交通咨询系统源代码
💻 CPP
字号:
// ChangeinfoDialog.cpp : implementation file
//

#include "stdafx.h"
#include "map.h"
#include "ChangeinfoDialog.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CChangeinfoDialog dialog


CChangeinfoDialog::CChangeinfoDialog(CWnd* pParent /*=NULL*/)
	: CDialog(CChangeinfoDialog::IDD, pParent)
{
	//{{AFX_DATA_INIT(CChangeinfoDialog)
	m_distance = 0;
	m_carhour = 0;
	m_carminute = 0;
	m_carfee = 0;
	m_carcon = 0;
	m_cityfirst = _T("");
	m_plaincon = 0;
	m_plainfee = 0;
	m_plainminute = 0;
	m_traincon = 0;
	m_trainfee = 0;
	m_trainhour = 0;
	m_trainminute = 0;
	m_citysecond = _T("");
	m_plainhour = 0;
	//}}AFX_DATA_INIT
	m_graph=NULL;
}


void CChangeinfoDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CChangeinfoDialog)
	DDX_Text(pDX, IDC_DISTANCE, m_distance);
	DDV_MinMaxInt(pDX, m_distance, 0, 10000);
	DDX_Text(pDX, IDC_CAR_HOUR, m_carhour);
	DDV_MinMaxInt(pDX, m_carhour, 0, 24);
	DDX_Text(pDX, IDC_CAR_MINUTE, m_carminute);
	DDV_MinMaxInt(pDX, m_carminute, 0, 59);
	DDX_Text(pDX, IDC_CAR_FEE, m_carfee);
	DDV_MinMaxInt(pDX, m_carfee, 0, 20000);
	DDX_Text(pDX, IDC_CAR_CONSUME, m_carcon);
	DDV_MinMaxInt(pDX, m_carcon, 0, 10000);
	DDX_Text(pDX, IDC_CITYFIRST, m_cityfirst);
	DDV_MaxChars(pDX, m_cityfirst, 15);
	DDX_Text(pDX, IDC_PLAIN_CONSUME, m_plaincon);
	DDV_MinMaxInt(pDX, m_plaincon, 0, 10000);
	DDX_Text(pDX, IDC_PLAIN_FEE, m_plainfee);
	DDV_MinMaxInt(pDX, m_plainfee, 0, 20000);
	DDX_Text(pDX, IDC_PLAIN_MINUTE, m_plainminute);
	DDV_MinMaxInt(pDX, m_plainminute, 0, 59);
	DDX_Text(pDX, IDC_TRAIN_CONSUME, m_traincon);
	DDV_MinMaxInt(pDX, m_traincon, 0, 10000);
	DDX_Text(pDX, IDC_TRAIN_FEE, m_trainfee);
	DDV_MinMaxInt(pDX, m_trainfee, 0, 20000);
	DDX_Text(pDX, IDC_TRAIN_HOUR, m_trainhour);
	DDV_MinMaxInt(pDX, m_trainhour, 0, 24);
	DDX_Text(pDX, IDC_TRAIN_MINUTE, m_trainminute);
	DDV_MinMaxInt(pDX, m_trainminute, 0, 59);
	DDX_Text(pDX, IDC_CITYSECOND, m_citysecond);
	DDV_MaxChars(pDX, m_citysecond, 15);
	DDX_Text(pDX, IDC_PLAIN_HOUR, m_plainhour);
	DDV_MinMaxInt(pDX, m_plainhour, 0, 24);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CChangeinfoDialog, CDialog)
	//{{AFX_MSG_MAP(CChangeinfoDialog)
	ON_BN_CLICKED(IDC_YES, OnYes)
	ON_BN_CLICKED(IDC_CITYNAMEFIR_NEXT, OnCitynamefirNext)
	ON_BN_CLICKED(IDC_CITYNAEMSEN_PREV, OnCitynaemsenPrev)
	ON_BN_CLICKED(IDC_CITYNAMEFIR_PREV, OnCitynamefirPrev)
	ON_BN_CLICKED(IDC_CITYNAMESEN_NEXT, OnCitynamesenNext)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CChangeinfoDialog message handlers

void CChangeinfoDialog::OnOK() 
{
	// TODO: Add extra validation here
	NextDlgCtrl();
}

void CChangeinfoDialog::SetGraph(ALGraph * temp)
{
	m_graph=temp;	
}

void CChangeinfoDialog::OnYes() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	int cartime=0,plaintime=0,traintime=0;
	cartime=m_carhour*60+m_carminute;
	plaintime=m_plainhour*60+m_plainminute;
	traintime=m_trainhour*60+m_trainminute;
	Info carinfo,plaininfo,traininfo;
	carinfo=m_graph->CreatInfo(m_carfee,cartime,m_carcon);
	plaininfo=m_graph->CreatInfo(m_plainfee,plaintime,m_plaincon);
	traininfo=m_graph->CreatInfo(m_trainfee,traintime,m_traincon);
	if(!m_graph->EditArc(m_cityfirst,m_citysecond,m_graph->CreatInofNode(carinfo,plaininfo,traininfo,m_distance)))
	{
		AfxMessageBox("输入有误!");
		return;
	}	
}

void CChangeinfoDialog::OnCitynamefirNext() 
{
	// TODO: Add your control notification handler code here
	int num=-1;
	if(!m_graph->CityLocal(m_cityfirst,num)) {EndDialog(IDCANCEL);return;}
	if(num+1==m_graph->m_vexnum) {SetData(m_cityfirst,m_citysecond);return;}
	CList<InfoNode,InfoNode &> &list=m_graph->m_vertices[num+1].GetList();	
	m_cityfirst=m_graph->m_vertices[num+1].GetCityName();
	if(list.GetCount()==0) m_citysecond=_T("");
	else 
	{
		m_citysecond=m_graph->m_vertices[list.GetHead().GetCityNum()].GetCityName();
	}
	SetData(m_cityfirst,m_citysecond);
	UpdateData(false);
}

void CChangeinfoDialog::OnCitynaemsenPrev() 
{
	// TODO: Add your control notification handler code here
	int numfir=-1,numsen=-1;
	if(m_citysecond.IsEmpty()) {SetData(m_cityfirst,m_citysecond);return;}
	if(!m_graph->CityLocal(m_cityfirst,numfir)) {EndDialog(IDCANCEL);return;}
	if(!m_graph->CityLocal(m_citysecond,numsen)) {EndDialog(IDCANCEL);return;}
	CList<InfoNode,InfoNode &> &list=m_graph->m_vertices[numfir].GetList();
	InfoNode temp;
	temp.GetCityNum()=numsen;
	POSITION pos=list.Find(temp);
	if(pos==NULL) {AfxMessageBox("Error");return;}
	list.GetPrev(pos);
	if(pos==NULL) {SetData(m_cityfirst,m_citysecond);return;}
	m_citysecond=m_graph->m_vertices[list.GetAt(pos).GetCityNum()].GetCityName();
	SetData(m_cityfirst,m_citysecond);
	UpdateData(false);
}

void CChangeinfoDialog::OnCitynamefirPrev() 
{
	// TODO: Add your control notification handler code here
	int num=-1;
	if(!m_graph->CityLocal(m_cityfirst,num)) {EndDialog(IDCANCEL);return;}
	if(num==0) {SetData(m_cityfirst,m_citysecond);return;}
	CList<InfoNode,InfoNode &> &list=m_graph->m_vertices[num-1].GetList();
	m_cityfirst=m_graph->m_vertices[num-1].GetCityName();
	if(list.GetCount()==0) m_citysecond=_T("");
	else 
	{
		m_citysecond=m_graph->m_vertices[list.GetHead().GetCityNum()].GetCityName();
	}
	SetData(m_cityfirst,m_citysecond);
	UpdateData(false);
}

void CChangeinfoDialog::OnCitynamesenNext() 
{
	// TODO: Add your control notification handler code here
	int numfir=-1,numsen=-1;
	if(m_citysecond.IsEmpty()) {SetData(m_cityfirst,m_citysecond);return;}
	if(!m_graph->CityLocal(m_cityfirst,numfir)) {EndDialog(IDCANCEL);return;}
	if(!m_graph->CityLocal(m_citysecond,numsen)) {SetData(m_cityfirst,m_citysecond);EndDialog(IDCANCEL);return;}
	CList<InfoNode,InfoNode &> &list=m_graph->m_vertices[numfir].GetList();
	InfoNode temp;
	temp.GetCityNum()=numsen;
	POSITION pos=list.Find(temp);
	if(pos==NULL) {AfxMessageBox("Error");return;}
	list.GetNext(pos);
	if(pos==NULL) {SetData(m_cityfirst,m_citysecond);return;}
	m_citysecond=m_graph->m_vertices[list.GetAt(pos).GetCityNum()].GetCityName();
	SetData(m_cityfirst,m_citysecond);
	UpdateData(false);	
}

BOOL CChangeinfoDialog::OnInitDialog()
{
	m_cityfirst=m_graph->m_vertices[0].GetCityName();
	CList<InfoNode,InfoNode &> &list=m_graph->m_vertices[0].GetList();
	if(list.GetCount()!=0)
	{
		int num=list.GetHead().GetCityNum();
		m_citysecond=m_graph->m_vertices[num].GetCityName();
		SetData(m_cityfirst,m_citysecond);
	}
	else m_citysecond=_T("");
	UpdateData(false);
	return(CDialog::OnInitDialog());
}

//DEL void CChangeinfoDialog::SetData()
//DEL {
//DEL 
//DEL }

BOOL CChangeinfoDialog::SetData(CString cityfirst, CString citysecond)
{
	int cityfirnum=-1,citysennum=-1;
	if(!m_graph->CityLocal(cityfirst,cityfirnum)||!m_graph->CityLocal(citysecond,citysennum))
	{
		m_carcon=0;
		m_carfee=0;
		m_carhour=m_carminute=0;
		m_distance=0;
		m_plaincon=0;
		m_plainfee=0;
		m_plainhour=m_plainminute=0;
		m_traincon=0;
		m_trainfee=0;
		m_trainhour=m_trainminute=0;
		UpdateData(false);
		return false;
	}
	InfoNode temp;
	temp.GetCityNum()=citysennum;
	CList<InfoNode,InfoNode &> &list=m_graph->m_vertices[cityfirnum].GetList();
	POSITION pos;
	if((pos=list.Find(temp))==NULL) return false;
	temp=list.GetAt(pos);
	m_distance=temp.GetDistance();
	Info carinfo,plaininfo,traininfo;
	carinfo=temp.GetCar();
	plaininfo=temp.GetPlain();
	traininfo=temp.GetTrain();
	m_carcon=carinfo.GetTimeSpend();
	m_carfee=carinfo.GetFee();
	m_carhour=carinfo.GetTime()/60;
	m_carminute=carinfo.GetTime()-m_carhour*60;
	m_plaincon=plaininfo.GetTimeSpend();
	m_plainfee=carinfo.GetFee();
	m_plainhour=carinfo.GetTime()/60;
	m_plainminute=carinfo.GetTime()-m_plainhour*60;
	m_traincon=traininfo.GetTimeSpend();
	m_trainfee=traininfo.GetFee();
	m_trainhour=traininfo.GetTime()/60;
	m_trainminute=traininfo.GetTime()-m_trainhour*60;
	return true;
}

⌨️ 快捷键说明

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