迷宫课程设计报告

合集下载

数据结构c语言课程设计报告之迷宫

数据结构c语言课程设计报告之迷宫

C语言与数据结构课程设计报告学号 **姓名 **课程设计题目迷宫求解2012 年 5月目录1 需求分析1.1 功能与数据需求1.1.1 题目要求的功能1.1.2 扩展功能1.2 界面需求1.3 开发环境与运行需求2 概要设计2.1主要数据结构2.2程序总体结构2.3各模块函数说明3 详细设计3.1算法分析与设计3.2主要程序段设计4 测试5 使用说明5.1应用程序功能的详细说明5.2应用程序运行环境要求5.5输入数据类型、格式和内容限制6 总结提高6.1课程设计总结6.2开发中遇到的问题和解决方法6.3 对自己完成课设完成情况的评价6.4《C语言与数据结构课程设计》课程的意见与建议附录:程序源代码1 需求分析1.1 功能与数据需求迷宫求解问题描述:以一个m×n的长方形表示迷宫,0和1分别表示迷宫中的通路和障碍。

设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。

1.1.1 题目要求的功能基本要求:首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。

求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。

如:对于下列数据的迷宫,输出的一条通路为:(1,1,1), (1,2,2), (2,2,2)(3,2,3), (3,1,2),…。

测试数据:迷宫的测试数据如下:左上角(1,1)为入口,右下角(9,8)为出口。

