📄 changeinfodialog.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 + -