交通咨询系统设计—课程设计实验报告

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

数学与统计学院

课程名称:《算法与数据结构》 设计题目: 交通咨询系统设计

课程设

计实验

报告

交通咨询系统设计

1.系统的设计要求

1)问题的描述

根据不同目的的旅客对交通工具的不同要求。例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则期望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市之间的模拟交通咨询的程序,为旅客提供两种或者三种最优决策的交通咨询。

2)需求分析

1)提供对城市信息进行编辑(如:添加或删除)的功能。

(2)城市之间有两种交通工具:火车和飞机。提供对列车时刻表和飞机航班进行编辑(增设或删除)的功能。

(3)提供两种最优决策:最快到达或最省钱到达。全程只考虑一种交通工具。

(4)旅途中耗费的总时间应该包括中转站的等候时间。

(5)咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原则和交通工具,输出信息:最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。

2.系统概要

为实现上述程序功能,要用到一种数据结构,图。

根据输入的顶点和边,建立图,然后利用图的邻接表存储结构实

现算法。

ADT Graph{

数据对象V:v是具有相同数据特性的元素的集合,称作顶点集。

数据关系R:

R={VR}

VR={|v,w属于V且P(v,w),表示从v到w的弧,

谓词P(v,w)定义了弧的意义或信息}

基本操作P:

CreateGraph70405(&G , V , VR);

初始条件:V是图的顶点集,VR是图的弧的集合。

操作结果:按V和VR的定义构造图G。

Initgraph70405(G);

初始条件:图G存在。

操作结果:各个变量初始化。

LocateVex70405G,u);

初始条件:图G存在,u和G中顶点具有相同的性质。

操作结果:若图中存在顶点u,则返回该顶点在图中的位置;否则返回其他信息。

Cityedit70405(G);

初始条件:图G存在。

操作结果:对城市进行编辑。

EnterVertex70405(G);

初始条件:图G存在。

操作结果:增加城市。

UserDemand70405(ALGraph G);

初始条件:图G存在。

操作结果:显示选择项目。

MinExpenditure70405(arcs,expenditure,route);

初始条件:图G存在。

操作结果:从一个顶点到另一个顶点的最少钱数。

MinTime70405( arcs,time,route);

初始条件:图G存在。

操作结果:从一个顶点到另一个顶点的最短时间。

DeleteVex70405(&G,v);

初始条件:图G存在,v是G中某个顶点。

操作结果:删除G中顶点v以及相关的弧。

}ADT Graph

系统模块图如下:

3 详细设计

图的邻接表存储结构表示如下:

#include MAX_VERTEX_NUM 20

typedef struct ArcNode{ //弧的结构

int adjvex;//该弧所指向的顶点的位置

struct ArcNode *nextarc;//指向下一个弧的指针infoType *info;//该弧相关信息的指针

}ArcNode;

typedef struct VNode{//顶点结构

vertextype data;//顶点信息

Arcnode *firstarc;//指向第一条依附该顶点的弧的指针}VNode,AdjList[MAX_VERTEX_NUM];

typedef struct {//图的结构

AdjList vertices;

int vexnum ,arcnum;//图的当前顶点数和弧数

int kind;//图的种类标志

}ALGraph;

//队列的链式存储结构

typedef struct QNode

{

int adjvex;

struct QNode *next;

}QNode;

typedef struct

{

QNode *front;//对头指针。

QNode *rear;//队尾指针。

}LinkQueue;

主界面操作:

int main()

{

界面初始化;

输入操作命令;

While(“命令”!= “退出”)

{

接受命令(用户输入要实现功能);

进入各个处理命令函数;

}

}

图的相关数据类型的定义

//初始化图G

当i=1,执行如下:a.创建城市b.创建飞机航班c.创建列车车次d.创建图G

当i=2,执行创建图G

void initgraph70405 (ALGraph *G)

{

switch(i)

{

case 1:createcityfile70405();

createplanefile70405();

createtrainfile70405();

CreateGraph70405 (G);

break;

case 2:CreateGraph70405 (G) ;

break;

}

}

// 管理项目

while(i!=5)

{

若i=1时,则执行初始化交通系统若i=2时,则执行城市编辑

若i=3时,则执行飞机航班编辑

若i=4时,则执行列车车次编辑

}

void Administer(ALGraph *G)

{

相关文档
最新文档