数据结构 课程设计报告(城市地铁设计)

合集下载

数据结构课程设计:地铁

数据结构课程设计:地铁

数据结构课程设计:地铁建设问软件学院课程设计报告书课程名称_______________ 数据结构 _______________ 设计题目___________ 地铁建设问题 ______________ 专业班级__________________________学号__________________________姓名_________________________________ 指导教师2014年1月17日目录1设计时间 02设计目的 03设计任务 04设计内容 04.1总体设计 04.2需求分析 (1)4.3详细设计 (1)4.4测试与分析 (3)4.4.1测试 (3)4.4.2分析 (4)4.5 附录 (4)5总结与展望 (8)参考文献 (9)成绩评定 (11)1设计时间2014年1月15日2设计目的设计各辖区之间最短地铁,使修建费用最少3设计任务某城市要在各个辖区之间修建地铁, 由于地铁建设费用昂贵, 建设线路,使市民可以沿地铁到达各个辖区,并使总费用最小。

4设计内容(1) 输入各个辖区名称和各辖区间直接距离(地铁铺设费用与距离成正比) (2) 根据辖区距离信息,计算出应该在哪些辖区建立地铁线路。

(3)输出应该建设的地铁线路及所需建设总里程。

4.1总体设计睡立无向囹•咯閃曹巨阵存因此需要合理安排地铁输入担真.纯恵 痒口宜仙巨离图4-1算法图4.2需求分析(1) 本程序设计计算城市内各辖区间修建地铁的最短路程。

(2) 运行时,输入辖区的名称,各辖区之间用空格键隔开,以 (3) 输入各辖区间距离时,先输入两辖区名称,再输入距离。

(4)最后计算最短距离来得出最少费用。

采用邻接矩阵存储构造无向图int creatgraph(Graph *g)char a[10],b[10];printf("请输入所有的辖区,以#为输入结束标志\n");while (strcmp("#" ,g->V[i])!=0)i++;scanf("%s" ,g->V[i]); }g->vex num=i;#输入结束4.3 详细设计int i=O,j,m,k,p;for (i=O;i<g->vex nu m;i++)for (j=0;j<g->vex nu m;j++) g->R[i][j]=INFINITY; printf("请输入辖区和辖区之间的路程,scan f("%s%s%d" ,a,b,&m);while (strcmp( "##" ,a)!=0 || strcmp( "##" { k=locatevex(g,a); p=locatevex(g,b);if(k==-1){printf("没有%s这个辖区\n" ,a);return 0;}if(p==-1){printf("没有%s这个辖区\n" ,b);return 0;}g->R[k][p]=g->R[p][k]=m;scanf("%s%s%d" ,a,b,&m);}return 1;}普利姆算法生成最小树struct tree //构造最小生成树// {int weizhi;int lowcost;}; 丄##为结束标志\n"); ,b)!=0 || m!=0)int minimun( struct tree *a,Graph g) {int i,k,m=O;for (i=O;i<g.vex nu m;i++)f (m==0 && a[i].lowcost!=0)m=1;k=i;if (m==1 && a[i].lowcost!=0)if (a[i].lowcost<a[k].lowcost)k=i;ret u rn k;4.4 测试与分析4.4.测试1图4-1正确测试结果图4-2错误测试结果4.4.2分析调试时,在输入数据时,再输完数据后要再次按下空格键,再输入结束符号才会结束本次输入进入下一个输入。

数据结构课程方案地铁建设问题

数据结构课程方案地铁建设问题

