模拟一个全国城市间的交通咨询程序数据结构课程设计报告Word

  • 格式:docx
  • 大小:343.07 KB
  • 文档页数:66

下载文档原格式

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

分类号编号

华北水利水电学院

North China Institute of Water Conservancy and Hydroelectric Power 课程设计

题目:全国交通资讯系统

院系信息工程学院

专业计算机科学与技术专业

姓名

指导教师杨彬

2013年6月28日

目录

1.需求分析 (1)

问题描述 (1)

1.1基本要求 (2)

2概要设计 (3)

2.1 数据结构 (3)

2.2 程序模块 (5)

3.详细设计 (6)

3.1用到的各种函数 (6)

3.2函数调用关系图 (8)

3.3测试与分析 (8)

4.用户说明书 (13)

5.总结 (16)

5.1李明月的总结 (16)

5.2刘璐璐的总结 (17)

5.3吕竹青的总结 (18)

参考文献: (19)

附录:程序源代码 (19)

1.需求分析

问题描述

设计、模拟一个全国城市间的交通咨询程序,为旅客提供三种最优咨询方案:(1)时间最短;

(2)费用最小;

(3)中转次数最少。

1.1基本要求

1.1.1输入输出的形式和输入值的范围

在程序中输入城市名称时,需输入10个字母以内的字母串;输入列车或飞机编号时需输入一个整型数据;输入列车或飞机的费用时需输入一个实型数据;输入列车或飞机开始时间和到达时间时均需输入两个整型数据(以hh:mm的形式);在选择功能时,应输入与所选功能对应的一个整型数据。

1.1.2 输出形式

程序的输出信息主要是:最快需要多少时间才能到达,或最少需要多少旅费才能到达,或最少需要多少次中转到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。

1.1.3程序所能达到的功能

程序的功能包括:提供对城市信息的编辑,提供列车时刻表和飞机航班表的编辑,提供三种最优决策:最快到达、最省钱到达、最少中转次数到达,显示编辑的全国交通系统。

1.1.4任务分配

在本程序中,我们一共划分了三个模块。管理员模块的初始化数据,城市信息的编辑,以及显示交通系统和整体的界面由李明月完成。航班班次以及列车车次添加删除以及数据结构的初步实现由吕竹青完成。对于最少时间,最少花费以及最少的中转次数这三个函数的实现由刘璐璐进行完成。

2概要设计

2.1 数据结构

#define MAX_VERTEX_NUM 18//城市节点数

#define MAX_ARC_SIZE 100

#define MAX_ROUTE_NUM 5//路线数

#define False 0

#define True 1

#define INFINITY 10000

struct Vehide

{

int number;//航班号,火车号

float expenditure;//费用

int begintime[2];//出发时间

int arrivetime[2];//到达时间

};//航班、列车信息节点

struct infolist

{

Vehide stata[MAX_ROUTE_NUM];//一个出发地到达目的地所对应的航班数或列车车次数

int last;//顺序表所对应的下标,从0开始

};//顺序表表示

struct ArcNode

{

int adjvex;//节点下标

ArcNode *nextarc; //节点的下一个指针域

infolist info;//节点的数据域

};//邻接表中各个节点信息

typedef struct VNode

{

char cityname[10];//城市名

ArcNode *planefirstarc,*trainfirstarc;//航班链、列车链

} VNode,AdjList[MAX_VERTEX_NUM];

struct ALGraph

{

AdjList vertices;

int vexnum,planearcnum,trainarcnum;//城市数、航班数、列车数};

struct Node

{int adjvex;

int route;

Node *next;

};//临时建立的一个邻接表,用来求最少中转次数和最少费用

struct QNode

{int adjvex;

struct QNode *next;

};//链队节点信息

struct LinkQueue

{QNode *front;

QNode *rear;

};//链队信息

typedef struct TimeNode

{

int adjvex;

int route;

int begintime[2];

int arrivetime[2];

struct TimeNode *child[MAX_ROUTE_NUM];

}TimeNode,*TimeTree;

struct arc

{int co;

char vt[10];//出发地名字

char vh[10];//目的地名字

int bt[2];//出发时间

int at[2];//到达时间

float mo;//费用

}a[MAX_ARC_SIZE];

char city[MAX_VERTEX_NUM][10];

int TTime[2];

int time[2];

int time1[2];

int time2[2];

int c[MAX_VERTEX_NUM];

int d[MAX_VERTEX_NUM];

2.2 程序模块

主要包括管理员编辑模块和用户查询模块以及显示全国交通信息模块。