课程设计 - 全国交通咨询系统 - - 试验报告

更新时间:2024-05-30 10:01:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

分类号 编 号

课 程 设 计

题目 全国交通咨询系统

院 系 信息工程学院 专 业 计算机科学与技术 姓 名 学 号

指 导 教 师

word文档 可自由复制编辑

目录

1 需求分析 ............................................... 3 1.1 问题描述 ...................................................................................... 3 1.2 基本要求 ...................................................................................... 3 2 概要设计 ............................................... 4 2.1数据结构 ....................................................................................... 4 2.2 程序模块 .................................................................................... 8 2.2.1 管理员模块 ..................................................................... 8 2.2.2 客户查询 .......................................................................... 8 2.3各模块之间的调用关系以及算法设计 ....................................... 8 2.3.1各个模块之间的调用关系 ................................................. 8 3 详细设计 .............................................. 9 3.1 管理员模块 ................................................................................ 9 3.2 用户查询模块 ............................................................................ 10 3.3 函数调用关系图 ........................................................................ 10 4 测试与分析 ............................................ 12 4.1合法数据的测试 ......................................................................... 12 4.1.1 测试截图 .......................................................................... 12 4.2 非法数据的测试 ........................................................................ 17 五.总结 ................................................ 18 参考文献 ................................................ 21 附录 .................................................... 21

word文档 可自由复制编辑

全国交通咨询系统

1 需求分析

1.1 问题描述

随着我国交通系统的发展,从一个城市到另一个城市可以选择多个交通工具,比如火车,飞机。不同的交通工具的价格,所用的时间也不一样。

对旅客来说,可以根据自己的时间安排,资金的情况选择不能的交通工具和不同的乘车路线。本系统就是主要完成这个的功能,旅客在出发前可以根据出发地和到达地查询不同的路线,旅客可以有三个决策方案,第一个是时间最短,第二个是费用最小,第三个是中转次数最少。

对管理员来说,可以对城市进行增加,可以对列车时刻表和飞机航班表的信息进行的增加。

1.2 基本要求

① 输入的形式和输入值的范围

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

② 输出的形式

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

③ 程序所能达到的功能

(1)管理员可以细化为对城市信息的管理,对列车时刻表的管理,对飞

word文档 可自由复制编辑

机航班表的信息的管理,初始化交通图;

(2)用户可以查询两个城市之间的航班和车次。用户只需要选择起始城市和目的城市,就可以选择时间最短、费用最少和中转次数最少的方案; (3)用户可以按照自己的需求选择乘坐飞机和火车。 (4)退出系统。

2 概要设计

2.1数据结构

(1)本程序运用了关于图这种数据结构。图的存储结构采用邻接表的结

构抽象数据类型定义。

typedef struct {int number; float expenditure; int begintime[2]; int arrivetime[2]; }Vehide; typedef struct

{Vehide stata[MAX_ROUTE_NUM]; int last; }infolist;

typedef struct ArcNode {int adjvex;

struct ArcNode *nextarc;

word文档 可自由复制编辑

infolist info; }ArcNode;

typedef struct VNode {char cityname[10];

ArcNode *planefirstarc,*trainfirstarc; }VNode,AdjList[MAX_VERTEX_NUM]; typedef struct {AdjList vertices;

int vexnum,planearcnum,trainarcnum; }ALGraph; typedef struct Node {int adjvex; int route; struct Node *next; }Node;

typedef struct QNode {int adjvex; struct QNode *next; }QNode; typedef struct {QNode *front; QNode *rear;

word文档 可自由复制编辑

}LinkQueue;

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];

基本操作:

void Administer(ALGraph *G); void cityedit(ALGraph *G);

void CopyTimeTree(TimeTree p,TimeTree q); void createcityfile();//创建城市文件 void CreateGraph(ALGraph *G);//创建图 void createplanefile();//创建飞机航班文件

word文档 可自由复制编辑

void CreateTimeTree(TimeTree p,int i,int j,LinkQueue *Q,infolist (*arcs)[MAX_VERTEX_NUM]); void createtrainfile();//创建列车文件 void DeleteQueue(LinkQueue *Q,int *x);

void DemandDispose(int n,ALGraph G);//用户需要的方案 void DestoryTimeTree(TimeTree p); void EnterplaneArc(ALGraph *G);?//增加航班 void EnterQueue(LinkQueue *Q,int x);//入队Q void EntertrainArc(ALGraph *G);//增加列次 void EnterVertex(ALGraph *G);

