欢迎来到天天文库
浏览记录
ID:56199917
大小:344.54 KB
页数:40页
时间:2020-03-20
《课程设计软件类报告内容模版参考.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、西安邮电大学(计算机学院)数据结构设计报告题目:校园导游系统专业名称:软件工程班级:软件1205学生姓名:吴晗学号(8位):04123141指导教师:邓万宇设计起止时间:2013年12月16日—2.13年12月27日一.设计目的通过设计一些复杂的问题,是我们对课堂上所学的东西加深理解,更考验了我们对问题思考的逻辑结构和思维方法,学会在程序中应用和理解,提高我们思考问题和分析问题的能力,逐步使我们提高自己的编写程序的能力。二.设计内容用无向网表示学校的校园景点平面图,图中顶点表示主要景点, 存放景点的编号、名称、简介等信息
2、,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。游客通过终端可询问: (1)从某一景点到另一景点的最短路径。 (2)游客从大门进入,选取一条最佳路线。 (3)使游客可以不重复地浏览各景点,最后回到出口(出口就在入口旁边)。 [基本要求] (1)将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路, 边上的权值表示距离.为此图选择适当的数据结构。 (2)把各种路径都显示给游客,由游客自己选择浏览路线。 (3)画出景点
3、分布图于屏幕上。 [实现提示] (1)构造一个无向图G并用邻接矩阵来存储。 (2)利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数组p[i][]来记录, 最短路径长度就用一维数组d[i]存放;i的范围:0~20。 (3)一维数组pre[]是用来记录最短路径出现顶点的顺序。 (4)根据起点和终点输出最短路径和路径长度三.概要设计程序设计的基本结构为:1.先是设计一个欢迎界面,然后进入登录界面,加一个密码保护.2.然后进入菜单界面显示逐条实现的功能。3.最后是退出。开始
4、1.功能模块图;定义变量Voidmain()voidWelcome()Switch()选择功能增加和删除景点两景点最短距离显示景点平面图两景点间转折最少两景点间所有路径退出结束2.各个模块详细的功能描述。.浏览校园全景:采用深度遍历遍历图进行所有景点浏览,将遍历景点信息输出 开始 定义变量 浏览校园全景 查看景点信息景点查询:可以进行按名称查询, 如果你你输入非法,系统会自动提醒你你所查询的地点不存在,功能齐全。路径查询:可以查询两景点间的所有路径,最短路径和中转次数最少的路径。功能满足很多游客的要求。校园平面图显示:
5、简单地显示校园的粗略布局。修改地图:可以进行图的初始化、景点的插入、景点的删除(删除路线)、路径的插入。在修改后它会提示你要保存到文件中。四.详细设计1.功能函数的调用关系图main()Main()Welcome()Picture()Passwad()游客登录管理员登陆最短路径最短连通路径显示路径所有路径中转次数最少的路径删除查找2.各功能函数的数据流程图1.浏览校园全景:采用深度遍历遍历图进行所有景点浏览,将遍历景点信息输出 开始 定义变量 浏览校园全景 查看景点信息 某一景点到其 余 景点 两景点最短距离 退出系统
6、 Void Menu()进入菜单 Switch()选择功能 结束 2.查看所有游览路线:用户输入一个景点,采用迪杰斯特拉算法将从该景点起所有路径查出并输出在屏幕上 3.选择出发点和目的地:用户输入一个出发点和一个目的地编号,采用prim算法求出发点到目的地的最短路径 4.查看景点信息:直接用景点名进行单个景点查询。3.重点设计及编码采用迪杰斯拉算法求各景点间的最短路径voidDijkstra(AdjMatrix*G,intstart,intend,intdist[],intpath[][MAXVEX])/{intmin
7、dist,i,j,k,t=1;for(i=1;i<=G->vexnum;i++)//初始化{dist[i]=G->arcs[start][i];if(G->arcs[start][i]!=INFINITY)path[i][1]=start;}path[start][0]=1;for(i=2;i<=G->vexnum;i++)//寻找各条路线最短路线{mindist=INFINITY;for(j=1;j<=G->vexnum;j++)//选择权值最小的路线if(!path[j][0]&&dist[j]8、=j;mindist=dist[j];}if(mindist==INFINITY)return;path[k][0]=1;for(j=1;j<=G->vexnum;j++)//修改路线{if(!path[j][0]&&G->arcs[k][j]arcs[k][j]
8、=j;mindist=dist[j];}if(mindist==INFINITY)return;path[k][0]=1;for(j=1;j<=G->vexnum;j++)//修改路线{if(!path[j][0]&&G->arcs[k][j]arcs[k][j]
此文档下载收益归作者所有