logo资料库

校园导游系统的开发报告.doc

第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
资料共24页,剩余部分请下载后查看
《创新设计》报告
校园导航问题
一、需求分析
二、概要设计
1.平面图的数据类型定义
2.查询各个景点的信息
3.查询任意两个景点之间的最短路径
4.查找两个顶点间的所有路径
5.查找通过多个顶点的最短路径
6.界面函数
7.主函数
三、详细设计
1.图的类型及新定义的数据类型、检错函数
2.查询各顶点信息的伪代码算法
3.查询任意两个景点之间的最短路径
4.查找两个顶点间的所有路径
5.查找通过多个顶点的最短路径
6.界面函数
7.主函数
四、调试分析
五、用户手册
六、测试数据及地图
input.txt 存放的内容
测试数据及结果:
1.测试查询信息的功能
2. 测试查询两点最短路径的函数
3. 测试两点的所有路径
4. 测试通过多点的所有路径
七、附录
八、参考材料
《创新设计》报告 ( 2008- 2009 年度第 2 学期) 设计题目: 校园导航系统 学 专 姓 学 院: 业: 名: 号: 软 件 学 院 软 件 工 程 高小波 220700321 指导教师: 江兰帆 日期: 2009 年 6 月
设计报告: [问题描述] 校园导航问题 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 [基本要求] (1)设计福州大学新校区的校园平面图,所含景点不少于十个。以图中 顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表 示路径,存放路径长度等信息。 (2)为来访客人提供图中任意景点相关信息的查询。 (3)为来访客人提供图中任意景点的问路查询,即查询任意两个顶点之 间的一条最短的简单路径。 一、需求分析 1.从福州大学新校区的校园平面图选取 13 个有代表性的景点,抽象成一个 无向带权图,以图中顶点表示景点,边上的权值表示两地之间的距离。 2.本程序的目的是为来访客人提供图中任意景点相关信息的查询,提供图中 任意景点的问路查询,即查询任意两个顶点之间的一条最短的简单路径,提供任 意两个景点之间的所有路径查询,提供通过多点的所有路径查询。 3.测试数据(附后)。 二、概要设计 1.平面图的数据类型定义 struct Graph{ 数据对象: 数据关系:
} bool Errorstr(Graph& G,string x) 初始条件:图 G 已存在,名称 x 被传入 操作结果:判断 x 这条信息是否在 G 中 bool Errornum(Graph& G,int x) 初始条件:图 G 已存在,代号 x 被传入 操作结果:判断 x 这条信息是否在 G 中 string Inttostr(Graph& G,int x) 初始条件:图 G 已存在代号 x 被传入 操作结果:返回把 x 相应的名称 void ReadData(Graph& G) 初始条件:图 G 已存在 操作结果:从文件 input.txt 读入数据 2.查询各个景点的信息 search(Graph& G) 初始条件:图 G 已存在 操作结果:查找用户输入的景点名称,并显示到屏幕上 3.查询任意两个景点之间的最短路径 Floyd (Graph& G) 初始条件:图 G 已存在 操作结果:查找到用户输入的两个景点的最短路径,并显示到屏幕上 PrintShortestPath ( int* *c, int* *path, Graph& G, string x,string y) 初始条件:图 G 已存在,并且用户输入了要查找的两个景点名称
操作结果:显示查找到的两个景点的最短路径到屏幕上 PrintPath1( int i, int j, int* *path ,Graph& G) 初始条件:图 G 已存在 操作结果:查找到用户输入的两个景点的最短路径 4.查找两个顶点间的所有路径 SearchAllPath(const Graph& G, Path& path, Mark& visited, int &v, int &des, int length) 初 始 条 件 : 图 G 存 在 , 一 维 数 组 path 和 visited 都 已 存 在 , 其 中 visited [0]~visited[MAX_N]都为 false ,用户输入起始点 v 与终点 des ,当前的路 径长度设为 1 操作结果:查找两点的所有路径,并把所有路径显示到屏幕 void Search ( Graph& G) 初始条件:图G存在 操作结果:把从屏幕读到的数据传给 SearchAllPath 5.查找通过多个顶点的最短路径 SearchAllPath1(const Graph& G, Path& path, Mark& visited, int &v, int &des, int length,string *pp,int n) 初 始 条 件 : 图 G 存 在 , 一 维 数 组 path 和 visited 都 已 存 在 , 其 中 visited [0]~visited[MAX_N]都为 false ,用户输入起始点 v 与终点 des ,当前的路 径长度设为 1,用户传人通过其他的顶点,及通过的所有顶点总数 操作结果:查找确定起点和终点,并且通过多点的最短路径 void Searchmore ( Graph& G)
初始条件:图G存在 操作结果:把从屏幕读到的数据传给 SearchAllPath1 Printpath3(Path& path, int length,const Graph& G,string *pp,int n) 初始条件:图G存在,一维数组 path 存在,用户输入起始点 v 与终点 des , 用户传人通过其他的顶点,及通过的所有顶点总数 操作结果:把查找到的最短路径写入到文本文件中 6.界面函数 jiemian (Graph G) 初始条件:图G存在 操作结果:把各功能显示到屏幕,供用户使用 7.主函数 void main() 三、详细设计 1.图的类型及新定义的数据类型、检错函数 struct Graph { int num[MAX_N]; //地点的代号 string name[MAX_N]; //地点的名称 string intro[MAX_N]; //地点的简介 int AdjMatrix[MAX_N][MAX_N]; // 邻接矩阵,如果图中 i,j 相邻则
G[i][j] 是 i 到 j 的路径的长度值,否则 G[i][j]=0 }; const int MAX_N = 13; typedef int Path[MAX_N]; // 最多的节点数目 // 用来存储路径 typedef bool Mark[MAX_N]; // 标记访问过的节点 int k2=0; int igg2=0; int *PATH=new int[MAX_N]; //全局变量 //全局变量 bool Errorstr(Graph& G,string x) //检验传入的字符 x 是否正确 //如果 x 可以在图中找到,正确 //如果 x 不可以在图中找到。错误 bool Errornum(Graph& G,int x) //检验传入的代号 x 是否正确 //如果代号可以找到正确 //否则错误 string Inttostr(Graph& G,int x) //把整数的代号 x 转化为对应的名称 void ReadData(Graph& G) //从文件"input.txt"读入数据 { ifstream in( "input.txt" ); …… } 2.查询各顶点信息的伪代码算法 void search(Graph& G) { //用户选择查询信息的方式 int i; cin>>i;
if(i==1) //按代号查询 {……} //如果代号和 G.num[j]相同,则找到,并输出,否则不存在这条信息 else if(i==2) //按名称查询 //如果代号和 G.name[j]相同,则找到,并输出,否则不存在这条信 {……} 息 else { cout<<"选择查询方式出错! "<
} } Floyd (Graph& G) { string x;//存放起点名称 string y;/存放终点名称/ //用户选择查询信息的方式 int h; cin>>h; if(h==1) //按代号查询 {……} //输入起点终点代号,把代号转成相应的名称,放入 x , y 中 else if(h==2) //按名称查询 {……} //输入起点终点名称,放入 x , y 中 Else{} //选择出错 *c, * *path; // c[i][j] 存放的是从代号为 i 的点到代号为 j 的点的最短 int* 路径 // path[i][j]用来记录路径 PrintShortestPath ( c, path , G,x,y); } 4.查找两个顶点间的所有路径 SearchAllPath(const Graph& G, Path& path, Mark& visited, int &v, int &des, int length) { //如果当前这个点访问过了,就结束执行这个函数 //否则,把当前的点存到 path 数组里面 if (v == des) {//如果起点等于目的终点,就输出 path 数组存放的代号对应 的地点名称 for (int i = 0; i
分享到:
收藏