1.1.2 扩展功能(1)编写递归形式的算法,求得迷宫中所有可能的通路;(2)以方阵形式输出迷宫及其通路1.2 界面需求请求输入进入程序请求输入起始位置请求输入终点位置输出方阵迷宫输出路径输出方阵路径1.3 开发环境与运行需求Visual C++6.02 概要设计2.1主要数据结构定义模块函数模块主函数2.3各模块函数说明typedef struct{int pos_x[length];//进栈坐标 int pos_y[length];输入起始位置,终点位置判断首节点是否为通路判断路径能否走通对坐标标记是否到达迷宫出口处左边是否存在通路下边是否存在通路右边是否存在通路上边是否存在通路存储路径,将路径入栈有解迷宫无解迷宫YNYNY输出迷宫选择路径int top;int base;}Stack; //新建结构体void initStack(Stack *p)//初始化栈Push(Stack *p,int x,int y,int d) //入栈具体操作 Pop(Stack *p,int read[2],int d) //出栈并读出前一步的坐标 initMaze(int Maze[10][9])//建立迷宫Ways(Stack *p,int Maze[10][9],int rukou_x,int rukou_y,int chukou_x,int chukou_y,int d) //具体路径的求解 menu();//调用菜单函数 main();//实现迷宫求解的主函数3 详细设计迷宫的过程可以模拟为一个搜索的过程:每到一处,总让它按左、右、上、下4个方向顺序试探下一个位置;如果某方向可以通过,并且不曾到达,则前进一步,在新位置上继续进行搜索;如果4方向都走不通或曾经到达过,则退回一步,在原来的位置上继续试探下一位置。

数据结构课程设计报告-迷宫算法

数据结构课程设计报告-迷宫算法

沈阳航空航天大学课程设计报告课程设计名称:数据结构课程设计课程设计题目:迷宫算法院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:目录1 课程设计介绍 (1)1.1课程设计内容 (1)1.2课程设计要求 (1)2 课程设计原理 (2)2.1课设题目粗略分析 (2)2.2原理图介绍 (3)2.2.1 功能模块图 (3)2.2.2 流程图分析 (4)3 数据结构分析 (8)3.1存储结构 (8)3.2算法描述 (8)4 调试与分析 (11)4.1调试过程 (11)4.2程序执行过程 (11)参考文献 (15)附录(关键部分程序清单) (16)1 课程设计介绍1.1 课程设计内容编写算法能够生成迷宫,并且求解迷宫路径(求解出任意一条到出口的路径即可):1.迷宫用上下左右四种走法;2.迷宫的大小和复杂程度可以由用户定义;3.入口出口也由用户自己选择。

1.2 课程设计要求1.不必演示求解过程,只需要输出迷宫求解的路径;2.参考相应资料完成课设。

2 课程设计原理2.1 课设题目粗略分析根据课设题目要求,拟将整体程序分为四大模块。

以下是四个模块的大体分析:1 建立迷宫:要建立迷宫首先就要建立存储结构,这里我用栈的方式建立的。

根据用户输入的迷宫的大小(我设置的最大值为25可以根据要求调解);2 设置迷宫:这里将0设置围墙,1是可以通过的路径,-1是不可以通过路径,外墙是以设计好的,内墙需要用户来设置,障碍的难度可由用户自行定义;3 寻找路径:寻找路径我设置了四个方向{0,1},{1,0},{0,-1},{-1,0}移动方向,依次为东南西北,首先向东走,若不成功则转换方向,成功则继续前进,将走过的路径进行标记,然后存入栈中;4 输出结果:输出的结果分为两种,一种是用户建立的迷宫主要是让用户检查是否符合要求,第二种输出的是寻找完后的路径,路径用1 2 3 4···来表示。

迷宫问题课程设计

迷宫问题课程设计

迷宫问题课程设计一、课程目标知识目标:1. 学生能理解并掌握迷宫问题的基础知识,包括迷宫的构成、路径的概念。

2. 学生能够运用所学知识,分析并解决迷宫问题,如找出从入口到出口的最短路径。

3. 学生能够运用数学符号和图表来表示迷宫问题,理解问题解决的策略。

技能目标:1. 学生培养逻辑思维和问题解决能力,通过分析迷宫问题,锻炼学生的推理和决策技巧。

2. 学生通过小组合作,提高沟通协作能力,共享解决问题的过程和方法。

3. 学生能够运用信息科技工具,如计算机编程软件,解决迷宫问题,培养信息素养。

情感态度价值观目标:1. 学生培养面对问题的积极态度,勇于尝试和探索,不畏难。

2. 学生在小组活动中,学会尊重他人意见,形成团队协作精神。

3. 学生通过解决迷宫问题,体验学习的乐趣,增强自信心,认识到学习与生活的联系。

本课程针对的学生群体为具有一定逻辑思维能力和合作能力的中年级学生。

课程性质为拓展型课程,旨在通过迷宫问题激发学生的思维,提高其解决实际问题的能力。

教学要求注重理论与实践相结合,鼓励学生动手操作,培养探究和创新意识。

通过本课程的学习,学生将能将理论知识与实践相结合,形成解决复杂问题的综合能力。

二、教学内容本章节教学内容以《数学课程标准》中关于问题解决能力的培养为指导,结合教材中“逻辑与推理”单元,设计以下内容:1. 迷宫基础知识:迷宫的构成、路径的定义及分类。

- 教材章节:第三单元“逻辑与推理”,第1节“问题解决的基本方法”。

2. 迷宫问题解决策略:深度优先搜索、广度优先搜索、启发式搜索。

- 教材章节:第三单元“逻辑与推理”,第2节“搜索策略”。

3. 迷宫问题的数学模型:运用图论、线性方程等数学工具表示迷宫问题。

- 教材章节:第三单元“逻辑与推理”,第3节“数学建模”。

4. 计算机编程解决迷宫问题:运用Scratch等编程软件,实现迷宫路径的寻找。

- 教材章节:第四单元“信息技术与数学”,第1节“计算机编程简介”。

迷宫求解数据结构课程设计报告

迷宫求解数据结构课程设计报告

课程设计报告课题名称:迷宫问题姓名:xxx学号:200816020239专业:电气与信息工程学院班级:通信08102指导教师:目录第一部分程告⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 3第一章程目的⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 3第二章程内容和要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4描述⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4第三章程体方案及解析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4解析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4大纲⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯7⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯7解析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯10果⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯10参照文件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12 第二部分程⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13附 (源代 )⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯14第二部分课程设计报告第一章课程设计目的到列是一种特其他性表是不的,本次的目的在于使学生深入认识列的特色,以便在背景下灵便运用它,同将牢固种数据构的构造方法第二章课程设计内容和要求2.1 问题描述:迷是取自心理学的一个古典。

在中,把一只老鼠从一个无大盒子的放入,在盒子中置了多,行方向形成了多阻。

盒子有一个出口,在出口放置一奶酪,吸引老鼠在迷中找道路以到达出口。

同一只老鼠重复行上述,向到达老鼠从入口走到出口,而不走一步。

老鼠多次最学会走通迷的路。

一个算机程序任意定的矩形迷以下 A 所示,求出一条从入口到出口的通路,或得出没有通路的。

A2.2 设计要求:要求设计程序输出以下:(1)成立一个大小为 m×n的任意迷宫(迷宫数据可由用户输入或由程序自动生成),并在屏幕上显示出来;(2 )找出一条通路的二元组(i,j )数据序列,( i,j )表示通路上某一点的坐标。

(3 )用一种标志(如数字8 )在迷宫中标出该条通路;(4 )在屏幕上输出迷宫和通路;(5 )上述功能可用菜单项选择择。

课程设计迷宫

课程设计迷宫

课程设计迷宫一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握迷宫的基本概念、历史发展以及各类迷宫的解法。

技能目标要求学生能够运用所学知识解决简单的迷宫问题,培养空间想象能力和逻辑思维能力。

情感态度价值观目标在于培养学生对数学和逻辑思维的兴趣,提高学生面对挑战的勇气和自信。

通过分析课程性质、学生特点和教学要求,明确课程目标,将目标分解为具体的学习成果,以便后续的教学设计和评估。

二、教学内容根据课程目标,选择和教学内容,确保内容的科学性和系统性。

本课程的教学大纲如下:1.迷宫的基本概念:介绍迷宫的定义、分类及其特点。

2.迷宫的历史发展:介绍迷宫的起源、发展及其在各个时期的重要成果。

3.迷宫的解法:讲解基本的迷宫解法,如深度优先搜索、广度优先搜索等。

4.实践练习:提供一些实际的迷宫问题,让学生运用所学知识解决。

教学内容紧密围绕课本,符合教学实际,确保学生能够掌握迷宫的基本知识和解题技巧。

三、教学方法选择合适的教学方法,如讲授法、讨论法、案例分析法、实验法等,以激发学生的学习兴趣和主动性。

结合迷宫课程的特点,采用以下教学方法:1.讲授法:讲解迷宫的基本概念、历史发展和解法原理。

2.案例分析法:分析具体的迷宫问题,引导学生运用所学知识解决实际问题。

3.实验法:学生进行迷宫实验,培养学生的空间想象能力和逻辑思维能力。

4.讨论法:鼓励学生积极参与课堂讨论,提高学生的表达能力和团队协作能力。

通过多样化的教学方法,提高学生的学习兴趣和主动性,确保教学目标的有效实现。

四、教学资源选择和准备适当的教学资源,包括教材、参考书、多媒体资料、实验设备等。

教学资源应能够支持教学内容和教学方法的实施,丰富学生的学习体验。

本课程所需的教学资源如下:1.教材:选用权威、实用的教材,如《迷宫与逻辑思维》等。

2.参考书:提供相关的参考书籍,如《迷宫的历史与文化》等。

3.多媒体资料:制作课件、教学视频等,以直观展示迷宫的解法过程。

迷宫与栈问题课程设计报告

迷宫与栈问题课程设计报告

二、课程设计内容(含技术指标)【问题描述】以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。

设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。

【任务要求】首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。

求得的通路以三元组(i,j,d)的形式输出。

其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。

如,对于下列数据的迷宫,输出一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…。

编写递归形式的算法,求得迷宫中所有可能的通路。

以方阵形式输出迷宫及其通路。

【测试数据】迷宫的测试数据如下:左上角(0,1)为入口,右下角(8,9)为出口。

出口出口四、基本要求1.在设计时,要严格按照题意要求独立进行设计,不能随意更改。

若确因条件所限,必须要改变课题要求时,应在征得指导教师同意的前提下进行。

2.在设计完成后,应当场运行和答辩,由指导教师验收,只有在验收合格后才能算设计部分的结束。

3.设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料。

设计报告以规定格式的电子文档书写、打印并装订,报告格式严格按照模板要求撰写,排版及图、表要清楚、工整。

从总体来说,所设计的程序应该全部符合要求,问题模型、求解算法以及存储结构清晰;具有友好、清晰的界面;设计要包括所需要的辅助程序,如必要的数据输入、输出、显示和错误检测功能;操作使用要简便;程序的整体结构及局部结构要合理;设计报告要符合规范。

课程负责人签名:2011年7月1日迷宫与栈问题摘要数据结构是研究与数据之间的关系,是互相之间一种或多种特定关系的数据元素的集合,我们称这一关系为数据的逻辑结构。

数据结构在计算机的表示(又称映像)称为数据的物理结构,又称存储结构。

本次课程设计是迷宫求解问题,主要是模拟从入口到出口的通路。

程序中的数据采取的是“栈”作为数据的逻辑结构,并且使用链式存储结构,即是实现一个以链表作存储结构的栈类型。

关于迷宫问题的课程设计

关于迷宫问题的课程设计

关于迷宫问题的课程设计一、课程目标知识目标:1. 学生能理解迷宫问题的基本概念,掌握迷宫的图形表示和抽象表示方法。

2. 学生能运用基本的搜索算法,如深度优先搜索和广度优先搜索,解决迷宫问题。

3. 学生能理解并运用贪心算法和启发式搜索算法在迷宫问题中的应用。

技能目标:1. 学生能够运用逻辑思维和问题分析能力,将迷宫问题转化为数学模型。

2. 学生能够编写简单的程序,实现迷宫问题的搜索算法。

3. 学生能够运用批判性思维,评价不同算法在解决迷宫问题中的优缺点。

情感态度价值观目标:1. 学生通过解决迷宫问题,培养面对复杂问题的耐心和毅力,增强解决问题的自信心。

2. 学生在团队协作中,学会倾听他人意见,提高沟通能力和团队协作能力。

3. 学生通过探索迷宫问题的多种解法,培养创新思维和开放性思维,认识到问题的多样性和复杂性。

课程性质:本课程为信息技术与数学学科交叉的实践课程,结合了算法设计与问题解决的技能。

学生特点:考虑到学生所在年级的特点,课程设计难度适中,注重培养学生的逻辑思维和问题解决能力。

教学要求:课程要求学生在理解基本概念的基础上,动手实践,通过解决实际问题,提高综合运用知识的能力。

教学过程中,注重启发式教学,引导学生主动探索和发现知识。

通过分解课程目标为具体的学习成果,使学生在完成课程后,能够达到预期的学习效果。

二、教学内容1. 迷宫问题基本概念:迷宫的图形表示与抽象表示,包括节点和边的定义,以及如何将现实问题转化为迷宫模型。

- 教材章节:第三章第二节“图的应用”2. 搜索算法:介绍深度优先搜索(DFS)和广度优先搜索(BFS)的原理与实现,通过迷宫问题进行实践操作。

- 教材章节:第二章“图的搜索算法”3. 算法分析与优化:探讨贪心算法和启发式搜索算法(如A*算法)在解决迷宫问题中的应用,分析算法效率。

- 教材章节:第四章“启发式搜索”4. 算法实践:编写程序实现迷宫问题的搜索算法,使用适当的编程工具(如Python等),让学生亲自动手解决问题。

迷宫问题求解课程设计

迷宫问题求解课程设计

迷宫问题求解课程设计一、课程目标知识目标:1. 学生能理解迷宫问题的基本概念,掌握迷宫的图形表示和抽象表示方法。

2. 学生能掌握深度优先搜索、广度优先搜索等基本算法,并运用到迷宫问题求解中。

3. 学生能了解启发式搜索算法,如A*算法,并理解其在迷宫问题中的应用。

技能目标:1. 学生能够运用所学算法,独立设计并实现迷宫问题的求解程序。

2. 学生能够分析不同算法在解决迷宫问题时的优缺点,并进行比较和优化。

3. 学生能够通过小组合作,共同探讨迷宫问题的解决方案,提高团队协作和沟通能力。

情感态度价值观目标:1. 学生培养对算法和编程的兴趣,激发学习计算机科学的热情。

2. 学生通过解决实际问题,增强自信心和成就感,提高面对复杂问题的勇气和毅力。

3. 学生在团队协作中学会尊重他人、倾听意见,培养良好的合作精神和沟通能力。

分析课程性质、学生特点和教学要求:本课程为信息技术或计算机科学相关课程,旨在培养学生运用算法解决实际问题的能力。

学生处于中学高年级,具备一定的编程基础和逻辑思维能力。

教学要求注重理论与实践相结合,鼓励学生动手实践和合作探究,以实现以下具体学习成果:1. 学生能够自主设计并实现迷宫问题的求解程序。

2. 学生能够分析比较不同算法的性能,并进行优化。

3. 学生能够在团队中发挥各自优势,共同解决问题,提高沟通和协作能力。

二、教学内容1. 迷宫问题基本概念:迷宫的图形表示与抽象表示,介绍迷宫问题的定义和特点。

相关教材章节:第二章 算法基础,第三节 图的表示与应用。

2. 深度优先搜索算法:算法原理、实现步骤,以及在迷宫问题中的应用。

相关教材章节:第三章 搜索算法,第一节 深度优先搜索。

3. 广度优先搜索算法:算法原理、实现步骤,以及在迷宫问题中的应用。

相关教材章节:第三章 搜索算法,第二节 广度优先搜索。

4. 启发式搜索算法:A*算法原理、实现步骤,以及在迷宫问题中的应用。

相关教材章节:第三章 搜索算法,第四节 启发式搜索。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告(论文)报告(论文)题目:迷宫问题哈夫曼编码/译码实现作者所在系部:计算机科学与工程系作者所在专业:网络工程所在班级:作者姓名:作者学号:指导教师姓名:完成时间:北华航天工业学院教务处制摘要在当前的市场经济体制下,企业要想提高市场的竞争力,不但要有好的产品,同时也要有好的信息查询系统,以实现企业高效率的管理及查询。

在本次课程设计中,主要解决的问题就是迷宫问题和利用创建的哈夫曼树进行编码/译码,运用C++语言编写的程序。

在迷宫问题中,可由操作者自己设计迷宫的内部构造,迷宫的入口点已被社定。

操作者自己社定迷宫出口点,当操作者输入的出口点超出迷宫本身的时候,做出提示:输入有误,请操作者再次输入迷宫出口点。

根据操作者输入的出口点求出走出迷宫的一条路径。

如果能走出迷宫,再求解最短路径。

操作者可再次设置迷宫的出口点,采取相同的操作。

该程序已经过全面的系统测试,能够很好的运行,达到了预期的效果。

哈夫曼编码/译码系统主要有五个功能模块:1:创建哈夫曼树;2:打印哈夫曼编码规则;3:规则根据编码规则进行编码,并将编码保存在D:code1file.dat文件中;4:对保存在code1file.dat文件中的二进制代码进行译码,并将译码保存在D:code2file.dat文件中;5:打印哈夫曼编码。

该程序已经过全面的系统测试,能够很好的运行,达到了预期的效果。

例如:无效数字的输入本系统的自动判断,按照不同的关键字输出结果,人性化的输入界面(包括输入提示,错误提示等等)。

在下面各章节的介绍中,你会了解到各程序的具体设计与实现,介绍中包括系统需求分析,概要设计,详细设计,调试分析以及测试记过等。

此次程序设计使我们进一步了解C++的精华之处及数据结构的一些编程思想。

C++是优秀的计算机程序设计语言,它的功能相当的强大。

C++是程序设计员必备的一种语言,本次课程设计帮助我们深入的了解了C++的精髓所在,为我们以后的学习打下了坚实的基础。

当今,很难找出一个不需要应用计算机的领域,这就意味着几乎所有技术人员都需要学会使用计算机。

对计算机了解的深度,不同领域、不同岗位上的工作人员有不同的要求。

学习计算机程序设计主要就是要应用于现实社会生活中。

应用程序设计使我们更好的管理生活,提高自己的生活水平。

关键词:栈队列二维数组哈夫曼树哈夫曼编码二叉树目录摘要 (II)第1章绪论 (1)1.1 课程设计选题的目的 (1)1.2 课程设计选题的背景和意义 (1)1.3 课题研究的主要内容 (2)第2章系统需求分析 (3)2.1输入/输出形式和输出值的范围 (3)2.2 程序功能 (4)2.3测试数据 (4)第3章概要设计 (7)3.1设计思想 (7)3.2实现方法 (7)3.3函数间的关系 (7)第4章详细设计 (8)4.1实现定义的数据类型 (8)4.2实现定义操作伪代码算法 (8)第5章问题描述及解决方案 (10)5.1问题描述 (10)5.2问题的解决方案 (10)第6章测试并列出测试结果 (10)第7章总结 (14)7.1设计体会 (14)7.2结束语 (14)致谢 (15)参考文献 (16)附录 (17)(1)迷宫问题 (17)(2)哈弗曼编码与译码 (21)第1章绪论随着信息产业的飞速发展,信息化管理已经引入并应用到各行业管理领域,各种形式的百货商场、大型仓储超市、便利店、连锁超市和专卖店等形式的零售业鳞次栉比,不断改变、影响着人们的价值观念和生活方式。

因此,要提升企业竞争力,就要大力推进企业信息化建设,利用先进的办公自动化系统来实现企业内部信息管理、共享及交流,才能使企业在竞争激烈的21世纪取得先机。

1.1 课程设计选题的目的为大家解决一些生活中实际的问题,在这个过程中,编程人员自身的能力也在不断地提高。

此次程序设计综合运用所学知识解决实际问题,将课堂的书本知识有效的在程序中体现出来,让学生更理解了C++功能之强大,进一步让学生对面向对象的方法以及C++的编程思想有了较好了解和认识。

此外,此次设计培养独立开发、设计、调试、运行程序的能力,激发了学生较强的自学兴趣,锻炼学生之间以及学生与老师的交通能力,培养学生合作精神,让学生更好的认识到合作的重要性,使学生在今后的学习中加强对合作精神的培养。

1.2 课程设计选题的背景和意义1.2.1 课程设计的背景(1)迷宫问题儿童智力游戏的一种,同时也锻炼人的思维能力。

当我们在一个迷宫中时怎样避免重复的走一些路,避免怎样走投无路,无路可走,什么样的迷宫可走,怎样就知道迷宫无出口了,通过回溯法帮我们解答,动脑子想办法,看看计算机是怎么实现以最快的方式走出你设的迷宫的。

(2)哈夫曼编码/译码实现在数据通信中,经常需要将传送的文字转换成由二进制字符0、1组成的二进制串,称之为编码。

在传送电文时,人们总希望传送时间尽可能短,这就要求电文代码尽可能短。

让出现频率高的(或权值大的)字符采用尽可能短的编码,出现频率低的字符采用稍长的编码,构造一种不等长编码。

哈弗曼树可用于构造使电文的编码总长最短的编码方案,利用其进行编码及译码能够是问题得以以最好方案解决。

1.2.2 课程设计的意义一般来说,课程设计要比教学实验复杂一些,涉及的深度深,而且更加实用些。

其目的是通过课程设计的综合训练,培养学生分析解决实际问题和编程等动手能力,最终目标是想通过这种形式,帮助同学系统掌握C++这门课程的主要内容,使老师更好的完成教学任务。

结合实际应用的要求,使课程设计既覆盖教学所要求的知识点,又接近工程的实际需要,训练自己实际分析问题和解决问题以及编程的能力。

通过详细的实例分析,循环渐进的描述,启发学生顺利的完成设计。

课程设计将设计要求、需求分析、算法设计、编程和实例测试运行分开,为学生创造分析问题、独立思考的条件。

只要学生在吃透要求和算法的前提下,完全可以不按书中提示的参考程序,自己设计出更具有特色的程序。

1.3 课题研究的主要内容1)迷宫问题要求完成构造迷宫,输入入口出口,输出迷宫路径。

