最便宜航空路线求解_第1页
最便宜航空路线求解_第2页
最便宜航空路线求解_第3页
最便宜航空路线求解_第4页
最便宜航空路线求解_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学号:课程设计题目最便宜航空线路求解学院管理学院专业信息管理与信息系统班级姓名指导教师2014 年 07 月 03 日课程设计任务书学生姓名:专业班级:信管指导教师:工作单位:管理学院题目:最便宜航空线路求解初始条件:【问题描述】飞机是远途旅行必不可少的工具,但是高昂的价格也令人颇费思量,因此人们往往 宁愿用时间来换金钱而选择较慢的交通工具。不过,当航班线路变得丰富之后,人们也 发现很多时候选择直达航班往往并非最省钱的路径,比如飞往美国选择从韩国转机就比直飞要便宜多了(虽然这样有坠机的危险)。这样一来,当采用曲线行进能达到省钱也 省时间的目的时,坐飞机还是可以接受的。为了能够更好地解决路径的选

2、择问题, 我们模拟一下通过合适的算法来选出最优航 空线路。参考上的数据,自选至少 10个城市和至少20条航线(不含中转),要求任意 两城市间都可达(这并不意味着两个城市之间就一定有直飞航班,比如大陆到台湾),且至少有2条可选飞行路线。预先定义每条航线的最高定价,航线票价每季度都有折扣 机会,但并非必须。每条线路每季度的折扣率由随机函数产生,范围是0.201.0 (小数点后取两位)。要求完成的主要任务:(包括课程设计工作量及其技术要求、说明书撰写等具体要求)本程序不考虑机场建设费和燃油附加费,只计算机票价格,将其作为路径上的权值 处理,耗费矩阵存储结构自行选择。在真实的情形中,同一线路每天可能有

3、许多航班, 也可能每周只有一两趟航班,即便同一天的航班早晚价格也可能有所不同。为简便计, 假定每条线路每天只有一趟航班,不考虑航空公司的差别。时间安排:指导教师签名:系主任(或责任教师)签名:20142014年06月25日年06月25日序号设计内容所用时间1问题分析和任务定义0.5天2数据类型和系统设计0.5天3编码实现和静态检杳3天4上机准备和上机调试2天5总结和整理设计报告:1天合计7天2 / 330 / 33最便宜航空线路求解1. 需 求分析1.1 基本要求(1)所有原始数据一律事先用文本文件保存,读入数据时从文件获取。(2)航班价格可以用随机函数生成,但建议从网上直接复制真实数据。(3

4、)可输出所有城市名称以及每一城市所有可直飞到达的城市列表。(4)可输出任一指定直飞线路(若没有则显示无直飞航班)四个季度的全票和 折扣价格。(5)输入月份、起始城市和目的城市名称,程序能显示出最经济 的中转路线选择方案。1.2 输入( 1)从文件 read.txt 中读取不同城市之间(共 10 个城市)不同航线(共24 条航线)的最高价格输入,四个季度有相同的最高价格。(2)每条线路每季度的折扣率由随机函数产生,范围是0.201.00 (小数点后取两位),四个季度有不同的折扣。( 3)运行程序时需根据要求从键盘输入相应指令,保证程序的正确运行。1.3 输出(1)输出所有城市名以及每一城市所有可

5、直飞到达的城市列表(按城市名 拼音升序排列): 始发地 可直飞目的地北京长春 广州 杭州 昆明 上海 首尔 武汉 香港首尔北京上海 台北 香港( 2)输出指定线路四个季度的折扣和全价:输入:北京 - 台北输出:无直飞航班输入:北京 - 广州输出:季度全票价格折扣折后价格(不计小数,四舍五入)112406.5 806211927.0 834314754.6 679412308.7 1070( 3 )输入月份、起始城市和目的城市名称,输出最佳方案:输入: 5 北京-台北输出:最佳线路:北京 -香港, 1503,香港-台北, 791,合计 2294输入:7广州-首尔输出:最佳线路:广州-上海,880

