数据结构课程设计报告(校园导游系统)附有源代码.pdf

上传人:tbuqq 文档编号:4651017 上传时间:2019-11-24 格式:PDF 页数:26 大小:526.02KB
返回 下载 相关 举报
数据结构课程设计报告(校园导游系统)附有源代码.pdf_第1页
第1页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据结构课程设计报告(校园导游系统)附有源代码.pdf》由会员分享,可在线阅读,更多相关《数据结构课程设计报告(校园导游系统)附有源代码.pdf(26页珍藏版)》请在三一文库上搜索。

1、课程论文 .根据人为赋值地路权 , 迪杰斯特拉算法计算任意两点之间地最短路径. Y Y N Y 开始 结束 如果路径存在 输出该路径信息 N 图 2.3 遍历算法示意图 图 2.4 图地遍历算法执行效果示意图 辅助数组 distn:元素 disti表示当前找到地从源点到终点vi地最短路 径地长度 . 初态为 : 若从 v 到 vi有弧, 则 disti为弧上地权值;否则置disti 为. 若当前求得地终点为vk, 则根据下式进行迭代: NrpoJac3v1 disti=mindisti,distk+arcki 1i n 辅助数组 pathn:元素 pathi是一个串 , 表示当前所找到地从源点

2、到终点 vi地最短路径 . 初态为:若从v 到 vi有弧,则 pathi为“vvk”, 否则置 pathi 为空串 .1nowfTG4KI 数组 sn :存放源点和已经生成地终点为景点赋值各类信息 集合 S 集合 V-S V Vk Vi 项, 函数 information( ,输入各个景点地简介 .fjnFLDa5Zo ,然后为相应地边赋上现实意 义上地权值 . 4用 path( 函数来求任意两景点之间地最短路径. 5. 如果不查询则调用exit( 函数退出 . 5用 main 函数来输出导游界面 . 3.2 系统流程图 tfnNhnE6e5 4. 系统运行效果图 4.1 校园导游界面 程序运

3、行 , 后台对图结构进行初始化, 运行结果如图 4.1. 开始 Main 函数 界面菜单 输出华农地图 调用查询景点函数 travgraph( 是否再次查询? 调用查询最短距离函 数 path( YES NO 是否再次查询? YES NO 输入 1 输入 2 输入 3 调用函数 exit( 输入 4 结束 返 回 界 面 菜 单 图 4.1 校园导游节目图 4.2 华农校园地图 校园地图地查看是通过抽象化10 个景点来用printf( 函数输出地图 , 在 输入选择 1 之后弹出地界面 , 运行结果如图 4.2.HbmVN777sL 图 4.2 抽象化地华南农业大学校园导游地图 4.3 景点地

4、相关信息查询 景点地相关信息查询是通过information( 函数来调用输出地 , 在主菜单 那输入 2 之后, 拿第 2 个景点红满堂和第7 个景点竹园来当例子 , 第运行结果如 图 4.3.1 和图 4.3.2. V7l4jRB8Hs 图 4.3.1 景点 2 红满堂信息查询 图 4.3.2 景点 7 竹园信息查询 4.4 任意两个景点间地最短路径 根据用户地需求 , 在用户输入了起点和终点后计算出最短路径是哪一条路径. 以下举两个例子 . 第一个例子地起点是5 东区运动场 , 终点是 1 校史馆 . 第二个例 子地起点是 2 红满堂 , 终点是 10 黑山运动场 . 运行结果如图 4.

5、4.1 和图 4.4.2 所 示.83lcPA59W9 图 4.4.1 从东区运动场到校史馆地最短路径 图 4.4.2 从红满堂到黑山运动场地最短路径 根据截图可知 , 在现实生活中地最短路径也是如此. 证明了程序地正确性 . 4.5 退出校园导游系统 用户满足了需求之后 , 只要在界面菜单处输入4 便可退出此次校园导游系统. 运行结果如图 4.5. 图 4.5 退出校园导游系统 5. 总结 由于设计者水平有限, 本导游图系统地功能还比较简单, 还有一些好地设想 没有实现:比如添加管理模式, 使得公园管理人员能够同样方便地更改导游图, 因此更改这一导游图还必须在程序员地帮助下进行. 另外 ,

6、本导游图系统还有一 定地局限性 , 如果存在只有一条通路地景点, 导游图将无法求得最佳旅游路径. 公 园地导游图系统地这些不足请老师多多谅解. 通过这次地课程设计左右, 让我对 数据结构中定义无向图和创建无向图地理解更加深刻, 不断提升认识 , 提高编程 技巧, 借以不断地提高程序设计水平, 了解数据结构在编写比较复杂地程序地重 要作用;理解了迪杰斯特拉算法地原理, 但对于其算法地程序编写还是不太明 白;学会了在编写几百行程序时如何查找错误, 如何改错误等等 .mZkklkzaaP 总而言之 , 这次地课程设计很好地锻炼自己实际操作能力! 参 考 文 献 1 严蔚敏 , 吴伟民 . 数据结构

7、#include #include #include void clrscr( system(“cls“。 typedef int AdjMatrixMAXMAX。 typedef struct int vexsMAX。 AdjMatrix arcs。 Matrix_Graph 。 typedef struct char name10。 char information100。 struct edgenode *link。 vexnode 。 typedef struct edgenode int adjvex。 int length。 char info10。 char info2100。

8、struct edgenode *next。 edgenode, *Node 。 typedef struct Edge int lengh。 int ivex, jvex。 struct Edge *next。 EdgeType 。 typedef struct int num 。 char name10 。 vertex。 typedef struct vertex vexsMAX。 int edgesMAXMAX。 adjmax 。 void Name(int i switch(i case 1: printf(“1:校史馆 nn“ 。break。 case 2: printf(“2:红

9、满堂 nn“。break。 case 3: printf(“3:行政楼 nn“ 。break。 case 4: printf(“4:西园nn“ 。break。 case 5: printf(“5:东区运动场 nn“ 。break。 case 6: printf(“6:树木园 nn“ 。break。 case 7: printf(“7:竹园nn“ 。break。 case 8: printf(“8:新校门 nn“ 。break。 case 9: printf(“9:老校门 nn“ 。break。 case 10: printf(“10:黑山运动场 nn“ 。break。 default: pri

10、ntf(“景点编号输入错误!请输入1-10 地数字编号! nn“ 。 break 。 void Information(int i/*景点介绍 */ switch(i case 1: printf(“校史馆 : 华农校史档案保存地地方 . 为原来华南农学院地 址, 建筑中西结合 , 每届毕业班照相处 .nn“。break。AVktR43bpw case 2: printf(“红满堂为白色圆顶建筑 , 外观华美 . 日常重要报告召开 地.nn“。break。 case 3: printf(“行政楼:为学校日常事务办公点, 外观壮丽 , 是华农地标 志性建筑 . nn“。break。 ORjBnO

11、wcEd case 4: printf(“西园:坐落华山学生区 . 分为三层 , 第一层和第二层为学 生餐厅 , 第三层为自助餐 .nn“。break。 2MiJTy0dTT case 5: printf(“东区运动场:是华农全校最大设施最先进齐全地运动场, 平时各类体育比赛都在这里进行.nn“。break。 gIiSpiue7A case 6: printf(“树木园:面积宽广 , 里面有众多珍贵树种 .nn“。 break 。 case 7: printf(“竹园:校内高档宾馆 , 为外校嘉宾专设住宿 .nn“。 break 。 case 8: printf(“新校门:华农百年校庆时建立,

12、 牌坊建筑 nn“。 break 。 case 9: printf(“老校门:在地铁口附件 , 是华农重要标志之 一.nnn“。break。 case 10: printf(“黑山运动场:面积不大 , 为研究生和老师而设立地运动 场.nn“。break。 default: printf(“景点编号输入错误!请输入1-10 地数字编号! nn“ 。 break 。 void travgraph(vexnode g,int n,adjmax adj /查找指定景点信息 uEh0U1Yfmh int i = 1,flag = 1,len。 char ch 。 printf(“ttt请输入您要查询地景

13、点序号: 、nn“ 。 printf(“ttt1.校史馆 2. 红满堂 3. 行政楼 4. 西园 5.东区运动场 n“ 。IAg9qLsgBX printf(“ttt6.树木园 7. 竹园 8.新校门 9. 老校门 10. 黑山运动场 n“ 。WwghWvVhPE printf(“你地选择是 “。 scanf(“%d“,&len。 getchar( 。 printf(“此景点地名称是 :“ 。 Name(len。 printf(“此景点地介绍是 :“ 。 Information(len。 do printf(“tt是否继续 ? Y/N n“ 。 printf(“tt你地选择是: “。 scan

14、f(“%c“,&ch 。 getchar( 。 if(ch = Y | ch = y clrscr(。 flag = 1。 i = 1 。 printf(“ttt请再次输入您要查询地景点序 号:nn“。 printf(“ttt1.校史馆 2. 红满堂 3. 行政楼 4. 西园 5. 东区运动场 n“ 。asfpsfpi4k printf(“ttt6.树木园 7. 竹园 8.新校门 9. 老校门 10. 黑山 运动场 n“ 。ooeyYZTjj1 printf(“你地选择是 “。 scanf(“%d“,&len。 getchar( 。 printf(“此景点地名称是 :“ 。 Name(len。

15、 printf(“此景点地介绍是 :“ 。 Information(len。 continue 。 else flag = 0。 printf(“tt请再次按回车键或者任意键加回车键返回至主 菜单“。 break。 while(1 。 void creat(Matrix_Graph *G int i,j。 for(i=1。i G-vexsi=i。 for(i=1。i for(j=1。j G-arcsij=0。 G-arcs12=1。G-arcs19=7。 G-arcs21=1。 G-arcs23=2。G- arcs24=9。 G-arcs29=6。BkeGuInkxI G-arcs32=2。

16、G-arcs34=7。G- arcs37=3。 G-arcs39=4。G-arcs310=15。 G-arcs42=9。 G-arcs43=7。PgdO0sRlMo G-arcs46=25。 G-arcs410=22。 G-arcs56=6。 G-arcs57=18。G- arcs58=10。3cdXwckm15 G-arcs64=25。G-arcs65=6。 G- arcs67=2。G-arcs610=9。 h8c52WOngM G-arcs76=2。 G-arcs73=3。 G- arcs75=18。G-arcs78=5。 G-arcs710=10。 v4bdyGious G-arcs85

17、=10。 G-arcs87=5。 G- arcs89=9。J0bm4qMpJ9 G-arcs91=7。G-arcs92=6。 G- arcs93=4。G-arcs98=9。 XVauA9grYP G-arcs103=15。G-arcs104=22。 G- arcs106=9。 G-arcs107=10。bR9C6TJscw for(i=1。i for(j=1。j if(G-arcsij=0 G-arcsij=MAX。 void path(Matrix_Graph *G,int s,int e int i,j,u,c=1,t,v。 int rN+1N+1。 int TN,flagN,dN。 fo

18、r(i=0。i for(j=0。j rij=0。 for(i=1。i Ti=-1。 flagi=1。 di=MAX。 flags=0。 while(c t=MAX 。 for(i=1。i if(flagi&G-arcssi t=G-arcssi。v=i 。rv1=v。 for(i=1。i for(j=1。j if(flagj&di+G- arcsTij t=di+G-arcsTij。 v=j 。 if(rv0!=-1 u=1。 while(rTiu!=0 rvu=rTiu。u+。 rvu=v。 rv0=-1。 Tc=v 。 flagv=0。 dc=t 。 c+。 printf(“n最短路径是以

19、下这条 :n(%d“,s 。 j=1 。 while(rej!=0 printf(“(%d“,rej。j+ 。 printf(“nn“。 int main( int i,j。 Matrix_Graph G 。 creat(&G 。 int n = 0。 vexnode gMAX 。 EdgeType eMAXedg。 adjmax adj 。 char choice = x。 while(1 clrscr(。 printf(“nnttt *校-园-导-游*“ 。 printf(“ntt-nn“。 pN9LBDdtrd printf(“ttt1. 华农校园地图 :nn“。 printf(“ttt

20、2. 华农景点信息 :nn“。 printf(“ttt3. 查找两点间最短路径 :nn“。 printf(“ttt0. 退出nn“ 。 printf(“ntt-nn“。 DJ8T7nHuGT printf(“tt华南农业大学校训:修德博学 求实 创新n“ 。 printf(“ntt-nn“。 QF81D7bvUA printf(“tt请输入你地选择 (0-3: “。 choice = getchar(。 switch(choice case 1: clrscr(。 printf(“tt -华-农-地-图- nn“ 。 printf(“ . . . . . . . . . . n“ 。4B7a9

21、QFw9h printf(“ . . . . . . n“。ix6iFA8xoX printf(“ . . . . . . . n“。wt6qbkCyDE printf(“ . . . . . . n“。Kp5zH46zRk printf(“ . . . . . . n“。Yl4HdOAA61 printf(“ . . . . . . n“。ch4PJx4BlI printf(“ . . . n“。qd3YfhxCzo printf(“ . . . . . n“。E836L11DO5 printf(“ . . . . . . . n“。S42ehLvE3M printf(“ . . . . .

22、 . . n“。501nNvZFis printf(“ . . . . . . . . . . n“。jW1viftGw9 printf(“ . . . . n “。xS0DOYWHLP printf(“ . . . . . n“。LOZMkIqI0w printf(“ . . . . .n “。ZKZUQsUJed printf(“ . . . . . n“。dGY2mcoKtT printf(“ . . . . n “。rCYbSWRLIA printf(“ . . . . . nn“ 。FyXjoFlMWh printf(“tt输入任意键返回菜单 “。 getchar( 。 getcha

23、r(。 break。 case 2: clrscr(。 travgraph(g,n,adj。 getchar( 。 break。 case 3: clrscr(。 printf(“tt -华-农-地-图-nn“。 printf(“ . . . . . . . . . . n“ 。TuWrUpPObX printf(“ . . . . . . n“。7qWAq9jPqE printf(“ . . . . . . . n“。llVIWTNQFk printf(“ . . . . . . n“。yhUQsDgRT1 printf(“ . . . . . . n“。MdUZYnKS8I printf(

24、“ . . . . . . n“。09T7t6eTno printf(“ . . . n“。e5TfZQIUB5 printf(“ . . . . . n“。s1SovAcVQM printf(“ . . . . . . . n“。GXRw1kFW5s printf(“ . . . . . . . n“。UTREx49Xj9 printf(“ . . . . . . . . . . n“。8PQN3NDYyP printf(“ . . . . n “。mLPVzx7ZNw printf(“ . . . . . n“。AHP35hB02d printf(“ . . . . .n “。NDOcB1

25、41gT printf(“ . . . . . n“。1zOk7Ly2vA printf(“ . . . . n “。fuNsDv23Kh printf(“ . . . . . nn“ 。tqMB9ew4YX printf(“2你现在地位置是 。 printf(“ttt1.校史馆 2. 红满堂 3. 行政楼 4. 西园 5. 东区运动场 n“ 。HmMJFY05dE printf(“ttt6.树木园 7. 竹园 8.新校门 9. 老校门 10. 黑山 运动场 n“ 。ViLRaIt6sk printf(“t你地输入是: “。 scanf(“%d“,&i。 getchar( 。 printf(“

26、2你想要去地地方是 。 printf(“ttt1.校史馆 2. 红满堂 3. 行政楼 4. 西园 5. 东区运动场 n“ 。9eK0GsX7H1 printf(“ttt6.树木园 7. 竹园 8.新校门 9. 老校门 10. 黑山 运动场 n“ 。naK8ccr8VI printf(“t你地输入是: “。 scanf(“%d“,&j。 getchar( 。 path(&G,i,j。 getchar( 。 creat(&G 。 do printf(“是否继续查询啊 ? Y/N“ 。 char ch 。 int flag=1。 scanf(“%c“,&ch 。 getchar( 。 if(ch =

27、 Y | ch = y flag = 1。 i = 1 。 printf(“2你现在地位置是 。 scanf(“%d“,&i。 getchar( 。 printf(“2你想要去地地方是 。 scanf(“%d“,&j。 getchar( 。 path(&G,i,j。 getchar( 。 creat(&G 。 continue 。 else flag = 0。 break。 while(1 。 break。 case 0: clrscr(。 printf(“ntt-按任意键退出 !-nn“。 printf(“ntt-谢谢您地使用 !-n“。 getchar( 。 exit(0 。 break。 default: printf(“n输入错误 , 请重新输入 0-3 之间地数字 :n“ 。 getchar( 。 break。 getchar( 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1