1、 课程设计报告 课程名称: 数据结构 报告题目: 迷宫求解 学生姓名: XX 所在学院: 信息科学与工程 专业班级: 软件工程 学生学号:XXXXXXXXXXX 指导教师: XXX 2017 年 12 月 29 日 课程设计任务书 报告题目报告题目 迷宫求解程序设计 完成时间完成时间 2017.1 2.29 学生姓名学生姓名 专业 班级 指导教师 XXX 职 称 总体设计要求和技术要点 课程设计要求 1.可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径, 并将路径输出; 2.在上交资料中请写明:存储结构、基本算法(可以使用程序流程图) 、源程序、 测试数据和结果、算法的时间
2、复杂度、另外可以提出算法的改进方法; 工作内容及时间进度安排 第 17 周: 周 1-周 3 :立题、论证方案设计 周 4-周 5 :完成项目一,项目二的整体设计 第 18 周: 周 1-周 2:调试程序,解决问题 周 3-周 5 :写实验报告 课程设计成果 1程序设计内容以及对应的软件程序 2课程设计总结报告 摘摘 要要 本程序主要是求迷宫中从人口到出口的所有路径是一个经典的程序设计问 题。计算机解迷宫时,通常用的是“穷举求解”的方法,即从入口出发,顺某一 方向向前探索,若能走通,则继续往前走;否则沿原路返回,换一个方向在继续 探索,直至所有可能的通路都探索完为止。 当前位置“可通” ,则纳
3、入“当前路径” ,并继续朝“下一位置”探索,即切 换为“下一位置”为“当前位置” ,如此重复直至到达出口;若当前位置“不可 通” ,则应顺着“来的方向”退回到“前一通道块” ,若该通道块的四周 4 个方块 均“不可通”则应从当前路径删除该通道块。所谓“下一位置”指的是“当前位 置”四周 4 个方向(东、南、西、北)上相邻的方块。以栈 S 来记录“当前路径” , 则栈顶中存放的是“当前路径上最后一个通道块” 。所以即为“当前路径入栈” ; “从当前路径上删除前一通道块”为“出栈” 。 在这个过程中可以输出迷宫所走通的路径, 在这次课程设计中迷宫是由数组 预先定义好的,不能由用户定义生成,可以加入
4、随机函数,自动生成二维数组, 还可以用户自己输入迷宫。 关键词关键词:栈;存储结构;数组 目目 录录 一、课题分析. 1 二、需求分析. 1 1. 主模块功能描述 . 1 2. 子程序模块设计 . 1 三、设计方案. 1 1.类设计. 1 2.程序模块设计 2 设计方案与实施与总体设计思想. 2 3. 主模块 . 3 3.1 子模块 4 3.1 主菜单 5 3.2 功能 A 模块 . 5 3.3 功能 B 模块 . 5 3.4 功能 C 模块 . 6 四、详细设计. 7 1.用结构体构建栈. 7 2.构建类. 7 3.用数组构建一个迷宫 8 4.游戏移动控制指令 . 9 5.游戏移动控制指令四
5、个方向的实现. 10 6.游戏移动过程中若是未找到通路,需要返回的指令 .11 7.游戏的主循环 .11 8.游戏的开始于结束 . 12 9.迷宫地图的查看与通关后的路径查询 . 13 五、设计总结. 13 结论与心得 . 13 五、参考文献. 15 1 一、课题分析一、课题分析 (1)该题目为迷宫求解。 (2)此课题是对迷宫问题的求解。包括用数组生成迷宫,显示输出路径因此, 本程序设计共需设计一个主程序以及若干个子程序。 (3)在本课程设计程序里,主程序主要是以一个 mn 的长方形表示迷宫,0 和 1 分别表示迷宫中的通路和障碍。设计一个程序,对设定的迷宫,求出一条从入 口到出口的通路,子程
6、序实现迷宫地图的查看和通过迷宫后的路径查询。 二、需求分析二、需求分析 1.1. 主模块主模块功能描述功能描述 显示提示语句提示用用户选择输入执行的功能。 (1)开始迷宫求解游戏 (2)查询迷宫地图 (3)查询通过迷宫后的路径 2.2. 子程序模块子程序模块设计设计 (1)迷宫求解游戏 输入 1 开始游戏 (2)查询迷宫地图 在菜单中输入 2 查看迷宫求解的地图 (3)查询通过迷宫后的路径 输入 2 查询通关路径 三、设计方案三、设计方案 1.1.类设计类设计 构建一个 Hidding 类,并有私有成员:x 坐标,y 坐标,位置标志,初始方 向;共有成员:PrintMap 打印地图,GameFunction 游戏主循环,Move_up 向上 移动,Move_down 向下移动,Move_left 向左移动,Move_right 向右移动, IsGameOver 判