交通咨询系统设计—课程设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学与统计学院
课程名称:《算法与数据结构》 设计题目: 交通咨询系统设计
课程设
计实验
报告
交通咨询系统设计
1.系统的设计要求
1)问题的描述
根据不同目的的旅客对交通工具的不同要求。例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则期望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市之间的模拟交通咨询的程序,为旅客提供两种或者三种最优决策的交通咨询。
2)需求分析
1)提供对城市信息进行编辑(如:添加或删除)的功能。
(2)城市之间有两种交通工具:火车和飞机。提供对列车时刻表和飞机航班进行编辑(增设或删除)的功能。
(3)提供两种最优决策:最快到达或最省钱到达。全程只考虑一种交通工具。
(4)旅途中耗费的总时间应该包括中转站的等候时间。
(5)咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原则和交通工具,输出信息:最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。
2.系统概要
为实现上述程序功能,要用到一种数据结构,图。
根据输入的顶点和边,建立图,然后利用图的邻接表存储结构实
现算法。
ADT Graph{
数据对象V:v是具有相同数据特性的元素的集合,称作顶点集。
数据关系R:
R={VR}
VR={
谓词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)
{