大二上学期,数据结构老师说要让我们做一个课程设计,记得是从民航管理系统、导航系统、和电话管理系统三个系统里选择其中一个,而我就因为看会了floyd,就决定写写导航系统把,事实并没有非常熟练地掌握,一拖再拖之后到现在也不是太明白,大二第二学期刚考完试,我决定把以前没有掌握的知识再复习一遍。

  话不多说直接上图:

    

  对你们没有看错,我就是做了这样一个只有黑框框的程序,实际上他就是没有什么实际价值,因为我将平度(一个县级市)的每个地区抽象成每个点,而现实世界上这个点是一块区域

,根本与现实结合不起来,如果要做一个真正能用的导航系统,估计要用到定位系统吧,这一点也不是太清楚,在这里笔者只跟大家谈论这个算法和这个程序。

  没啥说的了直接上程序代码吧

  1 #include<bits/stdc++.h>
  2 #include<windows.h>

  3 using namespace std;
  4 const int maxN=35,INF=5e5,MAX=30;
  5 int G[maxN][maxN];
  6 int path[maxN][maxN];
  7 map<int,string>information,maping;
  8 queue<int>way,nearby;
  9 void initinformation(){
 10   information[1]="这里是本市的一个特色地区";
 11   information[2]="北接大泽,东邻崮山,最高峰海拔560米。占地面积约10平方公里。";
 12   information[3]="三合山,因由三座东西向连接而又各自独立的山峰组成而得名。";
 13   information[4]="因“孤峰秀峙、高冠霄星、拔地而起、如柱擎天”而得名。";
 14   information[5]="北有廓落崮,背北面南;左有石山,鳌山蜿蜒向前;右有长岭环绕西南,似一颗明珠镶嵌其中。";
 15   information[6]="是国家农业部命名的首家“中国葡萄之乡”。";
 16   information[7]="是近几年刚建的景区,2008年开始投资建成占地300多亩的青岛盛跃农业科技生态园区。";
 17   information[8]="云山境内有名山,曰云山,云山上有古观,曰云山观。";
 18   information[9]="山映水波,秀丽如画;远处烟笼四野,雾漫湖面,为一胜景。";
 19   information[0]="由三座东西向连接而又各自独立的山峰组成而得名。";
 20 }
 21 void init(){
 22   printf("\t\t|\t                                                                     N    \t|\t\t\n");
 23   printf("\t\t|\t  _ _ _ _ _ _ _ _ _ _ _ _ _ __  _ __ _ _ _                          /|\\   \t|\t\t\n");
 24   printf("\t\t|\t         _ _ _ _ _ _ _ _ _ _ __  _ __ _ _ _                          |     \t|\t\t\n");
 25   printf("\t\t|\t /1.新   |-----/3.长乐镇) /4.大泽山镇 /5.大 \\_ _ _                        \t|\t\t\n");
 26   printf("\t\t|\t \\ 河镇 |2.灰埠镇/   13.   \\       / 田   \\6.旧店镇\\                    \t|\t\t\n");
 27   printf("\t\t|\t    \\---------- \\    店子镇  \\  /  镇   \\-------                           \t|\t\t\n");
 28   printf("\t\t|\t        \\   14.张舍镇  ---------  \\| 10.| ------- |  /7.祝沟镇            \t|\t\t\n");
 29   printf("\t\t|\t      //   -------/------| 12.门村 | | 城 | 9.崔昭 |----------- |       \t|\t\t\n");
 30   printf("\t\t|\t    \\16.马戈庄镇 / 15.田庄 |   镇 |11.| 关 | 镇   |  8.云山镇  |        \t|\t\t\n");
 31   printf("\t\t|\t        ------------     镇 |-----| 李园---| /// / ------------         \t|\t\t\n");
 32   printf("\t\t|\t       \\ 17.民村镇 \\ ------- 19. |  -----------|21.麻兰镇  / 22. \\       \t|\t\t\n");
 33   printf("\t\t|\t        \\ --------  18.白埠| 同和 |-----| 20.香店 |- - - - - 古岘镇\\    \t|\t\t\n");
 34   printf("\t\t|\t           \\ 29.崔 \\   镇  |-- 30.琴兰镇 |----- 24.张戈庄 | 23.仁\\       \t|\t\t\n");
 35   printf("\t\t|\t             \\   家 \\ / /28.万/----------//---  25. ----- \\  兆 \\         \t|\t\t\n");
 36   printf("\t\t|\t               \\  集 \\    家 /   27.  //  26. \\  郭庄   \\ -------        \t|\t\t\n");
 37   printf("\t\t|\t                 \\ 镇 \\ 镇   /  蓝底镇 //  南 \\ --------                   \t|\t\t\n");
 38   printf("\t\t|\t                   ------ - ---- - ----//  村  \\                           \t|\t\t\n");
 39   printf("\t\t|\t                                         \\ 镇   \\                          \t|\t\t\n");
 40   printf("\t\t|\t                                           ----                          \t|\t\t\n");
 41 }
 42 void floy(){
 43   memset(path,-1,sizeof(path));
 44   for(int k=1;k<=MAX;k++)
 45     for(int i=1;i<=MAX;i++)
 46       for(int j=1;j<=MAX;j++){
 47         if(G[i][k]+G[k][j]<G[i][j]){
 48               G[i][j]=G[i][k]+G[k][j];
 49               path[i][j]=k;
 50         }
 51       }
 52 }
 53
 54 void get_way(int s,int e){
 55     if(path[s][e]!=-1){
 56         get_way(s,path[s][e]);
 57         get_way(path[s][e],e);
 58     }
 59     else way.push(e);
 60 }
 61 void initmapping(){
 62     maping[ 1]="新河镇"  ;maping[ 2]="灰埠镇"  ;maping[ 3]="长乐镇"  ;maping[ 4]="大泽山镇"  ;
 63     maping[ 5]="旧店镇"  ;maping[ 6]="大田镇"  ;maping[ 7]="祝沟镇"  ;
 64     maping[ 8]="云山镇"  ;maping[ 9]="崔昭镇"  ;maping[ 10]="城关"  ;maping[ 11]="李园"  ;
 65     maping[ 12]="门村镇"  ;maping[ 13]="店子镇"  ;maping[ 14]="张舍镇"  ;maping[ 15]="田庄镇"  ;
 66     maping[ 16]="马戈庄镇"  ;maping[ 17]="民村镇"  ;maping[ 18]="白埠镇";maping[ 19]="同和";
 67     maping[ 20]="香店";maping[ 21]="麻兰镇"  ;maping[ 22]="古岘镇"  ;maping[ 23]="仁兆镇"  ;
 68     maping[ 24]="张戈庄镇"  ;maping[ 25]="郭庄镇"  ;maping[ 26]="南村镇"  ;maping[ 27]="兰底镇"  ;
 69     maping[ 28]="万家镇";maping[ 29]="崔家集镇"  ;maping[ 30]="琴兰镇"  ;
 70 }
 71
 72 void initG()
 73 {
 74     memset(G,INF,sizeof(G));
 75     for(int i=1;i<=MAX;i++)G[i][i]=0;
 76     G[1][2]=G[2][1]=10;G[1][14]=G[14][1]=30;G[2][3]=G[3][2]=15;G[2][13]=G[13][2]=25;
 77     G[2][13]=G[13][2]=40;G[3][4]=G[4][3]=5;G[3][13]=G[13][3]=9;G[4][5]=G[5][4]=14;
 78     G[4][13]=G[13][4]=8;G[4][9]=G[9][4]=19;G[5][9]=G[9][5]=10;G[5][6]=G[6][5]=8;
 79     G[5][7]=G[7][5]=6;G[5][8]=G[8][5]= 16;G[6][7]=G[7][6]= 2;G[7][8]=G[8][7]= 3;
 80     G[8][9]=G[9][8]=14;G[8][21]=G[21][8]=14;G[8][22]=G[22][8]=13;G[9][13]=G[13][9]=40;
 81     G[9][10]=G[10][9]=6;G[9][20]=G[20][9]=9;G[9][21]=G[21][9]=14;G[10][13]=G[13][10]=21;
 82     G[10][11]=G[11][10]=3;G[10][20]=G[20][10]=5;G[11][13]=G[13][11]=10;G[11][12]=G[12][11]=3;
 83     G[11][19]=G[19][11]=6;G[11][20]=G[20][11]=10;G[12][13] =G[13][12]=20;G[12][14] =G[14][12]=21;
 84     G[12][15]=G[15][12]=8;G[12][18]=G[18][12]=22;G[12][19]=G[19][12]=30;G[13][14]=G[14][13]= 6;
 85     G[14][16]=G[16][14]=11;G[14][15]=G[15][14]=7;G[15][16]=G[16][15]=9;G[15][17]=G[17][15]= 10;
 86     G[15][18]=G[18][15]=13;G[16][17]=G[17][16]=21;G[17][18]=G[18][17]=31;G[17][29]=G[29][17]= 40;
 87     G[18][19]=G[19][18]=11;G[18][29]=G[29][18]=30;G[18][30]=G[30][18]=11;G[19][20]=G[20][19]= 4;
 88     G[19][30]=G[30][19]=7;G[20][21]=G[21][20]= 3;G[20][24]=G[24][20]= 9;G[20][30] =G[30][20]=17;
 89     G[21][22]=G[22][21]=7;G[21][24]=G[24][21]= 9;G[22][23]=G[23][22]= 18;G[23][24]=G[24][23]= 7;
 90     G[23][25]=G[25][23]=4;G[23][26]=G[26][23]= 20;G[24][30]=G[30][24]= 38;G[24][25] =G[25][24]=4;
 91     G[24][28]=G[28][24]=36;G[24][27]=G[27][24]=30;G[25][27]=G[27][25]= 14;G[25][26]=G[26][25]= 17;
 92     G[26][27]=G[27][26]=7;G[27][28]=G[28][27]= 19;G[28][29]=G[29][28]= 35;G[28][30]=G[30][28]= 14;G[29][30]=G[30][28]=15;
 93 }
 94 void show(){
 95   system("cls");
 96   printf("\t\t|\t                                                                          \t|\t\t\n");
 97   printf("\t\t|\t 平度智能导游 :小浩人                                                     \t|\t\t\n");
 98   printf("\t\t|\t                                                                          \t|\t\t\n");
 99   printf("\t\t|\t              走进平度,不会迷路,小浩人为你服务                             \t|\t\t\n");
100   printf("\t\t|\t                                                                          \t|\t\t\n");
101   printf("\t\t|\t                     1.地图一览                                          \t|\t\t\n");
102   printf("\t\t|\t                                                                          \t|\t\t\n");
103   printf("\t\t|\t                     2.查询地区信息                                       \t|\t\t\n");
104   printf("\t\t|\t                                                                          \t|\t\t\n");
105   printf("\t\t|\t                     3.智能问路系统                                      \t|\t\t\n");
106   printf("\t\t|\t                                                                          \t|\t\t\n");
107   printf("\t\t|\t                     4.查找附近的地区                                     \t|\t\t\n");
108   printf("\t\t|\t                                                                          \t|\t\t\n");
109   printf("\t\t|\t                     5.退出系统                                           \t|\t\t\n");
110   printf("\t\t|\t                                                                          \t|\t\t\n");
111   printf("\t\t|\t                                                                          \t|\t\t\n");
112   printf("\t\t|\t                                                                          \t|\t\t\n");
113   printf("\t\t|请按1~5键进行选择操作\t                                                        \t|\t\t\n");
114   printf("\t\t|\t                                                  本程序最终解释权归随风风衣所有|\n");
115 }
116 void process(){
117   for(int i=1;i<=4;i++){
118     system("cls");
119     printf("小浩人正在计算");
120     for(int j=1;j<=4;j++){
121       Sleep(100);
122       printf(".");
123     }
124   }
125   system("cls");
126 }
127 void errorhanding(){
128   printf("输入错误,请重新输入:\n");
129 }
130 void print(){
131   char order;
132 system("cls");
133 printf("\t\t|\t                                                                          \t|\t\t\n");
134 printf("\t\t|\t         小浩人辛辛苦苦把地图画在了终端对话框中                         \t|\t\t\n");
135 init();
136 printf("看不清小浩人画的地图,可以按O(字母)键打开地图图片,看明白了想返回主界面按回车键返回主界面:\n");
137 order=getchar();
138 if(order=='O'||order=='o')system("D:\map.jpg");
139 if(!(order=='O'||order=='o')){
140   system("cls");
141   show();
142 }
143 else{
144   getchar();
145   system("cls");
146   show();
147 }
148
149 }
150 void init_demand(int num){
151
152   printf("                         \n");
153   printf("_________________________\n");
154   printf("|                        |\n");
155   cout<<"|       "<<num<<maping[num]<<"          |       "<<information[rand()%10]<<endl;
156   printf("|                        |\n");
157   printf("|________________________|\n");
158
159 }
160 void demand(){
161   char order;
162   system("cls");
163     int num;
164     init();
165     printf("请您输入你要查询地区的标号:\n");
166     scanf("%d",&num);
167     init_demand(num);
168     printf("是否要继续查询 Y/N:\n");
169     getchar();//接受num的回车
170     scanf("%c",&order);
171     getchar();
172
173     if(order=='N'||order=='n'){
174        show();
175       return;
176     }
177     else demand();
178 }
179 void seekpaths(){
180   int Begin,End;
181   system("cls");
182   init();
183   printf("请输入你现在所在的位置的编号:\n");
184     scanf("%d",&Begin);
185     cout<<"您输入的地点是:"<<maping[Begin]<<endl;
186   printf("请您输入你要去的位置的编号:\n");
187     scanf("%d",&End);
188     getchar();
189     cout<<"您输出的终点是:"<<maping[End]<<endl;
190     printf("按回车键,小浩人就要开始算了:\n");
191     getchar();
192   process();
193   printf("\n\n\n");
194   cout<<"  小浩人   经过详细地计算,您开始的地点是   "<<maping[Begin]<<"   您结束的地点是   "
195   <<maping[End]<<"   ,全程一共    "<<G[Begin][End]<<"   公里\n\n\n";
196   printf("具体路径为:\n\n");
197   way.push(Begin);
198   get_way(Begin,End);
199   printf("Begin:\n\n");
200   printf("      ");
201
202   cout<<maping[way.front()];
203   way.pop();
204   while(!way.empty()){
205     cout<<"————>>"<<maping[way.front()];
206     way.pop();
207   }
208   printf("\n\n\n");
209
210   printf("按回车键返回主菜单:\n");
211   getchar();
212   system("cls");
213   show();
214 }
215 void seeks(){
216     system("cls");
217     init();
218     int order,m;
219     printf("请您输入你所在位置的编号:\n");
220     scanf("%d",&order);
221     cout<<"您输入的地点是  "<<maping[order]<<"。\n";
222     printf("请您输入公里数,在这个距离能够到达的地点:\n");
223     scanf("%d",&m);
224     getchar();
225     printf("按回车键,小浩人就要开始算了:\n");
226     getchar();
227     for(int i=1;i<=30;i++)
228         if(G[order][i]!=0&&G[order][i]<=m)nearby.push(i);
229     process();
230     printf("\n\n\n");
231     cout<<"小浩人经过详细地计算,您开始的地点是   "<<maping[order]<<"   在"<<m
232 <<"公里内,能够到达以下地点"<<endl<<endl<<endl;
233       while(!nearby.empty()){
234         cout<<nearby.front()<<". "<<maping[nearby.front()]<<"       距离:"<<G[order][nearby.front()]<<"公里"<<endl;
235         nearby.pop();
236       }
237       char order_;
238       printf("是否要继续查询 Y/N:\n");
239       //接受m的回车
240       scanf("%c",&order_);
241       getchar();
242       if(order_=='N'||order_=='n'){
243          show();
244         return;
245       }
246       else seeks();
247 }
248 void exits(){
249   printf("期待与你下次相见      bey  bey~");
250   printf("\n\t\t\t\t                  (按回车键确认退出)\n");
251   getchar();
252   exit(0);
253 }
254 void changecolor(){
255   Sleep(100);
256   system("color 0B");
257   Sleep(100);
258   system("color 01");
259   Sleep(100);
260   system("color 0C");
261   Sleep(100);
262   system("color 03");
263   Sleep(100);
264   system("color 06");
265   Sleep(100);
266   system("color 02");
267   Sleep(100);
268   system("color 0F");
269 }
270 int main(){
271 //system("mode con cols=120 lines=30");
272 show();
273 initG();
274 floy();
275 initmapping();//初始对应信息(城市编号)
276 initinformation();//初始化城市信息
277 changecolor();
278 char order;
279 while(scanf("%c",&order)==1){
280   getchar();
281   switch (order)
282   {
283     case '1':print();break;
284     case '2':demand();break;//查询地点信息
285     case '3':seekpaths();break;
286     case '4':seeks();break;//查询给定距离的地点
287     case '5':exits();break;
288     default:errorhanding();
289   }
290 }
291 process();
292   return 0;
293 }

