logo资料库

数据结构公交车最优线路问题完整代码附实验报告.pdf

第1页 / 共56页
第2页 / 共56页
第3页 / 共56页
第4页 / 共56页
第5页 / 共56页
第6页 / 共56页
第7页 / 共56页
第8页 / 共56页
资料共56页,剩余部分请下载后查看
《数据结构》 课程设计说明 2010.1
常州工学院 计算机信息工程学院 《数据结构》课程设计报告 题 年 专 目 公交路线上优化路径的查询 级 业 2008 级 软 件 工 程 学 生 学 号 08030334( 组长 ) 学 生 学 号 08030337 指 导 教 师 王 树 峰 2010 年 01 月 11 日
常州工学院计算机信息工程学院 《数据结构》课程设计 任 务 书 设计名称: 公交线路上优化路径的查询 指导教师: 王树峰 下达时间: 2010-01-11 学生姓名: XXX (组长) 学 号: XXXXXXXXX 学生姓名: XXXX 学 号: XXXXXXXX 专业: 软件工程
一、课程设计的基本要求 ① 根据上述公交线路的输入格式,定义并建立合适的图模型。 ② 针对上述公交线路,能查询获得任何两个站点之间最便宜的路径,即输 入站名 S,T 后,可以输出从 S 到 T 的最便宜的路径,输出格式为:线路 x:站 名 S,…,站名 M1;换乘线路 x:站名 M1,…,站名 M2;…;换乘线路 x: 站名 MK,…,站名 T。共花费 x 元。 ③ 针对上述公交线路,能查询获得任何两个站点之间最省时间的路径(不 考虑在中间站等下一辆线路的等待时间),即输入站名 S,T 后,可以输出从 S 到 T 的考虑在中间站等下一辆线路的等待时间的最省时间的路径,输出格式为: 线路 x:站名 S,…,站名 M1;换乘线路 x:站名 M1,…,站名 M2;…;换 乘线路 x:站名 MK,…,站名 T。共花费 x 时间。 ④ 针对上述公交线路,能查询获得任何两个站点之间最省时间的路径(要 考虑在中间站等下一辆线路的等待时间),即输入站名 S,T 后,可以输出从 S 到 T 的考虑在中间站等下一辆线路的等待时间的最省时间的路径,输出格式为: 线路 x:站名 S,…,站名 M1;换乘线路 x:站名 M1,…,站名 M2;…;换 乘线路 x:站名 MK,…,站名 T。共花费 x 时间。 二、课程设计的主要内容(包含分工) 主要内容:首先将多有要用到的结构体全部定义完全,在 课程设计的进程安排 1.2010 年 01 月 10 日之前: 完成所有要用到的结构体的定义。 2.2010 年 01 月 11 日——01 月 12 日: 完成建立合适的图模型以及信息的初始化。 3.2010 年 01 月 15 日前: 将初始化的所有的信息与建立的图模型完全连接起来,写 调整函数将每一条路线的车的信息存放到所有的节点里去。 4.2010 年 1 月 16 日——2010 年 1 月 18 日 : 完成按时间和价格的最优的方法选择路线。 5. 2010 年 1 月 19 日——2010 年 1 月 20 日:
完成所有的程序。 6. 2010 年 1 月 21 日 答辩 具体分工: XX(组长):①,定义所有将要用到的结构体 ②,编写函数实现根据公交路线信息修改站点信息的功能 ③,利用 Floyd 算法找出按时间的所有两站之间的最优路径 ④,编写时间最优的路线选择(不考虑等待时间) ⑤,编写时间最优的路线选择(考虑等待时间) XX :①,初始化所有信息 ②,建立图模型 ③,编写价格最优的路线选择 ④,界面优化 2010 年 01 月 11 日
《数据结构》课程设计报告(模板) 一 正文 1、目的 求公交线路上优化路径的查询 。 2、需求分析 程序需要根据乘客的需要来查询的出符合要求的信息 ①在程序运行的过程中根据提示进行输入; ②程序输出所有符合要求的最优的路线以供乘客选择; ③程序能查询任意两站之间按时间和按价格的最优路线查询; 3、概要设计 先建图,再用 Floyd 函数求出任意两个结点之间的最优路径,后调用 shortest 函数进行求时间最优的路径,结束后在 main 函数里面提供选择界面,可以进行 时间和价格最优路线的查询分别为 Select_Time 函数和 Select_Money 函数 4、详细设计 1)、定义结构体 typedef struct { int selectbusnum; char station1,station2; int selectbusprice,selectbusgap; }Selects; typedef struct{ char StaName; char Location[128]; }StationInfo; typedef struct { //存储按条件选择的最优选择路线的信息 //站点的信息,每个站点中存放的信息有名字和位置] VRType adj; //因为是有向图,adj 用来存放权值,存放的是两个结点之间 的时间值 InfoType *info; //存放弧的信息 }ArCell, adjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //adj[v][w] 数组即 v 和 w 之间的权值
typedef struct{ int num; int price ; int gap; int speed; int stopnum; StationInfo pass[MAX_VERTEX_NUM]; //车辆的路线号 //每路车的票价 //每两次发车之间的时间间隔 //车速 //每辆车经过的车站的总数 }BusInfo; typedef struct{ //车辆信息 char StaName; char Location[32]; int stopbusnum; BusInfo stopbus[MAX_BUS_NUM]; }VertexType; 站点的所有的车辆的信息 2)调整函数 Adjust void Adjust (MGraph &G,VertexType *S) { int i; for (i=0;i
息。 定义的整型数组 t[8]是用来对每辆车经过的站的个数进行计数的。 3)建立图模型 int LocateVex(MGraph G,char u) { int i; for(i=0;i
分享到:
收藏