目录
一、问题描述和基本要求
【问题描述】
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
【基本要求】
(1) 设计你所在学校的校园平面图,所含景点不少于10个.以图中顶点表示校内各景点,存放景点名称、代号、简介 等信息;以边表示路径,存放路径长度等相关信息。
(2) 为来访客人提供图中任意景点相关信息的查询。
(3) 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
【测试数据】
以江苏科技大学长山校区为例。
【实现提示】
一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网.顶点和边均含有相关信息.
二、问题分析和任务定义
【问题分析】
将校园平面图简化为一个无向网。顶点和边均含有相关信息。用直接赋值的方法给予各个景点信息,若两景点之间可达,则对路径长度赋值,对于自己到自己的路径,赋值为0,其他均赋成最大值。查看所有景点时,就遍历结构体数组,然后全部输出;查询景点,根据输入的景点代号,遍历数组b然后利用字符串比较方法找到所查询的景点,输出景点的具体信息;修改景点信息的第一步为查找到该景点,然后将该景点的所有信息清空,重新输入即可;问路求最短路径及长度即是采用弗洛伊德算法,获得具体的最短路径时,从后往前追溯走过的结点,并且用一个数组记录下它的位置,然后再遍历数组输出所经过的每个点的信息。
【功能分析】
1、查看所有景点
2、景点查询
3、问路
4、修改景点基本信息
5、退出
三、逻辑设计
【数据结构选择】
定义景点类,作为每个景点的数据结构,其中包含景点号、景点信息等。
定义学校类,作为作为功能实现的主类,内含一个存储景点类对象的集合以及存储各个景点间的路径长度的数组。
【主要算法函数】
1、菜单显示menu()——供用户选择的功能菜单。
2、输出所有景点信息Allprint(AMGragh G)——输出景点名称、代号和简介。
3、建图CreateUDG(AMGragh &G)——用直接赋值的方法给予各个景点信息,若两景点之间可达,则对路径长度赋值,对于自己到自己的路径,赋值为0,其他均赋成最大值。
4、修改信息Change(AMGragh &G)——修改景点信息的第一步为查找到该景点,然后将该景点的所有信息清空,重新输入即可。
5、查询景点Query(AMGragh G)——查询景点,根据输入的景点代号,遍历数组然后利用字符串比较方法找到所查询的景点,输出景点的具体信息。
6、弗洛伊德算法Floyd(AMGragh G)——获得最短路径及长度。
7、获得具体路径Path(AMGragh G,int a,int b)——从后往前追溯走过的结点,并且用一个数组记录下它的位置,然后再遍历数组输出所经过的每个点的信息。
8、问路Ask(AMGragh G)——调用函数输出具体路径及长度。
四、物理结构
1.存储结构
(1) 定义景点类,作为每个景点的数据结构,其中包含景点号、景点信息等。
(2) 定义学校类,作为作为功能实现的主类,内含一个存储景点类对象的集合以及存储各个景点间的路径长度的数组。
2.伪代码
(1)建图;
(2)初始化路径长度;
(3)采用弗洛伊德算法,获得最短路径;
(4)为来访客人提供图中任意景点相关信息的查询。