数据结构课程设计迷宫问题文档格式.docx

上传人:b****3 文档编号:18050506 上传时间:2022-12-13 格式:DOCX 页数:15 大小:48.08KB
下载 相关 举报
数据结构课程设计迷宫问题文档格式.docx_第1页
第1页 / 共15页
数据结构课程设计迷宫问题文档格式.docx_第2页
第2页 / 共15页
数据结构课程设计迷宫问题文档格式.docx_第3页
第3页 / 共15页
数据结构课程设计迷宫问题文档格式.docx_第4页
第4页 / 共15页
数据结构课程设计迷宫问题文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数据结构课程设计迷宫问题文档格式.docx

《数据结构课程设计迷宫问题文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计迷宫问题文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

数据结构课程设计迷宫问题文档格式.docx

       日期:

系主任签名:

         日期:

长沙学院课程设计鉴定表

贺承誉

2010022634

专业

班级

软件六班

设计题目

魏歌

指导教师意见:

评定等级:

教师签名:

日期:

答辩小组意见:

     答辩小组长签名:

     日期:

    

教研室意见:

 

系(部)意见:

        日期:

     

说明

课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;

摘要

计算机系的课程设计,我设计了一个迷宫系统,利用了栈结构来保存所走的迷宫路径,可以实现寻找迷宫通路的功能,当无法找到出口时,可提示用户不存在路径。

迷宫的地图可由手动输入,包括迷宫的行数与列数、迷宫的具体布局。

关键词:

课程设计;

迷宫;

数据结构。

目录

1.设计内容与要求1

2.设计说明2

2.1界面设计2

2.2数据结构3

3.实现与测试4

3.1结果4

3.2测试过程5

总结7

参考文献8

附录A源代码9

1.设计内容与要求

设计要求:

2.设计说明

2.1界面设计

迷宫系统欢迎界面如图2.1所示。

由三个菜单组成,为创建地图、打印路径与退出。

图2.1迷宫系统欢迎界面

迷宫界面如图2.2所示。

先按1创建地图,再输入迷宫行与列,再输入迷宫布局,出现图2.2的内容。

图2.2迷宫游戏界面

路径界面如图2.3所示。

创建好地图之后,按2就可以打印路径。

图2.3路径界面

2.2数据结构

数据结构图如图2.4所示。

主函数调用迷宫函数,迷宫函数调用输出路径函数,从而实现功能。

图2.4数据结构图

3.实现与测试

优良。

整个测试包含如下内容:

a.综合评估:

整个软件开发难度还算较简单,过程虽然繁琐,容易出错,但总的结果还算可以。

整体上较好,样式简单,美观。

b.软件开发中计划的执行情况:

测试页面的连接情况及是否出现异常状况。

测试结果状况良好,无出现不良情况。

c.软件质量目标完成情况:

完成情况良好,质量品质

3.1结果

输入一些临界数据进行测试:

当输入的迷宫为4*4的

1111

时,输出结果为“不存在路径”。

如下图3.1:

图3.1

0000

0000

时,输出结果如下图3.2

图3.2

3.2测试过程

页面测试报告如表3.1:

表3.1页面测试报告

编号:

001

名称:

页面测试

前置测试用例

完成人:

测试对象:

检查是否正常显示,检查信息是否正确、完整

优先级:

测试人:

软件六班贺承誉

修改人:

测试步骤:

1.打开程序

2.输入选择功能

预期结果:

1.显示正常

2.信息显示正确、完整

测试结果:

成功

错误列表

序列

输入参数

错误结果

1.

迷宫结果测试报告如表3.2:

表3.2迷宫输出报告

检查输出结果是否符合要求,显示是否正确、完整

软件E班尹京伟

1.输入迷宫

2.输出路径

1.页面刷新后显示出路径坐标

2.显示的商品信息正确、完整

总结

综合评估:

整个软件开发难度还算较简单,过程虽然繁琐,容易出错,但总的结果还算可以。

软件开发中计划的执行情况

软件质量目标完成情况:

完成情况良好,质量品质优良。

总结开发活动中的检验与教训

在本次课程设计中,我学会了许多的东西,开始的时候,我犯了许多的错误,通过同学和老师的帮助,一个个突破,才有这次的课程设计。

所以。

做啥事都得认真对待,这样才能提升自己。

参考文献

[1]王挺.数据结构[M].北京:

清华大学出版社,2005.

[2]吴伟民.数据结构[M].北京:

清华大学出版社,2006.

附录A源代码

#include<

iostream>

usingnamespacestd;

structD

{

intx;

//x代表当前位置的行坐标

inty;

//y代表当前位置的列坐标

intdir;

};

structLink

Ddata;

Link*next;

//Stack

classStack

private:

Link*top;

//指向栈顶节点的指针

public:

Stack();

~Stack();

voidPush(constD&

e);

//把元素data压入栈中

DPop();

//使栈顶元素出栈

DGetTop();

//取出栈顶元素

