ImageVerifierCode 换一换
格式:DOC , 页数:55 ,大小:144KB ,
资源ID:3529414      下载积分:16 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/3529414.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(数据结构课程设计交通咨询系统设计模板.doc)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

数据结构课程设计交通咨询系统设计模板.doc

1、数据结构课程设计交通咨询系统设计设计题目: 7.3.4交通咨询系统设计P160一、 设计要求1问题描述根据不同目的的旅客对交通工具有不同的要求。例如, 因公出差的旅客希望在旅途中的时间尽可能的短, 出门旅行的旅客希望旅费尽可能的少, 而老年人则要求中转次数少。模拟一个全国城市之间的咨询交通程序, 为旅客提供两种或三种最优的交通路线。2需求分析二、 概要设计1主界面设计( 图2.1”交通咨询系统”主菜单) 2存储结构设计本系统采用图结构类型存储抽象交通咨询系统的信息。typedef struct TrafficNodechar nameMAX_STRING_NUM; /班次 /MAX_STRIN

2、G_NUM最为10int StartTime, StopTime; /起止时间 int EndCity; /该有向边指向的顶点在数组中的位置, 即该城市编号 int Cost; /票价 TrafficNodeDat;typedef struct VNodeCityType city;int TrainNum, FlightNum; /标记下面Train数组和Flight数组里元素个数 TrafficNodeDat TrainMAX_TRAFFIC_NUM; /数组成员为结构体, 记录了到达城市、 起止时间、 票价和班次 TrafficNodeDat FlightMAX_TRAFFIC_NUM;

3、/ int Cost; /遍历时到达该城市的耗费( 时间或者费用) VNodeDat;typedef struct PNodeint City;int TraNo; PNodeDat;3系统功能设计( 1) 添加城市。添加一个城市的名称( 2) 删除城市。输入一个城市名称, 删除该城市。( 3) 添加交通路线。输入起始城市、 终点城市、 航班或火车、 车次、 起始时间、 终点时间和票价( 4) 删除交通路线。输入火车或飞机的班次删除该交通路线。( 5) 查询最小费用路线。输入起始城市、 终点城市、 航班或火车、 车次、 起始时间、 终点时间查询最小费用路线。三、 模块设计1模块设计 无向网操作

4、模块工作区模块主程序模块 ( 图2.2 模块调用示意图) 2系统子程序及功能设计( 1) int ShowMenu()/主菜单( 2) void CopyRight()( 3) int SeekCity(char *name) /寻找城市( 4) int InsertCity(char *Name) /添加城市( 5) int SaveSysInfo() /向程序输入数据( 6) int DelCity(char *Name) /删除城市( 7) int InsertTrain(char *train, char *StartCity, char *EndCity, int StartTime

5、, int EndTime, int cost)/添加火车路线( 8) int InsertFlight(char *flight, char *StartCity, char *EndCity, int StartTime, int EndTime, int cost)/添加飞机航线( 9) int DelPath(char *name)/删除路线( 10) void Dijkstra(int matxDij_MAXNDij_MAXN, int p_start, int p_end, int TravelType)( 11) int InitSysData()/存储数据( 12) int S

6、earchMinTime(CityType City, CityType EndCity, int CurTime, int curPathNo, int TravelType)/查询最短时间( 13) int CalcMinTime(int StartCity, int EndCity, int TravelType) /显示最短时间( 14) int CalcMinCost(int StartCity, int EndCity, int TravelType)/最少花费( 15) int main()/主函数3函数主要调用关系图15main( ) 89112754136361223716(

7、 图2.3函数主要调用关系图) 四、 详细设计1数据类型定义( 1) 全局变量的定义typedef short int CityType;/CityType 定义短整形的变量 typedef struct TrafficNodechar nameMAX_STRING_NUM; /班次 /MAX_STRING_NUM最为10int StartTime, StopTime; /起止时间 int EndCity; /该有向边指向的顶点在数组中的位置, 即该城市编号 int Cost; /票价 TrafficNodeDat;typedef struct VNodeCityType city;int T