个人资料整理仅限学习使用软件学院课程设计报告书课程名称数据结构课程设计设计题目地铁建设问题专业班级学号姓名指导教师2018年 1 月目录1 设计时间12 设计目的13设计任务14 设计内容14.1需求分析14.2总体设计24.3详细设计44.4测试与分析11 4.4.1测试114.4.2分析134.5 附录145 总结与展望20参考文献22成绩评定22操作结果:构造一个无向图G;LocateDistri(Graph g,int u>操作结果:找出目标城市的位置;Min(Graph g,closedge closedge>操作结果:求出点与点之间的最短路径;Prim(G,G.distrinam[1]>操作结果:用普里姆算法找到连接各辖区的最短路;4.2.3主程序的流程主程序的流程如图1所示:图14.2.4各程序模块之间的层次<调用)关系各程序模块之间的层次<调用)关系如图2所示:图24.3详细设计4.3.1预处理#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <string.h>#define INFINITY 10000#define M 20typedef struct{ //创建图的结构体char V[M][10]。

//顶点数组,用来存储辖区的值即辖区的名称 int R[M][M]。

//邻接矩阵,邻接矩阵的元素值为辖区之间的距离{int i。

Graph g。

char a[10]。

i=creatgraph(&g>。

if(i>{printf("***********请输入起始地点为:************\n">。

scanf("%s",a>。

MiniSpanTree_PRIM(g,a>。

城市轨道交通规划与设计课程设计报告

城市轨道交通规划与设计课程设计报告

站台层用房布置
站台层西端设有:
照明配电室、电缆井、隧道柜室。
站台层东端设有:
安全门控制室、照明配电室、车站备品库、钢瓶间、35KV 开关柜室、控制室、 0.4 KV 开关柜室、检修室、储藏室、清扫工具间、污水泵房、废水泵房、卫生间 、整流变压器室、电能吸收装置室等用房。
10
车站规模确定——设备、管理用房
城市轨道交通规划与设计课程设计报告
—— 车站设计部分
小组成员 李雨鸿 陈志杰 蒋婧文 谭凯诺 薛 晨 指导老师 毛保华 08251012 08251003 08251008 08251018 08251021 刘智丽
1
答辩提纲
1 2 3 4 5 6 车站周边及站位情况 车站方案介绍
技术经济分析
车站规模确定 车站建筑设计 客流组织与紧急疏散、容量校核
8
车站规模确定——客流量
本站远期早高峰小时客流量大于晚高峰小时客流量,因此以远期早高峰 小时客流量为控制客流量,客流超高峰系数取1.3。
远期早高峰小时客流量(人/小时) 上行 下行 远期晚高峰小时客流量(人/小时)
上行
下客量 3554 上客量 2019
下行
下客量 4174 上客量 1809
下客量
2500
车站客流组织:
出站流线
进站流线
左片区 (进站服务区域)
中片区 (出站服务区域)
右片区 (进站服务区域)
在进出站闸机共排的两处闸机位置,用栏杆分离进出站客流。
21
客流组织与紧急疏散、容量校核
安全疏散时间验算:
远期高峰小时客流量时发生火灾情况下,6min内将一列车内所载乘 客、站台上候车乘客和站台上工作人员全部撤离站台。

城市轨道交通课程设计报告很齐全,很完整的课程设计

城市轨道交通课程设计报告很齐全,很完整的课程设计

轨道交通课程设计报告指导老师:江苏大学武晓辉老师一、项目背景及镇江市轨道交通建设必要性镇江市位于北纬31°37′~32°19′,东经118°58′~119°58′,地处长江三角洲地区的东端,江苏省的西南部,北临长江,与扬州市、泰州市隔江相望;东、南与常州市相接;西邻南京市。

镇江市域总面积3847平方公里,总体规划定位城市性质为国家历史文化名城,长江三角洲重要的港口、风景旅游城市和区域中心城市之一。

2005年,镇江城市总体规划进入实施阶段,城市空间布局将极大突破现有形态,“扩充两翼、向南延伸”成为城市新的发展方向。

伴随城市化进程加快、镇江跨入特大城市行列,城市空间的拓展对城市交通体系提出了新的要求。

镇江市为江苏省辖地级市,现辖京口、润州、丹徒三区,代管句容、丹阳、扬中三市。

另有国家级经济技术开发区-镇江新区行使市辖区经济、社会管理权限。

镇江全市总面积3848平方公里,人口311万人,市区户籍人口103.3万人市,市区常住人口122.37万人,人民政府驻润州区南徐大道68号。

内部城市空间结构调整:2005年,镇江城市总体规划进入实施阶段,城市空间布局将极大突破现有形态,“扩充两翼、向南延伸”成为城市新的发展方向。

伴随城市化进程加快、镇江跨入特大城市行列,城市空间的拓展对城市交通体系提出了新的要求,建设轨道交通是未来城市规划的必然结果。

城市化发展水平规划:近期(2000-2010):城市化水平达到:55% 城镇人口162万中期(2010-2020):城市化水平达到:60% 城镇人口184万远期(2020-2050):城市化水平达到:70% 城镇人口231万城市等级规模规划:中期:形成1个大城市,1个中等城市,2个小城市和38个小城镇的等级结构。

远期:形成1个特大城市,2个中等城市,1个小城市和27个小城镇的等级结构。

镇江位于南京都市圈核心层,是一座新兴工业城。

镇江拥有2个国家级开发区、6个省级开发区、5个国家级高新技术产业基地,镇江市的经济发展水平居江苏省中等偏上水平。

数据结构与算法课程设计城市公共交通最短线路

数据结构与算法课程设计城市公共交通最短线路

数据结构与算法课程设计一、问题描述及设计目的城市公共交通最短线路,利用邻接矩阵来构建交通节点,邻接矩阵的行列编号即为交通中的节点,有行列决定的数据即为权值基本的输入信息和条件:1. 输入总的节点个数,即为交通中的站点数目本程序中,站点的数目最大值为100。

2. 输入存在的通路,即为弧两个站点之间是联通的弧的数目是有限制的,数目小于站点数目[n *( n-1)]/23. 输入存在通路的两点,即为两站点站点编号要小于站点总数目二、应具备的功能1. 确定起点的最短路径问题,即已知起始结点,求最短路径的问题。

2. 确定终点的最短路径问题,与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。

在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。

3. 确定起点终点的最短路径问题,即已知起点和终点,求两结点之间的最短路径。

三、设计思想、主要算法的实现、基本操作、子程序调用关系1. Dijkstra算法的基本思想按路径长度递增顺序求最短路径算法。

2. Dijkstra算法的基本步骤设V。

是起始源点,S是已求得最短路径的终点集合。

V-S =未确定最短路径的顶点的集合,初始时S={V 0},长度最短的路径是边数为1且权值最小的路径。

下一条长度最短的路径:①V i • V - S,先求出V o到V i中间只经S中顶点的最短路径;② 上述路径中长度最小者即为下一条长度最短的路径; ② 将所求最短路径的终点加入 S 中; 重复直到求出所有终点的最短路径。

3. 存储结构设计本系统采用图结构类型(mgraph )存储抽象交通图的信息。

其中: 各站点间的邻接关系用图的邻接矩阵类型存储;图的顶点个数及边的 个数由分量n 、e 表示,它们是整型数据。

数据结构如下:typedef struct//顶点编号查询站点间的最短路程距离和路径int no;In foType info;//顶点其他信息,这里用于存放边的权值} VertexType; //顶点类型 typedef struct// 图的定义int edges[MAXV][MAXV]; //邻接矩阵int n,e;//顶点数,弧数VertexType vexs[MAXV]; //存放顶点信息 } MGraph;// 图的邻接矩阵类型该功能是查询站点的最短路径,包括距离和线路,有Floyd()函数实现。

数据结构_课程设计报告(城市地铁设计)

数据结构_课程设计报告(城市地铁设计)

数据结构课程设计报告学院:计算机科学与工程专业:计算机科学与技术班级:09级班学号:姓名:指导老师:时间: 2010年12月一、课程设计题目:1、哈夫曼编码的实现2、城市辖区地铁线路设计3、综合排序算法的比较二、小组成员:三、题目要求:1.哈夫曼编码的实现(1)打开若干篇英文文章,统计该文章中每个字符出现的次数,进一步统一各字符出现的概率。

(2)针对上述统计结果,对各字符实现哈夫曼编码(3)对任意文章,用哈夫曼编码对其进行编码(4)对任意文章,对收到的电文进行解码2.某城市要在其各个辖区之间修建地铁来加快经济发展,但由于建设地铁的费用昂贵,因此需要合理安排地铁的建设路线。

(1)从包含各辖区的地图文件中读取辖区的名称和各辖区的直接距离(2)根据上述读入的信息,给出一种铺设地铁线路的解决方案。

使乘客可以沿地铁到达各个辖区,并使总的建设费用最小。

(3)输出应该建设的地铁路线及所需要建设的总里程信息。

3.综合排序算法的比较各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概的执行时间。

试通过随机的数据比较各算法的关键字比较次数和关键字移动的次数。

(1)对以下各种常用的内部排序算法进行比较:直接插入排序,折半插入排序,二路归并排序,希尔排序,冒泡排序,快速排序简单选择排序,堆排序,归并排序,基数排序。

(2)待排序的表长不少于100,要求采用随机数。

(3)至少要用5组不同的输入数据做比较:比较的次数为有关键字参加的比较次数和关键字移动的次数(4)改变数据量的大小,观察统计数据的变化情况。

(5)对试验统计数据进行分析。

对各类排序算法进行综合评价。

四、项目安排:1、小组内分工合作分工:负责哈夫曼编码的实现,负责城市辖区地铁线路设计,负责综合排序算法的比较。

合作:组内,组外进行交流,组长帮助解决组员的在项目过程中的困难,并控制进度。

五、完成自己的任务:任务:城市辖区地铁线路设计1.实现方案创建城市辖区图表信息将信息写入文件从文件读取信息最优路径的选择输出最优路径的相关信息在整个编程中,我是通过手动输入的方式把数据写到文件中,而不是直接从文件中读取,这个不是题目要求的,但是我想当拿到数据之后都要对数据进行处理,干脆直接手动输入得出结果。

数据结构课程设计—城市道路交通咨询系统

数据结构课程设计—城市道路交通咨询系统

榆林学院数据结构课程设计报告题目城市交通咨询系统作者杨朝专业信息管理与信息系统学号指导老师张慧答辩时间目录1 .系统需求分析 (1)用户需求分析 (1)功能需求分析 (2)数据需求分析 (2)小结 (3)2.系统设计 (3)系统设计功能 (3)每个模块的具体功能。

(4)采用C语言定义相关数据类型 (4)建立邻接矩阵交通网络: (4)查询指定城市到其他城市自己建的最短路程: (6)查询任意两个城市之间的一条最短路径: (7)主函数的调用关系图 (8)3.系统测试 (9)操作说明 (9)测试数据 (10)用户进入界面: (10)、具体功能的实现 (11)、结束程序 (12)4.总结 (13)5.致谢 (13)6.附录 (14)1.系统需求分析现如今网络非常发达,无论人们出差,旅游或者做其他的出行之时,都会想到道路问题,切不仅仅关心的是交通费用,而且对于里程和所需要的时间等的问题也是同样的关心,在此系统中,完全面向用户,可以用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。

且在图中,顶点表示城市,边表示城市之间的交通关系。

设计一个交通咨询系统,能够让旅客咨询从任一城市顶点到达另外一个城市之间顶点的最短路径问题(最短里程问题)。

对系统分析,主要从以下几个方面进行分析。

1.用户需求分析2.功能需求分析3.数据需求分析用户需求分析现如今网络非常发达,无论人们出差,旅游或者做其他的出行之时,都会想到道路问题,切不仅仅关心的是交通费用,而且对于里程和所需要的时间等的问题也是同样的关心,在此系统中,完全面向用户,可以用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。

且在图中,顶点表示城市,边表示城市之间的交通关系。

设计一个交通咨询系统,能够让旅客咨询从任一城市顶点到达另外一个城市之间顶点的最短路径问题(最短里程问题)。

当要查询某两个城市之间的最短交通路线或者其中一个城市到达其余城市的最短路线时,是一个很繁琐的过程。

数据结构课程设计_地铁建设问题

数据结构课程设计_地铁建设问题

数据结构课程设计_地铁建设问题地铁建设问题是一个涉及到城市交通规划和基础设施建设的重要议题。

在数据结构课程设计中,我们将探讨如何利用合适的数据结构和算法来解决地铁建设问题。

一、问题描述在城市规划中,地铁系统的建设是一个复杂而关键的任务。

我们需要设计一个程序,能够根据给定的城市地图和站点信息,实现以下功能:1. 添加地铁线路:能够添加新的地铁线路,并指定每个站点的名称和位置。

2. 添加地铁站点:能够在已有的地铁线路上添加新的站点,并指定站点的名称和位置。

3. 查询地铁线路:能够根据线路名称查询该线路的所有站点信息。

4. 查询地铁站点:能够根据站点名称查询该站点所属的所有线路信息。

5. 查询两个站点之间的最短路径:能够根据给定的起点和终点站点,计算出两个站点之间的最短路径,并输出经过的所有站点。

二、数据结构设计为了实现上述功能,我们可以使用以下数据结构:1. 图(Graph):用于表示整个地铁网络,每个站点作为图的一个节点,站点之间的连接关系作为图的边。

2. 邻接表(Adjacency List):用于表示每个站点的邻接站点,方便查询某个站点的相邻站点。

3. 最短路径算法(Dijkstra算法):用于计算两个站点之间的最短路径。

三、算法设计1. 添加地铁线路:根据输入的线路名称和站点信息,将新的线路添加到地铁网络中。

2. 添加地铁站点:根据输入的站点名称和位置,将新的站点添加到指定的地铁线路中,并更新相邻站点的连接关系。

3. 查询地铁线路:根据输入的线路名称,遍历地铁网络,找到该线路的所有站点信息,并输出。

4. 查询地铁站点:根据输入的站点名称,遍历地铁网络,找到该站点所属的所有线路信息,并输出。

5. 查询两个站点之间的最短路径:根据输入的起点和终点站点,利用Dijkstra 算法计算最短路径,并输出经过的所有站点。

四、实现步骤1. 定义图(Graph)数据结构,包括节点和边的定义,以及相关的操作方法。

城市轨道交通课程设计报告(很齐全,很完整的课程设计)

城市轨道交通课程设计报告(很齐全,很完整的课程设计)

轨道交通课程设计报告指导老师:江苏大学武晓辉老师一、项目背景及镇江市轨道交通建设必要性镇江市位于北纬31°37′~32°19′,东经118°58′~119°58′,地处长江三角洲地区的东端,江苏省的西南部,北临长江,与扬州市、泰州市隔江相望;东、南与常州市相接;西邻南京市。

镇江市域总面积3847平方公里,总体规划定位城市性质为国家历史文化名城,长江三角洲重要的港口、风景旅游城市和区域中心城市之一。

2005年,镇江城市总体规划进入实施阶段,城市空间布局将极大突破现有形态,“扩充两翼、向南延伸”成为城市新的发展方向。

伴随城市化进程加快、镇江跨入特大城市行列,城市空间的拓展对城市交通体系提出了新的要求。

镇江市为江苏省辖地级市,现辖京口、润州、丹徒三区,代管句容、丹阳、扬中三市。

另有国家级经济技术开发区-镇江新区行使市辖区经济、社会管理权限。

镇江全市总面积3848平方公里,人口311万人,市区户籍人口103.3万人市,市区常住人口122.37万人,人民政府驻润州区南徐大道68号。

内部城市空间结构调整:2005年,镇江城市总体规划进入实施阶段,城市空间布局将极大突破现有形态,“扩充两翼、向南延伸”成为城市新的发展方向。

伴随城市化进程加快、镇江跨入特大城市行列,城市空间的拓展对城市交通体系提出了新的要求,建设轨道交通是未来城市规划的必然结果。

城市化发展水平规划:近期(2000-2010):城市化水平达到:55% 城镇人口162万中期(2010-2020):城市化水平达到:60% 城镇人口184万远期(2020-2050):城市化水平达到:70% 城镇人口231万城市等级规模规划:中期:形成1个大城市,1个中等城市,2个小城市和38个小城镇的等级结构。

远期:形成1个特大城市,2个中等城市,1个小城市和27个小城镇的等级结构。

镇江位于南京都市圈核心层,是一座新兴工业城。

镇江拥有2个国家级开发区、6个省级开发区、5个国家级高新技术产业基地,镇江市的经济发展水平居江苏省中等偏上水平。

《数据结构》课程设计报告

《数据结构》课程设计报告

《数据结构》课程设计报告一、课程目标《数据结构》课程旨在帮助学生掌握计算机科学中数据结构的基本概念、原理及实现方法,培养其运用数据结构解决实际问题的能力。

本课程目标如下:1. 知识目标:(1)理解数据结构的基本概念,包括线性表、栈、队列、串、数组、树、图等;(2)掌握各类数据结构的存储表示和实现方法;(3)了解常见算法的时间复杂度和空间复杂度分析;(4)掌握排序和查找算法的基本原理和实现。

2. 技能目标:(1)能够运用所学数据结构解决实际问题,如实现字符串匹配、图的遍历等;(2)具备分析算法性能的能力,能够根据实际问题选择合适的算法和数据结构;(3)具备一定的编程能力,能够用编程语言实现各类数据结构和算法。

3. 情感态度价值观目标:(1)培养学生对计算机科学的兴趣,激发其探索精神;(2)培养学生团队合作意识,提高沟通与协作能力;(3)培养学生面对问题勇于挑战、善于分析、解决问题的能力;(4)引导学生认识到数据结构在计算机科学中的重要地位,激发其学习后续课程的兴趣。

本课程针对高年级学生,课程性质为专业核心课。

结合学生特点,课程目标注重理论与实践相结合,强调培养学生的实际操作能力和解决问题的能力。

在教学过程中,教师需关注学生的个体差异,因材施教,确保课程目标的达成。

通过本课程的学习,学生将具备扎实的数据结构基础,为后续相关课程学习和职业发展奠定基础。

二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 数据结构基本概念:线性表、栈、队列、串、数组、树、图等;教学大纲:第1章 数据结构概述,第2章 线性表,第3章 栈和队列,第4章 串。

2. 数据结构的存储表示和实现方法:教学大纲:第5章 数组和广义表,第6章 树和二叉树,第7章 图。

3. 常见算法的时间复杂度和空间复杂度分析:教学大纲:第8章 算法分析基础。

4. 排序和查找算法:教学大纲:第9章 排序,第10章 查找。

教学内容安排和进度如下:1. 第1-4章,共计12课时,了解基本概念,学会使用线性表、栈、队列等解决简单问题;2. 第5-7章,共计18课时,学习数据结构的存储表示和实现方法,掌握树、图等复杂结构;3. 第8章,共计6课时,学习算法分析基础,能对常见算法进行时间复杂度和空间复杂度分析;4. 第9-10章,共计12课时,学习排序和查找算法,掌握各类算法的实现和应用。

数据结构课程设计报告(最终版)

数据结构课程设计报告(最终版)

数据结构课程设计报告
题目:
组长:
成员:
成员:
成员:
成员:
成员:
指导教师:
年月日
一、课程设计题目:
二、问题定义:(由教师指定)
三、需求分析
以明确的无歧义的陈述说明课程设计的任务,强调的是程序要做什么?并明确规定:
1、输入的形式和输入值的范围;
2、输出的形式;
3、程序所能达到的功能;
4、算法涉及的基本理论分析:比如对文件压缩,算法用到了
Huffman树,就要从理论上对文件压缩的几种方式、Huffman树的定义、Huffman编码的原理、解码的过程等进行分析。

5、题目研究和实现的价值。

四、算法设计
1、概要设计
阐述说明本算法中用到的所有数据结构的定义及其含义、主程序的流程以及各程序模块之间的层次(调用)关系。

3.详细设计
(1)实现概要设计中定义的所有数据类型;
(2)所有函数的接口描述;
(3)所有函数的算法描述(只需要写出伪码算法);
(3)对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序),可采用流程图、N – S 图或PAD图进行描述
(4)画出函数的调用关系图。

五、算法实现
以附件形式
六、软件测试
这里的测试主要是基于功能的黑盒测试,所以首先提出测试的功能点,然后给出测试数据(包括正确的输入及其输出结果和含有错误的输入及其输出结果。


要求在附件里给出软件的基本数据和测试数据。

七、技术讨论(可选)
八、收获与体会
九、软件运行的部分截图及说明。

《数据结构》课程设计报告-目录及正文

《数据结构》课程设计报告-目录及正文

目录1 前言 (1)2 需求分析 (1)2.1课程设计目的 (2)2.2课程设计任务 (2)2.3设计环境 (2)3 概要设计 (2)3.1数据结构设计 (2)3.2模块设计 (6)4 详细设计 (10)5 测试分析 (26)6 课程设计总结 (29)参考文献 (30)致谢 (30)1 前言在交通网络非常发达的今天,人们出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也很感兴趣。

对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通指南系统。

图中顶点表示城市,边表示城市之间的交通关系。

设计一个交通指南系统,能让旅客咨询从任一个城市顶点到达另外一个城市顶点之间的最短路径(里程)的问题.2 需求分析2.1课程设计目的本实验的核心代码是用FLOYD算法求有向网G中各对顶点v和w之间的最短路径P[v][w]及其带权长度D[v][w],其中利用到了一些稍许繁琐的数据存储结,求解最优路线问题解决相关实际问题,得到软件设计技能训练。

2.2课程设计任务假设以一个带权有向图表示某一区域的公交线路网,图中顶点代表一些区域中的重要场所,弧代表已有的公交线路,弧上的权表示该线路上的票价(或搭乘所需时间),试设计一个交通指南系统,指导前来咨询者以最低的票价或最少的时间从区域中的某一场所到达另一场所。

2.3设计环境(1)WINDOWS 2000/2003/XP/7/Vista系统(2)Visual C++或TC集成开发环境3 概要设计3.1数据结构设计结点类型:struct ArcCell{int adj; //存放弧长bool *info; //是否用过该弧};struct _MGraph{char vexs[20]; //存放站点ArcCell arcs[20][20]; //<i,j>int vexnum;int arcnum;};类定义:class MGraph //没用私有成员{public:_MGraph mgraph;//void DestroyGraph(); //析构函数销毁图int LocateVex (char u); // 返回顶点在图中的位置bool CreateDN(); //构造有向网void ShortestPath_FLOYD(Path &P,Distanc &D);};}3.2模块设计3.21构造有向网bool MGraph::CreateDN()//构造有向网{int i,j ,w;char v1, v2;cout<<"请输入站点个数,直接线路的条数: ";cin>>mgraph.vexnum>>mgraph.arcnum ;cout<<"\n请输入各站点名: ";for(i = 0;i<mgraph.vexnum;i++)//构造顶点向量{cin>>mgraph.vexs[i];}for(i = 0;i<mgraph.vexnum;i++) //初始化邻接矩阵{for(j = 0;j<mgraph.vexnum;j++){if(i==j)mgraph.arcs[i][j].adj = 0;elsemgraph.arcs[i][j].adj = 20000; //infinity;mgraph.arcs[i][j].info = false;}}for(i = 0;i<mgraph.arcnum;i++) //构造邻接矩阵{cout<<"\n请输入一条线路的起点,终点,距离(公里): ";cin>>v1>>v2>>w;int m = LocateVex(v1);int n = LocateVex(v2);mgraph.arcs[m][n].adj = w; // <v1, v2>的权值}return true;}3.22销毁有向图void MGraph::DestroyGraph(){for(int i = 0 ;i<mgraph.vexnum;i++)for(int j = 0;j<mgraph.vexnum;j++){if(mgraph.arcs[i][j].info){delete []mgraph.arcs[i][j].info;mgraph.arcs[i][j].info = false;}}mgraph.vexnum = 0;mgraph.arcnum = 0;}3.23定位点int MGraph::LocateVex(char u){for(int i = 0 ;i<20;i++){if(u == mgraph.vexs[i]){return i;}}return -1;}3.24最短路径void MGraph::ShortestPath_FLOYD(Path &P,Distanc &D)//求每对顶点间的最短路径// 用Floyd算法求有向网G中各对顶点v和w之间的最短路径P[v][w]及其带权长度D[v][w]// 若P[v][w][u]为TRUE,则u是从v到w当前求得最短路径上的顶点。

数据结构课程设计报告

数据结构课程设计报告

怀化学院计算机系《数据结构》课程设计报告书全国交通咨询模拟系统的设计与实现学生姓名:***学号:***年级专业及班级:***指导老师及职称:*** 讲师专业:计算机科学与技术专业湖南·怀化提交日期:2011年6月全国交通咨询模拟系统的设计与实现学生:***指导老师:***(怀化学院计算机系,怀化 418008)摘要:该课程设计主要实现了对全国火车及飞机信息的修改和查询,其中主要包括:管理员对火车、飞机信息的操作,其中又包含对两种交通方式的增加和删除操作。

旅客用户对两种交通信息的查询,其中飞机信息和火车信息都包含了对两个站点间最短路径方式的查询、最少花费方式的查询以及城市中所有的交通信息的查询。

关键词:全国交通咨询;1前言为了完成数据结构的课程设计,为了巩固自己数据结构的知识,也是为了提高自己的编程能力和逻辑思维能力,我选了这道全国交通咨询模拟系统的设计与实现一题。

在对其需求进行分析之后,按照需求分析,逐步完成其各部分的功能实现。

对于总的方面来讲,管理员功能实现并不难,而难点在于用户功能中的算法及数据结构中的知识以及编程的细微方面,下面将详细介绍本课程设计的内容。

2需求分析2.1 范围1.1 标识文件状态:【】草稿【√】正式发布【】正在修改文件标识:需求分析报告当前版本:V1.0作者:***完成日期:2011-6-122.1.2 系统概述1.软件名称:全国交通咨询系统V1.02.软件功能:主要的功能有:管理员增删和修改城市站点信息、飞机路线信息、火车路线信息。

3.用户:查询最小耗费路线、查询最短时间路线、查询城市所有路线。

4.开发者:***2.1.3 文档概述需求分析采用在面向对象的方法,主要使用结构体struct的方法来进行实际的编程,在文档中主要采E-R图和对功能的简单描述的方法来表述系统的需求。

本需求分析的审查者是老师,所以主要是写给老师看的,用来说明我对这个系统的分析情况。

2.2 引用文件无2.3 需求概述2.3.1 系统目标本系统的总体目标是通过使用该系统,管理员可以对飞机或者火车的信息的简单管理,也方便外出旅客在不同的需求下(如:最少的花费和最短的路程),快速浏览到所要的信息。

数据结构地铁课程设计

数据结构地铁课程设计

数据结构地铁课程设计一、课程目标知识目标:1. 理解并掌握数据结构的基本概念,包括栈、队列、链表等;2. 学会分析实际问题,选择合适的数据结构进行问题求解;3. 了解地铁线路图的特点,掌握利用数据结构表示地铁线路的方法;4. 掌握查找和排序算法,并能够应用于地铁线路查询优化。

技能目标:1. 能够运用所学数据结构知识,设计并实现一个简单的地铁线路查询系统;2. 培养学生运用计算机编程解决问题的能力,提高代码编写技巧;3. 提高学生的团队协作能力,学会共同分析问题、分工合作完成项目。

情感态度价值观目标:1. 培养学生对数据结构学习的兴趣,激发学习热情;2. 培养学生关注社会热点问题,学会将所学知识应用于实际生活;3. 增强学生的环保意识,了解地铁作为公共交通工具对环境保护的重要性;4. 培养学生的创新意识和实践能力,鼓励学生敢于尝试、勇于探索。

课程性质:本课程为计算机科学与技术相关专业的选修课程,旨在通过地铁线路图这一实际案例,帮助学生更好地理解数据结构在实际应用中的重要性。

学生特点:学生已具备一定的编程基础,熟悉至少一种编程语言,但对于数据结构在实际问题中的应用尚不熟悉。

教学要求:结合地铁线路图案例,引导学生运用所学数据结构知识,实现一个实用的地铁线路查询系统。

在教学过程中,注重理论与实践相结合,培养学生的实际操作能力。

同时,注重培养学生的团队协作能力和创新精神。

通过本课程的学习,使学生能够将所学知识内化为解决实际问题的能力。

二、教学内容1. 数据结构基本概念:栈、队列、链表等数据结构的特点与应用场景。

2. 地铁线路图数据结构设计:利用链表实现地铁线路的表示,使用栈和队列进行站点查询优化。

3. 编程语言选择与使用:结合Python或C++等编程语言,实现地铁线路查询系统的功能。

4. 查找与排序算法:介绍二分查找、冒泡排序等算法,并应用于地铁线路查询优化。

5. 教学案例:分析实际地铁线路图,运用数据结构设计并实现一个简单的地铁线路查询系统。

数据结构交通系统实验报告

数据结构交通系统实验报告

数据结构交通系统实验报告
本次实验是关于数据结构在交通系统中的应用,主要分为两部分,分别是地铁路线查
询和交通路网规划。

地铁路线查询
地铁路线查询是一种常见的需求,我们希望可以查询两个地铁站之间的最短路线。


本实验中,我们使用了 Dijkstra 算法来实现该功能。

该算法的时间复杂度为 O(n^2),
其中 n 表示节点数目。

因此,当节点数过多时,该算法的效率会比较低。

在实际应用中,为了提高效率,可以采用其他的算法,如 A* 算法等。

交通路网规划
交通路网规划是指在一个城市中,规划一条新的路线,使得所有城市之间的距离最小。

在本实验中,我们使用了 Kruskal 算法来实现该功能。

Kruskal 算法的时间复杂度为
O(mlogn),其中 n 表示节点数目,m 表示边数目。

该算法的优点是可以找到一条跨度最
小的连通图,且不需要事先知道联通情况,可以适用于不同的图形。

在实际应用中,可以
针对不同的问题,采用不同的算法来解决。

总结
本次实验基于数据结构的思想,实现了地铁路线查询和交通路网规划。

数据结构中的Dijkstra 算法和 Kruskal 算法都具有一定的时间复杂度优势,可以实现在可接受的时间
内完成任务。

在实际应用中,我们需要根据问题的特点选择合适的算法,并进行优化,以
提高效率。

城市轨道交通课程设计报告(很齐全-很完整的课程设计)

城市轨道交通课程设计报告(很齐全-很完整的课程设计)

城市轨道交通课程设计报告(很齐全-很完整的课程设计)轨道交通课程设计报告指导老师:江苏大学武晓辉老师一、项目背景及镇江市轨道交通建设必要性镇江市位于北纬31°37′~32°19′,东经118°58′~119°58′,地处长江三角洲地区的东端,江苏省的西南部,北临长江,与扬州市、泰州市隔江相望;东、南与常州市相接;西邻南京市。

镇江市域总面积3847平方公里,总体规划定位城市性质为国家历史文化名城,长江三角洲重要的港口、风景旅游城市和区域中心城市之一。

2005年,镇江城市总体规划进入实施阶段,城市空间布局将极大突破现有形态,“扩充两翼、向南延伸”成为城市新的发展方向。

伴随城市化进程加快、镇江跨入特大城市行列,城市空间的拓展对城市交通体系提出了新的要求。

镇江市为江苏省辖地级市,现辖京口、润州、丹徒三区,代管句容、丹阳、扬中三市。

另有国家级经济技术开发区-镇江新区行使市辖区经济、社会管理权限。

镇江全市总面积3848平方公里,人口311万人, 市区户籍人口103.3万人市, 市区常住人口122.37万人,人民政府驻润州区南徐大道68号。

内部城市空间结构调整:2005年,镇江城市总体规划进入实施阶段,城市空间布局将极大突破现有形态,“扩充两翼、向南延伸”成镇江高新区位于我市主城区的西部,晋升为国家级高新区后,就与东部的镇江国家级经济技术开发区(镇江新区)形成“两翼”,在提升经济体量的基础上,进一步提升经济质量,形成主城区“一体两翼”格局。

同时,与苏南现代化示范区建设、国家自主创新示范区创建等重大机遇形成叠加优势。

经济发展规划:近期:人均GDP达到3.0万元,产业结构为5.5∶53.5∶41,财政总收入完成80亿元以上中期:人均GDP达到6万元,产业结构为4.5∶51.5∶44,财政总收入150亿元以上。

远期:人均GDP达到12万元,产业结构为1.5∶49.5∶49,财政总收入320亿元以上镇江市城市交通只要以城市公交和公路为主,对外交通以高速和铁路水运。

数据结构地铁换乘导航系统实验报告

数据结构地铁换乘导航系统实验报告

2. 如何从文件中读取
接下来就是从文件中读取生成这个邻接表,这在构造函数中实现,这部分代码如下
所示:
Graph::Graph()
{
int a, b, m;
P.resize(NUM); ifstream input("metro.txt");
//利用文件生成邻接表
for (int i = 0; i < NUM; i++)
的代码如下所示:
void Graph::printPath(int begin, int end) {
if (begin == end) {
cout << "起点与终点相同,不需要乘坐地铁!" << endl; } else {
length = D[end]; 3
Assignment 3 A Query System for Guangzhou Metro
而由于地铁站点数过多,可能会存在在命令行窗口中无法一次显示所有站点信息的情况,
同时出于编写测试文档的方便的目的,我们选择了一号线、广佛线、三号线以及五号线上共
78 个站点作为本程序录入的信息。实际上,78 个站点的模拟情况和所有站点的模拟情况过
1
Assignment 3 A Query System for Guangzhou Metro
cs1301 133490***
程是完全相同的。如果要实现全部站点的信息查询,只要补充测试文档,以及修改程序中的 站点数定义即可。
本次实验中遇到的问题及其思考、解决过程如下。 1. 如何表示图
起初,我们分别考虑了用邻接矩阵和邻接表的情况,感觉两者各有优缺点。用邻接 矩阵的话,用 Dijkstra 算法会比较ห้องสมุดไป่ตู้便,但因为地铁站数太多,运行时间会很长,不 方便;而使用邻接表的话,运行时间要比使用邻接表少得多,在应用 Dijkstra 算法的 时候只要稍做一些修改即可,因此最终选择了用邻接表来表示图。为了读取方便,存储 在文件中的地铁每一行的表示方式为:站点名称,与此站点相邻的站点个数,相邻站点 的标号以及它们之间的权值。格式如下图所示:

北京工业大学2014数据结构课设北京地铁查询C++版

北京工业大学2014数据结构课设北京地铁查询C++版

2014年北京工业大学计算机学院数据结构与算法课设嗨,你好。

当年为了这个该死的课设我也是和你一样急,在CSDN上各种找……但是没有。

最后还好……弄出来了。

C++版本题目什么的在下面,附件什么的我都在这个DOC中给你。

祝你能过。

2014.11.01数据结构与算法课程设计报告北京地铁查询系统学号: 12 07 01姓名:哈哈指导教师:呵呵2014年10月1.1设计的描述当今的北京,地铁已经成为绝大多数人出行的首选。

截至2014年1月,北京地铁共有17条运营线路。

组成覆盖北京市11个市辖区,拥有231座运营车站、总长467千米运营线路的轨道交通系统,工作日均客流约1000万人次,峰值日客运量1155.92万人次。

随着地铁线路的增加,地铁规模越来越大,人们愈发的感觉到地铁的便利。

特别地从出发地到目的地的乘车方案的选择也越来越多。

因此,需要提供一个软件能够为人们提供出发到目的地之间“最快”或“最方便”的地铁出行方案。

其中,“最快”指用时最少,“最方便”则指在换乘车少的基础上用时最少。

1.2设计的需求请设计一个地铁出行帮助系统,为北京市居民提供地铁出行方案(仅限地铁出行)。

提供出发地和目的地地铁站的输入窗口,提供出行建议,并图形显示出线路。

出行建议信息:•出发站,站名,几号线•第2站,站名,几号线•…•第i站,站名,几号线•…•[换乘站,站名,换乘几号线]* 1,•第m站,站名,几号线•目的站,站名,几号线•总用时,X分钟,换乘次数:N1.2.1输入数据要求地铁线路基础信息数据通过一个名为“BaseInfo.txt”的文本文件读入。

该数据文件格式如下:•第0行:当前系统中地铁线路的条数n(n > 0)•第1行:第1条地铁线路名称(如:1号线),第1站(如:四惠东站),图上坐标(如:X1,Y1)2,运行时间(如:3),第2站(如:四惠站),图上坐标(如:X2,Y2),运行时间(如:4),…,第23站(如:苹果园站),图上坐标(如:X n,Y n)•…•第i行:第i条地铁线路名称, 第1站,运行时间,第2站,运行时间,…,第n站•…•第n行:第n条地铁线路名称, 第1站,运行时间,第2站,运行时间,…,第n站•第n+1行:换乘站数目m(m > 0)•换乘编号1#:换乘站名称1(如:四惠东站),(下车线路(如:1号线),1*表示可能有若干次换乘,也可能没有换乘。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计报告学院:计算机科学与工程专业:计算机科学与技术班级:09级班学号:姓名:指导老师:时间: 2010年12月一、课程设计题目:1、哈夫曼编码的实现2、城市辖区地铁线路设计3、综合排序算法的比较二、小组成员:三、题目要求:1.哈夫曼编码的实现(1)打开若干篇英文文章,统计该文章中每个字符出现的次数,进一步统一各字符出现的概率。

(2)针对上述统计结果,对各字符实现哈夫曼编码(3)对任意文章,用哈夫曼编码对其进行编码(4)对任意文章,对收到的电文进行解码2.某城市要在其各个辖区之间修建地铁来加快经济发展,但由于建设地铁的费用昂贵,因此需要合理安排地铁的建设路线。

(1)从包含各辖区的地图文件中读取辖区的名称和各辖区的直接距离(2)根据上述读入的信息,给出一种铺设地铁线路的解决方案。

使乘客可以沿地铁到达各个辖区,并使总的建设费用最小。

(3)输出应该建设的地铁路线及所需要建设的总里程信息。

3.综合排序算法的比较各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概的执行时间。

试通过随机的数据比较各算法的关键字比较次数和关键字移动的次数。

(1)对以下各种常用的内部排序算法进行比较:直接插入排序,折半插入排序,二路归并排序,希尔排序,冒泡排序,快速排序简单选择排序,堆排序,归并排序,基数排序。

(2)待排序的表长不少于100,要求采用随机数。

(3)至少要用5组不同的输入数据做比较:比较的次数为有关键字参加的比较次数和关键字移动的次数(4)改变数据量的大小,观察统计数据的变化情况。

(5)对试验统计数据进行分析。

对各类排序算法进行综合评价。

四、项目安排:1、小组内分工合作分工:负责哈夫曼编码的实现,负责城市辖区地铁线路设计,负责综合排序算法的比较。

合作:组内,组外进行交流,组长帮助解决组员的在项目过程中的困难,并控制进度。

五、完成自己的任务:任务:城市辖区地铁线路设计1.实现方案创建城市辖区图表信息将信息写入文件从文件读取信息最优路径的选择输出最优路径的相关信息在整个编程中,我是通过手动输入的方式把数据写到文件中,而不是直接从文件中读取,这个不是题目要求的,但是我想当拿到数据之后都要对数据进行处理,干脆直接手动输入得出结果。

在这个代码中,最重要的是铁路线路的最优设计。

在这个代码的实现中,我用了Kruscal的想法,然后通过函数的嵌套实现最优路径的选取的。

2.代码的实现#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include <iostream.h>#include <string.h>#define MAXSIZE 100typedef struct link{int connect;int fee;//费用struct link *next;}edgenode;typedef struct node{char name[10];//名称edgenode *link;}city;typedef struct{city vex[MAXSIZE];int city_n,city_e;}city_graph;city_graph ga;int total_fee=0;//记录总费用void creat(city_graph *ga)//创建辖区总信息{int i=0 ,a,b;edgenode *q;edgenode *p;printf("请输入城市辖区个数: ");//城市中辖区的个数scanf("%d",&ga->city_n);printf("请输入城市辖区间路径的总个数: ");//辖区间的路径scanf("%d",&ga->city_e);for(i=1;i<ga->city_n+1;i++)//建立城市辖区信息表{printf("请输入第%d个城市辖区名称: ",i);scanf("%s",ga->vex[i].name);ga->vex[i].link=NULL;}for(i=0;i<ga->city_e;i++)//辖区联系表(头插法){printf("请输入第%d组两个相邻辖区的编号",i+1);//还没有处理数据,比如输入的是超出规定范围的数据p=(edgenode *)malloc(sizeof (edgenode ));q=(edgenode *)malloc(sizeof (edgenode ));scanf("%d%d",&a,&b);printf("请输入两辖区间的费用:");//两辖区间路程的费用scanf("%d",&p->fee);q->fee=p->fee;p->connect=b;q->connect=a;p->next=ga->vex[a].link;//建立两辖区间的联系ga->vex[a].link=p;q->next=ga->vex[b].link;ga->vex[b].link=q;}void view(city_graph *ga)//输出{system("cls");//清屏。

int i;edgenode *p;for(i=1;i<ga->city_n+1;i++){p=ga->vex[i].link;//printf("%s\n",ga->vex[i].name);p rintf("\n与辖区%s 相连的辖区有:\n",ga->vex[i].name);p rintf("\n名称————费用\n");i f(p==NULL)printf("------------\n");w hile(p!=NULL){printf("%s %5d\n",ga->vex[p->connect].name,p->fee);p=p->next;}p rintf("\n\n");}void insert(city_graph *ga)//导入文件中{FILE *fp;edgenode *p;int i=0;if((fp=fopen("e:\\辖区.txt","w+"))==NULL){printf("打开文件失败!\n");exit(0);}for(i=1;i<ga->city_n+1;i++){p=ga->vex[i].link;fputs(ga->vex[i].name,fp);fprintf(fp,"\n");fprintf(fp,"%d\n",p->connect);fprintf(fp,"%d\n",p->fee);}fclose(fp);}/*city_graph * load(city_graph *gb)//从文件中导出//待解决FILE *fp;int i=1;edgenode *p;if((fp=fopen("e:\\辖区.txt","r+"))==NULL){printf("打开文件失败!\n");exit(0);}while(fscanf(fp,"%s%d%d",gb->vex[i].name,&p->connect,&p->fee)!=E OF){p=(edgenode *)malloc(sizeof (edgenode ));p->next=gb->vex[i].link;gb->vex[i].link=p;i++;}fclose(fp);return gb;}*/city_graph * change(city_graph *ga,int min_a,int min_b)//改变俩辖区间的费用{edgenode *p,*q,*t,*t1;p=ga->vex[min_a].link;q=ga->vex[min_a].link;t1=ga->vex[min_b].link;while(p!=NULL){i f(p->connect==min_b){p->fee=0;//q->next=p;}q=p;p=p->next;}t=ga->vex[min_b].link;while(t!=NULL){i f(t->connect==min_a){t->fee=0;// t1->next=t;}t1=t;t=t->next;}return ga;}city_graph * find_next(city_graph *ga,int i)//{edgenode *p,*q;int j,min,min_sign,min_record;q=ga->vex[i].link;min=q->fee;min_sign=q->connect;min_record=i;for(j=1;j<ga->city_n+1;j++)//找费用最少的两个辖区{p=ga->vex[j].link;//记下当前辖区,以便在此辖区的联系链中找到此链下的最小花费路径while(p!=NULL)if((p->fee<min)&&(p->fee!=0)){min=p->fee;min_sign=p->connect;min_record=j;}p=p->next;}}if(min!=0)//把费用为0的滤去(因为在改变费用时把原来的费用给置成了0,以便判断哪些路径是比较过的){printf("%s------- %s %d\n",ga->vex[min_record].name,ga->vex[min_sign].na me,min);//输出建设路径total_fee=total_fee+min;ga=change(ga,min_record,min_sign); //改变两辖区间的费用,以便区分return ga;}void find(city_graph *ga)//Kruscal算法{int i;printf("\n\n以下是建设路径\n\n");printf("辖区名----辖区名---费用\n\n");for(i=1;i<ga->city_n+1;i++){ga=find_next(ga,i);//调用函数找全部路径中最小费用的辖区}printf("\n总费用= %d\n\n",total_fee);}void main(){//city_graph *gb;creat(&ga);view(&ga);insert(&ga);//读入文件//gb=(city_graph *)malloc(sizeof(city_graph));//gb=load(gb);//导出到文件中find(&ga);//未使用到从文件导出的图,而是使用了导入文件的图,因为导出文件有问题。

相关文档
最新文档