《物联网软件基础课程设计》指导书 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《《物联网软件基础课程设计》指导书 .pdf》由会员分享,可在线阅读,更多相关《《物联网软件基础课程设计》指导书 .pdf(38页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、0 物联网软件基础课程设计指导书计算机科学与技术学院计工系2016年 6 月 12 日名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 38 页 -1 前 言软件基础课程设计是物联网专业的重要实践性课程。目的在于培养学生分析问题和解决问题的能力,为学生提供了一个既动手又动脑,独立实践的机会。将课本上的数据结构、离散数学和 C 语言的理论知识和实际应用问题进行有机结合,提高学生程序设计、程序调试及项目开发能力。为后续课程:操作系统、软件工程,编译原理等课程的学习奠定必要的实践基础。本课程设计是利用数据结构、离散数学、C/C+语言理论和实验课中学到的编程知识和编程技巧,通过布置具有一定
2、难度、一定编程量的课程设计题目,利用 C/C+语言作为开发工具,使学生通过课程设计掌握高级编程语言的知识和编程技术,掌握程序设计的思想和方法,初步具备利用计算机求解实际问题的能力。通过程序设计课程设计课程的学习,能够帮助学生加深理解数据结构、离散数学、C 语言基本概念,达到培养学生良好程序设计的习惯和运用C 语言编写程序解决实际问题的能力。使学生学会把书本知识用于解决实际问题,起到深化理解和灵活掌握教学内容的目的。同时使学生在程序设计方法及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。通过该课程设计,学生应该掌握C 或 C+语言程序设计的方法、数据结构和离散数学理论知识,熟悉C 或
3、 C+程序的开发环境及C 或 C+程序的调试过程,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力;学生应该具有如下基本技能:培养学生查阅参考资料、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。通过对所选题目方案分析比较,确立方案,编制程序与调试程序。能熟练调试程序,在教师的指导下,完成课题任务。根据个人的设计调试过程,按课程设计报告的要求撰写设计报告。选用教材及主要参考书:1.教材1 呼克佑.C 语言程序设计(计算机专业).中国宇航出版社,2002 2 严蔚敏.数据结构(C 语言版)清华大学出版社,2007 3 宋春花、吕进来等.C+面向对象程序设计.2.
4、主要参考书1 谭浩强.程序设计题解与上机指导(三版).清华大学出版社,2005 2 邱仲潘.C 语言参考手册.机械工业出版社,2004 3 郑莉.C+语言程序设计.清华大学出版社,2010 4 方世昌.离散数学.西安电子科技大学出版社,2003 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 38 页 -2 目 录前 言.1 一.课程设计报告要求.4 二.课程设计报告示例 迷宫问题 .5【问题描述】.5【需求分析】.5【概要设计】.5【详细设计】.7【功能的实现】(用 C 或 C+语言描述).11【实例测试及运行结果】.11【实现提示】.错误!未定义书签。【用户手册】.错误!未定
5、义书签。【选作内容】.错误!未定义书签。三设计题目 .14 1保龄球计分.14 1.1 问题描述 .14 1.2 基本要求 .14 1.3 测试数据 .15 2.文本文件单词的检索与计数.15 2.1 问题描述.15 2.2 设计需求及分析.15 2.2.1 串模式匹配算法的设计要求.15 2.2.2 文本文件单词的检索与计数的设计要求.15 2.3 设计功能的实现(用C 或 C+语言描述).16 2.3.1 朴素模式匹配算法 .16 2.3.2 给定位置的串匹配算法 .16 2.3.3 建立文本文件 .17 2.3.4 给定单词的计数 .17 2.3.5 检索单词出现在文本文件中的行号、次数
6、及其位置.18 2.3.6 运行主控程序 .18 2.4【实例测试及运行结果】.18 2.4.1 运行实例一 .18 2.4.2 运行实例二 .18 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 38 页 -3 2.5【实现提示】.18 3.停车场管理 .19 3.1 问题描述.19 3.2 设计需求及分析.19 3.3 设计功能的实现(用C 或 C+语言描述).19 3.4 实例测试及运行结果.19 3.5 实现提示.19 4.交通咨询系统设计(最短路径问题).20 4.1 问题描述.20 4.2 设计需求及分析.20 4.2.1 建立图的存储结构 .20 4.2.2 单源最
7、短路径 .21 4.2.3 任意一对顶点间最短路径.21 4.3 设计功能的实现(用 C 或 C+语言描述).22 4.3.1 建立有向图的存储结构 .22 4.3.2 迪杰斯特拉算法 .22 4.3.3 费洛伊德算法 .22 4.3.4 运行主控程序 .22 4.4 实例测试及运行结果 .22 4.4.1 运行实例一 .22 4.4.2 运行实例二 .23 5校园导游咨询 .24 5.1 问题描述.24 5.2 基本要求.24 5.3 测试数据.24 5.4 实现提示.24 6.学生管理系统 .25 6.1 问题描述.25 6.2 设计需求及分析.25 6.3 设计功能的实现(C+语言描述)
8、.25 6.4 实例测试及运行结果.36 6.5 实现提示.37 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 38 页 -4 一、课程设计报告要求课程设计要求选做任意四个题目即可。课程设计报告封面应给出专业、班级、姓名、学号、指导教师和完成日期,报告开头给出题目,内容包括以下五项:1【问题描述】简要描述问题,然后说明程序设计的任务,程序要做什么。明确规定以下内容:(1)输入的形式和输入值的范围;(2)输出的形式;(3)程序所能达到的功能;(4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。2【问题分析与设计】分析问题,简述解决的思想或方法,说明本程序中用到
9、的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。实现设计中定义的所有数据类型,对每个操作写出伪码算法;对主程序和其他模块也写出伪码算法(伪码算法的详细程度为按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数的调用关系图。3【功能实现】(用 C 或 C+描述)/说明:用C 或 C+实现代码设计。4【实例测试及运行结果】列出测试结果,包括输入和输出。测试数据应该完整、严格。测试分析内容包括:(1)测试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论与分析;(2)算法的时空分析和改进设想;(3)经验和体会。5【心得体会】谈谈在设计和调试过程中的收获
10、。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 38 页 -5 二课程设计报告示例 迷宫问题(参考)专业:_ 班级:_ 姓名:_ 学号:_ 完成日期:_【问题描述】编制一个求解迷宫通路的程序。以一个m*n 的长方阵表示迷宫,0 和 1 分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d 表示走到下一坐标的方向。如:对于下列数据的迷宫,输出的一条通路为:(1,1,1)
11、,(1,2,2),(2,2,2),(3,2,3),(3,1,2)【问题分析与设计】一、问题分析(1)以二维数组MAZEM+2N+2表示迷宫,其中:MAZE0J 和 MAZEM+1J(0JN+1)及 MAZEI0和 MAZEIN+1(0I M+1)为添加的一圈障碍。数组中以元素值为0表示通路,1 表示障碍。限定迷宫的大小M,N 10。(2)用户以文件的形式输入迷宫的数据:文件中第一行的数据为迷宫的行数M 和列数 N;从第 2 行至第 M+1 行(每行N 个数)为迷宫值,同一行中的两个数字之间用空白字符相隔。(3)迷宫的入口位置和出口位置可由用户随时设定。(4)若设定的迷宫存在通路,则以长方阵形式
12、将迷宫及其通路输出到标准输出文件(即终端)上,其中,字符“#”表示障碍,字符“*”表示路径上的位置,字符“”表示“死胡同”,即曾经经过但不能到达出口的位置,其余用空格符表示。若设定的迷宫不存在通路,则报告相应信息。(5)本程序只求出一条成功的通路。然而,只需要对迷宫求解的函数作小量修改,便可求得全部路径。(6)程序执行的命令为:1)创建迷宫;2)求解迷宫;3)输出迷宫的解。二、概要设计1设定栈的抽象数据类型定义为:ADT stack 数据对象:D=ai|aicharset,i=1,2,n,n 0数据关系:R1=|ai-1,aiD,i=2,n基本操作:InitStack(&S)操作结果:构造一个
13、空栈S。DestroyStack(&S)初始条件:栈S已存在。操作结果:销毁栈S。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 38 页 -6 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。
14、Pop(&S,&e)初始条件:栈S已存在。操作结果:删除S 的栈顶元素,并以e 返回其值。StackTraverse(S,visit()初始条件:栈S已存在。操作结果:从栈底到栈顶依次对S中的每个元素调用函数visit().ADT stack 2设定迷宫的抽象数据类型为:ADT maze 数据对象:D=ai,j|ai,j,?、,#?、,?、,*?,0i m+1,0j n+1,m,n10数据关系:R=ROW,COL ROW=|ai-1,j,ai,jD,i=1,,m+1,j=0,,n+1 COL=|ai,j-1,ai,j D,i=0,,m+1,j=1,,n+1 基本操作:InitMaze(&M,a
15、,row,col)初始条件:二维数组arow+2col+2 已存在,其中自第1 行至第 row+1 行、每行中自第1 列至第 col+1 列的元素已有值,并且以值0 表示通路,以值1 表示障碍。操作结果:构成迷宫的字符型数组,以空白字符表示通路,以字符,#?表示障碍,并在迷宫四周加上一圈障碍。MazePath(&M)初始条件:迷宫M 已被赋值。操作结果:若迷宫M 中存在一条通路,则按如下规定改变迷宫M 的状态:以字符“*”表示路径上的位置,字符“”表示“死胡同”;否则迷宫的状态不变。PrintMaze(M)初始条件:迷宫M 已存在。操作结果:以字符形式输出迷宫。ADT maze;3.本程序包含
16、三个模块1)主程序模块名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 38 页 -7 void main()初始化do 接受命令;处理命令;while(命令!=“退出”);2)栈模块-实现栈抽象数据类型3)迷宫模块-实现迷宫抽象数据类型各模块之间的调用关系如下:主程序模块迷宫模块栈模块4求解迷宫中一条通路的伪码算法:设定当前位置的初值为入口位置;do 若当前位置可通,则 将当前位置插入栈顶;/纳入路径若该位置是出口位置,则结束;/求得路径存放在栈中否则切换当前位置的东邻方块为新的当前位置;否则 若栈不空且栈位置尚有其他方向未被探索,则设定新的当前位置为沿顺时针方向旋转找到的栈顶位
17、置的下一相邻块;若栈不空但栈顶位置的四周均不可通,则删去栈顶位置;/后退一步,从路径中删去该通道块,若栈不空,则重新测试新的栈顶位置,直到找到一个可通的相邻块或出栈至栈空;while(栈不空);栈空说明没有路径存在 三、详细设计1坐标位置类型typedef struct int r,c;/迷宫中行、列的范围PosType;名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 38 页 -8 2迷宫类型typedef struct int m,n;char arrRANGERANGE;/各位置取值,?,#?,?或,*?MazeType;void InitMaze(MazeType&maz
18、e,int a,int row,int col)/按照用户输入的row 行和 col 列的二维数组(元素值为0 或 1)/设置迷宫的初值,包括加上边缘一圈的值bool MazePath(MazeType&maze,PosType start,PosType end)/求解迷宫maze中,从入口start 到出口 end 的一条路径/若存在,则返回TRUE;否则返回FALSE void PrintMaze(MazeType maze)/将迷宫以字符型方阵的形式输出到标准输出文件上3栈类型typedef struct int step;/当前位置在路径上的“序号”PosType seat;/当前的
19、坐标位置directiveType di;/往下一坐标位置的方向ElemType;/栈的元素类型typedef struct NodeType ElemType data;NodeType*next;NodeType,*LinkType;/结点类型,指针类型typedef struct LinkType top;int size;Stack;/栈类型栈的基本操作设置如下:void InitStack(Stack&S)/初始化,设S为空栈(S.top=NULL)void DestroyStack(stack&S)/销毁栈 S,并释放所占空间void ClearStack(Stack&S)/将 S
20、清为空栈int stackLength(Stack S)/返回栈 S 的长度 S.size Status StackEmpty(Stack S)/若 S为空栈(S.top=NULL),则返回 TRUE;否则返回FALSE Status GetTop(Stack s,ElemType e)/若栈 S 不空,则以 e 带回栈顶元素并返回TRUE,否则返回FALSE;Status Push(Stack&S,ElemType e)/若分配空间成功,则在 S的栈顶插入新的栈顶元素e,并返回 TRUE,/否则栈不变,并返回 FALSE Status Pop(Stack&S,ElemType&e)名师资料总
21、结-精品资料欢迎下载-名师精心整理-第 9 页,共 38 页 -9/若栈不空,则删除 S 的栈顶元素并以e 带回其值,且返回TRUE/否则返回FALSE void StackTraverse(Stack s,Status(*visit)(ElemType e)/从栈底到栈顶依次对S中的每个结点调用函数visit 其中部分操作的算法:Status Push(Stack&S,ElemType e)/若分配空间成功,则在S 的栈顶插入新的栈顶元素e,并返回TRUE;/否则栈不变,并返回FALSE if(MakeNode(p,e)p-next=s.top;s.top=p;s.size+;return
22、TRUE;else return FALSE;Status Pop(Stack&S,ElemType&e)/若栈不空,则删除S 的栈顶元素并以e带回其值,且返回TRUE,/否则返回 FALSE,且 e 无意义if(StackEmpty(S)return FALSE;else p=S.top;S.top=S.top-next;e=p-date;S.size-;return TRUE;4.求迷宫路径的伪码算法:Status MazePath(MazeType maze,PosType start,PosType end)/若迷宫中存在从入口start 到出口 end 的通道,则求得一条存入在栈中/
23、(从栈底到栈顶为从入口到出口的路径),并返回TRUE;否则返回FALSE InitStack(S);curpos=start;/设定“当前位置”为“入口位置”curstep=1;found=FALSE;/探索第一步do if(Pass(maze,curpos)/当前位置可以通过,即是未曾走到过的通道块留下足迹FootPrint(maze,curpos);e=(curstep,curpos,1);Push(S,e);/加入路径if(Same(curpos,end)found=TRUE;/到达终点(出口)else curpos=NextPos(curpos,1);/下一位置是当前位置的东邻curs
24、tep+;/探索下一步/else/if else/当前位置不能通过if(!StackEmpty(S)名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 38 页 -10 Pop(S,e);while(e.di=4&!StackEmpty(S)MarkPrint(maze,e,seat);Pop(S,e);curstep-;/留下不能通过的标记,并退回一步/while if(e.di4)e.di+;Push(S.e);/换下一个方向探索curpos=NextPos(e.seat,e.di);/设定当前位置是该新方向上的相邻块/if/if while(!StackEmpty(S)&!f
25、ound);return found;/MazePath 5主函数和其他函数的伪码算法void main()/主程序Initialization();/初始化do ReadCommand(cmd);/读入一个操作命令符Interpret(cmd);/解释执行操作命令符while(cmd!=,q?&cmd!=,Q?);/main void Initialization()/系统初始化clrscr();/清屏在屏幕上方显示操作命令清单:CreatMazec MazePathm PrintMaze p Quitq;在屏幕下方显示操作命令提示框:/Initialization void ReadCom
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 物联网软件基础课程设计 物联网软件基础课程设计指导书 2022 联网 软件 基础 课程设计 指导书
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内