转载于:https://www.cnblogs.com/suifengfengyi/p/11137177.html

大二上学期做的不入眼的导航系统。相关推荐

  1. 大一下 暑假 大二上学期规划

    还有几天暑假就要结束鸟~~~~~~~~~国际惯例,做个样子,写个总结. 大一这一年过得很快,出乎我意料的快,快到我觉得好像什么也没有体验过就结束了. 我的大一,平淡,真的很平淡,没有什么波澜.甚至让我 ...

  2. 大二上学期(回顾与展望)

    大二上学期(回顾与展望)----写在大二下学期开学的前一天 想起去年此时,壮志满满,感觉自己可以一天工作25小时保持高效,做事从不拖拉,然而现在却非常墨迹,寒假开始要完成的事拖到现在,或许明年也不会再 ...

  3. 大二上学期总结计算机专业,计算机学生的大二第二学期自我总结-自我总结

    计算机学生的大二第二学期自我总结-自我总结 一个学期很快就过去了,但这次的心情与以前有很大不同,归心似箭的心情早被考试不理想的惆怅所掩盖.想想若是考的不好如何向父母交代?尤其这次我为了应付英语四级着实 ...

  4. 大二上学期计算机学什么,大二上学期学习计划

    时间飞逝,不知不觉中就度过了大一,从一个新生,变成了学姐.整整一年看似忙忙碌碌,实则收获甚浅.由此我总结出了以下几个原因:学习目的不明确:学习时间安排不合理:学习效率低下等.针对上学年自己所得的经验教 ...

  5. 大二上学期C++总结

    前言 记录2020大二上半学期C++所学知识,早就写好了.一个字"懒" 第一个C++程序 •编译器:g++ –也可以用gcc,但要加上-lstdc++ •扩展名:.cpp/.cc/ ...

  6. 大二上学期的学习感想

    大二学习数据结构课程采用了翻转课堂的模式来学习,虽然这只是刚开始使用,但是由于老师和同学的配合,我觉得还是比较成功的.每周课前的学习方案和重要知识点的学习视频老师都会发布在蓝墨云班课上,让我们进行自主 ...

  7. 大二上学期 自我总结

    时间如白驹过隙,转眼间大二这一学期就嗖的一下就到尾声了,同样的大三的学长学姐们要么忙着去顶岗实习,要么就是努力备考专转本,而身处中间的我们,也就名正言顺的成为了校园的老油条.三年即逝,我们要珍惜在校的 ...

  8. 大二上学期 学习计划

    我感觉我大一自己也过的浑浑噩噩的,除了刷了绩点什么事情都没有干.而且绩点也不是太高.找到自己感兴趣的方向,去学习吗?谁知道以后会怎么样呢.暑假还剩下二十多天,还是和以前一样,明天就回学校吧.学习c++ ...

  9. 【大学复习】终极版计算机网络复习提纲自制(大二上学期)

    ▪概述: 1.p2计算机网络的两大基本功能: 连通性和共享性 2.p29网络协议三个基本要素:语义.语法与同步: 语法:是用户数据与控制信息的结构与格式,以及数据出现的顺序的意义: 语义:用于解释比特 ...

