1、河南科技大学课 程 设 计 说 明 书课程名称 数据结构课程设计 题 目 迷宫求解 院 系 电子信息工程学院 班 级 物联网工程 1201 学生姓名 陈茗杨指导教师 黎蔚、刘中华、张晓玲 日 期 2013.6.17-2013.6.30 数据结构课程设计任务书课程设计题目 迷宫求解姓名 陈茗杨 学号 121404050102 专业班级 物联网 1201组别 组长 同组成员 指导教师 黎蔚、刘中华、张晓玲课程设计目的 通过实践掌握用数组和栈综合解决实际问题的方法课程设计环境 运行环境为 Visual C+ 6.0课程设计任务和要求程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一
2、个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。要求:1)老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;2)迷宫的墙足够结实,老鼠不能穿墙而过;3)正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;4)添加编辑迷宫的功能,可修改当前迷宫,修改内容:墙变路,路变墙;5)找出走出迷宫的所有路径,以及最短路径;6)利用序列化功能实现迷宫地图文件的存盘和读出等功能。参考文献1、严蔚敏等. 数据结构(C 语言版). 清华大学出版社 20042、谭浩强. C 语言程序设计. 清华大学出版社. 20023、李春保. 数据结构教程上机实验指导. 清华大学出版社. 20
3、05时 间 进 度 安 排序号 起止日期 工 作 内 容1 2013.6.172013.6.19 下达课程设计任务、查阅资料、确定方案2 2013.6.202013.6.27 编写程序、调试、运行3 2013.6.28 验收4 2013.6.292013.6.30 撰写课程设计报告5 2013.7.1 提交文档指导教师:黎蔚、刘中华、张晓玲 时间: 2013.6.8计算机系数据结构课程设计报告一、简介1 设计目的:程设计是加强我们实践能力的一个强有力手段。在完成程序设计的同时能够写出比较规范的设计报告,这样对于我们对基本程序设计素养的培养的训练,将起到显著的促进作用。2 问题的描述:程序开始运
4、行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。要求:1 老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;2 迷宫的墙足够结实,老鼠不能穿墙而过;3 正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;4 添加编辑迷宫的功能,可修改当前迷宫,修改内容:墙变路,路变墙;5 找出走出迷宫的所有路径,以及最短路径;6 利用序列化功能实现迷宫地图文件的存盘和读出等功能。二、数据结构的设计:基本抽象数据类型:建立堆栈存储结构Struct stepint x,y,n; /整形(注:基本数据类型,步子行、列坐标、
5、行走步数)Char *maze /字符数组(注:定义一个动态空间迷宫)Int hang,lie; /整型(注:输入迷宫的行、列数)Int s; /整型(注:用于控制是否重新进入运行程序)三、功能(函数)设计:1)改变迷宫形状模块:Void change(char *maze,int hang,int lie)/输入迷宫地图,输出形状改变后迷宫。2)单步输出模块void step_to_step (char *maze,step *step,int hang,int lie,int n) /输入迷宫地图,输出单步行走步法。3)输出路径模块void out (char *maze,int hang
6、,int lie,int i,int j)/输入迷宫地图,整体输出行走路径。4)判断行走路径模块void cure (char *maze,int hang,int lie)/输入迷宫地图,输出每一步行走步法。5)主程序模块int main() 流程图2 单步输出路径模块:4、界面设计:设计思想:用“#”表示外围的墙,用 0 表示里面能通过,用 1 表示里面的墙,用“”表示通过的的路径。五、程序设计:遇到的问题:在编写代码的过程中,会遇到一些结构需要定义,有没学过的需要查找课外书来解决。6、运行与测试:1 进入“走迷宫游戏”2第一次测试,输入迷宫行列数和一个无通路迷宫,运行结果如下:3 第二次
7、测试,输入有通路迷宫,运行结果如下:4 选择单步运行,运行结果如下:运行与测试期间遇到的问题及其解决办法。问题:在刚开始调试的时候,遇到了死循环情况,导致程序不能正常运行,后来经过查阅资料,发现让走过的路程全给显示了,这样就不会再走重复的路了。七、设计后的思考:在课设中,通过分析任务书,在已学基础上构造出程序大体框架,画出系统结构图,确定程序需要哪些模块。当遇到不懂的地方,借助图书馆的各种相关资料或参考网上资料,必要时求助老师和同学,最终解决问题。例如一种算法可以采用多种语句来实现,不知选择哪种才是最优?通过请教同学,比较每一种时间复杂性后最终选出最优方法。通过完成“走迷宫游戏” ,使我有了很
8、多收获,首先是拿到一个实际问题如何进行分析,选择哪种数据结构来实现,并且学到了如何从一个软件工作者的角度来具体完成一个程序设计过程;其次,体会到了如何充分利用图书馆的资料解决存在的问题,也同时接触到了一些课外的软件工具,大大开拓了视野。最后,在对程序的多次调试改进中,使我更进一步熟悉了 c+的运行环境,也极大的提高了自身对程序的调试能力,能在编译错误提示下,准确找出错误并改正过来,使程序正常运行。总之,在本次课程设计中,使我对数据结构这门课有了更进一步的理解,理解了其在程序开发中的地位及作用,课本上扎实的理论知识可谓编程的根基,在此基础上通过亲自动手实践解决现实中具体问题。这次极大锻炼了我的各
9、方面能力,学到了许多课本上不曾接触到的知识,提高了动手实践能力,实现了从课本理论知识到实际编程设计的紧密连接,对一个具体的软件开发过程有了大致了解,同时也明确了自身存在问题和发展方向,实为受益匪浅。电子信息工程学院数据结构课程设计指导教师评分表课程设计题目 迷宫求解姓名 陈茗杨 学号 121404050102 专业班级 计科物联网工程 1201指导教师评语:指导教师签名: 2013 年 7 月 3 日成绩评定项 目 分 值 评 分 要 素 成 绩1 设计过程中出勤、学习态度等方面 20上机出勤及端正的学习态度、认真刻苦程度等2 软件设计质量 40采用的算法、设计方案,设计结果,界面友好等方面进行综合评定3 答辩 20能简明扼要地阐述设计的主要内容,能准确流利地回答各种问题4 设计报告书写 10 条理清晰,表述清楚、措词得当5 实际动手能力 10 软件编程及调试能力等总 成 绩