8、rainNum, FlightNum; /标记下面Train数组和Flight数组里元素个数 TrafficNodeDat TrainMAX_TRAFFIC_NUM; /数组成员为结构体, 记录了到达城市、 起止时间、 票价和班次 TrafficNodeDat FlightMAX_TRAFFIC_NUM;/ int Cost; /遍历时到达该城市的耗费( 时间或者费用) VNodeDat;typedef struct PNodeint City;int TraNo; PNodeDat; 2系统主要子程序详细设计( 1) 用户工作区模块的设计int ShowMenu() printf(n|*欢迎

9、使用交通咨询系统*|n);printf(n|-1: 添加城市-|);printf(n|-2: 删除城市-|);printf(n|-3: 添加交通路线-|);printf(n|-4: 删除交通路线-|); printf(n|-5: 查询最小费用路线-|);printf(n|-6: 查询最快路线-|);printf(n|-7: 清除屏幕-|);printf(n|-0: 退出-|n);printf(n|*o(_)o o(_)o *|n);printf(n请输入你的选择:);return 1;( 2) 用Dijkstra算法求两段路程的最短距离void Dijkstra_Output(int matx

10、Dij_MAXNDij_MAXN, int PreCityDij_MAXN, int p_end, int TravelType)int trackDij_MAXN;int i = 0, j, k, min, tmp, end, cost = 0;j = p_end; tracki+ = j;while (PreCityj = 0)cost += matxPreCityjj;tracki+ = j = PreCityj;printf(nTrack Way:);if (!TravelType)for (i-; i0; i-)printf(n%s:, CityNametracki);end = t

11、racki - 1; min = 32767;for (k = 0; kAdjListtracki.Traink.Cost)min = AdjListtracki.Traink.Cost;tmp = k;printf(%s, AdjListtracki.Traintmp.name);printf(%2d:%2d-%2d:%2d, AdjListtracki.Traintmp.StartTime / 60, AdjListtracki.Traintmp.StartTime % 60, AdjListtracki.Traintmp.StopTime / 60, AdjListtracki.Trai

12、ntmp.StopTime % 60);elsefor (i-; i0; i-)printf(n%s:, CityNametracki);end = tracki - 1; min = 32767;for (k = 0; kAdjListtracki.Flightk.Cost)min = AdjListtracki.Flightk.Cost;tmp = k;printf(%s, AdjListtracki.Flighttmp.name);printf(%2d:%2d-%2d:%2d, AdjListtracki.Flighttmp.StartTime / 60, AdjListtracki.F

13、lighttmp.StartTime % 60, AdjListtracki.Flighttmp.StopTime / 60, AdjListtracki.Flighttmp.StopTime % 60);printf(n%s: DESTINATION!, CityNametrack0);printf(nMin Cost : %dn, cost);void Dijkstra(int matxDij_MAXNDij_MAXN, int p_start, int p_end, int TravelType)int PreCityDij_MAXN; /PreCityi=-1,never used;

