数据结构课程设计-全国交通系统文档(11页).docx
《数据结构课程设计-全国交通系统文档(11页).docx》由会员分享,可在线阅读,更多相关《数据结构课程设计-全国交通系统文档(11页).docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-数据结构课程设计-全国交通系统文档-第 11 页数据结构课设课程名称 数据结构课设 题目名称 全国交通系统 学生学院 计算机 专业班级 学 号 学生姓名 指导教师 蒋 2016 年 11 月28 日一 需求分析1) 程序任务要求问题描述出于不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则期望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。基本要求提供对城市信息进行编辑(如:添加或删除)的功能。城市之间有两种交通工具:火车和飞机。提供对列车时刻表和飞机航班进行编辑(增设或
2、删除)的功能。提供两种最优决策:最快到达或最省钱到达。全程只考虑一种交通工具。旅途中耗费的总时间应该包括中转站的等候时间。咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原则和交通工具,输出信息为:最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。选做内容增加旅途中转次数最少的最优决策。二 设计概要1) 数据类型的定义本程序运用了关于图这种数据结构。ADT Graph数据对象 V:V 是具有相同特性的数据元素的集合,称为顶点集。数据关系 R:R=VRVR=|v, wV且 P(v,w), 表示从 v 到 w的弧。谓词
3、P(v,w) 定义了弧 的意义或信息 基本操作 P:CreateGraph(&G,V,VR);初始条件: V是图的顶点集, VR是图中弧的集合。操作结果:按 V和 VR的定义构造图 G。LocateVet(G,u);初始条件:图 G存在, u 和 G中顶点有相同的特征。操作结果:若 G中存在顶点 u,则返回该顶点在图中的位置,否则返回其他信息。InsertVex(&G,v);初始条件:图 G存在, v 和图中顶点有相同特征。操作结果:在图 G中添加新顶点 v。DeleteVex(&G,v);初始条件:图 G存在, v 是 G中某个顶点。操作结果:删除 G中顶点 v 及相关弧。InsertArc
4、(&G,v,w);初始条件:图 G存在, v 和 w是 G中两个顶点。操作结果:在 G中增添弧 ,若 G是无向的则还增加对称弧 。DeleteArc(&G,v,w);初始条件:图 G存在, v 和 w是 G中两个顶点。操作结果:在 G中删除弧 ,若 G是无向的,则还删除对称弧。 ADT Graph其他的抽象数据类型定义如下:typedef structint number;float expenditure;int begintime2;int arrivetime2;Vehide; /飞机或列车运行信息typedef structVehide stataMAX_ROUTE_NUM;int l
5、ast; /航班次或列车次infolist; /弧的权的信息(车次或航班信息)typedef struct ArcNodeint adjvex;struct ArcNode *nextarc;infolist info;ArcNode; /邻接表节点,存入弧(交通路线)的信息typedef struct VNodechar cityname10;ArcNode *planefirstarc, *trainfirstarc;VNode, AdjListMAX_VERTEX_NUM;/顶点数组元素typedef structAdjList vertices;int vexnum, planearc
6、num, trainarcnum;ALGraph; /图结构typedef struct Nodeint adjvex;int route;struct Node *next;Node;/辅助节点的存储结构typedef struct QNodeint adjvex;struct QNode *next;QNode;/队列节点,节点元素为int型typedef structQNode *front;QNode *rear;LinkQueue;/队列结构typedef struct TimeNodeint adjvex;int route;int begintime2;int arrivetim
7、e2;struct TimeNode *childMAX_ROUTE_NUM;TimeNode, *TimeTree; /求最短时间辅助树struct arcint co; /列车或飞机编号char vt10; /起始城市char vh10;/到达城市int bt2; /起始时间int at2;/到达时间float mo;/费用aMAX_ARC_SIZE;/存放边信息2) 操作函数void Administer(ALGraph *G); /*管理员操作*/void cityedit(ALGraph *G); /*编辑城市节点*/void CopyTimeTree(TimeTree p, Tim
8、eTree 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();/*创建列车路线文档*/int DeleteplaneArc(ALGraph *G);void DeleteQueue(Lin
9、kQueue *Q, int *x);int DeletetrainArc(ALGraph *G);void DeleteVertex(ALGraph *G);void DemandDispose(int n, ALGraph G); /*处理用户请求*/void DestoryTimeTree(TimeTree p);void EnterplaneArc(ALGraph *G);void EnterQueue(LinkQueue *Q, int x);void EntertrainArc(ALGraph *G);void EnterVertex(ALGraph *G);voidExpendi
10、tureDispose(int k, infolist(*arcs)MAX_VERTEX_NUM, ALGraph G, int v0, intv1, float *M, int *final);/*求取费用最少路线*/void flightedit(ALGraph *G);void initgraph(ALGraph *G); /*初始化交通系统*/void InitQueue(LinkQueue *Q);int IsEmpty(LinkQueue *Q);int LocateVertex(ALGraph *G, char *v);void MinExpenditure(infolist a
11、rcs, float *expenditure, int *route);void MinTime(infolist arcs, int *time, int *route);void PrintGraph(ALGraph *G);int save(ALGraph *G);void TimeDispose(int k, infolist(*arcs)MAX_VERTEX_NUM, ALGraph G, int v0, int v1, int(*T)2, int *final); /*求取用时最少的路线*/voidTimeTreeDispose(Node*head,infolist(*arcs)
12、MAX_VERTEX_NUM);void trainedit(ALGraph *G);void TransferDispose(int k, infolist(*arcs)MAX_VERTEX_NUM, ALGraph G, int v0, int v1);/*求取中转最少路线*/void UserDemand(ALGraph G);void VisitTimeTree(TimeTree p);void LogIn(ALGraph *G);/*登录管理员界面*/3) 主程序的流程以及各程序模块之间的调用关系三. 详细设计1) 伪码算法int main()界面初始化;输入操作命令;While (
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 全国 交通 系统 文档 11
限制150内