校园导游图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;i
{
printf("景点编号:");
scanf("%d",&G->vexs->num);
printf("景点名称:");
scanf("%s",G->vexs[i].name);
printf("景点简介:");
scanf("%s",G->vexs->introduction);
}
for(i=0;i
for(j=0;j
G->arcs[i][j].adj=INFINITY;
printf("请输入路径长度:\n");
for(k=0;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显示运行结果,否则重新输入,操作完成后,根据菜单提示退出系统,运行结束。
九.测试数据