14、/PreCity0,the precity of City i int i, j, min, pre, pos;for (i = 0; iCityNum; i+)PreCityi = -1;PreCityp_start = -2;while (PreCityp_end = -1)min = -1;for (i = 0; iCityNum; i+)if (PreCityi != -1)for (j = 0; j0 & (min0 | matxijmin)pre = i; pos = j; min = matxij;PreCitypos = pre;Dijkstra_Output(matx, Pr

15、eCity, p_end, TravelType);五、 测试分析1. 添加城市在主菜单下, 用户输入1, 添加城市名称。( 图2.4添加城市) 2删除城市在主菜单下, 用户输入2, 删除已添加城市名称。( 图2.5删除城市) 3添加交通路线在主菜单下, 用户输入3, 已添加城市名称。添加起始城市、 终点城市名称、 乘车类型、 乘车班次、 起始时刻、 终点时刻、 和票价。 ( 图2.6添加交通路线) 4删除交通路线输入班次号, 删除交通路线( 图2.7删除交通路线) 5查询最小费用交通路线( 图2.8 查询最小费用交通路线) 6查询最快交通路线( 图2.9查询最快交通路线) 7清除屏幕8退出六

16、、 用户手册使用本系统时, 用户需先向程序添加城市后, 在已有城市基础上添加已有城市的路线和使用各项功能。 七、 调试报告程序运行无错误, 但当系统输入其它无储存内容时程序会意外中断, 代码需要优化。八、 程序清单#include stdafx.h#include #include #include #define ERR 0 #define OK 1 #define Dij_MAXN 100 #define MAX_VERTEX_NUM 100#define MAX_STRING_NUM 100 #define MAX_TRAFFIC_NUM 100 const char CityFile

17、= city.txt;const char TrainFile = train.txt;const char FlightFile = flight.txt;typedef short int CityType;/CityType 定义短整形的变量 typedef struct TrafficNodechar nameMAX_STRING_NUM; /班次 /MAX_STRING_NUM最为10int StartTime, StopTime; /起止时间 int EndCity; /该有向边指向的顶点在数组中的位置, 即该城市编号 int Cost; /票价 TrafficNodeDat;ty

18、pedef struct VNodeCityType city;int TrainNum, FlightNum; /标记下面Train数组和Flight数组里元素个数 TrafficNodeDat TrainMAX_TRAFFIC_NUM; /数组成员为结构体, 记录了到达城市、 起止时间、 票价和班次 TrafficNodeDat FlightMAX_TRAFFIC_NUM;/ int Cost; /遍历时到达该城市的耗费( 时间或者费用) VNodeDat;typedef struct PNodeint City;int TraNo; PNodeDat;VNodeDat AdjListMA

19、X_VERTEX_NUM; char CityNameMAX_VERTEX_NUMMAX_STRING_NUM; /城市名, 采用第一下标为该城市在本程序中的编号 int CityNum; /城市数目 PNodeDat PathMAX_VERTEX_NUM; /存储临时最小时间路径 PNodeDat MinPathMAX_VERTEX_NUM; /存储搜索到当前的最小时间路径 int MinTime, StartTime;int curPath;int ShowMenu() printf(n|*欢迎使用交通咨询系统*|n);printf(n|-1: 添加城市-|);printf(n|-2: 删

20、除城市-|);printf(n|-3: 添加交通路线-|);printf(n|-4: 删除交通路线-|); printf(n|-5: 查询最小费用路线-|);printf(n|-6: 查询最快路线-|);printf(n|-7: 清除屏幕-|);printf(n|-0: 退出-|n);printf(n|*o(_)o o(_)o *|n);printf(n请输入你的选择:);return 1;void CopyRight()printf(n);int SeekCity(char *name) /寻找城市int i;for (i = 0; iCityNum; i+)if (strcmp(name,

21、 CityNamei) = 0) /比较函数, 若相等, 则返回i值return i;return -1;/=Edit Info= int SaveSysInfo() /向程序输入数据FILE *fp; int i, j, total;fp = fopen(CityFile, w); /打开CityFile文档fprintf(fp, %dn, CityNum); /往文档中写城市的数量for (i = 0; iCityNum; i+)fprintf(fp, %sn, CityNamei); /往文档中写城市的名字fclose(fp);/将CityFile文档关闭total = 0;fp = f

22、open(TrainFile, w);/打开TrainFile文档 for (i = 0; iCityNum; i+) /计算列车班次的数量total += AdjListi.TrainNum;fprintf(fp, %dn, total); /往文档中写列车班次的数量for (i = 0; iCityNum; i+) /for (j = 0; jAdjListi.TrainNum; j+) /往文档中写列车的车次、 始发城市、 终点城市fprintf(fp, %s %s %s , AdjListi.Trainj.name,CityNamei,CityNameAdjListi.Trainj.E

23、ndCity);fprintf(fp, %2d:%2d %2d:%2d %dn, AdjListi.Trainj.StartTime / 60, /往文档中写AdjListi.Trainj.StartTime % 60,AdjListi.Trainj.StopTime / 60,AdjListi.Trainj.StopTime % 60,AdjListi.Trainj.Cost);fclose(fp); total = 0;fp = fopen(FlightFile, w);for (i = 0; iCityNum; i+)total += AdjListi.FlightNum;fprintf

24、(fp, %dn, total);for (i = 0; iCityNum; i+)for (j = 0; j CityNum)o-;printf(未找到此城市, 请重新输入! );return 0;for (i = city; i CityNum - 1; i+) /? ? ? 可能city是从0开始的strcpy(CityNamei, CityNamei + 1);AdjListi.FlightNum = AdjListi + 1.FlightNum;AdjListi.TrainNum = AdjListi + 1.TrainNum;for (j = 0; j AdjListi.Fligh

25、tNum; j+) /为什么没有火车的? ? AdjListi.Flightj.Cost = AdjListi + 1.Flightj.Cost;AdjListi.Flightj.EndCity = AdjListi + 1.Flightj.EndCity;strcpy(AdjListi.Flightj.name, AdjListi + 1.Flightj.name);AdjListi.Flightj.StartTime = AdjListi + 1.Flightj.StartTime;AdjListi.Flightj.StopTime = AdjListi + 1.Flightj.StopT

26、ime;CityNum-;return 1;int InsertTrain(char *train, char *StartCity, char *EndCity, int StartTime, int EndTime, int cost)int i, j; /InsertTrain(name,s_city,e_city,s_hour*60+s_minute,e_hour*60+e_minute,cost);i = SeekCity(StartCity);j = SeekCity(EndCity);AdjListi.TrainAdjListi.TrainNum.Cost = cost;AdjL

27、isti.TrainAdjListi.TrainNum.EndCity = j;AdjListi.TrainAdjListi.TrainNum.StartTime = StartTime;AdjListi.TrainAdjListi.TrainNum.StopTime = EndTime;strcpy(AdjListi.TrainAdjListi.TrainNum.name, train);AdjListi.TrainNum+; /火车的数加1return 1;int InsertFlight(char *flight, char *StartCity, char *EndCity, int

28、StartTime, int EndTime, int cost)int i, j; i = SeekCity(StartCity);j = SeekCity(EndCity);AdjListi.FlightAdjListi.FlightNum.Cost = cost;AdjListi.FlightAdjListi.FlightNum.EndCity = j;AdjListi.FlightAdjListi.FlightNum.StartTime = StartTime;AdjListi.FlightAdjListi.FlightNum.StopTime = EndTime;strcpy(Adj

29、Listi.TrainAdjListi.FlightNum.name, flight);AdjListi.FlightNum+;return 1;int DelPath(char *name)int i, j, flag = 0;for (i = 0; iCityNum; i+)for (j = 0; jAdjListi.FlightNum; j+) /注意j是从0开始的if (strcmp(AdjListi.Flightj.name, name) = 0)flag = 1; break;if (flag)for (; jAdjListi.FlightNum - 1; j+) /把删除的航班后

30、的每个航班向前移一位AdjListi.Flightj.Cost = AdjListi.Flightj + 1.Cost;AdjListi.Flightj.EndCity = AdjListi.Flightj + 1.EndCity;strcpy(AdjListi.Flightj.name, AdjListi.Flightj + 1.name);AdjListi.Flightj.StartTime = AdjListi.Flightj + 1.StartTime;AdjListi.Flightj.StopTime = AdjListi.Flightj + 1.StopTime;AdjListi.

31、FlightNum-; break;for (j = 0; jAdjListi.TrainNum; j+)if (strcmp(AdjListi.Trainj.name, name) = 0)flag = 1; break;if (flag)for (; j= 0)cost += matxPreCityjj;tracki+ = j = PreCityj;printf(nTrack Way:);if (!TravelType)for (i-; i0; i-)printf(n%s:, CityNametracki);end = tracki - 1; min = 32767;for (k = 0;

32、 kAdjListtracki.Traink.Cost)min = AdjListtracki.Traink.Cost;tmp = k;printf(%s, AdjListtracki.Traintmp.name);printf(%2d:%2d-%2d:%2d, AdjListtracki.Traintmp.StartTime / 60, AdjListtracki.Traintmp.StartTime % 60, AdjListtracki.Traintmp.StopTime / 60, AdjListtracki.Traintmp.StopTime % 60);elsefor (i-; i0; i-)printf(n%s:, CityNametracki);end = tracki - 1; min = 32767;for (k = 0; kAdjListtracki.Flightk.Cost)min = AdjListtracki.Flightk.Cost;tmp = k;printf(%s, AdjListtracki.Flighttmp.name);printf(%2d:%2d-%2d:%2d, AdjLis

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服