C++公交换乘系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 {