- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《程序设计课程设计》指导书.doc
程序设计课程设计
指导书
计算机科学与技术学院软件工程系
2011年6月27日
一.课程设计报告要求
课程设计报告封面应给出专业、班级、姓名、学号、指导教师和完成日期,报告开头给出题目,内容包括以下七项:
需求分析
简要说明程序设计的任务,程序要做什么。明确规定以下内容:
输入的形式和输入值的范围;
输出的形式;
程序所能达到的功能;
测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。
概要设计
说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。
详细设计
实现概要设计中定义的所有数据类型,对每个操作写出伪码算法;对主程序和其他模块也写出伪码算法(伪码算法的详细程度为按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数的调用关系图。
测试结果
列出测试结果,包括输入和输出。测试数据应该完整、严格。
测试分析
内容包括:
测试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论与分析;
算法的时空分析和改进设想;
经验和体会。
使用说明
说明如何使用该程序,列出每一步的操作步骤。
附录
列出程序文件名的清单以及带注释的源程序。
二.迷宫问题示例
【】
【】【】 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0
【】【】 * # @ @ @ # * # @ @ @ # * * @ @ # # # * # # # # @ * * * # * * * @ # * * * # * # # # # # * # # # # * # # # * *
(7)程序执行的命令为:
1)创建迷宫; 2)求解迷宫; 3)输出迷宫的解。
二.概要设计
1.设定栈的抽象数据类型定义为:
ADT stack{
数据对象:D={ai|ai∈charset,i=1,2,……,n,n≥0}
数据关系:R1={ai-1,ai|ai-1,ai∈D,i=2……,n}
基本操作:
InitStack(S)
操作结果:构造一个空栈S。
DestroyStack(S)
初始条件:栈S已存在。
操作结果:销毁栈S。
ClearStack(S)
初始条件:栈S已存在。
操作结果:将S清为空栈。
StackLength(S)
初始条件:栈S已存在。
操作结果:返回栈S的长度。
StackEmpty(S)
初始条件:栈S已存在。
操作结果:若S为空栈,则返回TRUE,否则返回FALSE。
GetTop(S,e)
初始条件:栈S已存在。
操作结果:若栈S不空,则以e返回栈顶元素。
Push(S,e)
初始条件:栈S已存在。
操作结果:在栈S的栈顶插入新的栈顶元素e。
Pop(S,e)
初始条件:栈S已存在。
操作结果:删除S的栈顶元素,并以e返回其值。
StackTraverse(S,visit( ))
初始条件:栈S已存在。
操作结果:从栈底到栈顶依次对S中的每个元素调用函数visit( ).
}ADT stack
2.设定迷宫的抽象数据类型为:
ADT maze{
数据对象:D={ai,j|ai,j∈{‘ ’、‘#’、‘@’、‘*’},0≤i≤m+1,0≤j≤n+1,
m,n≤10}
数据关系:R={ROW,COL}
ROW={ai-1,j,ai,j|ai-1,j,ai,j∈D,i=1,……,m+1,j=0,……,n+1}
COL={ai,j-1,ai,j|ai,j-1,ai,j∈D,i=0,……,m+1,j=1,……,n+1}
基本操作:
InitMaze(M,a,row,col)
初始条件:二维数组a[row+2][col+2]已存在,其中自第1行至第row+1行、每行中自第1列至第col+1列的元素已有值,并且以值0表示通路,以值1表示障碍。
操作结果:构成迷宫的字符型数组,以空白字符表示通路,以字符‘#’表示障碍,并在迷宫四周加上一圈障碍。
MazePath(M)
初始条件:迷宫M已被赋值。
操作结果:若迷宫M中存在一条通路,则按如下规定改变迷宫M的状态:以字符“*”表示路径上的位置,字符“@”表示“死胡同”;否则迷宫的状态不变。
PrintMaze(M)
初始条件:迷宫M已存在。
操作结果:以字符形式输出迷宫。
}ADT maze;
3.本程序包含三个模块
1)主程序模块
void main( )
{ 初始化
do{
接受命令;
处理命令;
}while(命令!=“退出”);
}
2
文档评论(0)