课程设计——全国交通咨询系统--试验报告.doc
《课程设计——全国交通咨询系统--试验报告.doc》由会员分享,可在线阅读,更多相关《课程设计——全国交通咨询系统--试验报告.doc(79页珍藏版)》请在沃文网上搜索。
1、分类号 编 号 课 程 设 计题目 全国交通咨询系统 院 系 信息工程学院 专 业 计算机科学与技术 姓 名 学 号 指 导 教 师 目录1 需求分析31.1 问题描述31.2 基本要求32 概要设计42.1数据结构42.2 程序模块82.2.1 管理员模块82.2.2 客户查询82.3各模块之间的调用关系以及算法设计82.3.1各个模块之间的调用关系83 详细设计93.1 管理员模块93.2 用户查询模块103.3 函数调用关系图104 测试与分析124.1合法数据的测试124.1.1 测试截图124.2 非法数据的测试17五总结18参考文献21附录21全国交通咨询系统1 需求分析1.1 问
2、题描述随着我国交通系统的发展,从一个城市到另一个城市可以选择多个交通工具,比如火车,飞机。不同的交通工具的价格,所用的时间也不一样。对旅客来说,可以根据自己的时间安排,资金的情况选择不能的交通工具和不同的乘车路线。本系统就是主要完成这个的功能,旅客在出发前可以根据出发地和到达地查询不同的路线,旅客可以有三个决策方案,第一个是时间最短,第二个是费用最小,第三个是中转次数最少。对管理员来说,可以对城市进行增加,可以对列车时刻表和飞机航班表的信息进行的增加。1.2 基本要求 输入的形式和输入值的范围在程序中输入城市名称时,需输入10个字母以内的字母串;输入列车或飞机编号时需输入一个整型数据;输入列车
3、或飞机的费用时需输入一个实型数据;输入列车或飞机开始时间和到达时间时均需输入两个整型数据(以hh:mm的形式);在选择功能时,应输入与所选功能对应的一个整型数据。 输出的形式程序的输出信息主要是:最快需要多少时间才能到达,或最少需要多少旅费才能到达,或最少需要多少次中转到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。 程序所能达到的功能(1)管理员可以细化为对城市信息的管理,对列车时刻表的管理,对飞机航班表的信息的管理,初始化交通图;(2)用户可以查询两个城市之间的航班和车次。用户只需要选择起始城市和目的城市,就可以选择时间最短、费用最少和中转次数最少的方案;(3)用户可以按照自己
4、的需求选择乘坐飞机和火车。(4)退出系统。2 概要设计2.1数据结构(1)本程序运用了关于图这种数据结构。图的存储结构采用邻接表的结构抽象数据类型定义。 typedef structint number; float expenditure; int begintime2; int arrivetime2;Vehide;typedef structVehide stataMAX_ROUTE_NUM; int last;infolist;typedef struct ArcNodeint adjvex; struct ArcNode *nextarc; infolist info;ArcNode
5、;typedef struct VNodechar cityname10; ArcNode *planefirstarc,*trainfirstarc;VNode,AdjListMAX_VERTEX_NUM;typedef structAdjList vertices; int vexnum,planearcnum,trainarcnum;ALGraph;typedef struct Nodeint adjvex; int route; struct Node *next;Node;typedef struct QNodeint adjvex; struct QNode *next;QNode
6、;typedef structQNode *front; QNode *rear;LinkQueue;typedef struct TimeNodeint adjvex; int route; int begintime2; int arrivetime2; struct TimeNode *childMAX_ROUTE_NUM;TimeNode,*TimeTree;struct arcint co; char vt10; char vh10; int bt2; int at2; float mo;aMAX_ARC_SIZE;基本操作:void Administer(ALGraph *G);v
7、oid cityedit(ALGraph *G);void CopyTimeTree(TimeTree p,TimeTree q);void createcityfile();/创建城市文件void CreateGraph(ALGraph *G);/创建图void createplanefile();/创建飞机航班文件void CreateTimeTree(TimeTree p,int i,int j,LinkQueue *Q,infolist (*arcs)MAX_VERTEX_NUM);void createtrainfile();/创建列车文件void DeleteQueue(LinkQ
8、ueue *Q,int *x);void DemandDispose(int n,ALGraph G);/用户需要的方案void DestoryTimeTree(TimeTree p);void EnterplaneArc(ALGraph *G);?/增加航班void EnterQueue(LinkQueue *Q,int x);/入队Qvoid EntertrainArc(ALGraph *G);/增加列次void EnterVertex(ALGraph *G);voidExpenditureDispose(intk,infolist(*arcs)MAX_VERTEX_NUM,ALGraph
9、 G,int v0,int v1,float *M,int *final);/最少花费安排void flightedit(ALGraph *G);/编辑航班void initgraph(ALGraph *G);/创建图的方式:通过键盘或者文档void InitQueue(LinkQueue *Q);/创建队列Qint IsEmpty(LinkQueue *Q);int LocateVertex(ALGraph *G,char *v);/找到v在图中的位置void MinExpenditure(infolist arcs,float *expenditure,int *route);/计算金钱v
10、oid 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);/最少时间安排voidTimeTreeDispose(Node*head,infolist(*arcs)MAX_VERTEX_NUM);void trainedit(ALGraph *G);/编辑列车voidTransferDispose(int
11、k,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 客户查询用户咨询界面包括用户需要的最少金钱花费、最少时间花费和最少转乘次数。没种方案都可以选择用户需要的起始地和
12、目的地,可以根据用户需要选择乘坐的飞机或者列车。2.3各模块之间的调用关系以及算法设计2.3.1各个模块之间的调用关系主函数退出用户咨询管理员管理管理员管理返回上一级菜单列车车次编辑飞机航班编辑城市编辑初始化交通系统用户咨询最少中转次数返回上一级菜单最少旅行时间最少旅行费用初始化交通系统文档键盘新增城市城市编辑新增航班飞机航班编辑新增车次火车列次编辑图13 详细设计3.1 管理员模块 初始化交通系统通过键盘和文档两种方式实现,使用了函数是 initgraph(ALGraph *G)函数。调用了创建城市文件createcityfile()函数、创建火车车次文件createtainfile()函数
13、和创建图的CreateGraph(G)函数。城市编辑模块使用函数cityedit(ALGraph*G)调用了添加城市函数EnterVertex(ALGraph*G)实现对城市的添加功能。飞机航班编辑模块使用函数flightedit(ALGraph *G)调用EnTerplaneArc(ALGraph*G)函数实现增加航班功能。列车车次编辑模块使用函数traintedit(ALGraph *G)调用EnTertrainArc(ALGraph*G)函数实现增加航班功能。3.2 用户查询模块用户需求使用函数UserDemand(ALGraph *G)调用需求方案函数DemandDispose(int
14、 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
15、,ALGraph G,int v0,int v1)实现,而最少花费函数又调用了计算金钱的MinExpenditure(infolist arcs,float *expenditure,int *route)函数;最少时间函数调用了计算时间函数MinTime(infolist arcs,int *time,int *route);最少转乘函数使用了队列和图的广度优先遍历。在计算最小时间时用到了时间树。用户可以在选择了三种方案任一种之后选择起始城市和目的城市,然后选择想要乘坐的是飞机还是火车,就可以找出三种不同方案的各自的最优方案。3.3 函数调用关系图DeleteQueueEnterQueueI
16、nitQueueMinTimeTimeTreeDisposeTransferDisposeTimeDisposeMinExpenditureExpenditureDisposecreateplanefilecreatetrainfileCreateGraphinitgraphcityeditAdministertraineditcreatecityfileflighteditEnterVertexEnterplaneArcEntertrainArcMain()UserDemand 图2InitQueueEnterQueueDeleteQueueCreateTimeTreeCopyTimeTre
17、eTimeTreeDisposeVisitTimeTreeDestoryTimeTree4 测试与分析 4.1合法数据的测试 4.1.1 测试截图 图3(1)输入菜单号“1”,进入管理员模块。图4(2)输入菜单号“1”,初始化交通系统。选择“1”进行键盘录入,选择“2”直接导入录好的图。图5选择”2”城市编辑,可以添加城市:图6可在用户咨询界面查询到添加的城市:图7选择”3”可以添加航班信息:图8在用户咨询页面可以查询到: 图9图10(3)输入菜单号“2”,进入用户咨询界面 图11 (4) 输入“1”,选择最少费用的方案。图12图13 (5) 输入“1”,选择乘坐列车。图14 (6) 在用户咨
18、询界面输入“2”,按上述操作,则可以咨询最少旅行时间的方案。图15(7)在用户界面输入“3”,按上述操作,可以查询最少转车次数的方案。图16(8)若在选择交通工具界面选择“2”,飞机,则可以选择最少花费,最省时和最少中转次数的乘坐飞机的方案。图17图18图194.2 非法数据的测试4.2.1 在主菜单中输入错误号码后,系统自动跳转到主菜单,继续让用户输入。图204.1.2 选择用户咨询界面后,选择没有的城市,系统会让用户重新入。图214.1.3 在输入航班信息有误的时候会出现提示。图22五总结周桂华: 调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析: 在调试的过程中碰到了一下
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 全国 交通 咨询 系统 试验报告