功能要求如下:1.构建迷宫:可以系统构建,也可以用户自己构建,输入1为不通,输入0为通路。

显示构建好的迷宫。

2.输出路径:输入入口与出口,利用编好的函数对迷宫进行试探,有路径输出路径,无路径提示用户此迷宫无出口。

3.最短路径:输出走出此迷宫的最短路径,即不用走回头路的一条路径。

4.要求系统有一定的容错性,给用户必要的提示。

2)哈夫曼编码/译码实现要求完成发送端对待传送数据的编码和接收端对传送来的数据的译码。

功能要求如下:1.接收原始数据:从终端输入字符集大小为n,即n个字符和n个权值,建立哈夫曼树。

2.编码:利用已建立好的哈夫曼树对输入的原文进行编码,结果存入code1file.dat 文件中,同时输出到屏幕。

3.译码:利用已编码的对译文(codefile.dat中的文本)进行译码,结果存入code2file.dat文件中,同时输出到屏幕。

4.打印编码规则:即字符与编码的一一对应关系5.打印哈夫曼树:将建立的哈夫曼树用某种树的存储方式存储后输出。

第2章系统需求分析2.1输入/输出形式和输出值的范围2.1.1输入/输出形式的范围(1)迷宫中建立数组时,首先输入迷宫的行数和列数。

