没有合适的资源?快使用搜索试试~ 我知道了~
首页交通咨询系统设计数据结构实验报告
资源详情
资源评论
资源推荐
交通咨询系统设计
数据结构实验报告
一、 设计要求
问题描述
根据不同目的的旅客对交通工具具有不同的要求,例如,因公出差的旅客希望在旅
途中的时间尽可能短,出门旅游的游客则希望旅费尽可能省,而老年旅客则要求中
转次数最少。编制一个全国城市之间的模拟交通咨询程序,为旅客提供两种或三种
最优决策的交通咨询。
需求分析
(1)提供对城市信息进行编辑的功能。
(2)城市之间有两种交通工具:火车和飞机。提供对列车时刻表和航班进行编辑的
功能。
(3)提供两种最优决策:最快到达或最省钱达到。全程只考虑一种交通工具。
(4)旅途中的航飞的总时间应该包括中转站的等候时间。
(5)咨询以用户和计算机的对方方式进行。由用户输入起始站、终点站、最优决策
原则和交通工具,输出信息:最快需要多长时间才能到达或者最少需要多少旅费才
能达到,并详细说明依次于何时乘坐那一趟列车或哪一次班机到何地。
二、概要设计
主界面设计
为实现上面的功能的管理,设计一个主界面,方便引导用户使用。如下图:
存储结构设计
本系统采用图结构类型存储抽象交通路线图的信息。其中,各城市间的邻接关系用
图的链表类型存储;城市信息用结构数组存储,其中每个数组元素是一个结构变量。
系统功能设计
本系统总共 3 个功能,详细描述如下:
1.管理员管理
管理员管理由函数 Administer 实现。分别包含初始化系统、城市编辑、航班编辑及
车次编辑等功能
2.用户咨询
用户咨询由函数 UserDemand 实现。当用户选择该功能,系统会提供三种最优原则,
并根据用户输入要求,给出最优路线。
3.显示交通系统
显示交通系统由函数 PrintGraph 实现。分别包含显示城市、显示航班以及显示车次
等功能。
三、模块设计
- 1 -
模块设计
本系统包含 3 个主程序模块、工作区模块和无向网操作模块。其调用关系如下图所
示:
系统子程序及功能设计
本系统共设置 36 个子程序,各子程序的函数名及功能说明如下。
(1)int main() //1.显示程序功能选择界面
(2)void Administer(ALGraph *G); //2.显示管理员管理项目选择界面
(3)void UserDemand(ALGraph G); //3.用户咨询项目选择界面
(4)void PrintGraph(ALGraph *G); //4.显示城市交通系统
(5)void initgraph(ALGraph *G); //5.初始化交通系统
(6)void createcityfile(); //6.创建城市名称文档
(7)void createplanefile(); //7.创建航班文档
(8)void createtrainfile(); //8.创建车次文档
(9)void CreateGraph(ALGraph *G); //9.用 city,plan,train 三个文档创建城市交通
系统
(10)void cityedit(ALGraph *G); //10.显示城市编辑项目选择界面
(11)void EnterVertex(ALGraph *G); //11.增加城市
(12)void DeleteVertex(ALGraph *G); //12.删除城市
(13)void flightedit(ALGraph *G); //13.航班编辑项目选择界面
(14)void EnterplaneArc(ALGraph *G); //14.增加航班
(15)int DeleteplaneArc(ALGraph *G); //15.删除航班
(16)void trainedit(ALGraph *G); //16.车次编辑项目选择界面
(17)void EntertrainArc(ALGraph *G); //17.增加车次
(18)int DeletetrainArc(ALGraph *G); //18.删除车次
(19)int save(ALGraph *G); //19.保存城市交通系统到相应的文档
(20)void DemandDispose(int n,ALGraph G);//20.用户咨询选择信息输入界面,通过该
子程序调用其他咨询子程序
( 21 ) void ExpenditureDispose(int k,infolist (*arcs)[MAX_VERTEX_NUM],ALGraph
G,int v0,int v1,float *M,int *final); //21.最少旅行费用处理
(22)void MinExpenditure(infolist arcs,float *expenditure,int *route); //22.两直达城市
之间最少旅行费用和相应路径
( 23 ) void TimeDispose(int k,infolist (*arcs)[MAX_VERTEX_NUM],ALGraph G,int
v0,int v1,int (*T)[2],int *final);//23.最短旅行时间处理
(24)void MinTime(infolist arcs,int *time,int *route); //24.两直达城市之间最短旅行
时间和相应路径
(25)void TransferDispose(int k,infolist (*arcs)[MAX_VERTEX_NUM],ALGraph G,int
v0,int v1); //25.最少中转次数处理
(26)void TimeTreeDispose(Node *head,infolist (*arcs)[MAX_VERTEX_NUM]); //26.
时间树处理
(27)void CreateTimeTree(TimeTree p,int i,int j,LinkQueue *Q,infolist (*arcs)
[MAX_VERTEX_NUM]); //27.创建时间树
(28)void CopyTimeTree(TimeTree p,TimeTree q); //28.复制时间树
- 2 -
主程序模块
无向网模块
工作区模块
(29)void VisitTimeTree(TimeTree p); //29.访问时间树界面
(30)void DestoryTimeTree(TimeTree p); //30.销毁时间树
(31)void InitQueue(LinkQueue *Q); //31.初始化队列,链队列:队列的链式表示
(32)void EnterQueue(LinkQueue *Q,int x); //32.入队操作,插入元素 x 为 Q 的新的
队列元素
(33)void DeleteQueue(LinkQueue *Q,int *x); //33.出队操作
(34)int IsEmpty(LinkQueue *Q); //34.队列判空操作
(35)int LocateVertex(ALGraph *G,char *v); //35.城市名在交通系统中定位操作,找
出城市名在图中对应结点位置
(36)int locatecity(char ct[12]); //36.城市是否已存在
函数主要调用关系
主函数可调用子程序 2,3,4
子程序 2 可调用子程序 5,10,13,16
子程序 5 可调用子程序 6,7,8,9
子程序 7,8 可调用子程序 36
子程序 9,14,15,17,18 可调用子程序 35
子程序 10 可调用子程序 11,12
子程序 13 可调用子程序 14,15
子程序 16 可调用子程序 17,18
子程序 3 可调用子程序 20
子程序 20 可调用子程序 25,21,23
子程序 25 可调用子程序 31,28,33,34
子程序 21 可调用子程序 22
子程序 23 可调用子程序 24,26
子程序 26 可调用子程序 27,29,30
子程序 27 可调用子程序 28
四、详细设计
数据类型定义
(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;
- 3 -
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;
}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];
(2)全局变量定义
char city[MAX_VERTEX_NUM][10];
int TTime[2];
int time[2];
int time1[2];
int time2[2];
- 4 -
剩余59页未读,继续阅读
zero6688688
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 2023年中国辣条食品行业创新及消费需求洞察报告.pptx
- 2023年半导体行业20强品牌.pptx
- 2023年全球电力行业评论.pptx
- 2023年全球网络安全现状-劳动力资源和网络运营的全球发展新态势.pptx
- 毕业设计-基于单片机的液体密度检测系统设计.doc
- 家用清扫机器人设计.doc
- 基于VB+数据库SQL的教师信息管理系统设计与实现 计算机专业设计范文模板参考资料.pdf
- 官塘驿林场林防火(资源监管)“空天地人”四位一体监测系统方案.doc
- 基于专利语义表征的技术预见方法及其应用.docx
- 浅谈电子商务的现状及发展趋势学习总结.doc
- 基于单片机的智能仓库温湿度控制系统 (2).pdf
- 基于SSM框架知识产权管理系统 (2).pdf
- 9年终工作总结新年计划PPT模板.pptx
- Hytera海能达CH04L01 说明书.pdf
- 数据中心运维操作标准及流程.pdf
- 报告模板 -成本分析与报告培训之三.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0