voidExpenditureDispose(intk,infolist(*arcs)[MAX_VERTEX_NUM],ALGraph G,int v0,int v1,float *M,int *final);//最少花费安排 void flightedit(ALGraph *G);//编辑航班

void initgraph(ALGraph *G);//创建图的方式:通过键盘或者文档 void InitQueue(LinkQueue *Q);//创建队列Q int IsEmpty(LinkQueue *Q);

int LocateVertex(ALGraph *G,char *v);//找到v在图中的位置

void MinExpenditure(infolist arcs,float *expenditure,int *route);//计算金

void MinTime(infolist arcs,int *time,int *route);//计算时间 int save(ALGraph *G);//保存图

voidTimeDispose(int k,infolist (*arcs)[MAX_VERTEX_NUM],ALGraph G,int v0,int v1,int (*T)[2],int *final);//最少时间安排

word文档 可自由复制编辑

voidTimeTreeDispose(Node*head,infolist(*arcs)[MAX_VERTEX_NUM]);

void trainedit(ALGraph *G);//编辑列车

voidTransferDispose(intk,infolist(*arcs)[MAX_VERTEX_NUM],ALGraph G,int v0,int v1);//最少换乘安排

void UserDemand(ALGraph G);//用户需要的选择 void VisitTimeTree(TimeTree p);

2.2 程序模块

2.2.1 管理员模块

管理员模块包括初始化交通系统、城市编辑模块、飞机航班编辑模块、列车车次编辑模块。初始化交通系统包括键盘和文档两种创建方式。键盘创建包括创建城市文件、创建航班文件、创建列次文件。

2.2.2 客户查询

用户咨询界面包括用户需要的最少金钱花费、最少时间花费和最少转乘次数。没种方案都可以选择用户需要的起始地和目的地,可以根据用户需要选择乘坐的飞机或者列车。

2.3各模块之间的调用关系以及算法设计

2.3.1各个模块之间的调用关系

主函数 word文档 可自由复制编辑

键盘 文档 最少旅行费用 最少旅行时间 初始化交通系统 最少中转次数 返回上一级菜单 初始化交通系统 城市编辑 飞机航班编辑 列车车次编辑 返回上一级菜单 管理员管理 用户咨询 管理员管理 退出 用户咨询

城市编辑 飞机航班编辑 火车列次编辑 图1

新增城市 新增航班 新增车次 3 详细设计

3.1 管理员模块

初始化交通系统通过键盘和文档两种方式实现,使用了函数是

word文档 可自由复制编辑

initgraph(ALGraph *G)函数。调用了创建城市文件createcityfile()函数、创建火车车次文件createtainfile()函数和创建图的CreateGraph(G)函数。

城市编辑模块使用函数cityedit(ALGraph*G)调用了添加城市函数EnterVertex(ALGraph*G)实现对城市的添加功能。

飞机航班编辑模块使用函数flightedit(ALGraph *G)调用En TerplaneArc(ALGraph*G)函数实现增加航班功能。

列车车次编辑模块使用函数traintedit(ALGraph *G)调用EnTertrainArc(ALGraph*G)函数实现增加航班功能。

3.2 用户查询模块

用户需求使用函数UserDemand(ALGraph *G)调用需求方案函数DemandDispose(int n,ALGraph G),需求方案函数中调用了花费方案函数 voidExpenditureDispose(intk,infolist(*arcs)[MAX_VERTEX_NUM],ALGraph G,int v0,int v1,float *M,int *final)、最少时间方案函数voidTimeDispose(int k,infolist (*arcs)[MAX_VERTEX_NUM],ALGraph G,int v0,int v1,int (*T)[2],int *final)和最少换乘函数voidTransferDispose(intk,infolist(*arcs)[MAX_VERTEX_NUM],ALGraph G,int v0,int v1)实现,而最少花费函数又调用了计算金钱的MinExpenditure(infolist arcs,float *expenditure,int *route)函数;最少时间函数调用了计算时间函数MinTime(infolist arcs,int *time,int *route);最少转乘函数使用了队列和图的广度优先遍历。在计算最小时间时用到了时间树。

用户可以在选择了三种方案任一种之后选择起始城市和目的城市,然后选择想要乘坐的是飞机还是火车,就可以找出三种不同方案的各自的最优方案。

3.3 函数调用关系图

word文档 可自由复制编辑

本文来源:https://www.bwwdw.com/article/hk96.html

Top