地图导航系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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; //边数