1、(完整word版)校园导游系统课程设计 西 安 邮 电 大 学 (计算机学院)数据结构课程设计报告题 目: 校园导游系统 专业名称: 班 级: 学生姓名: 学号(8位): 指导教师: 设计起止时间: 一. 设计目的1.数据结构课程设计是让学生综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发2.通过课程设计,使学生通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用 。3. 学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。二.
2、 设计内容1.完成校园导游咨询系统。2.校园平面图(景点、路径等信息)3.利用深度优先和广度优先搜索搜索所有景点4.查询图中任意景点的相关信息5.问路信息(查询任意两个景点之间的一条最短的简单路径,任意两景点之间的所有路径)校园图的关节点、多个景点的最佳访问路线6.校园导游图的界面仿真。7.添加删除道路信息。三概要设计1功能模块图;登录路线显示路线选择位置标识其他其他信息2各个模块详细的功能描述。1.登录模块进入后可添加删除道路信息。2.路线选择模块选择路线,在右侧窗口显示最短路径3.其他查询景点信息,查看深度优先遍历查看广度优先遍历四详细设计*重点设计及编码/结点function Node(
3、vexdata)this.vexdata=vexdata;this.node=;this.weight=;/类定义function AdjList(vexnum,arr)this.vexnum=vexnum;this.arcnum=0;this.vertex=;this.name=;/名称this.infor=;/信息this.flag=;/标记this.arr=;/存储路径this.ar=;/存储路径2for(var i=0;ithis.vexnum;i+)this.vertexi=new Node(arri);this.flag.push(0);/增加结点this.addarc=addar
4、c;/增加边this.addvex=addvex;/深度优先搜索this.dfs=dfs;this.edfs=edfs;/广度优先搜索this.guangdu=guangdu;this.guang=guang;/输出存储结构this.printf=printf;/求最短路径this.getpath=getpath;/输出景点信息函数this.printinfor=printinfor;function addarc(a1,a2,weight)this.vertexa1.node.push(a2);this.vertexa1.weight.push(weight);this.vertexa2.n
5、ode.push(a1);this.vertexa2.weight.push(weight);this.arcnum+;function addvex(v)var temp=new Node(v);this.vertex.push(temp);this.vexnum+;function edfs(flag,v,g,arr)arr.push(v);flagv=1;for(var i=0;ig.vertexv.node.length;i+)if(1!=flagg.vertexv.nodei)edfs(flag,g.vertexv.nodei,g,arr);function dfs()var tem
6、p=parseInt(document.getElementById(last).value);this.arr=;for(var i=0;ithis.vexnum;i+)this.flagi=0;edfs(this.flag,temp,this,this.arr);for(var i=0;ithis.vexnum;i+)if(this.flagi!=1) edfs(this.flag,i,this,this.arr);var showpath=深度遍历路线:;for(var i=0;i;showpath+=this.namethis.arri;document.getElementById(
7、footer).innerHTML=showpath;function guangdu(temp,g)var v,k,w=temp;var que=;que.push(w);g.flagw=1;while(que.length!=0)w=que0;g.ar.push(que0);que.splice(0,1);k=0;v=parseInt(g.vertexw.nodek+)while(kg.vertexw.node.length)if(g.flagv!=1)g.flagv=1;que.push(v);v=parseInt(g.vertexw.nodek+);function guang()va
8、r temp=parseInt(document.getElementById(last).value);this.ar=;for(var i=0;ithis.vexnum;i+)this.flagi=0;guangdu(temp,this);for(var i=0;ithis.vexnum;i+)if(this.flagi!=1)guangdu(i,this);var showpath=广度遍历路线:;for(var i=0;i;showpath+=this.namethis.ari;document.getElementById(footer).innerHTML=showpath;fun
9、ction printf()for(var i=0;ithis.vexnum;i+)document.write(+this.vertexi.vexdata+ :);for(var j=0;j+this.vertexi.nodej+:+this.vertexi.weightj);function getpath(/*start,end*/)var start=parseInt(document.getElementById(first).value);var end=parseInt(document.getElementById(last).value);var mindist;var k;
10、var a=;var path=new Array(this.vexnum);/初始化for(var i=0;ithis.vexnum;i+)document.getElementById(b+i).style.color=#000;for(var i=0;ithis.vexnum;i+)pathi=;for(var i=0;ithis.vexnum;i+)ai=10000;pathi0=0;pathstart0=1;for(var i=0;ithis.vertexstart.node.length;i+)athis.vertexstart.nodei=this.vertexstart.wei
11、ghti;paththis.vertexstart.nodei.push(start);/找各条最短路径for(var i=1;ithis.vexnum;i+)mindist=10000;/找最小权值路径for(var j=0;jthis.vexnum;j+)if(!pathj0&ajmindist)k=j;mindist=aj;if(10000=mindist)return;pathk0=1;/改变记录for(var j=0;jak+this.vertexk.weightj)athis.vertexk.nodej=ak+this.vertexk.weightj;paththis.vertex
12、k.nodej=0;for(var t=1;tpathk.length;t+)paththis.vertexk.nodej.push(pathkt);paththis.vertexk.nodej.push(k);/返回最短路径var showpath=路线:;for(var i=1;i;document.getElementById(b+end).style.color=#fff;showpath+=+this.nameend+;document.getElementById(path).innerHTML=showpath;function printinfor()var last=docu
13、ment.getElementById(last).value; document.getElementById(footer).innerHTML=this.inforparseInt(last);五测试数据及运行结果六调试情况,设计技巧及体会每当写完一个函数的时候,都会出现很多错误,就这样坚持着改错误,慢慢的发现其实很多是由于自己粗心造成的,别的错误改多了就习惯了。1改进方案程序代码还不够简练,还有很大的改进余地。自己需要付出更多的努力。2体会经过几周的课程设计,我学到了很多东西:巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。培养了我选用参考书,查阅手册及文献资料的能力。
14、培养独立思考,深入研究,分析问题、解决问题的能力。过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。同时,通过这次课程设计我发现,我的数据结构基础不够扎实,有很多地方还需要继续努力。 课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序编写和调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。此对老师和同学们表示感谢!七参考文献数据结构与算法javascript编程全解。