c语言公交最优路径查询数据结构(附设计报告,c语言公交最优路径查询数据结构(附设计报告,完整代码).doc...

这篇课程设计报告详细介绍了开发一个公交线路优化路径查询系统的过程。系统能查询两个站点间最便宜和最省时间的路径,使用Floyd算法求解。报告涵盖了结构体定义、图模型建立、算法实现及分工情况,还包括了课程设计的评分标准和答辩问题。
摘要由CSDN通过智能技术生成

《数据结构》

课程设计说明

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;iX≥90);良好(90>X≥80);中等(80>X≥70);及格(70>X≥60);不及格(X<60);

③ 发现有拷贝舞弊现象者,一律直接退回不作检查,两次舞弊者按不及格处理。

④ 每组学生至少要回答三个以上的问题,有两个以上问题回答不清楚者,一律不及格。

⑤ 课程设计报告不交或不规范者一律不及格。

《数据结构》课程设计考核评估标准

通过程序设计及答辩方式,并结合学生的动手能力(编程及调试程序能力)、独立分析解决问题的能力、创新精神、总结报告、答辩水平、学习态度以及题目难易程度综合考评,成绩分优、良、中、及格和不及格五等。课程设计的量化评分成绩见表(1)

《数据结构》课程设计量化评分标准(每人一页)

学生姓名: 朱陈立 学生学号 08030337

指标

最高分

评分要素

评分

设计技术水平

20

程序运行情况良好,结构设计合理,算法说明清晰,理论分析与计算正确,实验数据无误,通用性和可扩充性强

实际动手能力

20

独立完成设计,能够迅速准确的进行调试和纠错

研究成果与专业知识

10

对研究的问题能较深刻分析或者有独到见解,很好地掌握了有关基础理论与专业知识,总结报告认识深刻

写作与总结提炼能力

10

报告结构严谨,逻辑严密,论述层次清晰,语言流畅,表达准确,重点突出,

文献综述

10

有较完善的文献综述,能够正确查阅参考文献资料

规范化程度

10

提交的电子文档及打印文档的书写、存放完全符合规范化要求

答辩情况

10

能简明扼要地阐述设计的主要内容,能准确流利地回答各种问题

学习态度

10

端正的学习态度及认真刻苦程度等

总 分

指导教师:王树锋

2010年 01月22日

注意:

⑥ 本评分标准适用于数据结构课程设计;

⑦ 总分满分为100分,成绩参考标准为:优秀(100>X≥90);良好(90>X≥80);中等(80>X≥70);及格(70>X≥60);不及格(X<60);

⑧ 发现有拷贝舞弊现象者,一律直接退回不作检查,两次舞弊者按不及格处理。

⑨ 每组学生至少要回答三个以上的问题,有两个以上问题回答不清楚者,一律不及格。

⑩ 课程设计报告不交或不规范者一律不及格。

答辩问题 :

1,优化问题是很重要的问题,许多问题比如数据挖掘问题就可以看作一个优化问题,请你谈谈对优化问题的认识?

回答:数据挖掘,在人工智能领域,习惯上又称为数据库中知识发现(Knowledge Discovery in Database, KDD), 也有人把数据挖掘视为数据库中知识发现过程的一个基本步骤。在数据库中根据大量的信息,寻找最优的模型,完成优化。通过优化可以应用到很多领域,从而增加效益。优化问题在现实生活中有许多应用但基本思想是贪婪算法,即每一步都是最优的,整体就是最优的。例如笛杰斯特拉,普里母算法等。通过优化,可以找到解决问题的最优方法。

2,你用什么标准选择公交线路上的优化路径?

回答:在本程序中采用了时间和价格作为选择标准来进行查询,由于时间是在每两个站点之间的,对应图中的就是每条弧的权值,利用Floyd算法可以求到每一组站点之间的最优路径。按价格算的话,乘一次车给一次钱,换乘时才需要另外加钱,所以不能用Floyd算法来求价格的最优路径,所以在每个结点里存放进经过的所有的车的信息包括价格,在挑选车的时候可以将价格来进行比较挑选出最优路径。

3,通过课程设计,你有那些收获,你对认为数据结构课程设计该怎样去做?

回答:通过这次的课程设计,让我们更多的了解了贪婪算法的思想,更多的了解了Floyd算法的运用,在时间和价格最优的路线的挑选中就是运用了贪婪算法的思想,即每一步都占一点小的便宜,走最优的路线,到最后就可以得到从出发点到目的地的最优的路线了。做课程设计,首先要把自己的思想理清,确定自己的程序将要实现的是什么功能,再去找到理论依据,找到了理论依据后,就可以着手去写代码了。先将实现功能的主要的程序写出来,再由主要的程序向更加优化的方面考虑,去添加一些辅助的程序,最后调试时加以修改更正就可以了。

# include "stdio.h"

# include "string.h"

# include "stdlib.h"

# include "conio.h"

#define TRUE 1

#d

展开阅读全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值