展开全部
//================================
//Router.h
#include
#include
usingnamespacestd;
//路线
classRouter
{
public:
Router();
~Router();
//
voidsetRouterId(intid);
//
intgetRouterId();
//添加站点信息
intaddSiteInfo(stringname);
//删除站点信息
intdelSiteInfo(stringname);
//插入32313133353236313431303231363533e58685e5aeb931333365653265站点信息
intinsertSiteInfo(intindex,stringname);
//获取站点序号
intgetSiteNo(stringname);
//显示站点信息
voidshowSite();
private:
intm_id;//路线编号
listm_siteList;//站点列表
};
//================================
//Router.cpp
#include"Router.h"
Router::Router()
{
m_siteList.clear();
}
Router::~Router()
{
m_siteList.clear();
}
voidRouter::setRouterId(intid)
{
this->m_id=id;
}
intRouter::getRouterId()
{
returnm_id;
}
//添加站点信息
intRouter::addSiteInfo(stringname)
{
if(name.size()==0)
{
cout<
return-1;
}
m_siteList.push_back(name);
return0;
}
//删除站点信息
intRouter::delSiteInfo(stringname)
{
list::iteratorit;
for(it=m_siteList.begin();it!=m_siteList.end();it++)
{
if(*it==name)
{
m_siteList.erase(it);
return0;
}
}
cout<
return-1;
}
intRouter::insertSiteInfo(intindex,stringname)
{
if(name.size()==0)
{
cout<
return-1;
}
list::iteratorit;
it=m_siteList.begin();
inti=0;
while(i
{
it++;
}
m_siteList.insert(it,name);
return0;
}
intRouter::getSiteNo(stringname)
{
intno=0;
list::iteratorit;
for(it=m_siteList.begin();it!=m_siteList.end();it++)
{
if(name==*it)
{
returnno;
}
no++;
}
return-1;
}
//显示站点信息
voidRouter::showSite()
{
cout<";
list::iteratorit;
for(it=m_siteList.begin();it!=m_siteList.end();it++)
{
cout<";
}
cout<
}
//================================
//Map.h
#include"Router.h"
#include
//地图
classMap
{
public:
Map();
~Map();
//添加路线信息
intaddRouterInfo(intid,Router*router);
//删除路线信息
intdelRouterInfo(intid);
//获取路线信息
Router*getRouter(intid);
//查找站点所在的路线
Router*findRouter(stringname);
//显示路线信息(id=-1显示全部)
voidshowRouterInfo(intid=-1);
private:
mapm_routerMap;//路线信息
};
//================================
//Map.cpp
#include"Map.h"
Map::Map()
{
m_routerMap.clear();
}
Map::~Map()
{
Router*pRouter=NULL;
map::iteratorit;
for(it=m_routerMap.begin();it!=m_routerMap.end();it++)
{
pRouter=it->second;
if(pRouter!=NULL)
{
deletepRouter;
pRouter=NULL;
}
}
m_routerMap.clear();
}
//添加路线信息
intMap::addRouterInfo(intid,Router*router)
{
if(m_routerMap.find(id)!=m_routerMap.end())
{
cout<
return-1;
}
router->setRouterId(id);
m_routerMap.insert(pair(id,router));
return0;
}
//删除路线信息
intMap::delRouterInfo(intid)
{
if(m_routerMap.find(id)==m_routerMap.end())
{
cout<
return-1;
}
m_routerMap.erase(id);
return0;
}
//获取路线信息
Router*Map::getRouter(intid)
{
Router*pRouter=NULL;
if(m_routerMap.find(id)==m_routerMap.end())
{
cout<
}
else
{
pRouter=m_routerMap[id];
}
returnpRouter;
}
//查找站点所在的路线
Router*Map::findRouter(stringname)
{
Router*pRouter=NULL;
if(name.size()==0)
{
cout<
}
else
{
Router*pTmp=NULL;
map::iteratorit;
for(it=m_routerMap.begin();it!=m_routerMap.end();it++)
{
pTmp=it->second;
if(pTmp->getSiteNo(name)!=-1)
{
pRouter=pTmp;
break;
}
}
}
returnpRouter;
}
//显示路线信息(id=-1显示全部)
voidMap::showRouterInfo(intid)
{
if(-1==id)
{
map::iteratorit;
for(it=m_routerMap.begin();it!=m_routerMap.end();it++)
{
cout<first<";
it->second->showSite();
}
}
else
{
if(m_routerMap.find(id)==m_routerMap.end())
{
cout<
}
Router*pRouter=m_routerMap[id];
cout<";
pRouter->showSite();
}
}
//================================
//ticket.h
#include"Map.h"
//售票
classticket
{
public:
ticket();
~ticket();
//初始化地图信息
voidinitMapInfo();
//显示地图信息
voidshowMapInfo();
//处理用户输入
voidhandleUserInput();
voidrun();
private:
Map*m_mapInfo;//地图信息
};
//================================
//ticket.cpp
#include"ticket.h"
#include
#include
ticket::ticket()
{
m_mapInfo=NULL;
}
ticket::~ticket()
{
if(m_mapInfo!=NULL)
{
deletem_mapInfo;
}
}
//初始化地图信息
voidticket::initMapInfo()
{
stringname;
m_mapInfo=newMap;
vectorsiteList;
siteList.push_back("aa");
siteList.push_back("bb");
siteList.push_back("cc");
siteList.push_back("dd");
siteList.push_back("ee");
siteList.push_back("ff");
vectoridList;
idList.push_back("1");
idList.push_back("2");
idList.push_back("3");
idList.push_back("4");
idList.push_back("5");
//添加路线
Router*pRouter=NULL;
for(inti=0;i
{
pRouter=newRouter;
for(intj=0;j
{
name=siteList[j]+idList[i];
pRouter->addSiteInfo(name);
}
m_mapInfo->addRouterInfo(i,pRouter);
}
}
//显示地图信息
voidticket::showMapInfo()
{
if(m_mapInfo!=NULL)
{
m_mapInfo->showRouterInfo(-1);
}
}
//处理用户输入
voidticket::handleUserInput()
{
Router*pRouter1=NULL,*pRouter2=NULL;
stringstartName,endName;
intnum=0;
intstartNo=-1,endNo=-1;
intprice=0;
//简单处理,只能选择同一条路线
//循环接受用户输入,直到得到价格
while(1)
{
cout<
cout<
cout<MapInfo<=================>"<
cout<
this->showMapInfo();
cout<
cout<
cout<
cout<
cin>>startName;
pRouter1=m_mapInfo->findRouter(startName);
if(pRouter1==NULL)
{//输入有误,全部重新输入
cout<
continue;
}
startNo=pRouter1->getSiteNo(startName);
cout<
cin>>endName;
pRouter2=m_mapInfo->findRouter(endName);
if(pRouter2==NULL)
{
cout<
continue;
}
if(pRouter1!=pRouter2)
{
cout<
continue;
}
endNo=pRouter2->getSiteNo(endName);
cout<
cin>>num;
if(num
{
continue;
}
//简单处理价格:人数×单价
//每个站点价格加减1
price=num*abs(endNo-startNo);
cout<\t"<
cout<getRouterId()<\t"<
break;
}
}
voidticket::run()
{
this->initMapInfo();
this->handleUserInput();
}
//================================
//main.cpp
#include"ticket.h"
intmain(void)
{
ticketapp;
app.run();
return0;
}