6、,上海-首尔,773,合计1653 输入:10武汉-上海输出:最佳线路:武汉-上海,278,合计2781.4测试数据文本文件read.txt 内容:璋rd.txt -记事事7 j0 L5841219 65535 6553565535655356553565535655351584 65535655351575 6553565535655356553565535655351219 655356553565无5 26116553565535655充65535655351 15756553565535 65535 113065535655351573 6553565535655352611 6553

7、5 65535655351006 65535 743 655356葩356F53B6B5351130 655356553565B351461 6553B 61265535655356553565535 1006655356553565535 65535 190365535655356553565535 65535 14616553565535 65535 234665635 65535 65535 1573 743 65535 66535 65535 65535 65585 65535 65535 65535 65535 65535 612 1903 2346 65535 65535+主菜单*

8、+ 1 査看城市* 2$俞出所育城市名及所有可直飞到达的城市列表(城市名拼音升序排列)*乱翦1入起始城市和目的城市名称,输岀指定线路四个李度的折扣和全价* 4嶽入月份、起始城市和目的城市名称,输出最佳方案芈1,武浪 北京 原门4 .厂州5.大连 &上海 化长沙10 .天津ho*D|a|=MoHc|a|oMo|D|o|=W=|o|aWo|D|a|c|a|o|a*oMo|Mc|c|c|=|a|Q|o|o|aMs|Q|=|Q|s|9|Q|a(Q|Q|o|s|Q|Q|c+ 0 退出程序+&深圳g.郑州若输入功能序号不在04之间,贝U显示“出错啦!请在0-4之间选择!!”和主菜 单,需重新选择。水王菜单

9、*床1查看城市* 2输出所有城市名艮所有可直飞到达的城市列表(城市名拼音升序排列)*半至输入起皓城市和目的城市容称丿输出指定线路四个季度的折扣和全价 咋 半厶输入月你起始城市和目的城市名称输出最佳方案水* 0退出程序水HitfS(0-4)7 血昔啦!!!诸在QF之间选择!米主菜单*丄.查看城市* N输出所有城市名及所有可直飞到达的城市列表(城市名拼音升序排列)*、输入起始城市和目的城市名称输出指定袋路四个李度的折扣和全价 * t也输入月份、起始城市和目的城市茗称,输出最住方案* 0退出程獰*情舞g)(3)选择1输出城市列表及相应代码。1. 武汶2北京3屢门4广州 5大连 &上海F恸少 也深圳9

10、郑州10 天津2 B B 一一 * * 諭汉津门海圳漳海门汉州 诣武天廈上深天上屢武广 )-直州旌沙京州海沙京连沙 -4可广犬长北广上长北大长O捧姚京沙连州海圳津浜门州 酬謎北长大广上除天武原郑(5) 选择3,先显示城市列表及相应代码,方便后面的输入操作,根据提示“请 输入起始城市和目的城市的代码,中间以空格隔开,范围(1-10)”输入两个城市 代码,若两城市间有直飞航班则显示指定线路四个季度的折扣和全价。晴瞬(0-43 城市及其代码tafflti 10) ,四舎五入)1.武汉2北京 扎厦门 厶广州 乩天连 &上莓&长;少 乩帶Jl|乩郑忡| 垃庆津辅*逾皓城市和目的城市的代码 度 全票价格折