边围规定为1,在程序中已赋值,内围用0、1输入,不用其他的数字,若输入错误会提示重新输入;然后选择系统创建的迷宫还是自己创建迷宫,输入选项1或2(输入其他选项按2处理);迷宫创建好后,输入入口和出口坐标(入口必须为通路即0,否则系统会报错,重新输入),找到路径或无路径;接下来会提示寻找其他路径还是退出次迷宫,输入1或2进行选择;选择1,则继续输入迷宫入口和出口,选择2或其他,则退出。

若还想创建别的迷宫就在接下来输入y或Y,输入其他则退出程序。

(2)在哈夫曼编码/译码实现程序中,先输入结点个数,然后根据提示分别输入五个字符(若输入数字,按字符处理),系统会根据系统的功能自动生成输入字符的哈弗曼码。

以上内容会存入文件里,若创建二叉树存储,则可再接下来的提示下输入y或Y,其他输入代表不创建;若存储则显示二叉树中序遍历的结果,接下来要求输入一串字符串,对其进行编码,要求输入已被编码的字符,若超出范围则提示该字符输入有误;若想继续编码则再下面的提示下选择y或Y,直至不选进入下一项译码过程,输入0、1码,若输入其他数字或0、1码不匹配则显示0、1码输入有误,会请重新输入,输入正确会保存到相应文件里;若继续译码选y或Y,直至不选则退出这一层;若想继续体验编码译码在接下来选择y或Y,重复上面的过程,输入其他退出程序。