最新文章

  1. 揭开Annotation的面纱
  2. 单片机中SDZ是什么意思_合泰单片机ADC转换程序
  3. allocWithZone
  4. LeetCode 92 ——反转链表 II
  5. 最近邻插值、双线性插值、双三次插值
  6. javascript创建类_如何使用JavaScript创建吹气效果
  7. linux shell 执行目录,bash shell脚本执行的几种方法
  8. join丢失数据_15、Hive数据倾斜与解决方案
  9. 51c语言编程入门教程,51单片机C语言入门教程
  10. 脚本自动化互相阅读文章教程
  11. ildasm ilasm
  12. 新手用python写牛牛扑克牌玩法
  13. python南京招聘现状_岗位招聘情况分析之---Python
  14. 手机计算机怎样可以整分数计算,分数计算器设计
  15. Bazel 与 gtest:构建一个最简单的测试驱动开发环境
  16. 位置不可用无法访问 chkdsk无法修复的文件恢复方法
  17. 基于QT实现的职工住房管理系统
  18. 干货来了,这些物联网基础知识你了解吗
  19. 速卖通关键词挖掘工具_利用SEO工具挖掘同行竞争对手关键词数据快速布局网站词库...
  20. 黑马程序员_Java_交通灯管理

热门文章

  1. 探讨.NET Core数据进行3DES加密和解密问题
  2. 中兴通讯首席科学家谈5G现状
  3. oracle 11g数据库启动错误总结
  4. .Net应该学什么怎么学(三)
  5. Apache Log4j 学习笔记
  6. 巧用事件查看器维护服务器安全
  7. 专访:Vmware眼中的虚拟化
  8. 分析外星人计算Pi的程序
  9. colab如何通过<>来直接加入相对应的代码段呢?模块化代码操作,真好
  10. offer from university of edinburgh