11、扣:38300+892 38300”623 38300.OS4 3830d30,中间叹空格偏开, 折后价榕(不计可燮 3400237537531494若两城市间无直飞航班则显示“无直飞航班”诸输入起始城市和目的城市的代咼 中间以空格隔开,范围门一10)3 6 无宜飞航班(6) 选择4,显示“请输入月份(请在1-12之间选择):”若月份输入正确,则先 显示城市列表及相应代码,方便后面的输入操作,根据提示“请输入起始城市和 目的城市的代码,中间以空格隔开,范围(1- 10)”输入两个城市代码,若代码输 入正确,则显示最佳方案。備选择(0-4)4请输入月份(请在12之间选择卄3 城市及其代码:.斗=

12、村=14二戶*二*=+=戶*=+=+=+=#半牛口二蚪二戶*呻=冃=戶*二=*I.武汉玉北京二厦门乩广州巳犬连上海匚长S少&深圳仝郑州 io.天津-I I _ i _ I B i 1 ii _| |r_ ri _ 1 i I 1 i _ I l_l ,_ 1 11 I I, _ !_ I lr_ri I |_1_| _i _| 1 1 _ i_B _ I _ I _ 1 i 1 I I 11 I -fp|app(e5pppfepfop|efep|ppp|e(qefB|qefD|op|o(eppp(qocfqqppp|epp(epfqt5p|C3pfof3|Dp(efqc幘输入起皓城市和目的城市

13、的代码 中间次空格隔开,范8(1-10)3 7 你连择的罡d月位于第俸度挤扣是020最隹线k t an 大连 长砂台计 723若月份输入错误,则显示“输入出错”请输入月加请在1T2N间选择):45 输入出错!Ficss any key to continue若城市代码输入错误,则显示“出错啦!请输入起始城市和目的城市的代玛中间以空格隔开丿范围(1-W)55 7Fress any key to continue(7) 选择0,则直接退出程序+主菜单+ 1.查看Mi市*+ 2.舖出所有城市名及所有可直飞到达的城市列表(按城市名拼音升序排列)+ +乩输入起始城市和目的城市名称,输出指罡线路四个季度的

14、折扣和全价 + * 4输入月你 起皓城帀和目的城市名称,输岀最住方索*+ 0 退出程序*晴选择(0-4)o Picss any key to continue,(8) 在每一个功能执行完后,都会提示继续执行还是返回主菜单1.继续输出所有城市名汰及毎一城市所有可直飞封达的城市列表1道回主菜单清选择,、箭头流程2.1抽象数据类型定义本程序运用了关于图这种数据结构,它的抽象数据类型定义如下:typedef struct un DiGraphint num Verts; /纟吉点costAdj cost; 邻接矩阵un DiGraph,*UNG;基本操作:un DiGraph* CreateCostG

15、()操作结果:构造带权(费用)图。PathMat *Floyed(u nDiGraph *D) 操作结果:Floyed函数 求任意两点的最短路径。2.2主程序流程及各程序模块之间的层次(调用)关系prn _pass(Bcity,Ecity)prn _pass(Bcity,Ecity)pr(Ecity,0)pr(Ecity,0)3. 详细设计3.1数据类型(1)主界面包括1查看城市2. 输出所有城市名及所有可直飞到达的城市列表(按城市名拼音升序排列)3. 输入起始城市和目的城市名称,输出指定线路四个季度的折扣和全价4输入月份、起始城市和目的城市名称,输出最佳方案0退出程序(2)程序的模块为#i

16、nclude #i nclude #i nclude /需引用的头文件#define INF 65535 定义一个最大数为无穷值,表示两城市之间无直飞航班#defi ne MAX 23typedef in t costAdjMAX+1MAX+1; 图邻接矩阵从 1 开始记数int PathMAX+1MAX+1;/图邻接矩阵从1开始记数 typedef struct un DiGraphint num Verts; /纟吉点costAdj cost; 邻接矩阵unDiGraph,*UNG; / 图的定义 costAdj B,L;void pr(int i)/ 选择城市void pri()/ 输出

17、城市unDiGraph *CreateCostG()构造带权(费用)图 返回首地址 G:void Floyed(unDiGraph *D,unDiGraph *M) /Floyed 函数 求任意两点的最短路径:void prn_pass(int i,int j) /为了求从 i 到 j 的最短路径,只需要调用如下的过程void f_money1()输出所有城市名及所有可直飞到达的城市列表(按城市名拼音 升序排列)void f_money2()输入起始城市和目的城市名称,输出指定线路四个季度的折扣 和全价void f_mon ey4()输入月份、起始城市和目的城市名称,输出最佳方案int Lin

