数据结构课程设计 马踏棋盘概况.docx

上传人:b****3 文档编号:2014011 上传时间:2022-10-26 格式:DOCX 页数:22 大小:196.49KB
下载 相关 举报
数据结构课程设计 马踏棋盘概况.docx_第1页
第1页 / 共22页
数据结构课程设计 马踏棋盘概况.docx_第2页
第2页 / 共22页
数据结构课程设计 马踏棋盘概况.docx_第3页
第3页 / 共22页
数据结构课程设计 马踏棋盘概况.docx_第4页
第4页 / 共22页
数据结构课程设计 马踏棋盘概况.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

数据结构课程设计 马踏棋盘概况.docx

《数据结构课程设计 马踏棋盘概况.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计 马踏棋盘概况.docx(22页珍藏版)》请在冰豆网上搜索。

数据结构课程设计 马踏棋盘概况.docx

数据结构课程设计马踏棋盘概况

前言

学习数据结构的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题,数据结构课程设计就是为此目的一次实际训练。

要求我们在对题目进行独立分析的基础上,完成设计和开发,并最终接受严格的测试考核。

以深化对数据结构课程中基本概念、理论和方法的理解,提升综合运用所学知识处理实际问题的能力,使我们的的程序设计能力与调试水平有一个明显的提升。

课程设计所安排的题目,都有一定的难度和深度,从抽象数据类型的提炼、数据结构选择到算法的设计,均由我们每个人自主完成。

在一周的时间内,历经查找参考资料、使用技术手册、设计编码和撰写文档的实践,进一步升华对软件工程师和程序员人格素质的认识和理解。

本课程设计的主要设计内容是:

设计一个马踏棋盘问题的演示程序。

即将马随机地放在国际象棋的8*8棋盘的某个方格中,然后令马按走棋规则开始进行移动。

要求马将棋盘上的每个方格进入且只进入一次,走遍全部64个方格。

要求编制非递归程序,求出马的行走路线,将数字1,2,…,64依次填入一个8*8的方阵在屏幕上显示输出。

针对该问题本课程设计采用的是面向对象的开发语言Java,在Windows7,myeclipse8.5.0的平台上开发出来,并有图形界面。

最终较好的实现了全部要求,达到了预期效果。

从中我也学到了很多,不仅仅是课堂外的新知识,还有那种会查资料,会学习新知识的能力。

这个课程设计的顺利完成,离不开胡老师的指导和帮助,在他的细心指导和帮助下,我对马踏棋盘程序开发的整个流程有了深刻地了解和系统地掌握,在这里学生表示真诚地感谢。

另外也谢谢这次课程设计提供给我帮助的同学们。

此外,本课程设计还参考了一些文献资料,在此向这些文献资料的作者深表谢意。

本课程设计可作为数据结构和Java课程教学的参考案例。

由于时间仓促和本人水平所限,设计中难免有不当和欠妥之处,敬请老师不吝批评指正。

笔者

2016.6

 

 

目录

摘要………………………………………………………………………………………………………………………………………3

第一章需求分析………………………………………………………………………………………………………………….4

第二章概要设计………………………………………………………………………………………………………………….5

2.1系统描述。

………………………………………………………………….5

2.2运行环境…………………………………………………………………………..5

2.3马踏棋盘流程…………………………………………………5

2.4算法设计

第三章详细设计

3.1Jisuan类实现

3.2

3.3

3.4

Disizhang

4.1

4,2

4.3

Diwu

5.1

5.2

Cankaowenxian

Fulu

 

摘要

本课程设计中的程序实现了马踏棋盘问题的求解,并能够演示起始位置在棋盘上任何位置的问题的实现.程序采用图形演示,使算法的描述更形象,更生动,使教学更能产生良好的效果。

对于该程序,我严格按照面向对象的思想进行开发,其中有Jisuan类,Shuchu类,Jframe类和Main四个类。

其中Jisuan类主要是初始化各点的可走路径,并且删除不合法的点;Shuchu类主要最优算法的实现;Jframe类为图形用户界面的设计,主要完成棋盘的绘制和结果的打印;Main类主要是负责整个程序的控制。

最终调试运行通过,实现了全部要求,取得了理想效果。

关键词:

数据结构马踏棋盘Java图形界面

Abstract

Thiscoursedesignoftheprogramrealizationhorsesonboardthesolution,andtodemonstratethestartingpositionontheboardoftherealizationoftheproblemanyposition.Theprogramusinggraphicalpresentation,themethodofmoreimage,themorevividdescription,andmaketheteachingmorecanproducegoodeffect.Fortheprogram,Iinstrictaccordancewiththeobject-orientedideasofdevelopment,includingJisuanclass,Shuchuclass,JframeclassesandMainfourclasses.AmongthemJisuankindbasicallyistheinitialpointsofwalkpath,andremovenotlegalpoint;Shuchumainkindsoftherealizationoftheoptimalalgorithm;Jframeclassforthegraphicaluserinterfacedesign,themainfinishdrawingtheboardandresultsoftheprint;Mainkindsofmajorisresponsiblefortheentireprocesscontrol.Finaltestandoperation,realizetherequirementsthroughall,maketheidealeffect.

Keywords:

datastructurehorseonboardJavagraphicalinterface

 

第一章需求分析

数据结构课程设计是计算机科学与技术专业学生必做的集中实践性环节之一,是学习完《数据结构》课程后进行的一次全面的综合练习。

