地图导航系统

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

《程序设计综合实验Ⅰ》三级项目设计报告

学生所在学院:信息学院

学生所在班级:13软件7班

学生姓名:王俊伟

指导教师:尤殿龙李可王艳芬陈琦

教务处

2014年12 月

项目题目:定兴县的导航系统

一、问题描述

1. 项目采用学生一人一个题目的形式,个人独立完成。导航的地点按每个学生的家乡,以县镇为单位均可。

2.要求导航的结点不少于20个。

3.要求实现可以随意浏览任一景点的介绍。(功能一)

4.要求可以给出任意两个景点的最短距离及其路线。(功能二)

5.要求可以查看任一景点热度,并可以对对所有景点热度进行排序。(访问次数)(功能三)

6.要求每个景点相关内容从文件读取,实现对文件操作的练习。

7.要求根据自己的能力对界面进行设计,界面友好,使用方便。

二、设计思路

首先根据要导航的城市地图(地图资料上网查找),抽象出一个无向联通图,并用邻接链表的方式实现对该无向联通图的存储,其中头结点存储城市地点的景点介绍信息;求任意两个景点的最短距离及路线根据迪杰斯特拉算法实现,路线根据访问的次数依次输出;景点热度首先有一个txt文件存储默认的热度,然后根据用户的访问景点信息,则热度增加并重置景点热度;对经典热度排序可以根据简单的冒泡排序法进行热度排序。三、数据结构

#include "stdafx.h"

#include

#include

#include

#include

using namespace std;

# define MAX_VEX_NUM 20 //宏定义图顶点的最大值

int visited[MAX_VEX_NUM];//给图结点设置访问标志typedef struct ArcNode//定义邻接表结构

{

int adjvex;//顶点的位置

float weight; //连接两顶点的边的权值

struct ArcNode *nextarc;//指向下一条弧的指针

}ArcNode;

typedef struct VNode//定义顶点结构类型

{

string data;// arc;//指向第一条依附于该顶点的弧的指针string information;

int heat;

ArcNode *firstarc;//指向第一条依附于该顶点的弧的指针}VNode,Adjlist[MAX_VEX_NUM];

typedef struct

{

Adjlist vertices;

int vexnum; //顶点数

int arcnum; //边数

}ALGraph;

typedef struct Passnode

{

int arrange;

string name;

}passnode;

typedef struct Heat

{

int heat;

string name;

}Heat;

四、功能模块

class Graph

{

public:

float Dij[100];

Passnode pass[20][20];

Heat heat[20];

ALGraph G;

Graph()

{

G.arcnum=0;

G.vexnum=0;

}

int locatevex(string v);

void Create_DG();

void show();

void introduce(string x);

void setheat();

void showheat();

float getweight(int x,int y);

void Dijkstra(string v);

void path(int a);

};

五、项目运行结果(运行截图)

六、程序源代码

// 地图导航系统.cpp : 定义控制台应用程序的入口点。//

#include "stdafx.h"

#include

#include

#include

#include

using namespace std;

# define MAX_VEX_NUM 20 //宏定义图顶点的最大值

int visited[MAX_VEX_NUM];//给图结点设置访问标志

typedef struct ArcNode//定义邻接表结构

{

int adjvex;//顶点的位置

float weight; //连接两顶点的边的权值

struct ArcNode *nextarc;//指向下一条弧的指针

}ArcNode;

typedef struct VNode//定义顶点结构类型

{

string data;// arc;//指向第一条依附于该顶点的弧的指针

string information;

int heat;

ArcNode *firstarc;//指向第一条依附于该顶点的弧的指针}VNode,Adjlist[MAX_VEX_NUM];

typedef struct

{

Adjlist vertices;

int vexnum; //顶点数

int arcnum; //边数

相关文档
最新文档