boolEmpty();

//判断栈是否为空,是空的话返回true

Stack:

:

Stack()//构造函数,置空栈

top=NULL;

}

~Stack(){}//析构函数

voidStack:

Push(constD&

e)//把元素x压入栈中

Link*P=newLink;

P->

data=e;

next=top;

top=P;

DStack:

Pop()//使栈顶元素出栈

{

Link*P=top;

top=top->

next;

DTemp=P->

data;

deleteP;

returnTemp;

GetTop(){returntop->

}//取出栈顶元素

boolStack:

Empty(){return(top==NULL);

intmove[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};

//定义当前位置移动的8个方向

boolFindPath(int**maze,constint&

m,constint&

n);

//寻找路径

voidPrint(Stack&

p,int**maze,constint&

//输出迷宫的路径

int**CreateMaze(int&

m,int&

n);

//创建迷宫

//返回存取迷宫的二维指针

intmain()

intm=0,n=0;

//定义迷宫的长和宽

int**maze;

//定义二维指针存取迷宫

intchoice=1,create=0;

while(choice)

{

cout<

<

"

*******************迷宫系统*************************"

endl;

请选择"

创建迷宫地图--------------------------------------①"

打印路径--------------------------------------②"

退出--------------------------------------○"

****************************************************"

cin>

>

choice;

switch(choice)

{

case1:

maze=CreateMaze(m,n);

//调用GetMaze(int&

n)函数,得到迷宫

create=1;

break;

case2:

if(0==create)

{

cout<

未创建迷宫地图,请先创建地图!

maze=CreateMaze(m,n);

}

if(FindPath(maze,m,n))//调用Mazepath(int**maze,intm,intn)函数获取路径

cout<

迷宫路径探索成功!

\n"

;

else

路径不存在!

case0:

default:

cout<

输入有误,请重新输入"

break;

}

}

return0;

n)//返回存取迷宫的二维指针

inti=0,j=0,a,b;

请输入迷宫的长和宽:

cin>

a>

b;

//输入迷宫的长和宽

if(a<

=1||b<

=1)

设置有误,默认设为2X2大小的"

a=2;

b=2;

}

请输入迷宫内容:

(0代表可通,1代表不可通)\n"

m=a;

n=b;

//m,n分别代表迷宫的行数和列数

maze=newint*[m+2];

for(i=0;

i<

m+2;

++i)

maze[i]=newint[n+2];

for(i=1;

=m;

for(j=1;

j<

=n;

++j)

maze[i][j];

for(i=0;

++i)

maze[i][0]=maze[i][n+1]=1;

n+2;

maze[0][i]=maze[m+1][i]=1;

//设置边界

returnmaze;

//返回存贮迷宫的二维指针maze

n)//寻找迷宫maze中从(0,0)到(m,n)的路径

//到则返回true,否则返回false

StackSpath,Sproc;

//定义栈Sproc、Spath,分别存探索迷宫的过程和存储路径

DTemp1,Temp2;

intx,y,loop;

Temp1.x=1;

Temp1.y=1;

Sproc.Push(Temp1);

//将入口位置入栈

Spath.Push(Temp1);

maze[1][1]=2;

//标志入口位置已到达过

while(!

Sproc.Empty())//栈Sproc非空,则反复探索

Temp2=Sproc.GetTop();

//获取栈顶元素

if(!

(Sproc.GetTop().x==Spath.GetTop().x&

&

Sproc.GetTop().y==Spath.GetTop().y))

Spath.Push(Temp2);

//如果有新位置入栈,则把上一个探索的位置存入栈Spath

for(loop=0;

loop<

8;

++loop)//探索当前位置的8个相邻位置

x=Temp2.x+move[loop][0];

//计算出新位置x位置值

y=Temp2.y+move[loop][1];

//计算出新位置y位置值

if(maze[x][y]==0)//判断新位置是否可达

{

Temp1.x=x;

Temp1.y=y;

maze[x][y]=2;

//标志新位置已到达过

Sproc.Push(Temp1);

//新位置入栈

}

if((x==(m))&

(y==(n)))//成功到达出口

Temp1.x=m;

Temp1.y=n;

Temp1.dir=0;

Spath.Push(Temp1);

//把最后一个位置入栈

Print(Spath,maze,m,n);

//输出路径

returntrue;

//表示成功找到路径

}//for

//如果没有新位置入栈,则返回到上一个位置

if(Sproc.GetTop().x==Spath.GetTop().x&

Sproc.GetTop().y==Spath.GetTop().y)

Sproc.Pop();

Spath.Pop();

}//while

returnfalse;

//表示查找失败,即迷宫无路经

n)//输出路径

Stacktemp=p;

temp.Empty())

data=temp.Pop();

maze[data.x][data.y]=8;

inti,j;

for(j=1;

if(maze[i][j]==8)

'

*'

else

cout<

'

if(j==n)

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

当前位置:首页 > 初中教育 > 英语

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

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