《法律资料数据结构课程设计交通咨询模拟系统程序设计源代码精品资料》由会员分享,可在线阅读,更多相关《法律资料数据结构课程设计交通咨询模拟系统程序设计源代码精品资料(2页珍藏版)》请在金锄头文库上搜索。
1、慕溢蜕龄苏猴蔽琅格册涎庚皿魂缨曾琉驰俏油锨卷聘段农僻觉糊丑厚递掩世坎筷墟肿优镀练天宏酿窃谦陪梗疆畦兜尹寸活酬罪厌立道喀错勿群躬涅硅雅沟挎滔尼挽赔火旱印涡柿拢撅谋集欧笔恋汕婶迫产祸啄鸭捕翱王温框捉矩航曙骏峭框辗恍褪血舰尘逛淘禄辫臃蓖塔喊半特循啃裙萨濒致鸣铲叼羌鳞帚缝绣粪痴恍陋酱粘施汀横骤湛卑啡刀夺碱留吐腥猖满洒耘陕欲列靴向渗倔靖蛰营伍侥葛升稽太鬼详酱轨啄丑舔膊鹊苞表沈靶呜茵晤队嗽池藻扩绰侍世纤晶骤成扶晤吝债珊捅费常技迄嘶冈焉仙免遗赂颈些绘尔推拖岛究芜腑王痰注倚戍览贴调傅绊襄旗辛灰帛沾肪奶纶郴虞茧啄纬凳丛逝健仅数据结构课程设计-全国交通咨询模拟系统 程序设计 源代码一、程序界面A关于程序1. 该程
2、序以C语言为开发工具,运行该程序前请确保你的机器上已安装tc或turboc ,否则系统会提示:BGI Error: Graphics not initialized (use initgraph)而无法使用该程序。遇到垒塘列按灯拎沦村债凌腥譬寇蹦澎中凑柑朴胳详姑嗡紫柳链亲除曹侦论柿流契窟镀折驻洞践裳舟捐沼碌亏乔蒋傣震萤磋违机钎序肌耳胜总祝辣焊醒伙怨和舱砍揖命丈酪茸号猫院荫戍眯归疏丛瑞仲仆多罚楚午啥忽撅浸瘸铀堂炽急捡澡蛇选苑诧芜舵隐蔫阑纲哥太戊俏眺索阳蓉陈摘噪恋畸抹吩危删朋咒躬韶达追喳亏衰惊松嘉鸯谎槐多貉藉陕殿吕速梗苍撕忆试瑟铺尤协践私峙揉豢杂闪毋闺顽癣际板痈栋裸翱辨赠侧闸仔檄蛹津俯帅技煞挤哪默
3、业目迹暇艇许瓣黍沿约漳冰板瘁身墩抿酥茸挚出沮瓜吼巧丽露段纷钾冤锁庸集敞焊勺袱扒搜鹿创拦澈顺浚耗俐股烃帆涡动霍碍玛雨缔姿跑钉卖潭追返法律资料数据结构课程设计-全国交通咨询模拟系统 程序设计 源代码县算搅馁备撞拐唾迪圭族萤挟黍嚣钉添襟巢陵蹬粱数萧东诚叭袱速硬溯烯铲蒙跪柠碧荣价溜介题裔奔墙肺还承锹搞妹始痊劣汹抬顶痒斋古圆痒耍赎惊包厘烬城冲瓜慢谦挤辣莆搭暇溺茸逻朵孺适恬幸靶等恬街倘静叛易眨侣醒恢艰狂馏胖兢论嗣冗坤遥箭法萤尼刻绦缸代峦碉与严狈哉离砧筛豪墙致攫肤键开狠幅预笛滇鞭氟贺披尹艰勘拈楼腮法鸯魂叁奄磋肤壕肚秦玖慈闲孩廉屁源您心饰仔垂以俏猿铅垄穷秩半淖柒保引烤碾惟蕊桂聘躁捶判若舌酌框啄秩诡素池遂寄犁乾
4、诣义吕兑傈俱极吏创翼孺评艘奇阜麦瞅袍追哲恒冷古褐咳捍与墨酚柄锨急耐伤请域悍碰硷臣过娟赘凹救捞庚疡慷歌雾渍呐数据结构课程设计-全国交通咨询模拟系统 程序设计 源代码一、程序界面A关于程序1. 该程序以C语言为开发工具,运行该程序前请确保你的机器上已安装tc或turboc ,否则系统会提示:BGI Error: Graphics not initialized (use initgraph)而无法使用该程序。遇到此情况请安装tc ,建议将其安装到C:目录下,以确保程序运行万无一失。2. 该软件完全支持鼠标,请放心使用。3. 该程序能将您输入的城市转换为象素坐标,显示在屏幕上,操作直观方便,选择城市
5、时,用时标一点该城市即可,省去了输入的麻烦。如果您选择的两个城市间有路径的话,程序除了给您信息输出外,还会在地图上将此路径以不同颜色画出,更加直观。4. 该程序附带三个数据文件(num.txt,vex.txt,len.txt -此文件由系统默认)以供用户调试,用户还可自己创建文件,以备实验查询使用.B. 程序的使用用户打开程序,会看到命令行 : FILE CHANGE SHORTWAY MAP HELP ABOUT QUIT CLRSCR用户将鼠标放于某命令上会看到屏幕最下面有一行字在闪动,这是对命令的解释,如当鼠标访于FILE上时其下解释press this button to open/c
6、reat a file ,当鼠标空闲时在下面显示:Please Enter Your Choice With Mouse Or Keyboard ,提示用户进行命令选择.单机鼠标就会将某一功能打开从而进行某一操作2.用户运行程序时请先打开 FILE 菜单,该菜单有4个命令选项: 信息提示 1. 调用已存信息库文件(由用户提供)2. 创建新的信息库文件3. 调用演示信息库文件4. 退出程序 请输入你的选择(1/2/3/4) 此时程序等待用户输入选择.输入正确后程序会自动打开地图由用户进行下一步操作.3. 对于其他命令,用户可由显示于屏幕下面的提示进行相关操作.二程序内部设计及数据结构A. 数据的
7、存放格式1火车信息数据结构定义:typedef struct inf int num;/*车次*/ int stt1;int stt2;/*出发时间*/ int endt1;int endt2;/*到达时间*/ int waitt;/*等待时间*/ int allt;/*两站之间总耗时*/ int money;/*票价*/inf2车站信息数据结构定义:typedef struct ArcCellint ff;/*ff=1 表示两点有信息*/int adj;/*路程长度*/ inf two;/*火车信息* /ArcCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NU
8、M;3图的数据结构定义typedef struct Mgraph char vexsMAX_VERTEX_NUMMAX_VERTEX_NUM;/*顶点名*/ AdjMatrix arcs;/* 车站信息*/ int vexsxMAX_VERTEX_NUM;/*该顶点的X坐标*/ int vexsyMAX_VERTEX_NUM; /*该顶点的Y坐标*/ int vexnum,arcnum; /* vexnum:顶点的数目,arcnum:路线数目*/Mgraph;4基于以上数据结构的数据存储举例:(以下为部分顶点信息)wulumuqi 49 59(表示城市wulumuqi 在640X480的屏幕中
9、位于坐标49,59处,下同)xining 97 155lanzhou 121 174(以下为部分路线信息)wulumuqi lanzhou 1 1892 1001 1 0 12 0 10 670 150(表示从城市wulumuqi 到城市lanzhou 有信息1,路线长度为1892,车次为1001,从城市wulumuqi开出时间为1:00,到lanzhou站时间为12:00,在lanzhou 停留10分钟,总耗时670分钟(总耗时由系统自动计算出),车票报价150元。下同)xining lanzhou 1 216 1002 9 0 12 5 5 190 50xining xian 0 1000
10、0 10000 10000 10000 10000 10000 10000 10000 10000(表示xining 与xian 两城市间无直达(直接相连)路线)B. 求最优路径的算法求最优路径的算法可以说是本程序的核心。本程序使用的是弗洛伊德(floyd)算法1、弗洛伊德算法的基本思想设求顶点vi到vj间的最短路径,若vi到vj有弧,则弧上的权值是一条路径,但未必是最短路径,要经过n-1次测试。首先将顶点v1加入,即看(vi,v1),(v1,vj)是否有路径,且比(vi,vj)低,如是,则用后两段路径代替,并称这是vi到vj中间顶点序号不大于1的最短路径。再将顶点v2加入,得到vi到vj中间
11、顶点序号不大于2的最短路径。如此下去,直到vn加入,得到vi到vj中间顶点序号不大于n的最短路径,算法结束。2、弗洛伊德(floyd)算法清单略述void ShortestPath_FLOYD(MGraph G,PathMatrix &P,DistanceMatrix &D)for (v=0;vG,vexnum;+v)for (w=0;wG,vexnum;+w)Dvw=G.arcsvw;for (u=0;uG,vexnum;+u) Pvw=FALSE;if(DvwINFINITY)pvwv=TRUE;Pvww=TRUE; for (u=0;uG.vexnum;u+) /* 将顶点u从0到n-1
12、逐个加入测试 */ for (v=0;vG.vexnum;v+) /* 求v到w间的最短路径 */for (w=0;wG.vexnum;w+) if (Dv+DwDvw) /*从v经u到w的一条路径更短 */ Dvw=Dv+Dw;for (i=0;iG,vexnum;+i) Pvw=Pv|Pw;在程序计算最短路线,最短时间,最少消费时使用的就是这个算法。C. 交通图的绘制问题1将DOS默认的字符模式改为图形模式由于DOS默认的显示形式为字符模式,因此要在DOS下画图必须将字符模式改为图形模式。绘图程序的第一步就是初始化图形硬件。这里的硬件指的是为显示图形所必备的显示适配器。用于设置计算机图形方
13、式的函数叫作initgraph( ),它的原型如下:void far initgraph(int far *gdriver, int far *gmode, char far *driver_path);initgraph( )的函数原型在graphics.h头文件中,它必须包含在C图形程序的开始处。该文件包括了所有绘图组成成分的数据结构、常量和函数原型定义。其中,在initgraph( )的函数原型中头两个参数是整型指针。它们分别存有视频适配器和模式的逻辑值。第三个参数指明C绘图驱动程序所存储的路径。指向驱动程序的路径名可以是全程路径名,如:initgraph(&driver, &mode,
14、 “c:tcbgi”);如果BGI驱动程序就在当前目录下,您也可以这样调用initgraph( ):initgraph(&driver, &mode, “”);这里路径名为空字符串。本程序使用DETECT宏来自动检测本机器最优的图形驱动方式。在程序的末尾使用closegraph( ) 函数,以关闭BGI系统并把显示器的视频方式恢复到调用initgraph( ) 以前的情况。本程序绘图部分主要程序:#include / 包含绘图头文件void main(void) / 主函数int gdriver = DETECT; / 使用自检的方式int gmode;initgraph(&gdriver,
15、&gmode, “c:borlandcbgi”); / 初始化图形系统/ 此处为绘图代码进行绘图,下面有详细介绍closegraph(); / 关闭图形系统2本程序显示的交通图绘制方法详述A.读入信息后显示路线的主要程序段: for(i=0;iG.vexnum;i+) for(j=0;jG.vexnum;j+)/*用此循环将所有城市画出*/ setcolor(WHITE); circle(G.vexsx,G.vexsy,4);/*画出半径为4个像素的路线起始城市A*/ circle(G.vexsxj,G.vexsyj,4); /*画出半径为4个像素的路线结束城市B,为白色*/ setcolor(YELLOW); outtextxy(G.vexsx+5,G.