18、eNumStat(FILE *fp)/ 统计文本文件的行数void main()/main 函数3.2 伪码算法( 1 ) pr() 选择城市begin0=hIf j=0 then h=iElse if j=1 input addi.aSwitch 条件选择 print 城市名End ( 2)pri() 输出城市beginPrint 城市代码1=iWhile ia,0=b,1=hWuhan10,Beijing10,Xiamen10,Guangzhou10,Dalian10,Shanghai10,Changsha10,Shenzhen10,Zhengzhou10,Tianjin10 G=(unD

19、iGraph *)malloc(sizeof(unDiGraph)If !G then NULL1=iWhile ic_number+1While j G-costij 初始化使 G-costij 为无穷。c_number =G-numVerts while(!feof(fp) fscanffp,%f %f %f %f %f %f %f %f %f %f,&Wuhani,&Beijingi,&Xiameni,&Guang zhoui,&Daliani,&Shanghaii,&Changshai,&Shenzheni,&Zhengzhoui,&Tianjini for(0=j;jG-costj1

20、Beijingj-1=G-costj2Xiamenj-1=G-costj3Guangzhouj-1= G-costj4Dalianj-1=G-costj5Shanghaij-1=G-costj6Changshaj-1=G-costj7Shenzhenj-1=G-costj8Zhengzhouj-1=G-costj9Tianjinj-1=G-costj10return(G);End( 4) Floyed(unDiGraph *D,unDiGraph *M)函数 Floyed 函数求任意两点的最短路径Beginc_number=n1=iwhile(ijwhile(jcostij=Aij初始化矩阵

21、AM-costij=Cij -1=Pathij for(0=k;ki;ij;j=n;j+)if(Aik+AkjAijK= Pathij 若 i 经过 k 到 j 比 i 到 j 小,则令 Aij=Aik+AkjAij=BijelseAij=Bijprint 最短路径为 :End( 5) prn_pass(int i,int j) 输出最短路径所经过的点BeginIf ( Pathij!=-1)递归调用 prn_pass(i,Pathij) 调用 pr(Pathij,0)End( 6) f_money1( ) 输出方式 1 函数Beginl1=h do Print始发地可直飞目的地Print北京

22、广州武汉Print长沙大连天津Print大连长沙厦门郑州Print广州北京上海郑州Print上海广州深圳天津Print深圳上海天津Print天津长沙上海深圳Print武汉北京厦门Print厦门大连武汉Print郑州长沙广州Print1.继续输出所有城市名以及每一城市所有可直飞到达的城市列表 2.返回主菜单 清选择 .input l输入 1 或 2 选择是否继续1=hEnd( 7) f_money2( ) 输出方式 2 函数Begin1=hBcity,Ecity/ 起始成市号码和终点城市号码lmoney4i,js,wdiscount4 while(h=1) print 请输入起始城市 和目的 城

23、市的代码,中间以 空格隔开,范围(1- %d,c_numberinput Bcityinput Ecity 输入起始城市和终点城市的代码。if (!(0Bcity&Bcityc_number+1)&(0Ecity&Ecity5000|LBcityEcity10000)the n print无直飞航班elsePrint 季度 全票价格 折扣 折后价格(不计小数,四舍五入)nsran d(u nsig ned)time(NULL)随机种子for (0=j;ji; i w w/100=sbreak; s=discountjfor(0=i;i moneyiPrint %d%d%.2lf %.lfn,i

24、+1,BBcityEcity,discounti,moneyi);11 / 3311 / 33Print “打折前的费用是 d 元n,LBcityEcityPrint 1.继续输入起始城市和目的城市名称,输出指定线路四个季 度的折扣和全价 n 2.返回主菜单 n 清选择 .input l 输入 1或 2选择是否继续。1=hEnd(8) f_money3( ) 输出方式 3 函数Begin1=hBcity,Ecity 起始成市号码和终点城市号码Lmoneyi,js,wdiscount4Mmonthquarterdo Print请输入月份(请在1-12之间选择):Input monthif(mon

25、th=12|month=1)Print输入出错! nexit(1);pri()输出城市列表及相应代码。print 请输入起始城市和目的城市的代码,中间以空格隔开,范围(1- %d,c_numberinput Bcityinput Ecity 输入起始城市和终点城市的代码。if (!(0Bcity&Bcityc_number+1)&(0Ecity&Ecity5000)print 无航班 nelse srand(unsigned)time(NULL 随机种子 for (0=j;ji; i w w/100=sbreak; s=discountj if(1=monthm 1=quarterPrint

26、你 选 择 的 是 %d 月 , 位 于 第 %d 季 度 , 折 扣 是 .2lfn,m on th,quarter,melse if(4=monthm 2=quarterPrint 你 选 择 的 是 %d 月 , 位 于 第 %d 季 度 , 折 扣 是 %.2lfn,m on th,quarter,melse if(7=monthm 3=quarterPrint 你 选 择 的 是 %d 月 , 位 于 第 %d 季 度 , 折 扣 是 %.2lfn,m on th,quarter,melse if (10=monthm位 于 第 %d 季 度 , 折 扣4=quarterPrint

27、你 选 择 的 是 %d 月 ,是 %.2lfn,m on th,quarter,m13 / 3313 / 33(float)m*BBcityEcity=m on eyPrint最佳线路: pr(Bcity,O) 显示起始城市。prn_pass(Bcity,Ecity) 调用prn_pass函数,显示最短路径经过的城市。 pr(Ecity,O)显示终点城市。Print合计:Print %.lfn,mo neyPrint 1.继续输入月份、起始城市和目的城市名称,输出最佳方案n 2.返回主菜 单n清选择in put l 输入1或2选择是否继续。1=hEnd4. 调试分析4.1问题与解决办法(1)

28、 声明变量语句的位置我在运行的过程中一直出现这个错误 (见下图),系统报错说未定义变量,但 我确实定义过了,后来通过在网上百度资料才知道要把声明变量的语句得放到函 数的最前面,而printf要放在所有变量声明语句后面。修改程序之后,那些错误果然没有了ffi1 errorMCraph : undcclortdidontiFierprrnrt fixrrrnr ; v 1 *-hefore1 ilpntiHfir G-error-G1 Z Iundeclared identifiererrorC2143:syntaxerro;nissiinqbeforetupe:errorC2143:syntax

29、prror : HissingFbeforetypP-errorC31O:suntanerror : nissiing* . 9beforetypeerrorC2143:error : missiiniQ beforetupe网课设八课许珥龍】為塗外课厠课设毬设心旳(2) 文本文件的读取程序在读取文本文件时总说打开文件出错,原因是read.txt中含有非法字符,删去即可。而且在程序末尾要记得调用函数fclose(),关闭文件。(3) 把从文本文件读取的数据保存到数组中编写这一部分的时候总是出现错误,主要是对指向数组的指针认识不清,通过这 次编程对它有了更深的了解。(4) scanf(%s,&a

30、ddi.a)和 printf(%s ,addi-10.a)在编写程序阶段,我最开始编写这两个函数的时候是sca nf(%c,&addi.a)printf(%c,addi-10.a),当时没有看清 addi.a最初的定义,它其实是一个字符数组,所以在运行的时候老出错,后面慢慢研究和调试才知道在输入和输出 的格式占位符应该用%s.(5) 随机函数的编写我以前几乎没接触过随机函数,所以对其不是很了解。刚开始的时候都不会 写,后来在网上找实例,才知道其用法。而且根据题目的要求产生折扣的范围是0.201.0 (小数点后取两位),所以要产生有小数范围的不同随机数, 就要用时 间作为产生随机数的种子, 并且

31、通过取余运算和除以整数 100来确定随机数的范 围。另外还需引用以下头文件:# include # include 4.2 算法的时空分析( 1 )时间复杂度: Floyed 函数 T(n)=O(n2+n3)(2) 空间复杂度:本程序的空间复杂度均为 S(n)=(n 2); 即存放 n2 个节点数据 辅助空间。4.3 经验和体会(1) c 语言的学习实践很重要。自学习 C 语言以来,我们就没怎么练习上 机实践能力,所以对于代码的敏感度不够,一个错误出现了,不是很容易发现。 在这次课程设计中,我就犯了很多高手认为很基础的错误,比如说: printf 函数 的用法,变量声明的位置,还有就是指针数组

32、的用法。犯错误是不可避免的,但 是我们要认真地去发现错误和修改错误。我在运行后,知道自己的程序有错误, 我首先一步一步慢慢看, 慢慢分析, 在整个程序中找不出来就将该部分分离出去 进行测试,这样,就很容易找到问题所在了。(2) 编写 c 语言程序必须要细心,特别注意标点符号的书写。同一个 error 可能要改个几遍才能改好, 由于平时编程经历少的缘故, 总感觉有些吃力, 要解 决这一问题就要自己找题目练习, 而不是仅仅依赖于老师每次实验和考试。 另外 通过程序的编写还发现自己在 c 语言编程方面存在不足,要继续加强练习。(3) 要善于利用身边的资源。资源既包括网络资源也包括人力资源。遇到 一个

33、问题先要通过网络查找解决办法, 如果还是不能解决就要学会请教别人, 毕 竟身边有很多技术牛人和学长学姐, 他们都给我很耐心地解答, 让我很感动的同 时也受益匪浅。(4) 通过这次课设对弗洛伊德算法有了更深刻的了解。本次课程设计的问 题归根到底是求最短路问题, 用弗洛伊德算法求任意两点最短路径的过程比用迪 杰斯特算法算n次的形式上更加简单,时间复杂度为0(n2+n3),是一个简便的算 法。5. 用户使用说明5.1 使用程序的操作步骤运行程序后输入存储输入数据的文件名, 用户会看到程序的主菜单, 根据标号的 提示输入序号让程序执行相应的操作。( 1)选择序号 1,程序输出所有的城市及其代码。可以选

34、择继续查询或返回主 菜单,输入序号执行相应功能。( 2)选择序号 2,程序输出所有城市名及所有可直飞到达的城市列表(按城市 名拼音升序排列)。可以选择继续查询或返回主菜单,输入序号执行相应功能。15 / 3315 / 33(3)选择序号3,程序输出所有的城市及其代码,根据提示输入两城市标号,程序输出指定线路四个季度的折扣和全价。 可以选择继续查询或返回主菜单,输 入序号执行相应功能。(4)选择序号4,按要求输入月份,程序输出所有的城市及其代码,根据提示输入两城市标号,程序输出你选择的月份、位于的季度、折扣以及最佳方案。可以选择继续查询或返回主菜单,输入序号执行相应功能。(5)选择序号0,退出程

35、序。6. 测试结果6.1测试结果展示文本文件read.txt 内容:read.txt -记事本=F文件(F)裝需旧梧式查看側揺郎H0 L584 1219 65535 6553565535655356553565535655351524 65535 6553515?5 655艾655356553565E356553E655351219 65535 655356555 261165535655356553565535655351 1575 65535&5535 65535 113065535655351573 6553565535 6553526L1 S5585 655356553E1006 65

36、535 743 6553565B35 GF53B6E5351130 65535655356SE351461 G553B 61265535 655356553565535 1005655356553565535 65535 190365535 655356553565535 65535 14616553565535 65535 234665585 65535 65535 1573 743 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 612 1903 2346 65535 65535(1)读文本文件read.txt 。若文

37、件名输入正确且文件无错误,则显示主菜单请输入存储输入数協的文件名: read, list* 主菜单* I 查看城市* 2.输出所有城市名及所有可直飞到达的城市列表(城市名拼音升序排列)*朮缶输入起始城市和目的城市名叙输出指定线踣四个季度的折扣和全价* 4備入月份、起始城市和目的城市名航 输出最佳方素+半6退出程序平请选择(CM)若文件名输入错误或文件有错误,则显示“打开输入文件出错”请输隹储输人數据的文件茗;RAAD.iyT打幵输入文件出错!Press any key 弋q ecntinue(2)根据主菜单提示选择需要执行的功能。 若输入功能序号在04之间,则执行相应的功能+主菜单*+ 1 査

38、看城市* 2$俞出所育城市名及所有可直飞到达的城市列表(城市名拼音升序排列)*乱翦1入起始城市和目的城市名称,输岀指定线路四个李度的折扣和全价* 4嶽入月份、起始城市和目的城市名称,输出最佳方案芈1,武浪 北京 原门4 .厂州5.大连 &上海 化长沙10 .天津ho*D|a|=MoHc|a|oMo|D|o|=W=|o|aWo|D|a|c|a|o|a*oMo|Mc|c|c|=|a|Q|o|o|aMs|Q|=|Q|s|9|Q|a(Q|Q|o|s|Q|Q|c+ 0 退出程序+&深圳g.郑州若输入功能序号不在04之间,贝U显示“出错啦!请在0-4之间选择!!”和主菜 单,需重新选择。水王菜单*床1查看

39、城市* 2输出所有城市名艮所有可直飞到达的城市列表(城市名拼音升序排列)*半至输入起皓城市和目的城市容称丿输出指定线路四个季度的折扣和全价 咋 半厶输入月你起始城市和目的城市名称输出最佳方案水* 0退出程序水HitfS(0-4)7 血昔啦!!!诸在QF之间选择!米主菜单*丄.查看城市* N输出所有城市名及所有可直飞到达的城市列表(城市名拼音升序排列)*、输入起始城市和目的城市名称输出指定袋路四个李度的折扣和全价 * t也输入月份、起始城市和目的城市茗称,输出最住方案* 0退出程獰*情舞g)(3)选择1输出城市列表及相应代码。1.武汶2北京3屢门4广州 5大连 &上海F恸少 也深圳9郑州10 天

40、津(4)选择2,输出所有城市名以及每一城市所有可直飞到达的城市列表(按城 市名拼音升序排列)。17 / 3317 / 332 B B 一一 * * 諭汉津门海圳漳海门汉州 诣武天廈上深天上屢武广 )-直州旌沙京州海沙京连沙 -4可广犬长北广上长北大长O捧姚京沙连州海圳津浜门州 酬謎北长大广上除天武原郑(5) 选择3,先显示城市列表及相应代码,方便后面的输入操作,根据提示“请 输入起始城市和目的城市的代码,中间以空格隔开,范围(1-10)”输入两个城市 代码,若两城市间有直飞航班则显示指定线路四个季度的折扣和全价。晴瞬(0-43 城市及其代码tafflti 10) ,四舎五入)1.武汉2北京 扎

41、厦门 厶广州 乩天连 &上莓&长;少 乩帶Jl|乩郑忡| 垃庆津辅*逾皓城市和目的城市的代码 度 全票价格折扣:38300+892 38300”623 38300.OS4 3830d30,中间叹空格偏开, 折后价榕(不计可燮 3400237537531494若两城市间无直飞航班则显示“无直飞航班”诸输入起始城市和目的城市的代咼 中间以空格隔开,范围门一10)3 6 无宜飞航班(6) 选择4,显示“请输入月份(请在1-12之间选择):”若月份输入正确,则先 显示城市列表及相应代码,方便后面的输入操作,根据提示“请输入起始城市和 目的城市的代码,中间以空格隔开,范围(1- 10)”输入两个城市代码

42、,若代码输 入正确,则显示最佳方案。備选择(0-4)4请输入月份(请在12之间选择卄3 城市及其代码:.斗=村=14二戶*二*=+=戶*=+=+=+=#半牛口二蚪二戶*呻=冃=戶*二=*I.武汉玉北京二厦门乩广州巳犬连上海匚长S少&深圳仝郑州 io.天津-I I _ i _ I B i 1 ii _| |r_ ri _ 1 i I 1 i _ I l_l ,_ 1 11 I I, _ !_ I lr_ri I |_1_| _i _| 1 1 _ i_B _ I _ I _ 1 i 1 I I 11 I -fp|app(e5pppfepfop|efep|ppp|e(qefB|qefD|op|o(

43、eppp(qocfqqppp|epp(epfqt5p|C3pfof3|Dp(efqc幘输入起皓城市和目的城市的代码 中间次空格隔开,范8(1-10)3 7 你连择的罡d月位于第俸度挤扣是020最隹线k t an 大连 长砂台计 723若月份输入错误,则显示“输入出错”请输入月加请在1T2N间选择):45 输入出错!Ficss any key to continue若城市代码输入错误,则显示“出错啦!请输入起始城市和目的城市的代玛中间以空格隔开丿范围(1-W)55 7Fress any key to continue(7) 选择0,则直接退出程序+主菜单+ 1.查看Mi市*+ 2.舖出所有城市名

44、及所有可直飞到达的城市列表(按城市名拼音升序排列)+ +乩输入起始城市和目的城市名称,输出指罡线路四个季度的折扣和全价 + * 4输入月你 起皓城帀和目的城市名称,输岀最住方索*+ 0 退出程序*晴选择(0-4)o Picss any key to continue,(8) 在每一个功能执行完后,都会提示继续执行还是返回主菜单1.继续输出所有城市名汰及毎一城市所有可直飞封达的城市列表1道回主菜单1.继续输入起始城市和目的城市名称,输出指定线踣四个季度的折扣和全价 舊返回王呆单清选择仁纟腭翼输入月份、起始城市和目的城市名称,输出最佳方耒 石返回王菜单清选扌至19 / 3319 / 337. 附

45、录#include 需引用的头文件定义一个最大数为无穷值, 表示两城市之间无直飞航班#include #include / #define INF 65535 / #define MAX 23 static int c_number=10;/ 定义城市个数static int k=0;static int v=0,z=0,r=0,t=0;typedef int costAdjMAX+1MAX+1;/图邻接矩阵从 1 开始记数int PathMAX+1MAX+1;/ 图邻接矩阵从 1 开始记数typedef struct unDiGraphint numVerts; /结点costAdj cos

46、t; / 邻接矩阵unDiGraph,*UNG; / 图的定义typedef struct c_edit char a10;c_edit;c_edit add10;costAdj B;/ 城市列表定义 int pr(int i,int j) int h=0;if (j=0)h=i;else if (j=1) / 3320 / 33scanf(%s,&addi.a);switch(h)/ 运用 switch 语句。 case(0):printf(); break;case(1) : printf( break;case(2) : printf( break;case(3) : printf( b

47、reak;case(4) : printf( break;case(5) : printf( break;case(6) : printf( break;case(7) : printf( break;case(8) : printf( break;case(9) : printf( break;case(10) : printf( break;default:武汉 ); 北京 ); 厦门 ); 广州 ); 大连 ); 上海 ); 长沙 ); 深圳 ); 郑州 );天津 );printf(%s ,addi-10.a); return 1;/ 输出城市列表及相应代码void pri()int i;printf(f*nprintf( 城市及其代码 nnn););for (i=1;i=c_number;i+) printf(%d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论