C++公交换乘系统

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

西安理工大学本科生课程设计

课程名称公交出行助手

学号**********

学生姓名朱育拓

所在专业计算机科学与技术

所在班级计113

指导教师王海晟

成绩

教师签字

课程设计时间:2015年6月

一、目的与要求

通过一个学期的系统学习,学生们掌握了数据结构的基础理论知识,然而由于数据结构原理的抽象性,可能使得学生对数据结构各部分理论的理解不够深入。设置本课程设计,通过了解公交换乘算法的设计与实现,使学生能够学以致用,培养和提高学生的算法设计、运用计算机进行编程、调试等技能,从而培养学生独立工作的能力和创造能力。

二、设计内容

公交查询系统

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

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

(3)多次换乘在起始站点和目的站点之间没有可直达的公交

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

三:本系统功能介绍:

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

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

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

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

输入要查询的起点和终点

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

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

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

四:设计要求

认真参阅本课程设计的相关参考资料、数据,了解公交换乘的原理要求,设计一个实现公交换乘的算法:指定任一起始站点和目的站点,依据算法得到所有可达目的站点的的公交线路,包括中间站点的换乘方法以及该公交线路所经过的公交站点。

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

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

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

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

五:实验总结

通过一个星期的编写和不断的调试,公交换乘终于完成了。完成一个课程设计,首先你必须了解那些功能是怎样实现的及其原理。再者,一些细节问题,有时要一不小心,整个程序都会出现问题。

写这个程序,我学到很多以前课本没有学到的知识,而且也认识到程序设计并不只是看看就能学会,还要自己不断的动手才能不断的进步,在这个过程中,我也感受到编程成功的喜悦。

通过完成本次公交换乘系统设计的任务,使我们熟练和掌握了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

{

相关文档
最新文档