logo资料库

校园导航系统(实现简单查询).doc

第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
资料共20页,剩余部分请下载后查看
学计算机与信息学院 计算机类 课程设计报告 课程名称: 程序设计基础程序设计 课程设计题目: 校园导航系统 姓 名: 系: 专 年 学 业: 级: 号: 指导教师: 职 称: 计算机系 计算机科学与技术 2006 级 061150078 副教授 2008年 6 月 26 日
福建农林大学计算机与信息学院计算机类 课程设计结果评定 评语: 成绩: 指导教师签字: 任务下达日期:2008 年 3 月 15 日 评定日期:
目 录 1. 设计目的及要求…………………………………………………………… 1 2. 设计步骤…………………………………………………………………… 1 2.1 问题分析和任务定义…………………………………………………… 1 2.2 逻辑设计师……………………………………………………………… 2 2.3 详细设计师……………………………………………………………… 5 2.4 程序编码………………………………………………………………… 7 2.5 程序调试与测试………………………………………………………… 7 3. 源程序……………………………………………………………………… 8 4. 总结………………………………………………………………………… 16 3.附录………………………………………………………………………… 16
校园导航系统 一、 设计目的及设计要求 1. 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法 和技能; 3. 独立完成,提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应 具备的科学的工作方法和作风。 二、 设计步骤 2.1问题分析与任务定义: 本课程设计的内容为“校园导航”,校园平面图中取福建农林大学的11 个常去地点,其略图如图 1,图中已标出主要路线,各路线的长度如表1中所示。 任务定义:找出从任意场所到达另一场所的最佳路径(最短路径)。显然要解决 这一问题要用“邻接矩阵”来存储各点间的距离,然后用Dijkstra 求出最短路径。 11博学楼 6图书馆 8 中 华 广 场 7 体 育 馆 9创新楼 1 昌 融 公寓 3拓荒广场 2映辉楼 4第八、 九、十堂 5校医院 10逸夫 图书馆 图1:校园平面图 1
1←→2:300 2←→6:400 3←→6:300 3←→4:80 4←→9:330 6←→11:110 7←→10:70 8←→11:120 2←→3:200 2←→5:220 3←→5:150 3←→8:350 4←→5:90 7←→9:80 8←→9:105 9←→10:50 表1:各景点距离 2.2 逻辑设计: 按所设想的功能,把程序化分为6个模块,各模块的名称和其数据类型如表 2所示: 源文件 函数名或其它成分 功能 main menu createadj dijkstra search Exit 表2:各模块名称、功能 主函数 菜单函数 建立邻接表 建立最小生成树 多次查询函数 结束程序 guide.c 各模块的说明如下: (1)Main 主函数 调用各函数,实现课程设计的目标。其中包含三个功能,一个是直接进入 导航系统,利用主函数中已有的数据,进行查询:一个是进行创建数据,本程序 中初始数据为农大的导航数据,如果需要也可以自己建立一个;最后一个是退出 功能。 2
(2)Menu 菜单函数 该函数用于显示初页面,列出两个功能的选择。一个是进入农大导航系 统,一个是进行自己创建一个导航系统。 (3)Createadj 创建邻接表, 其实该函数不仅是创建邻接表,把各景点间的距离输入其中;还有一个 功能,就是把各景点的名称也保存到一个链表中,这样在输出最短路径时就可以 用各地点的名称输出,以便浏览。 (4)dijkstra 建立最小生成树 这是本程序的中心,在众多路径中选出最短路径。基于对 dijkstra 求 最小生成树方法的应用。使整个程序显得极为简便。课本中的 dijkstra 函数只 是输入一个结点,然后输出从该结点出发到各结点的最短路径,为了使它更适用 于本课程设计,我将它改为“输入两个结点,输出这两点的最短路径”。 (5)search 查询函数 设计该函数的目的是为了能够多次得应用 dijkstra 函数进行查询最短 路径。同时该函数可以列出各景点的代号和对应的名称,这样大家只要输入代号 就行了。方便进行查询。 (6)exit 退出 在各贡功能运行完之后,只要输入相应的字符就能退出程序。 关于这些模块之间,它们的调用关系图如图2: 主函数 菜单函数 建邻接表 查询函数 退出 退出 退出 建最小生成树 退出 图2:调用关系图 3
下面分别描述这些函数,建立它们函数原型。 1、主函数 函数原型:void main(void) 功 参 能:控制程序。 数:void 返 回 值:void 要 求:管理菜单命令并完成初始化。 2、菜单选择和处理函数 函数原型:int menu() 功 参 能:处理选择的菜单命令并接收用户选择的命令代码。 数:int 返 回 值:int 工作方式:返回命令代码的整数值,根据命令,调用相应函数。 要 求:只允许选择规定键,如果输入不合要求,则提醒用户重新输入。 3、建立邻接矩阵函数 函数原型:void createadj() 功 参 能:重新建立一个学生信息的记录。 数:void 返 回 值:void 工作方式:在需要的时候就可以有主菜单中调用 void createadj()函数。 要 求:必需输入信息记录,然后才能调用出 search()函数进行查询。 4、dijkstra 函数 函数原型:void dijkstra(intx,inty) 功 参 能:求两点间的最短路径 数:void 返 回 值:void 工作方式: 该函数被其它一些函数调用。 5、结束程序 函数原型:int Exit() 4
功 参 能:使程序正常结束运行 数:int 返 回 值:1 工作方式:在操作都完成后,可以调用 int Exit()函数,使函数最终返回 1 运行 exit(1),程序正常结束。 要 求:运行 Exit()函数后可以选择是否要保存,选择 y 则先保存再返 回 1 值;如果选择 n 直接返回 1 值。 2.3 详细设计 详细的程序设计应从下到上,在本设计中就要先设计 createadj 函数;然 后设计 dijkstra 函数;接着是 search 函数;menu 函数;最后才是 main 函数。 如此设计能大大提升设计速度,因为从下往上使编程时的高试过程简单许多,而 做课程设计花费时间最多的就是调试过程。对于各函数的详细设计,各函数的N —S图如下: (1)Createadj 函数 (2)Dijkstra 函数 5
分享到:
收藏