欢迎来到天天文库
浏览记录
ID:61415619
大小:519.00 KB
页数:38页
时间:2021-01-27
《胡鹏《数据结构》课程设计报告2013.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、《数据结构》课程设计报告(2013--2014学年第1学期)题目:校园导航系统学号:6姓名:胡鹏指导教师:方瑞英信息科学与工程系目录1需求分析21.1问题分析21.2基本要求32概要设计32.1主界面设计,32.2存储结构设计42.3系统功能模块设计43模块设计53.1模块设计53.2系统子程序及功能设计54详细设计64.1数据类型定义64.2各个模块的程序流程图74.3关键代码分析说明95调试分析和测试结果116心得体会171需求分析河南理工大学万方科技学院紧跟龙子湖校园开发工程的历史机遇,践行“厚德
2、、博学、笃行、创新”校训,建设出一座美丽的校园。对河南理工大学万方科技学院校园导航系统的模拟,设计一个校园导航程序,为来访的客人提供各种信心查询服务网。1.1问题分析为此通过对《数据结构》这一课程的应用,用图的模型对学校景点抽象。用邻接矩阵存储方法和狄克斯特拉算法及图的遍历实现对校园导游系统的模拟。此系统七个功能:浏览学校景点、查看单个景点信息、查看校园地图、导游推荐、查两景点最短路线、查两景点所有景点、退出系统。1.2基本要求首先是对校园整个的平面图输出;存储景点信息采用结构体;对各个景点用字母代替,
3、字母组成图,通过对图的操作,求出制定最短路径,并且对图的整个遍历的操作。2概要设计2.1主界面设计,图2-1主控界面2.2存储结构设计图2-2邻接矩阵图2-3校园平面图首先,由LOC-VERTEX(G,v)找到v在图G中的位置,即v在一维数组vexs中的序号i,则二维数组arcs中第i行上第一个adj域的值为“1”的分量所在列号j,便为v的第一个临界点在图G中的位置。通知,下一个邻接点在图G中的位置便为j列之后第一个adj的值为“1”的分量所在列号。2.3系统功能模块设计我设计有以下几个模块:(1)身份
4、验证(用户名和密码验证)(2)校园导航系统的主界面输出;(3)构造无向图采用数组表示法(邻接矩阵)存储;(4)学校景点查询模块;(5)学校景点平面图输出模块;(6)计算最短路径算法的实现模块;3模块设计3.1模块设计登陆界面是否正确导航主界面查询景点景点列表学校简介最短路径图3-1校园导航系统流程图3.2系统子程序及功能设计(1)charMenu()//主菜单(2)charSearchMenu()//查询子菜单(3)voidsearch()//查询景点信息(4)voidCreateUDN//采用数组(邻
5、接矩阵)表示法,构造无向图G(5)voidintroduce()//介绍函数(6)voidpingmu()//屏幕输出函数(7)voidShortestPath//迪杰斯特拉算法最短路径函数(8)voidoutput//输出函数3.3函数主要调用关系图MenuintroduceSearchMenusearchpingmuCreateUDNShortestPathoutput图3-2主要函数调用关系图4详细设计4.1数据类型定义(1)整型类型:adj;n;P[NUM][NUM];D[NUM];i=0,a,
6、j;i;v0,v1,i;flag;i,j;v,w,i,t;a,b,c,d,q=0;final[NUM];(2)字符串类型:name[20];c;ck;secret[20];sight;description;info;4.2各个模块的程序流程图查询search1-15是否查询编号查询名称是否图4-1查询模块流程图开始数组edeges[MAXEDGE]边集数组;数组parent[MAXVEX]顶点数组;遍历顶点设置所有顶点parent[i]=0Int1=017、.higen顶点的尾部下表N<>m?结束Parent[n]=m设置m为edges[i].end顶点尾部下表I++;输出开始顶点Edges[i].start,结束顶点Edges[i].end,边为Edges[i]图4-2迪杰斯特拉算法流程4.3关键代码分析说明voidCreateUDN(intv,inta)//采用数组(邻接矩阵)表示法,构造无向图G。{inti,j;G.vexnum=v;//初始化结构中的景点数!!!G.arcnum=a;//初始化结构中的边数!!!for(i=1;i8、++i)G.vex[i].number=i;//初始化每一个景点的编号//初始化每一个景点名及其景点描述G.vex[0].sight="学校简介";G.vex[1].sight="校大门";G.vex[2].sight="三号楼学楼";G.vex[3].sight="一号教学楼";G.vex[4].sight="行政楼";G.vex[5].sight="实验楼";G.vex[6].sight="伯苓广场";G.vex[7].sight="秀
7、.higen顶点的尾部下表N<>m?结束Parent[n]=m设置m为edges[i].end顶点尾部下表I++;输出开始顶点Edges[i].start,结束顶点Edges[i].end,边为Edges[i]图4-2迪杰斯特拉算法流程4.3关键代码分析说明voidCreateUDN(intv,inta)//采用数组(邻接矩阵)表示法,构造无向图G。{inti,j;G.vexnum=v;//初始化结构中的景点数!!!G.arcnum=a;//初始化结构中的边数!!!for(i=1;i8、++i)G.vex[i].number=i;//初始化每一个景点的编号//初始化每一个景点名及其景点描述G.vex[0].sight="学校简介";G.vex[1].sight="校大门";G.vex[2].sight="三号楼学楼";G.vex[3].sight="一号教学楼";G.vex[4].sight="行政楼";G.vex[5].sight="实验楼";G.vex[6].sight="伯苓广场";G.vex[7].sight="秀
8、++i)G.vex[i].number=i;//初始化每一个景点的编号//初始化每一个景点名及其景点描述G.vex[0].sight="学校简介";G.vex[1].sight="校大门";G.vex[2].sight="三号楼学楼";G.vex[3].sight="一号教学楼";G.vex[4].sight="行政楼";G.vex[5].sight="实验楼";G.vex[6].sight="伯苓广场";G.vex[7].sight="秀
此文档下载收益归作者所有