广东海洋大学数据结构课程设计——公交换乘系统(C++)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

广东海洋大学信息学院课程设计报告

设计题目公交换乘

课程名称数据结构

姓名(学号)

联系电话

专业名称

所在班级

指导教师

教师职称

起止时间

评定成绩

一、课程设计的主要内容

公交换乘在一个城市的公共交通系统设计中占据着极其重要的地位,公交换乘的过程将直接影响居民出行时间的长短,公交换乘的过程如下:指定一起始公交站点与目的公交站点,依据参考因素,例如:换乘路线的路径最短、耗费时间最短、所需车资最少等,经过分析处理得到可达目的站点换乘次数最少的乘车方案,具体可分为:

(1)零次换乘起始站点和目的站点之间存在可直达的公交线路,即出行居民无需转乘就可以直接到达目的站点,这也是较为理想的方案。

(2)一次换乘起始站点和目的站点之间没有公交车直接往返,即两站点之间不存在可直达的公交线路,则出行居民需要在途经的某个站点下车,然后转乘另一线路公交车才能达到目的站点。

(3)多次换乘在起始站点和目的站点之间没有可直达的公交线路,出行居民需要经过一次以上的转乘才能达到目的站点,则得到多次换乘方案。多次换乘方案可通过一次换乘的递归计算得到,一般情况下,超过两次转乘的方案对于出行居民来说是难以接受的,本课程设计只要求计算零次和一次换乘方案,对于一次以上的公交换乘不作要求。

二、功能和结构设计

1、功能设计

在这里通过主函数显示程序的主页版,上面是湛江的公交线路图

在这里输入出发站点的名字,回车确定!

在这里输入最终站点的名字!

输入错误会提醒重新输入!

输入要查询的起点和终点

0次换乘,输出查询结果:

按y或Y,可以继续查询!

输入出发点和终点,一次换乘的结果如下:

2、结构设计

设计一个实现公交换乘的算法:指定任一起始站点和目的站点,依据算法得到所有可达目的站点的的公交线路,包括中间站点的换乘方法以及该公交线路所经过的公交站点。

1.分析公交站点和公交线路的数据属性,并依据公交换乘的功能要求,确定算法设计方案;

2.设计公交站点信息以及公交线路信息的存储结构;

3.设计公交换乘算法,并画出程序流程图;

4.使用C++程序设计语言编写实现公交换乘的程序;

三、流程图和算法设计

四、源程序代码

#include

#include

using namespace std;

const int pathlen=11;

int qd,zd;//起点,终点的下标

string a[4]={"农垦医院站","广州湾站","霞湖医院站","海滨宾馆站"}; class Busline

{

public:

Busline(string p[],int n);

void zhida(int i,string sp,string fp,string p[],int l);

void gjhc(int i,int j,string sp,string fp,string p1[],string p2[]);

void tu();

private:

string bus[pathlen];

};

Busline::Busline(string p[],int n)

{

if(n>pathlen) throw"上溢";

for(int i=0;i

{

bus[i]=p[i];

}

}

void Busline::zhida(int i,string sp,string fp,string p[],int l)

{

qd=i;

for(int j=0;j

if(fp==p[j])

{

cout<<"可以直达,乘坐"<

if(i

{

cout<<"该路线为:"<

for(int k=i;k<=j;k++)

{

cout<

}

}

else

cout<<"该路线为:"<

for(int k=i;k>=j;k--)

{

cout<

}

}

}

void Busline::gjhc(int i,int j,string sp,string fp,string p1[],string p2[]) {

qd=i;

zd=j;

for(int k=0;k

for(int h=0;h

if(fp==p1[h]&&sp==p2[k])

{

for(int x=0;x<4;x++)

for(int l=0;l

for(int l1=0;l1

{

if(a[x]==p2[l]&&a[x]==p1[l1])

{

if(i

{

for(int y=i;y

{

cout<<"经"<

}

if(j

{

cout<<"在"<

for(int z=l1;z>=j;z--)

{

cout<<"经"<

}

cout<<"到"<

}

else if(j>l1)

{

cout<<"在"<

for(int z=l1;z<=j;z++)

{

cout<<"经"<

}

cout<<"到"<

}

}

else if(i>l)

{

cout<<"在"<

for(int y=i;y>l;y--)

{

cout<<"经"<

}

cout<<"到"<

if(j

{

for(int z=l1;z>=j;z--)

{

相关文档
最新文档