📄 lineinfo.h
字号:
// LineInfo.h: interface for the CLineInfo class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_LINEINFO_H__AF17397B_C1AB_48FF_AC1F_AC3E5C8B4366__INCLUDED_)
#define AFX_LINEINFO_H__AF17397B_C1AB_48FF_AC1F_AC3E5C8B4366__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <Afxtempl.h>
// 【附录1】基本参数设定
// 相邻公汽站平均行驶时间(包括停站时间): 3分钟
// 相邻地铁站平均行驶时间(包括停站时间): 2.5分钟
// 公汽换乘公汽平均耗时: 5分钟(其中步行时间2分钟)
// 地铁换乘地铁平均耗时: 4分钟(其中步行时间2分钟)
// 地铁换乘公汽平均耗时: 7分钟(其中步行时间4分钟)
// 公汽换乘地铁平均耗时: 6分钟(其中步行时间4分钟)
// 公汽票价:分为单一票价与分段计价两种,标记于线路后;其中分段计价的票价为:0~20站:1元;21~40站:2元;40站以上:3元
// 地铁票价:3元(无论地铁线路间是否换乘)
#define BUS_RUN_TIME 3
#define SUBWAY_RUN_TIME 2.5
#define CHANGE_BUS_BUS 5
#define CHANGE_SUBWAY_TO_SUBWAY 4
#define CHANGE_WUBWAY_TO_BUS 7
#define CHANGE_BUS_TO_SUBWAY 6
#define WALK_BUS_BUS 2
#define WALK_SUBWAY_TO_SUBWAY 2
#define WALK_WUBWAY_TO_BUS 4
#define WALK_BUS_TO_SUBWAY 4
#define SECTION_PER_YUAN 20
#define MAX_STAION 3958
#define MAX_LINE 550
enum OpType
{
op_Money,
op_Time,
op_Walk,
op_Change
};
enum WayType
{
wy_Bus,
wy_SubWay
};
enum FeeType
{
fe_Fix,
fe_Float
};
struct Station
{
WORD m_wLast;//下一站
WORD m_wNext;//上一站
WORD m_wSeq;//序号
};
struct Cost
{
float m_Money;
WORD m_Time;
WORD m_walk;
WORD m_Changes;
};
struct RouteNode
{
WORD m_wLine;//线路
WORD m_wStation;//换乘站
WORD m_nCount;//承站数
RouteNode()
{
memset(this,0,sizeof(*this));
}
};
typedef CList<WORD,WORD> WORDLIST;
typedef CArray<WORD,WORD> WORDARRAY;
typedef CList<RouteNode,RouteNode&> ROUTELIST;
class Element
{
public:
Cost m_costs;//合计代价
ROUTELIST m_Routes;//路由信息
BYTE m_Added;//已经加入处理列表?
Element()
{
m_costs.m_Changes = MAXWORD;
m_costs.m_Money = MAXWORD;
m_costs.m_Time = MAXWORD;
m_costs.m_walk = MAXWORD;
m_Added = FALSE;
}
};
class CLineInfo
{
public:
CLineInfo();
virtual ~CLineInfo();
WayType m_WayType;
WORD m_wSN;
FeeType m_FeeType;
union Fee
{
WORD Yuan;
WORD Section;
}m_Fee;
Station * m_pSations;
BOOL m_IsCircular;
inline BOOL IsCircular()
{
if(m_IsCircular != -1) return m_IsCircular;
for(int i = 1; i<MAX_STAION; i++)
{
if(m_pSations[i].m_wSeq == 1)
{
if(m_pSations[i].m_wLast != 0)
{
m_IsCircular = TRUE;
break;
}
else
{
m_IsCircular = FALSE;
break;
}
}
}
ASSERT(m_IsCircular != -1);
return m_IsCircular;
};
};
#endif // !defined(AFX_LINEINFO_H__AF17397B_C1AB_48FF_AC1F_AC3E5C8B4366__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -