校园导游图

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》

课程设计报告

设计题目校园导游图

学院名称信息工程学院

专业班级计算机科学与技术(2)班

姓名晁勉

学号 1212210226

一. 题目:校园导游图

二. 设计目标

通过设计一个校园导游图,进一步理解数据结构中有关于图的基本概念、定义术语、存储结构等,理解图在描述现实问题中的能力,明白数据结构在程序设计中的重要性等。

三. 问题描述

给出学校的导游图(景点不少于10个),游客通过终端询问可知:任一景点的相关信息:从某一景点到另一景点的最短简单路径;游戏从校园大门进入,选一条最佳路线,使游客可以不重复地游览个景点,最后回到出口(出口就在入口旁边)。

四. 需求分析

需求:

(1)将导游图看作一张带权无向图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息;

(2)可以通过菜单提示操作,浏览校园全部景点;

(3)查看所有游览路线,将某个景点的所有路线展示给游客;

(4)选择出发点和目的地,将最短路线展示给游客;

(5)输入景点编号,查看某个景点的信息。

分析:

完成对整个校园导游图系统的功能实现,需要对的每一项功能都有清楚的设想和认识,了解并明确每一项功能的实现需要解决的问题,选择正确并且高效的算法把问题逐个解决,最终实现程序的正确调试运行。有以下设计思路:

(1)结合本校的实际情况,选出10个景点;

(2)为选出的10个景点赋上相关信息(景点编号、名称、简介);

(3)根据选出来的10个景点用邻接矩阵存储校园图。

(4)利用C语言和数据结构编写实现校园导游图系统各功能的实现;

(5)根据人为赋值的路权,设计算法计算任意两点之间的最短路径并显示;

(6) 综上所诉,用一个主函数把这些板块合成,生产一个菜单界面呈现在用户面前。

五. 概要设计

程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。

课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。

六. 详细设计

采用C语言定义相关的数据类型

写出各模块的类C码算法

图的定义

typedefstructArCell

{

intadj; //路径长度

}

ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedefstruct //图中顶点表示主要景点,存放景点的编号、名称、简介等信息,

初始化图形

MGraph * CreatUDN(MGraph *G)//接受用户输入

{

inti,j,k,w;

char v1[20],v2[20];

printf("请输入图的顶点数,弧数:");

scanf("%d%d",&G->vexnum,&G->arcnum);

printf("请输入景点的编号、名称、简介:\n");

for(i=0;ivexnum;i++)

{

printf("景点编号:");

scanf("%d",&G->vexs->num);

printf("景点名称:");

scanf("%s",G->vexs[i].name);

printf("景点简介:");

scanf("%s",G->vexs->introduction);

}

for(i=0;ivexnum;i++)

for(j=0;jvexnum;j++)

G->arcs[i][j].adj=INFINITY;

printf("请输入路径长度:\n");

for(k=0;karcnum;k++)

{

printf("第%d条边:\n",k+1);

printf("景点对(x,y):");

scanf("%s",v1);

scanf("%s",v2);

printf("路径长度:");

scanf("%d",&w);

i=LocateVex(G,v1);

j=LocateVex(G,v2);

if(i>=0&&j>=0)

{

G->arcs[i][j].adj=w;

G->arcs[j][i]=G->arcs[i][j];

}

}

return G;

}

主菜单

void main()

{

printf("\n 榆林学院导游图 \n");

printf("********************************************\n");

printf(" * 1.浏览校园全景 *\n");

printf(" * 2.查看所有游览路线 *\n");

printf(" * 3.选择出发点和目的地 *\n");

printf(" * 4.查看景点信息 *\n");

printf(" * 5.退出系统 *\n");

printf(" ********************************************\n");

printf("请选择您所需要的操作:");

}

画出主要函数的流程图

七.测试分析

白盒:

查看代码完整性

代码完整。

黑盒:

测试是否可以正确的初始化,编码,译码,打印哈夫曼树等操作黑盒检测:打开VC++6.0开发环境,编译连接程序是否有错;

连接生成可执行exe文件

八. 使用说明

首先启动VC++开发环境,新建工程project,设定工程project 的名称和保存位置,工程的描述信息生产,从而建立了一个空的工程文件。向工程中添加新建源代码的类型、名称、保存位置,设定源代码的类型、名称并添加到工程中,在源代码文件添加程序代码,编写完成后编译,查看运行结果。

注意:一个工程project中可以有多个源文件、多个头文件;

但这些段代码文件中只能出现一个main函数,作为整个程序运行的入口;必须关闭前一次程序运行结果窗口,才能进行下一次程序运行。

编译程序无错后运行,根据主菜单提示输入所需要的操作,当输入1-5时显示运行结果,否则重新输入。操作结束后,根据提示再选择景点时,当输入0-9显示运行结果,否则重新输入,操作完成后,根据菜单提示退出系统,运行结束。

九.测试数据

相关文档
最新文档