《程序设计课程设计》指导书.doc
《《程序设计课程设计》指导书.doc》由会员分享,可在线阅读,更多相关《《程序设计课程设计》指导书.doc(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、程序设计课程设计指导书软件学院 软件工程系2013年6月16日前 言程序设计课程设计是计算机科学与技术专业的重要实践性课程。目的在于培养学生分析问题和解决问题的能力,为学生提供了一个既动手又动脑,独立实践的机会。将课本上的数据结构、离散数学和C语言的理论知识和实际应用问题进行有机结合,提高学生程序设计、程序调试及项目开发能力。为后续课程: 操作系统、软件工程,编译原理等课程的学习奠定必要的实践基础。本课程设计是利用数据结构、离散数学、C语言理论和实验课中学到的编程知识和编程技巧,通过布置具有一定难度、一定编程量的课程设计题目,利用C语言作为开发工具,使学生通过课程设计掌握高级编程语言的知识和编
2、程技术,掌握程序设计的思想和方法,初步具备利用计算机求解实际问题的能力。通过程序设计课程设计课程的学习,能够帮助学生加深理解数据结构、离散数学、C语言基本概念,达到培养学生良好程序设计的习惯和运用 C 语言编写程序解决实际问题的能力。使学生学会把书本知识用于解决实际问题,起到深化理解和灵活掌握教学内容的目的。同时使学生在程序设计方法及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。通过该课程设计,学生应该掌握C或C+语言程序设计的方法、数据结构和离散数学理论知识,熟悉C或C+程序的开发环境及C或C+程序的调试过程,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力;学生
3、应该具有如下基本技能:培养学生查阅参考资料、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。通过对所选题目方案分析比较,确立方案,编制程序与调试程序。能熟练调试程序,在教师的指导下,完成课题任务。根据个人的设计调试过程,按课程设计报告的要求撰写设计报告。选用教材及主要参考书:1. 教材呼克佑. C语言程序设计(计算机专业). 中国宇航出版社,2002严蔚敏. 数据结构(C语言版) 清华大学出版社,2007陈国勋,刘书芳等. 离散数学. 机械工业出版社,20072. 主要参考书1 谭浩强. 程序设计题解与上机指导(三版) . 清华大学出版社,20052 邱仲潘. C语言参考手册
4、. 机械工业出版社,20043 谭浩强. C语言程序设计(三版). 清华大学出版社,20054 方世昌. 离散数学. 西安电子科技大学出版社,2003目 录前 言1一课程设计报告要求4二课程设计报告示例迷宫问题5【问题描述】 5【设计需求及分析】5【设计功能的实现】(用C或C+语言描述)5【实例测试及运行结果】11【实现提示】13【选作内容】14三设计题目151文本文件单词的检索与计数151.1【问题描述】151.2【设计需求及分析】151.2.1 串模式匹配算法的设计要求151.2.2 文本文件单词的检索与计数的设计要求151.3【设计功能的实现】(用C或C+语言描述)161.3.1 朴素模
5、式匹配算法161.3.2 给定位置的串匹配算法161.3.3 建立文本文件171.3.4 给定单词的计数171.3.5 检索单词出现在文本文件中的行号、次数及其位置181.3.6 运行主控程序181.4【实例测试及运行结果】181.4.1 运行实例一181.4.1 运行实例二181.5【实现提示】182停车场管理192.1【问题描述】192.2【设计需求及分析】192.3【设计功能的实现】(用C或C+语言描述)192.4【实例测试及运行结果】192.5【实现提示】193交通咨询系统设计(最短路径问题)203.1【问题描述】203.2【设计需求及分析】203.2.1建立图的存储结构203.2.2
6、单源最短路径213.2.3任意一对顶点间最短路径213.3【设计功能的实现】(用C或C+语言描述)223.3.1 建立有向图的存储结构223.3.2 迪杰斯特拉算法223.3.3 费洛伊德算法223.3.4 运行主控程序223.4【实例测试及运行结果】223.4.1 运行实例一223.4.2 运行实例二223.5【实现提示】234学生管理系统244.1【问题描述】244.2【设计需求及分析】244.3【设计功能的实现】(用C或C+语言描述)244.4【实例测试及运行结果】354.5【实现提示】36 一课程设计报告要求课程设计要求选做任意两个题目即可。课程设计报告封面应给出专业、班级、姓名、学号
7、、指导教师和完成日期,报告开头给出题目,内容包括以下五项:1【问题描述】简要描述问题,然后说明程序设计的任务,程序要做什么。明确规定以下内容:(1) 输入的形式和输入值的范围;(2) 输出的形式;(3) 程序所能达到的功能;(4) 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。2【设计需求及分析】说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。实现设计中定义的所有数据类型,对每个操作写出伪码算法;对主程序和其他模块也写出伪码算法(伪码算法的详细程度为按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数的调用关系图。
8、3【设计功能的实现】(用C或C+描述)/说明:用C或C+实现代码设计。4【实例测试及运行结果】列出测试结果,包括输入和输出。测试数据应该完整、严格。测试分析内容包括:(1) 测试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论与分析;(2) 算法的时空分析和改进设想;(3) 经验和体会。5【实现提示】使用说明:说明如何使用该程序,列出每一步的操作步骤。附录:列出程序文件名的清单以及必要的带注释的源程序。心得体会等等。二课程设计报告示例迷宫问题专业: 班级: 姓名: 学号: 完成日期: 【问题描述】编制一个求解迷宫通路的程序。以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。
9、设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d 表示走到下一坐标的方向。如:对于下列数据的迷宫,输出的一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2)【设计需求及分析】(1)以二维数组MAZEM+2N+2表示迷宫,其中:MAZE0J和MAZEM+1J(0JN+1)及MAZEI0和MAZEIN+1(0IM+1)为添加的一圈障碍。数组中以元素值为0表示通路,1表示障碍
10、。限定迷宫的大小M,N10。(2)用户以文件的形式输入迷宫的数据:文件中第一行的数据为迷宫的行数M和列数N;从第2行至第M+1行(每行N个数)为迷宫值,同一行中的两个数字之间用空白字符相隔。(3)迷宫的入口位置和出口位置可由用户随时设定。(4)若设定的迷宫存在通路,则以长方阵形式将迷宫及其通路输出到标准输出文件(即终端)上,其中,字符“#”表示障碍,字符“*”表示路径上的位置,字符“”表示“死胡同”,即曾经经过但不能到达出口的位置,其余用空格符表示。若设定的迷宫不存在通路,则报告相应信息。(5)本程序只求出一条成功的通路。然而,只需要对迷宫求解的函数作小量修改,便可求得全部路径。【设计功能的实
11、现】(用C或C+语言描述)说明:此内容由学生自己设计完成。提示:程序应包含的执行命令有:1)创建迷宫; 2)求解迷宫; 3)输出迷宫的解。概要设计示例如下:1设定栈的抽象数据类型定义为:ADT stack数据对象:D=ai|aicharset,i=1,2,n,n0数据关系:R1=|ai-1,aiD,i=2,n基本操作:InitStack(&S)操作结果:构造一个空栈S。DestroyStack(&S)初始条件:栈S已存在。操作结果:销毁栈S。ClearStack(&S)初始条件:栈S已存在。操作结果:将S清为空栈。StackLength(&S)初始条件:栈S已存在。操作结果:返回栈S的长度。S
12、tackEmpty(&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 stack2设定迷宫的抽象数据类型为:ADT maze数据对象:D=ai,j|ai,j 、
13、#、*,0im+1,0jn+1,m,n10数据关系:R=ROW,COLROW=|ai-1,j,ai,jD,i=1,,m+1,j=0,,n+1COL=|ai,j-1,ai,jD,i=0,,m+1,j=1,,n+1基本操作:InitMaze(&M,a,row,col)初始条件:二维数组arow+2col+2已存在,其中自第1行至第row+1行、每行中自第1列至第col+1列的元素已有值,并且以值0表示通路,以值1表示障碍。操作结果:构成迷宫的字符型数组,以空白字符表示通路,以字符#表示障碍,并在迷宫四周加上一圈障碍。MazePath(&M)初始条件:迷宫M已被赋值。操作结果:若迷宫M中存在一条通路
14、,则按如下规定改变迷宫M的状态:以字符“*”表示路径上的位置,字符“”表示“死胡同”;否则迷宫的状态不变。PrintMaze(M)初始条件:迷宫M已存在。操作结果:以字符形式输出迷宫。ADT maze;3.本程序包含三个模块1)主程序模块void main( ) 初始化do接受命令;处理命令;while(命令!=“退出”);2)栈模块-实现栈抽象数据类型3)迷宫模块-实现迷宫抽象数据类型各模块之间的调用关系如下:主程序模块迷宫模块栈模块4求解迷宫中一条通路的伪码算法:设定当前位置的初值为入口位置;do若当前位置可通,则 将当前位置插入栈顶; /纳入路径 若该位置是出口位置,则结束; /求得路径
15、存放在栈中 否则切换当前位置的东邻方块为新的当前位置;否则若栈不空且栈位置尚有其他方向未被探索,则设定新的当前位置为沿顺时针方向旋转找到的栈顶位置的下一相邻块;若栈不空但栈顶位置的四周均不可通,则删去栈顶位置; /后退一步,从路径中删去该通道块, 若栈不空,则重新测试新的栈顶位置, 直到找到一个可通的相邻块或出栈至栈空;while(栈不空);栈空说明没有路径存在详细设计示例如下:1坐标位置类型typedef structint r,c; /迷宫中行、列的范围PosType;2迷宫类型typedef struct int m,n; char arrRANGERANGE; /各位置取值 ,#,或*
16、MazeType;void InitMaze(MazeType &maze,int a,int row,int col)/按照用户输入的row行和col列的二维数组(元素值为0或1)/设置迷宫的初值,包括加上边缘一圈的值bool MazePath(MazeType &maze,PosType start,PosType end)/求解迷宫maze中,从入口start到出口end的一条路径/若存在,则返回TRUE;否则返回FALSEvoid PrintMaze(MazeType maze)/将迷宫以字符型方阵的形式输出到标准输出文件上3栈类型typedef structint step; /当前
17、位置在路径上的“序号”PosType seat; /当前的坐标位置directiveType di; /往下一坐标位置的方向ElemType; /栈的元素类型typedef struct NodeTypeElemType data;NodeType *next;NodeType,*LinkType; /结点类型,指针类型typedef structLinkType top;int size;Stack; /栈类型栈的基本操作设置如下:void InitStack(Stack &S)/初始化,设S为空栈(S.top=NULL)void DestroyStack(stack &S)/销毁栈S,并释
18、放所占空间void ClearStack(Stack &S)/将S清为空栈int stackLength(Stack S)/返回栈S的长度S.sizeStatus StackEmpty(Stack S)/若S为空栈(S.top=NULL),则返回TRUE;否则返回FALSEStatus GetTop(Stack s,ElemType e)/若栈S不空,则以e带回栈顶元素并返回TRUE,否则返回FALSE;Status Push(Stack &S,ElemType e) /若分配空间成功,则在S的栈顶插入新的栈顶元素e,并返回TRUE,/否则栈不变,并返回FALSEStatus Pop(Stac
19、k &S,ElemType &e)/若栈不空,则删除S的栈顶元素并以e带回其值,且返回TRUE /否则返回FALSEvoid StackTraverse(Stack s,Status(*visit)(ElemType e)/从栈底到栈顶依次对S中的每个结点调用函数visit其中部分操作的算法:Status Push(Stack &S,ElemType e)/若分配空间成功,则在S的栈顶插入新的栈顶元素e,并返回TRUE;/否则栈不变,并返回FALSEif (MakeNode(p,e)p-next=s.top; s.top=p;s.size+; return TRUE;else return F
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计课程设计 程序设计 课程设计 指导书
限制150内