校园导航问题数据结构设计.doc
《校园导航问题数据结构设计.doc》由会员分享,可在线阅读,更多相关《校园导航问题数据结构设计.doc(57页珍藏版)》请在沃文网上搜索。
1、数 据 结 构课程设计说明书题 目校园导航问题学 号1067111204姓 名范振辉指导教师周李涌日 期2012-6-17至2012-6-27内蒙古科技大学课程设计任务书课程名称数据结构课程设计设计题目校园导航问题指导教师 时间2012.62012.7一、教学要求1. 掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风二、设计资料及参数每个学生在教师提
2、供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。校园导航问题自主选择存储结构表示校园平面图,在此基础上实现求校园任意两点的最短路径。要求设计类(或类模板)来描述图,包含必要的构造函数和析构函数,以及其他能够完成如下功能的成员函数:v 输入图、输出图v 查询给定建筑信息v 求校园平面图中任意两点的最短路径,并输出路径及路径长度v 任意输入两点,查询出该两点是否存在最短路径 并设计主函数测试该类(或类模板)。三、设计要求及成果1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告
3、四、进度安排资料查阅与讨论(1天)系统分析(2天)系统的开发与测试(5天)编写课程设计说明书和验收(2天)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。4. 根据答辩的情况,应能够以清晰的思路和准确、简练的语言叙述自己的设计和回答教师的提问六、建议参考资料1数据结构 (C语言版)严蔚敏、吴伟民 主编 清华大学出版社 2004.112数据结构课程设计案例精编(用C/C+描述),李建学 等 编著,清华大学出版社 2007.23.数据结构:用面向对象方法与C+
4、语言描述,殷人昆 主编,清华大学出版社 2007.6目录第1章 需求分析3第2章 总体设计3第3章 抽象数据类型定义33.1 抽象数据类型的设计33.2 抽象数据类型的设计4第4章 详细设计44.1 工程视图44.2 类图视图44.3 函数的调用关系44.4 主程序流程图54.5 主要算法的流程图5第5章 测试5第6章 总结5附录:程序代码5第1章 需求分析以邻接表的存储结构存储校园平面图,在此基础上实现求校园任意两点的最短路径。要求设计类(或类模板)来描述图,包含必要的构造函数和析构函数,以及其他能够完成如下功能的成员函数:v 输入图、输出图v 查询给定建筑信息v 求校园平面图中任意两点的最
5、短路径,并输出路径及路径长度v 任意输入两点,查询出该两点是否存在最短路径v 设计主函数测试该类(或类模板)。第2章 总体设计系统的功能结构:v 输入创建图、输出图v 查询给定建筑信息v 求校园平面图中任意两点的最短路径,并输出路径及路径长度v 任意输入两点,查询出该两点是否存在最短路径。输出平面图系统功能查询建筑信息输校园平面出图任意两点最短路径指定两点最短路径图的创建与修改创建查找离你最近的建筑小组分工:范振辉负责主函数菜单函数的控制,图的创建、修改,文件保存、读取等。李健主要负责查询建筑型,任意两点最短路径(具体由他本人详述),杨广振主要负责查找最近建筑,指定最短路径(具体由他本人详述)
6、。第3章 抽象数据类型定义3.1 ADT CampusGraph抽象数据类型的设计ADT CampusGraph数据对象V:V是具有相同特性的数据元素的集合,称为顶点集。数据关系R:R=VRVR=|v,wV且p(v,w),表示从v到w的弧,谓词p(v,w)定义了弧的意义或信息 基本操作:int CreateGraph();初始条件:CampusGraph 的对象存在。操作结果:按V和VR的定义构造图G。int LocateVex(VertexType v)初始条件:顶点V存在操作结果:给一个正确的顶点 V ,输入成功返回V 的序号,否则 返回-1。int FirstAdjVex(VertexT
7、ype);初始条件:顶点V存在操作结果:给一个正确的顶点 V ,输入成功返回返回V的第一个邻接点,否则 返回-1。int NextAdjVex(VertexType ,VertexType);初始条件:顶点V存在操作结果:给一个正确的顶点 V ,输入成功返回V的继W后的下一个邻接点,否则 返回-1。VertexType GetVex( int N);初始条件:0N20操作结果:给一个正确的顶点序号N ,输入成功返回序号为N的顶点,否则 返回-1。void DestroyGraph();初始条件:图存在操作结果:销毁导航图。int PutVex(VertexType V1,VertexTypeV
8、2); 初始条件:顶点V存在;操作结果:对V1赋新值V2;输入成功返回1,否则 返回-1。void InsertVex(VertexType);初始条件:顶点V存在;操作结果:对V1赋新值V2;输入成功返回1,否则 返回-1。/增加新顶点int DeleteVex(VertexType v);初始条件:顶点V存在;操作结果:对V1赋新值V2;输入成功返回1,否则 返回-1。/ 删除图中顶点v及其相关的弧。int InsertArc(VertexType v, VertexType w);初始条件:顶点V存在;操作结果:在G中增添弧,对称弧;输入成功返回1,否则 返回-1。int DeleteA
9、rc(VertexType v,VertexType w);初始条件:顶点V,W存在;操作结果:在G中删除弧,对称弧;输入成功返回1,否则 返回-1。int SaveInfo();初始条件:文件“数据。txt”存在;操作结果:把图的信息保存到文件。void DFS(int v);初始条件:0N20;操作结果:从第v个顶点出发递归地深度优先遍历图G。void DFSTraverse();初始条件:图存在操作结果:对图G作深度优先遍历。void Shuchu();初始条件:图存在操作结果:以校园平面坐标形式输出图中信息。 ADT CampusGraph3.2 LinkQueue抽象数据类型的设计A
10、DT LinkQueue数据对象V:V是具有相同特性的数据元素的集合,称为结点集。数据关系R:基本操作:int InitQueue(L);初始条件:队列L存在;操作结果:初始化L构造一个空队列L;输入成功返回1,否则 返回-1。int EmptyQueue();初始条件:队列L存在;操作结果:判断队列是否为空 是返回1,否则 返回0。int EnQueue(QElemType );初始条件:队列L存在;操作结果:插入元素e为Q的新的队尾元素;输入成功返回1,否则 返回-1。int DeQueue( QElemType & );初始条件:队列L存在;操作结果:若队列不空,删除Q的队头元素,用p返
11、回其值;输入成功返回1,否则 返回-1 ADT LinkQueue3.3 Shuzu抽象数据类型的设计ADT Shuzu数据对象aij是具有相同特性的数据元素的字符数组。数据关系R:基本操作:void InitShuzu(int i,int j);初始条件:数组A存在,i j 不越界;操作结果:初始化A构造一个中间为空四周是#号的图,并产生第一个终点,输入成功返回1,否则 返回-1。int Drawxian(int,int);初始条件:数组A存在,i j 不越界;操作结果:从上一次终点开始沿线赋值画线的功能,并产生新的终点,输入成功返回1,否则 返回-1。int Drawxian(int,in
12、t,int,int);初始条件:数组A存在,i j k l不越界;操作结果:在(i,j)(k,l)两点之间画线,成功返回1,否则 返回-1。int Drawdian(int ,int );初始条件:数组A存在,i j 不越界;操作结果:产生第一个终点,输入成功返回1,否则 返回-1。void Display();初始条件:数组A存在, 不越界;操作结果:输出数组中的图,输入成功返回1,否则 返回-1。 ADT LinkQueue第4章 详细设计4.1 工程视图说明有几个源代码文件,可以截取工程文件视图表示图4.1 工程文件视图4.2 类图视图 图4.2文件包含的类和函数说明4.3 函数的调用关
13、系如下图:图4.3函数的调用关系4.4 主程序流程图图4.4修改函数的调用关系流程图4.5 主要算法的流程图图4.5创建图的主要算法第5章 测试程序的运行结果截图图5.1首次运行,录入信息图5.2再次进入系统 读取已有文件信息图5.3创建图后 显示平面图中建筑的位置图5.4创建图后 显示平面图中建筑的位置以及它们之间的路径图5.5创建图后 进入主菜单图5.6选择1 进入修改菜单图5.7选择1修改顶点信息,如果输入的顶点名称没有 提示重新输入,修改信息。图5.8选择2增加顶点,如果输入的顶点名称越界 提示重新输入,增加信息。图5.9选择3增加路径,输入已存在的顶点名称 如果错误提示重新输入,增加
14、路径。图5.10选择4删除顶点,如果输入的顶点名称没有 提示重新输入,删除顶点。图5.11选择5删除路径,如果输入的顶点名称没有 提示重新输入图5.12选择6输出平面位置图,路径图。图5.13选择7 深度优先输出图,并按图的路径信息,输出平面遍历的路径图图5.14选择8 销毁图,重新创建图。图5.15选择9 保存图的信息到文件,下一次可以不必手写输入信息图5.16选择9之后再选择8 从保存的文件中读取图的信息,不必手写输入信第6章 总结在这次的小组合作共同来做校园导航系统的过程中,我体会到了与人合作的重要意意和基本的方式方法,不仅锻炼了自己的编程实践的能力,也提升了自己的语言表达能力和与人合作
15、的能力。这次的校园导航系统的设计过程中,我同样遇到了不少的问题。对类的设计有了更为深刻的理解,自己也对C+编程更为熟悉了。在对图的设计过程中是我掌握了图的基本运算的函数的算法的理解和程序的有效吸收。包括图的深度和广度优先的遍历,对图的联通分量的求解,图的最小生成树。以及图的拓扑排序、图的关键路径和用地杰斯特拉算法的基础上计算任意;两点间的最短距离及其顺序路径问题。在这次的实践练习中,提升了自己的编程能力和个方面的技巧,也提高了自己的与人交际及合作的能力。附录:程序代码/*类的声明定义文件“head.h”#include #include#include #include #include /*
16、 图的邻接表存储表示*#define MAX_NAME 10/ 顶点字符串的最大长度#define MAX_JIANJIE 100/简介字符串最大长度#define MAX_VERTEX_NUM 20/最大顶点数typedef double InfoType;/ 存放网的权值 / * 顶点类型定义*typedef struct char nameMAX_NAME+1; /地点名称char jianjieMAX_JIANJIE+1; /地点简介int x,y;/地点坐标 VertexType; / * 边结点类型定义*typedef struct ArcNodeint adjvex; / 该弧所
17、指的邻接点域 struct ArcNode *nextarc; / 指向下一条弧的指针 InfoType info; / 网的权值 ArcNode;/ * 顶点向量类型定义*typedef struct VNodeVertexType data; / 顶点信息 ArcNode *firstarc; / 第一个表结点的地址,指向第一条依附该顶点的弧的指针 VNode,AdjListMAX_VERTEX_NUM; / 顶点结点,顶点向量 typedef VertexType QElemType; / 队列类型 / * 单链队列队列的链式存储结构*typedef struct QNodeQElemT
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 校园 导航 问题 数据 结构设计