还剩23页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
校园导航系统-数据结-CAL-FENGHAL-YICAI-CompanyOne1•2••-政要允岱j安科壮g.反除钱恰快臼支打像)刊囿器,后虢为仰留臀合众☆会会r☆食六会争区坟里会々■*!也季枝.tt*1)[程口吸电心3帽柜潜富忠飘揶岫3阕觐,I・〃R初■/o^H*inaW•安举帽《化工12X t・可育慢1,由二起拄叫施1«tS器c■i”褐,二.,号W0至,生g公孽H生二,x e承5上河里«asw»*■二学生*中n)$8»i«.ii.
12.1强¥竺£*RX,沁学生二落5x”W聿针/M14,1%,lbaG©玄布算避意滥制m3导航功能1——景点信息介绍•E:\MicrosoftV^ualStudio\school\D♦bug\Creat.cxce*I)盘点信息直铝一两点聂超超导电_〜«25,某点乳茸质琳有去的最显距寓~3tQX门RRP■PEE SRER fPJP^p hglRR JRPPP件久腌中工、:口军:验训练中心物公德行政办礴号教卒7熟用拄,知我号我学去T「算6打剧翡雅建鼎懿赣嚣汁叽.通铅帚):管理学院和档案管理1甑%藕率号教学校(建工):建工学房
2.intewo^a识的海洋M徐机检机械学院M4肓tn,;磁教室W窗:失趟底的效逝学三定金没有空调夏天有火炉之称,亨海,方霾嬖以及零食住场台西不理释7[;篮I卡所场艮中地不向好吃啊至生食堂食概浇瀛地方漫萼的瑜魏泳池«遁泳池的水1s叶啊什么都升西科辛生公寓学有,15/6之,AAaacaAtr***A导航功能2——两点最短距离导航测试结果如下
58.讣,23P«i人起々丸终占代鼻i.三格分开1,团鹤径1一川门一小办2假一江用讯“中£一>,7号傲楼,电笈.N帙)一x,E铲户?金团一xs号傲午杵(管理.1密里)-X4号a中楼(能原腌睁M,■
1.鞋盘导险*.返回顼单R士专海人犯R*□终451*;.注分外■口.公的科串自钝》一》“•依R⑴CJM・小肉一”一R窣怜(人外)Jeftx能摄[.做及易位诋居主单中瑁户点嚎卑b闻孽迷者誓必力一纨:办公幡一即)-渝71OW■》】工行力01>2阿卜学嗜(人弊〉・》”寻行中枪通信)“7<我丁仲(期$.据m->工IT训笏中心>Zlfe格”7g于中(/十)X力,棒5”>3三教七一”3养学中(A*)一”6启代卡恃(访日机.>,W«F中(A*)一”$W抬学楼(廿H矶.通信〉一”内内学恃I电检.«<•片用皿(A*)通信)一》头酢归〃号啦学号(苫中)>口/但>u-也牙与代泞雌)《化工.tt14也定)一”2金的享梏4tX.雌)一”?金泳辛精4tT.4U c«T“2金龄学像(化T.猫£--・二・学生LK第一学-4«fr匕2»羊生r7六.七号竽生公害>田径坛一>9济学林(方半娥生)一”*y*号多A导航功能3——某点到其他所有点的距离««0X*6*:fft%
6.总结经过一个学期对数据结构课程的学习,我能够掌握数据结构所教会我的对待问题的方法,以及遇到问题时如何抽象出一个合理的数据结构类型数据结构教会我的非但是每一个算法,更多的是如何解决问题的方法例如,在本次课程设计中我做的是校园导航系统,对于校园导航问题的关键是最短路径的问题,在教材中有算法一迪杰斯特拉求最短路径问题,在花了几天时间后,终于能够将算法的整个流程弄清晰,在对各个定点的存储上采用邻接矩阵的方法,在寻觅各个点到其他所有点的关系的时候更为方便直观在课程设计中遇到的一系列问题都能够在老师和同学的指导下及时解决最后,感谢一年来为我们付出努力的老师们,感谢给过我指导意见的同学们,在这一年对数据结构的学习中,真的收获颇多,为我以后继续学习计算机的基础课程打下了坚实的基础
7.附录源代码
7.1Creat.cpp#includcstdio.hSdefine MAX V36ftdefine INFINITY32767typedef structchar*vexs[MAX_V];int arcs[MAX_V][MAX_V];int vexnum,arcnum;}MGraph;int CreateUDN(MGraph G)int i=0,j=0;G.vexnum=36;G.arcnum=49;G.vexs
[0]=〃校门;G.vexs[l]二〃工程训练中心〃;G.vexs
[2]二〃校办公楼〃;G.vexs
[3]:〃17号教学楼(电控,继教)〃;G.vexs
[4]=〃16号教学楼(计算机,通信)〃;G.vexs
[5]=〃2号教学楼(人外)〃;G.vexs
[6]=〃1号教学楼(艺术)〃;G.vexs
[7]二〃15号教学楼(管理,档案室)〃;G.vexs
[8]=〃14号教学楼(能源)〃;G.vexs
[9]=〃3号教学楼〃;G.vexsElO]=〃实验楼〃;G.vexsEll]=13号教学楼(建工)〃;G.vexs
[12]=〃12号教学楼(化工,材料)G.vexs
[13]=〃11号教学楼(地环,测绘);G.vexs
[14]=〃图书馆〃;G.vexs
[15]=10号教学楼(机械)〃;G.vexs
[16]=〃9号教学楼(阶梯教室)〃;G.vexs
[17]=〃体育馆〃;G.vexs
[18]=〃第二俱乐部〃;G.vexs
[19]=〃综合楼,校医院〃;G.vexs
[20]=〃一,二号学生公寓〃;G.vexs
[21]=〃第一学生食堂〃;G.vexs
[22]=〃教师公寓〃;G.vexs
[23]=〃三,四,五号学生公寓〃;G.vexs
[24]=〃水房〃;G.vexs
[25]=〃超市;G.vexs
[26]=田径场〃;G.vexs
[27]=〃六,七号学生公寓〃;G.vexs
[28]=〃体育场〃;G.vexs
[29]=〃第二学生食堂〃;G.vexs
[30]=〃浴室;G.vexs
[31]=〃后勤用房〃;G.vexs
[32]=十,~\—,十二,十三号学生公寓〃;G.vexs
[33]=〃游泳池〃;G.vexs
[34]二〃十四,十五,十六号学生公寓〃;G.vexs
[35]=〃八,九号学生公寓〃;fori=0;KG.vexnum;i++〃初始化路径长度forj=0;jG.vexnum;j++G.arcs[i][j]=0;elseG.arcs[i][jINFINITY;G.G.arcs
[0]
[2]=G.arcs
[2]
[0]=900;arcs
[5]
[6]=G.arcs
[6]
[5]=180;G.arcs[l]
[2]=G.arcs
[2]
[1]=340;G.arcs
[6]
[9]=G.arcs
[9]
[6]=250;G.arcs[l]
[3]=G.arcs
[3]
[1]=80;G.arcs
[6]
[10]G.arcs
[10]
[6]=50;G.arcs
[2]
[5]=G.arcs
[5]
[2]=240;G.arcs
[7]
[8]=G.arcs
[8]
[7]=80;G.arcs
[2]
[6]=G.arcs
[6]
[2]=300;G.arcs
[5]
[9]=G.arcs
[9]
[5]=180;G.G.arcs
[3]
[4]=G.arcs
[4]
[3]=80;arcs
[8]
[11]=G.arcs[l1]
[8]=110;G.G.arcs
[4]
[5]=G.arcs
[5]
[4]=340;arcs
[9]
[10]=G.arcs
[10]
[9]=180;G.G.arcs
[4]
[7]=G.arcs
[7]
[4]=80;arcs
[9]
[14]=G.arcs
[14]
[9]=220;G.arcs
[10]
[14]=G.arcs
[14]
[10]=240;G.arcs[ll]
[12]=G.arcs
[12]
[11]=80;G.arcs
[12]
[13]=G.arcs
[13]
[12]=80;G.arcs
[13]
[14]=G.arcs
[14]
[13]=350;G.arcs
[13]
[15]=G.arcs
[15]
[13]=80;G.arcs
[14]
[19]=G.arcs
[19]
[14]=70;G.arcs
[14]
[18]=G.arcs
[18]
[14]=90;G.arcs
[14]
[20]=G.arcs
[20]
[14]=50;G.arcs
[14]
[22]=G.arcs
[22]
[14]=45;G.arcs
[15]
[16]=G.arcs
[16]
[15]=80;G.arcs
[16]
[18]=G.arcs
[18]
[16]=300;G.arcs
[17]
[18]=G.arcs
[18]
[17]=20;G.arcs
[18]
[19]=G.arcs
[19]
[18]=10;G.arcs
[19]
[20]=G.arcs
[20]
[19]=15;G.arcs
[20]
[21]=G.arcs
[21]
[20]=10;G.arcs
[21]
[23]=G.arcs
[23]
[21]=20;G.arcs
[21]
[22]=G.arcs
[22]
[21]=43;G.arcs
[21]
[25]=G.arcs
[25]
[21]=26;G.arcs
[23]
[25]=G.arcs
[25]
[23]=30;G.arcs
[25]
[30]=G.arcs
[30]
[25]=18;G.arcs
[30]
[31]=G.arcs
[31]
[30]=20;G.arcs
[26]
[16]=G.arcs
[16]
[26]=10;G.arcs
[26]
[27]=G.arcs
[27]
[26]=50;G.arcs
[27]
[29]=G.arcs
[29]
[27]=30;G.arcs
[27]
[28]=G.arcs
[28]
[27]=40;G.arcs
[29]
[30]=G.arcs
[30]
[29]=15;G.arcs
[29]
[32]=G.arcs
[32]
[29]=70;G.arcs
[28]
[32]=G.arcs
[32]
[28]=100;G.arcs
[28]
[35]=G.arcs
[35]
[28]=100;G.arcs
[28]
[34]=G.arcs
[34]
[28]=160;G.arcs
[33]
[34]=G.arcs
[34]
[33]=35;G.arcs
[34]
[35]=G.arcs
[35]
[34]=60;G.arcs
[34]
[26]=G.arcs
[26]
[34]=100;return1;Short_path.cpp#includestdio.h#define MAX_V36^define INFINITY32767typedef structchar*vexs[MAX V];int arcs[MAX_V][MAX_V];int vcxnum,arcnum;}MGraph;extern have
[36];void ShortPathMGraph G,int v0,int p[MAX_V][MAX_V],int d[]int v,w,i,j,min;int final[MAX_V];int k=l;forv=0;vG.vexnum;++v{〃初始化final[v]=0;d[v]=G.arcs[v0-l][v];forw=0;wG.vexnum;++wp[v][w]=0;ifd[v]INFINITY p[v][vO-l]=l;p[v][v]=l;d[vO-l]=O;final[vO-l]=l;have[O]=vO-l;fori=l;iG.vexnum;++i{//其余的vexnum-1个顶点min=INFINITY;for w=0;wG.vexnum;++wif!final[w]ifd[w]min v=w;min=d[w];final[v]=l;have[k]=v;k++;for w=0;wG.vexnum;++wif!final[w]min+G.arcs[v][w]d[w]cl[w]=min+G.arcs[v][w];forj=0;jG.vexnum;j++p[w][j]=p[v][j];p[w][w]=l;Menu,cpp#includestdio.hvoid menuprintf☆☆☆☆☆☆☆☆☆☆☆☆导航主菜单☆☆☆☆☆☆☆☆☆☆☆☆、/;printf☆(D校门
(2)工程训练中心⑶校办公楼☆\n〃);printf☆
(4)17号教学楼(电控,继教)
(5)16号教学楼(计算机,通信)
(6)2号教学楼(人外)☆\n〃);printf〃☆
(7)1号教学楼(艺术)
(8)15号教学楼(管理,档案室)
(9)14号教学楼(能源)☆\n〃);printf〃☆
(10)3号教学楼
(11)实验楼1213号教学楼(建工)☆\n〃);printf〃☆
(13)12号教学楼(化工,材料)
(14)11号教学楼(地环,测绘)
(15)图书馆☆\n〃);printf〃☆
(16)10号教学楼(机械)
(17)9号教学楼(阶梯教室)18体育馆☆\n〃);printf〃☆
(19)第二俱乐部
(20)综合楼,校医院211,2号学生公寓☆\n〃);printf〃☆
(22)第一学生食堂
(23)教师公寓
(24)3,4,5号学生公寓☆\n〃);printf25水房号学生公寓☆\;26超市27田径场☆箕〃;printfC*286,7号学生公寓29体育场30第二学生食堂☆;printfC^31浴室32后勤用房3310,11,12,13号学生公寓☆、/;printfC☆34游泳池3514,15,16学生公寓368,9printf☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n〃;printf〃请选择导8亢功能\n〃;printfC«1景点信息简绍x\n〃;printf〃printf〃*2两点最短距离导航~\n;printfC a3某点到其他所有点的最短距离a\n〃;printf,z kkkakxkkkksiBBBkkkBkkn;Main,cpp^include stdio.h#include stdlib.h^include string.h^define MAX_V36ttdefine INFINITY32767《数据结构预与算法分析》设计报告题目校园导航系统班级网络工程XXX学号指导教师XXXXXXX XXX日期20227/11typedef structchar*vexs[MAX V];int arcs[MAX_V][MAX V];int vcxnum,arcnum;}MGraph;int have
[36];int CreatelDNMGraph G;void ShortPathMGraph G,int vO,int p[MAX_V][MAX_V],int d[];void menu;void mainsystemmode con:cols=1401ines=130,/;MGraphG;int vO,i,end,j;int P[MAX V][MAXV];int D[MAX_V];int choice,choicel;printfC\n««欢迎光临西安科技大学,祝旅程愉快!««\n〃;printfC\n««西安科技大学校园导游系统为你服务!««\;printf\n aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n\n〃;CreateUDNG;while1menu;scanfchoice;switchchoiceprintf(校门:学校大门\n〃);printf(〃工程训练中心工程实验训练中心\n〃);printf(〃校办公楼行政办公楼\n〃);printf(〃17号教学楼(电控,继教)电气控制与自动化学励口继续教育学院合楼\n〃);printf(〃16号教学楼(计算机,通信)计算机科学与技术学院和通信学院合楼\n〃);printf(〃2号教学楼(人外)人文外国语\n〃);printfCl号教学楼(艺术)艺术学院\n〃);printf(〃15号教学楼(管理,档案室)管理学院W档案管理室\n〃);printf(〃14号教学楼(能源)能源学院\n〃);printf(〃3号教学楼:教学楼不解释\n〃);printf(〃实验楼做实验的教学楼\n〃);printf(〃13号教学楼(建工)建工学院\n〃);printf(〃12号教学楼(化工,材料)化工学院与材料学院的合楼\n〃);printfCll号教学楼(地环,测绘)地环学院与测绘学院的合楼\n〃);printf(〃图书馆知识的海洋\n〃);printf(〃10号教学楼(机械):机械学院\n〃);printf(〃9号教学楼阶梯教室\n〃);printf(〃体育馆体育锻炼的场所\n〃);printf(〃第二俱乐部简称二俱\n〃);printf(〃综合楼,校医院生病就医的场所\n〃);printf C1,2号学生公寓学生宿舍没有空调夏天有火炉之称\n〃);printf(〃第一学生食堂小食堂饭不好吃\n〃);printf(〃教师公寓老师宿舍有空调慢慢的羡慕\n〃);printf(〃3,4,5号学生公寓:女生宿舍楼不解释\n〃);printf(〃水房打水的地方\n〃);printfC超市买生活用品以及零食的场所\n〃);printf(〃田径场体育锻炼\n〃);printf(〃6,7号学生公寓男生宿舍楼不解释\n〃);printf(〃体育场篮球场网球场集中地\n〃);printf(〃第二学生食堂食堂饭不好吃啊\n〃);printf(〃浴室洗地方澡的\n〃);printf(〃后勤用房食堂工作人员的住处\n〃);printf(〃10,ll,12,13号学生公寓学生公寓在西科之巅\n〃);printf(〃游泳池游泳池的水并不干净啊水面上头发啊树叶啊什么都有\n〃);printf C14,15,16学生公寓学生宿舍同在西科之巅\n〃);printf(〃8,9号学生公寓:学生宿舍\n〃);break;whilelprintf〃分别输入起点和终点代号以空格分开\n〃;scanf%d%d”,v0,end;ShortPath G,vO,P,D;printf〃最短路径:\n〃;fori=0;iG.vexnum;i++if P[end-1][have[i]]==Dprintf,z―%s”,G.vexs[have[i]];printf,z\n路径长度:%d\n,D[endT];printfCV本次导航结束:\nl.继续导航
2.返回主菜单\n〃);scanfchoicel;ifchoice1==2break;break;printf〃请输入出发点〃;scanf〃%d〃,vO;ShortPath G,vO,P,D;printfCvO到其他所有点的最短路径为\n〃;fori=0;iG.vcxnum;i++forj=0;jG.vexnum;j++ifP[i][have[j]]=lprintf C―%szz,G.vexs[have[j]];printf/z\n路径长度:%d\n,D[i];}break;default:printf〃选择错误,请重新输入!\n〃;}if choice-3printf〃欢迎再次使用校园导航系统,回车键退出V\nz,;gctchar;getchar;break;参考文献
7.2
[1]谭浩强.C程序设计第二版.北京清华大学出版社,2003⑵严蔚敏,吴伟民数据结构(C语言版).北京:清华大学出版社,1997目录
1.任务说明(要求、知识点、实现的功能)
11.1题目
11.2要求113知识占•
12.概要设£7结构体类型及函数声明,功能模块图,流程图)
22.1结构体类型及函数声明222功能模块图
32.3流程图
33.1节点数据结构类型
53.2创建导航图函数
53.3最短路径导航函数
53.4导航菜单函数声明64调试分析(浮现哪些问题,如何解决)
65.测试结果
66.总结
97.附录
97.1源代码
97.2日文献
221.任务说明要求、知识点、实现的功能题目
1.1校园导航系统要求
1.2用无向网表示你所在学校的校园景点品面图,图中顶点表示主要景点,存放景点的编号,名称,简绍等信息,图中的边表示景点间的道路,存放路径长度寄言息系统功能1景点信息简绍2任意两景点间最短距离3任意一点到所有点最短距离知识点
1.3图的创建,图的搜素,领接矩阵,迪杰斯特拉算法,结构体,函数的声明与调用等知识
2.概要设计(结构体类型及函数声明,功能模块图,流程图)结构体类型及函数声明
2.1在近一个星期的努力下,我编写的校园导航系统软件终于能够成功完成采用工程思想,将系统共分一下几个模块:导航图建立模块、求最短路径模块、主菜单;下面是具体各功能简单的实际应用A导航图建立模块采用上述结构体类型对导航图中每一个节点进行赋值包括:各定点的名称(地点名),各个节点到其他所有节点的真实路径长度(赋权值)A求最短路径模块本模块的基本思想是采用迪杰斯特拉算法求最短路径次模块是本校园导航系统的核心模块,求两点间的最短路径与求一点到其他所有点最短路径两个子功能均是在最短路径算法模块的基础上进行调用,进而实现导航能A主菜单主菜单中主要是显示导航图中的所有导航节点,能够快速方便的对各个地点进行导航以上程序的几个模块,构成为了校园导航系统的基本组成部份,程序运行良好,达到了课程设计的基本要求由于所学知识有限,功能各个方面还有欠妥之处,希翼得到指出与改正函数声明int CreateUDN(MGraphG)创建导航图函数void menu导航菜单声明void ShortPathMGraphG,int vO,int p[MAX_V][MAX_V],int d[]最短路径导航函数功能模块图
2.2存储导航图某景点到所有景总功能模块图流程图
2.3迪杰斯特拉算法流程图任意俩景点之查获End I
3.详细设计数据类型实现、编码节点数据结构类型
3.1define MAX_V40//最大顶点个数typedef structchar*vexs[MAX_V];//顶点向量ini arcs[MAX_V][MAX_V];〃邻接矩阵int vexnum,arcnum;〃图的当前顶点数和弧数}MGraph;创建导航图函数
3.2int GreateUDNMGraphG函数描述主要将每一个节点进行命名、每一个顶点到其他所有定点的路径值用邻接矩阵进行存储例G.vexs
[0]二〃校门〃;G.vexs
[2]=〃校办公室〃;作用使疑点命g为‘校了;G.arcs
[0]
[2]=G.arcs
[2]
[0]=900;作用使0号节点到2号节点的路径赋值为900,因为是无向图,所以2号节点到0号节点的路径长度也应赋值为900;最短路径导航函数
3.3void ShortPathMGraphG,int vO,int p[^IAX_V][MAX_V],int d[]函数描述用Dijkstra算法求无向网G的V0定点到其余定点V的最短路径P[v]及其带权长度D[v]若P[v][w]为True,则w是从VO至川当前求得最短路径上的顶点Final[v]为True当且仅当VeS,即已经求得从V0至W的最短路径导航菜单函数声明
3.4void menu函数描述输出各个节点的编号,放便导航4调试分析浮现哪些问题,如何解决问题在程序的一开始是准备,将系统共分为:数据结构定义模块、导航图建立模块、求最短路径模块、主菜单这四个模块的来构成为了校园导航系统的基本组成部份,但调试的过程数据结构定义这一模块总是浮现调试错误,程序的调试一度进入难题改进方法由于数据结构定义模块总出错,便再也不把数据结构定义设为单独的模块,而是在每一个其他模块中都进行一次编写,这样就避免了数据结构定义模块的调用错误,虽然这样使得程序变得冗余,但好在能调试成功,能使校园导航系统按照预先的设想正常运行
5.测试结果系统登陆界面。