2.1.2输出值的范围(1)在迷宫设计中若输入出口超出迷宫大小,即为无路径;输出无限制。

(2)在哈夫曼编码/译码实现程序中,哈弗曼编码长度MAXBIT设为了12,字符个数,编码个数MAXNODE设为了15。

2.2 程序功能(1)迷宫问题在迷宫问题中,可由操作者自己设定迷宫大小,迷宫内部构造有两个选择,系统设计,节省时间,也可由操作者自己设计,自己迷宫入口和出口并能保证入口为通路,若有路径会显示其路径并显示最短路径。

一个迷宫有不同入口和出口,可寻求多条路径。

(2)哈夫曼编码/译码实现对输入字符按其ASC码进行编码,并保存至文件,可创建二叉树存储,并对其进行中序遍历,输入已编码字符能够对其进行编码,输入相应0、1码能够将其译成字符。

输入字符不能为重复的,若为重复的可判别出,提示输入不同字符。

2.3测试数据2.3.1正确的输入及输出结果(1)迷宫问题(2)哈夫曼编码/译码实现第3章概要设计3.1设计思想(1)迷宫中用回溯法从八个方向向前试探,用队列保存探测到的通路,建立一个数组模拟迷宫,将各个函数结合在一起。

(2)哈弗曼编码中先按字符权重大小排序在建立哈弗曼树,进而完成编码;译码时,将编好的编码与字符由文件传到两个字符串中,进而译码。

3.2实现方法(1)迷宫中定义move数组,从东顺时针探测;进队出队完成探测;自己创建maze 数组,并输入入口点和出口点,再进行计算。

(2)哈弗曼编码中,将用户输入字符存入声明好的结构变量数组HuffNode[]中,在进入排序函数,建立好哈弗曼树,进而编码;译码时定义string 类型的变量s1[],s2[],字符存入s1中,编码存入s2中,进入进行译码。

3.3函数间的关系(1)迷宫问题(2)哈弗曼编码与译码第4章详细设计4.1实现定义的数据类型(1)迷宫数组定义为结构体包含两个整型数据,迷宫出口和入口的值定义为整型。

(2)迷宫内部的设计时各坐标点设置成栈内整型。

(3)迷宫中求最短路径时定义结构体类型表示队列,包含整型坐标点,和整型下标;又有整型的队首尾指针。

(4)哈弗曼树定义成结构体类型,包含1个字符型变量表示字符也表示权重和3个整型变量分别表示双亲,左孩子,右孩子。

相关文档
最新文档