{ printf(\与%s可以一次换乘到达:\.vex[s0].site,G.vex[s1].site); for(a=0;a<13;++a) { if(r[a][0]!=0) {printf(\方案%d:先乘坐%d路到 %s 下,\.vex[q[a]].site); m=passnum(h[a],s0); n=passnum(h[a],q[a]); printf(\ 此时需要先经过%d站\\n\ for(b=0;b<8;++b) { if(r[a][b]!=0&&b>0) printf(\或\ if(r[a][b]!=0) {printf(\ 再乘坐\ printf(\路 \ m=passnum(r[a][b],q[a]); n=passnum(r[a][b],s1);
printf(\ 此时需要再经过%d站即可到达目的站\ } } } if(r[1][0]==0) printf(\没有一次换乘的方案,请您参考其他线路\ } }
//主函数 void main() {
int v0,v1,n; char c;
CreateUDN(Len); for(;;) {
lable:; narrate();
printf(\要退出程序请按:【Ctrl+Pause Break】\\n\ printf(\请选择起点的公交站(0~43):\ scanf(\ if(v0<0||v0>Len-1) {
printf(\输入有误,请重试!!!\\n\ getch();
system(\ goto lable;
25
} loop:;
printf(\请选择终点的公交站(0~43):\ scanf(\ if(v1<0||(v1>Len-1)||v1==v0) {
printf(\输入有误,请重试!!!\\n\ goto loop; }
loop2:;
printf(\请问您想以下面哪种方式查询?请输入对应的序号\\n\ printf(\路径最短\\n\
printf(\换乘一次的最优乘车路线\\n\ printf(\请输入您选择的乘车方式:\ scanf(\ if(n==1) {
shortestpath(v0);
/*计算两个城市之间的最短路径*/ output(v0,v1); /*输出结果*/ printf(\ }
if(n==2) {
printf(\本程序换乘次数不会超过1次,如果1次换乘不能达到,则建议您参考其他乘车方案\
printf(\您是否继续(y/n)?请输入y或n:\ c=getch();
if(c=='n') goto loop2;
if(c=='y') huanchewng(v0,v1); printf(\ }
if(n!=1&&n!=2) { printf(\您的错误输入导致本程序崩溃!请您重启程序\\n\ }
printf(\
system(\ system(\ } }
26
8、调试分析
程序调试时,如果没有根据提示正确输入,界面上会出现提示出错的提示,可以到程序中找出错误并进行改正。改正后程序可正常运行。
9、测试数据
进入查询界面根据需求查询: 路径最短方式查询
27
换乘一次查询方式
10、用户使用手册
乘客可根据提示信息按步骤进行查询:
28
输入起始站后按Enter:
输入终点站后按Enter:选择乘车方式:1)输入1则
2)输入2则有提示信息输入y/n,n则返回,y则输出如下方
案
29
11、心得体会
11.1经验体会
通过这次数据结构课程设计,不仅巩固了之前学到的数据结构只是,更加提升了程序编写的能力。开始时还比较紧张,害怕不能完成任务,但是通过两个星期的学习,不懂得就看书,上网查资料,慢慢的一点点的弄懂,最后和队友的配合,终于基本完成任务,虽然还有不如意的地方,但是我相信只有有时间,我就能够更好地完成。
11.2这次的课程设计让我体会到了三点:
1)相对于问题本身,一个人的力量是渺小的,微不足道的,要想完成任务,必须合作,各有分工,才能更好更快的完成任务
2)编写程序其实不难,只要我们弄懂了所学的知识,加上不断学习和提出问题并解决问题的过程,就能从问题中得到提高,不知不觉就能学好这门课程。
11.3编程体会
对于编程,首先要确定算法问题,算法的选择会影响到程序的编写,这次要求用有向图的数据结构,这就的用到线性表来存储公交线路和站点信息,但是我们用了数组的形式,这样不仅不能实现有向图的这个要求,而且不能够为增加和删除站点信息提供需求,这样也限制了该程序的应用范围。
30