版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.课程设计报告课程名称数据结构课程设计题目校园导航指导教师设计起始日期5.95.16学院计算机学院系别计算机科学与工程学生姓名专业技术资料.班级 /学号成绩一、需求分析本次实验设计的任务是实现一个简易的北京信息科技大学的校园导航平面图。设计要包括下列要求 :设计你的学校的平面图,至少包括10 个以上的场所 ,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径 )。本课题实现校园多个场所(至少 10 个)的最短路径求解。( 1)输入的形式和输入值的范围:本系统主要数据类型为字符型char 及整形 int,char型主要包括单位编号 ,单位名称 ,单位简介
2、 ,功能编号 ;输入功能编号与单位编号进行操作。(2 )输出的形式 :输出则通过已有的信息数据,通过相关的操作输出相应信息。(3) 程序所能达到的功能 :本程序可供任何人使用,主要功能 1.浏览各单位及简介; 2.查看所有游览路线; 3.选择出发点和目的地求出最佳路径; 4.查看某一单位信息。( 4)测试数据 :包括正确的输入及其输出结果和含有错误的输入及其输出结果。a.首先看到的是校园导航系统的菜单:b 查看浏览路线等待输入起始景点:专业技术资料.C 选择出发点与目的地等待输入起始景点与目的地编号:d 参看景点信息等待输入景点编号:二、概要设计本系统包含一个文件。设计分有菜单,显示信息 ,弗
3、洛伊德算法,迪杰斯特拉算法,查找景点信息等程序段。主程序为整系统的入口处,菜单主要实现显示系统功能,显示信息主要实现显示景点信息,弗洛伊德算法主要实现求两景点之间最短路径,迪杰斯特拉算法实现求两景点之间最短路径,查找景点信息主要实现显示某一景点信息。系统首先通过主程序调用voidmain();进入系统主菜单函数,根据用户的选择可分别进入 : 1.浏览各景点及简介; 2.查看所有游览路线; 3.选择出发点和目的地求出最佳路径;4.查看景点信息 ; 5.退出系统 。选择 “浏览各景点及简介”项,显示十个景点的有关信息,包括景点编号,景点名称 ,景点简介 。选择 “查看所有游览路线”项,会进入输入起
4、始景点编号的界面,输入正确编号后会显示起始景点到其余九个景点的最短路线的方案。选择 “选择出发点和目的地”项,会进入输入起始景点与目的景点的界面,输入起始景点与目的景点 ,并有空格隔开就得到两景点之间的最佳路径。选择 “查看景点信息”项,会进入输入要查看的景点的界面,如入后会显示该景点的有关信息 。选择 “退出系统 ”项, 就会退出程序。专业技术资料.三、详细设计( 1)十三个单位的图0: 前门1:图书馆2:教二楼3:实验楼4:操场5:教一楼6:食堂7: 水房8 :学一公寓9 :学二公寓专业技术资料.10:学三公寓11:学四公寓12:后门( 2 )主程序流程图 :( 3)弗洛伊德的算法:voi
5、d Floyd(MGraph *G)int v,u,i,w,k,j,flag=1,p101010,D1010;/定义参数for(v=0;v<G->vexnum;v+)for(w=0;w<G->vexnum;w+)Dvw=G->arcsvw.adj;for(u=0;u<G->vexnum;u+)专业技术资料.pvwu=0;if(Dvw<INFINITY)pvwv=1;pvww=1;for(u=0;u<G->vexnum;u+)for(v=0;v<G->vexnum;v+)for(w=0;w<G->vexnum;w
6、+)if(Dvu+Duw<Dvw)Dvw=Dvu+Duw;for(i=0;i<G->vexnum;i+)pvwi=pvui|puwi;while(flag)cout<<"请输入出发点和目的地的编号(用空格隔开 ) :"cin>>k>>j;if(k<0|k>G->vexnum|j<0|j>G->vexnum)/ 判断输入的景点编号正确与否cout<<" 景点编号不存在 !请重新输入出发点和目的地的编号 :" cin>>k>>j;if
7、(k>=0&&k<G->vexnum&&j>=0&&j<G->vexnum)flag=0;cout<<G->;/ 输出景点名称for(u=0;u<G->vexnum;u+)if(pk ju&&k!=u&&j!=u)/ 输出路线cout<<"->"<<G->;cout<<"->"<<G->vexsj.n
8、ame;cout<<"总路线长 "<<Dkj<<endl;/ 输出总路线长度四、调试分析( 1 ) 在程序设计中遇到了输出景点信息的表不整齐,用 setw () 解决了 ;默认的界面太小 ,不能完整的看到输出信息 ,用了 system("mode con: cols=100 lines=40")命令语句设置了行数和列数 。(2 )经验和体会经过一段时间来的努力 ,终于初步实现系统功能,但肯定还存在不少漏洞。这是我们第三次做课程设计,也是第三次编写一个比较完整和具有一定功能的的系统代码,第二次几个人合作制作系统,制作过程
9、中存在储多的不足,遇到过许多的困难 ,曾经灰心丧气过,但是最终还是坚持了下来 ,虽然做得不怎么样,但我们已经努力地去做了,由于基础专业技术资料.也不怎么扎实,所以困难会比其它组更多更艰巨。刚开始做系统缺乏全局观念,分工也不是很合理 ,做得很零碎 ,所以在组合的时候也出现了很多问题。五、使用说明和测试结果打开系统 ,首先会进入系统的主菜单:1.浏览各景点及简介2.查看所有游览路线3.选择出发点和目的地4.查看景点信息5.退出系统用户可以进行如下操作:1、如果你想浏览各景点及简介的话,请输入 “1 ”,并回车 。 此时界面上将显示出各景点的编号 、名称及其简介 。2、如果你想查看某一景点的所有游览
10、路线,可选择 2 操作 。 输入 “2”,并回车 。 此时,系统会提示你输入某景点的编号。输入编号后 ,回车 ,便可以看到该景点的所有游览路线 。若输入的景点编号错误就会有提示重新输入。3、如果你想查看两个景点之间的最短路线的,可选择 3 操作 。 输入 “3”,并回车 。 此时,系统会提示你要输入起始景点与终点的编号。输入编号后 ,回车 ,此时 ,便可以见到这两个景点之间的最短路径。4、如果你想查看具体某些景点的简介及信息,可以选择 4 操作 。 输入 “4”,并回车 。 此时,系统会提示全部景点的对应的编号,选择你要查看的景点信息,输入其编号 ,回车 ,此时 ,屏幕上将会显示出该景点的各种
11、信息。若输入的景点编号错误就会有提示重新输入。专业技术资料.5 、在主菜单键入 “5”,退出程序 。测试结果1、 菜单界面2、 进入 “浏览各景点及简介”后,输出景点信息的界面。3、 进入 “查看所有游览路线”,显示输出景点编号为0 的景点到其余九个景点的最佳路线。4、 进入 “选择出发点和目的地”,输入出发点1 和目的点9 后输出的的最佳路线的界面。5、 进入 “查看景点信息 ”,输入要查看的景点编号,输出景点信息的界面。专业技术资料.6、 输入要查询的景点编号错误,提示重新输入。7、 退出程序界面 。六、心得体会做一个系统之前还应该做好全面的安排,对一个系统的整个流程及功能实现有一个很好的
12、统筹 ,几个人合作的功能可拆才拆,不可则由一个人主要负责,其它人帮忙思考,出意见 ,做系统之前几个人必须先做对系统做一次较详细的探讨研究,然后才开始分工 ,一个阶段后组员应互相交流情况,以达到一致 。 另在遇到困难时组员不能解决,应查资料或问其它懂的同学,参考一下意见,再结合自己的想法,最后实现自己想实现的功能。七、附录#defineINFINITY10000/* 无穷大 */#defineMAX_VERTEX_NUM40#defineMAX 40#include <stdlib.h>#include <string.h>#include<iostream>
13、using namespacestd;#include<iomanip>typedefstruct ArCellint adj;/ 路径长度ArCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM;typedefstruct/ 图中顶点表示主要景点,存放景点的编号、名称、简介等信息 ,专业技术资料.char name30;int num;char introduction100;/ 简介infotype;typedefstructinfotype vexsMAX_VERTEX_NUM;AdjMatrix arcs;int vexnum,arcnum;
14、MGraph;MGraph b;MGraph InitGraph(void );void Menu( void );void Browser(MGraph *G);void ShortestPath_DIJ(MGraph * G);void Floyd(MGraph *G);void Search(MGraph *G);/*主函数 */void main( void )system( "color 1f");system( "mode con: cols=100 lines=40");int i;b=InitGraph();Menu();cin>&
15、gt;i;while (i!=5)switch (i)case 1:system( "cls" );Browser(&b);Menu();break ;case 2:system( "cls" );ShortestPath_DIJ(&b);Menu();break ;case 3:system( "cls" );Floyd(&b);Menu();break ;case 4:system( "cls" );Search(&b);Menu();break ;case 5:exit(1);
16、 break ;default :break ;cin>>i;专业技术资料./*/*定义景点编号 ,名称及简介 */MGraph InitGraph(void )MGraph G;int i,j;G.vexnum=10;/ 十个景点G.arcnum=14;/ 邻接矩阵for (i=0;i<G.vexnum;i+)G.vexsi.num=i;/ 各景点的代码 ,名称及简介strcpy(G.," 前门");strcpy(G.roduction,"面南 .对面为北京外国专家大厦");strcpy(G.ve
17、, " 图书馆 " );strcpy(G.roduction,"藏书几十万册 ,设施良好 ,一二楼均有阅览室");strcpy(G., " 教二楼 " );strcpy(G.roduction,"学校的主要教学楼 ,共六层 ,有多个专业实验");strcpy(G., " 实验楼 " );strcpy(G.roduction,"紧邻教二楼 ,共七层 ,主要为公共实验室 ,六层有通
18、宵自习室");strcpy(G.," 操场");strcpy(G.roduction,"全新塑胶跑道 ,中间为人工草皮足球场,排球场和篮球场");strcpy(G., " 教一楼 " );strcpy(G.roduction,"学校各机关单位办公楼和双语教室");strcpy(G.," 食堂");strcpy(G.roduction,"标准食堂 ,两层,清洁卫生&
19、quot;);strcpy(G.," 水房");strcpy(G.roduction,"配备自动刷卡系统");strcpy(G.," 学一公寓 ");strcpy(G.roduction,"光电通信学院男生公寓");strcpy(G.," 学二公寓 ");strcpy(G.roduction,"女生公寓");strcpy(G., "
20、学三公寓 " );strcpy(G.roduction,"计算机学院男生公寓");strcpy(G., "学四公寓 " );strcpy(G.roduction,"大一新生公寓");strcpy(G.,"后门 ");strcpy(G.roduction,"面北,对面有便利的小超市");for (i=0;i<G.vexnum;i+)for (j=0;j<G.vexnum;j
21、+)G.arcsij.adj=INFINITY;/ 各景点之间的距离 ,没有的均为无穷大G.arcs01.adj=50;G.arcs02.adj=100;专业技术资料.G.arcs15.adj=20;G.arcs16.adj=75;G.arcs23.adj=10;G.arcs25.adj=60;G.arcs34.adj=20;G.arcs411.adj=30;G.arcs56.adj=30;G.arcs67.adj=10;G.arcs78.adj=20;G.arcs89.adj=10;G.arcs910.adj=20;G.arcs1012.adj=120;G.arcs1112.adj=150;
22、for (i=0;i<G.vexnum;i+)for (j=0;j<G.vexnum;j+)G.arcsji.adj=G.arcsij.adj;return G;/*/*主菜单 (显示输入提示 ) */void Menu()cout<< "北京信息科技大学大学导游图" <<endl;cout<< ""<<endl;cout<< "1.浏览各景点及简介"<<endl;cout<< "2.查看所有游览路线"<<e
23、ndl;cout<< "3.选择出发点和目的地"<<endl;cout<< "4.查看景点信息"<<endl;cout<< "5.退出系统"<<endl;cout<< ""<<endl;cout<< "Option-:"/*显示景点编号 、名称、简介 */void Browser(MGraph *G)int v;cout<< " "<<endl;
24、cout<< " 编号 景点名称简介"<<endl;for (v=0;v<G->vexnum;v+)cout<< " "<<G->vexsv.num<<setw(5)<<" "<<G-><<setw(10)<<" "<<G->roduction<<setw(3)<<" "<<
25、endl;cout<< " 专业技术资料. "<<endl;/*迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,v0为起点*/void ShortestPath_DIJ(MGraph * G)int v,w,i,min,t=0,x,flag=1,v0;int final20, D20, p2020;cout<< " "<<endl;cout<< " 编号 景点名称简介"<<endl;for (v=0;v<G->vexnum;v+)cout<&
26、lt; " "<<G->vexsv.num<<setw(5)<<" "<<G-><<setw(10)<<" "<<G->roduction<<setw(3)<<" "<<endl;cout<< " "<<endl;while (flag)cout<< "请输入一个起始景点编号
27、:" cin>>v0; if(v0<0|v0>G->vexnum)cout<<" 景点编号不存在!请重新输入景点编号:"cin>>v0;if(v0>=0&&v0<G->vexnum)flag=0;for (v=0;v<G->vexnum;v+)finalv=0;Dv=G->arcsv0v.adj;for (w=0;w<G->vexnum;w+)pvw=0;if(Dv<INFINITY)pvv0=1;pvv=1;Dv0=0;finalv0=1;
28、for (i=1;i<G->vexnum;i+)专业技术资料.min=INFINITY;for (w=0;w<G->vexnum;w+)if(!finalw)if(Dw<min)v=w;min=Dw;finalv=1;for (w=0;w<G->vexnum;w+)if(!finalw&&(min+G->arcsvw.adj<Dw)Dw=min+G->arcsvw.adj;for (x=0;x<G->vexnum;x+)pwx=pvx;pww=1;for (v=0;v<G->vexnum;v+)
29、if(v0!=v) cout<<G->;for (w=0;w<G->vexnum;w+)if(pvw&&w!=v0) cout<<"->" <<G->;t+;if(t>G->vexnum-1&&v0!=v) cout<<"总路线长 "<<Dv<<endl;/*Floyd函数 */void Floyd(MGraph *G)int v,u,i,w,k,j,flag=1,p1
30、01010,D1010;cout<< " "<<endl;cout<< " 编号 景点名称简介"<<endl;for (v=0;v<G->vexnum;v+)cout<< " "<<G->vexsv.num<<setw(5)<<" "<<G-><<setw(10)<<" "<<G->ro
31、duction<<setw(3)<<" "<<endl;cout<< " "<<endl;for (v=0;v<G->vexnum;v+)for (w=0;w<G->vexnum;w+)Dvw=G->arcsvw.adj;专业技术资料.for (u=0;u<G->vexnum;u+)pvwu=0;if(Dvw<INFINITY)pvwv=1;pvww=1;for (u=0;u<G->vexnum;u+)for (v=0;v<G-&
32、gt;vexnum;v+)for (w=0;w<G->vexnum;w+)if (Dvu+Duw<Dvw)Dvw=Dvu+Duw;for (i=0;i<G->vexnum;i+)pvwi=pvui|puwi;while (flag)cout<< "请输入出发点和目的地的编号(用空格隔开 ) :"cin>>k>>j;if(k<0|k>G->vexnum|j<0|j>G->vexnum)cout<< "景点编号不存在! 请重新输入出发点和目的地的编号:"cin>>k>>j;if(k>=0&&k<G->vexnum&&j>=0&&j<G->vexnum)flag=0;cout<<G->;for (u=0;u<G->vexnum;u+)if(pkju&&k!=u&&j!=u)cout<<&q
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创新与实践并重:2024IE工程师培训
- 2024年版:安塞腰鼓历史与发展
- Zemax光学艺术:2024年设计新潮流
- 第47届世界技能大赛江苏省选拔赛园艺项目技术工作文件
- 教案中的互联网元素:2024年的教学实践
- 《消费行为学》教案:以伦理学为视角面向2024年
- 2024年Zemax光学教程:掌握行业领先技术
- 部编版七年级下册语文期末复习学案
- 面向2024:《削铅笔》新教学模式探讨
- 2024年《画漫画》教案:探索漫画创作新领域
- 文明礼仪主题班会课件(共23张)
- 航站楼管理部《机场使用手册》实施细则
- 脑卒中基本知识课件
- 高效沟通与管理技能提升课件
- 消防维保方案 (详细完整版)
- 四年级上册英语课件- M3U1 In the school (Period 3 ) 上海牛津版试用版(共15张PPT)
- 档案馆建设标准
- 高边坡支护专家论证方案(附有大量的图件)
- 苏教版五年级上册数学试题-第一、二单元 测试卷【含答案】
- 人员定位矿用井口唯一性检测系统
- 电力系统数据标记语言E语言格式规范CIME
评论
0/150
提交评论