其目的在于通过课程设计,使学生能够得到较系统的技能训练,从而巩固和加深对数据结构的基础理论知识的理解,培养学生综合运用所学理论知识解决实际问题的能力,使学生成为具有扎实的计算机理论基础和较强的独立动手能力的复合型、应用型人才。

马踏棋盘问题是一个古老而著名的问题,它最初是由大数学家Euler提出的.

问题是这样的:

国际象棋中的棋子(叫作马)在一个空棋盘内移动,问它能否经过64格中的每一格且只经过一次?

(马按L行移动,即在某方向前进两格接着在与原方向垂直的方向上前进一格)

本程序实现了马踏棋盘问题的求解,并能够演示起始位置在棋盘上任何位置的问题的实现.程序采用图形演示,使算法的描述更形象,更生动,使教学更能产生良好的效果。

 

第二章概要设计

2.1系统描述

本程序采用myeclipse8.5.0来编制整个程序,这样既可以使大家对算法的实现有了一定的了解,也可以熟悉一下Java图形界面以及Java语言的命名规范。

作为数据结构的课程设计,本人希望同时也能让大家顺便熟悉一下Java的基本语言结构和强大的开发能力。

在马踏棋盘的课程设计中,我们严格按照面向对象的思想进行开发,其中有Jisuan类,Shuchu类,Jframe类和Main类。

读者应注意各个类之间的关系,以便也能顺道理解Java中类的思想。

2.2运行环境

本程序是在windows7,myeclipse8.5.0的环境下运行的。

2.3马踏棋盘流程

将马随机地放在国际象棋的8*8棋盘Board[8][8]的某个方格中,然后令马按走棋规则开始进行移动。

要求马将棋盘上的每个方格进入且只进入一次,走遍全部64个方格。

2.4算法设计

2.4.1设计思想

利用某种算法直接找到最优解,算出最优路径,而不是一步步尝试遇到错误回溯。

设一数组与棋盘坐标一一对应(1,1)到(8,8),存放每个棋盘格上应算出的路径数字。

路径从1~64存放到与棋盘数组中对应的数组中,将数组当形参传到图形用户界面,利用Graphics绘制棋盘并打印数组。

建立主函数,调用计算路径类和绘制棋盘类。

2.4.2程序结构说明

程序的运行关系如图2-1.

图2-1程序运行关系图

2.4.3算法结构设计

最优算法设计

准备阶段:

(a)按国际象棋马的走法,最多有8种可能,创建数组intpath[][]={{0,0,0},{1,1,2},{2,1,-2},{3,-1,2},{4,-1,-2},{5,2,1},{6,2,-1},{7,-2,1},{8,-2,-1}}存放8中可能,为了满足与棋盘一一对应故用3×8数组。

(b)创建数组int[][]way=newint[9][9]存放棋盘每点可走的路径数。

(c)创建数组int[][]output=newint[9][9]存放最终绘制棋盘格中输出的数字,即行走路线。

(d)计算出棋盘上每点的可走路径数,存入way数组,超出棋盘边界的点被舍弃,让数组与棋盘一一对应。

计算阶段:

(a)从用户输入起始点坐标,存入m,n。

(b)先假设每个点最小可走路径数为min=8。

(c)根据way数组中已经存放的值与假设的最小可走路径数为8比较,若小于8则存入min,如此循环最多8次,找出使min值最小的点,设为下次要走的点,依次类推,直至找出64个点,即最优路径。

用户输入

利用java提供的Scanner函数从操作台进行输入。

图形用户界面

利用Jframe窗体建立图形用户界面,编写构造函数,用Graphics()函数绘制矩形并填充颜色,画出棋盘表格,并利用drawString()在相应的棋盘坐标中打印出output数组中数字。

 

第三章详细设计

3.1Jisuan类实现

publicclassjisuan{//计算棋盘中各点可走路径

publicvoidinit(int[][]way){

inti,j,k,x,y;

intpath[][]={{0,0,0},{1,1,2},{2,1,-2},{3,-1,2},{4,-1,-2},{5,2,1},{6,2,-1},{7,-2,1},{8,-2,-1}};//存放马的行走规则,为了使坐标和棋盘一一对应,定义8×3数组

for(i=1;i<=8;i++)//先初始各点可走路径为零

for(j=1;j<=8;j++)

way[i][j]=0;

for(i=1;i<=8;i++)//计算各点可走路径,如果合法便存储

for(j=1;j<=8;j++)

for(k=1;k<=8;k++)

{x=i;y=j;

x=x+path[k][1];

y=y+path[k][2];//x,y代表走下一步后的坐标,通过k的增长,改变行走的方向

if(x>=1&&x<=8&&y>=1&&y<=8)//判断是否落在棋盘内,否则不存储

way[i][j]++;}

}//init

}//jisuan

注释:

此类主要初始化各点的可走路径,并且删除不合法的点。

首先初始化way数组为0,然后利用for循环嵌套实现64次运算,每次再嵌套一个执行8次的循环,利用k++实现改变行走路线,前提是path数组中已经存储了马的行走规则,根据每次到达的点判断是否落在棋盘内,若合法则相应坐标格的way数组自加1,以此来计算出棋盘中各点的可走路线数,完成最优算法的准备阶段。

3.2Shuchu类算法实现

publicclassshuchu{

publicvoidcalcu(int[][]ou

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1