文档库 最新最全的文档下载
当前位置:文档库 › 全国交通咨询模拟系统C++实现(课程设计报告)

全国交通咨询模拟系统C++实现(课程设计报告)

全国交通咨询模拟系统C++实现(课程设计报告)
全国交通咨询模拟系统C++实现(课程设计报告)

全国交通咨询模拟

一、设计目的

掌握线性表、栈、图结构和对文件的操作,学习屏幕编辑和菜单技术,掌握用最短路径及其搜索算法编制较综合性的程序,能用图的邻接存储结构求解最优路线问题,解决有关实际问题。得到软件设计技能的训练。

二、问题描述

交通咨询模拟。根据旅客的不同需要,要考虑到旅客希望在旅途中的时间尽可能短、希望旅费尽可能省等的要求。旅途用火车或飞机作为交通工具。用计算机编制程序,为旅客提供两种最优决策的交通咨询系统。

三、基本要求

1、对城市信息(城市名、城市间的里程)进行编辑:具备添加、修改、删除功能;

2、对城市间的两种交通工具:飞机和火车。对飞机航班和列车时刻表进行编辑:里程、航班和列车班次的添加、修改、删除;

3、提供两种最优决策:最快到达或最省钱到达。全程只考虑一种交通工具,

可以不考虑回程;

4、旅途中的耗费的总时间应包括中转站的等候时间。其中飞机至少二小时,

火车至少一小时;

5、咨询以用户和计算机对话方式进行,要注意人机交互的屏幕界面。由用户选择最优决策原则和交通工具,输入起始站、终点站、出发时间,输出信息:最快需要多长时间才能到达及旅费,或者最少需要多少旅费才能到达及时间,并详细说明依次于何时何地乘坐哪一趟班机或列车何时到达何地。

四、实现提示

(1) 数据存储。城市信息(城市名、代码)、交通信息(城市间的里程、各航班和列车时刻)存储于磁盘文件。建议把城市信息存于文件前面,交通信息存于文件的后面,用fread和fwrite函数操作。

(2) 数据的逻辑结构。根据设计任务的描述,其城市之间的旅游交通问题是典型的图结构,可看作为有向图,图的顶点是城市,边是城市之间所耗费的时间(要包括中转站的等候时间)或旅费。

(3) 数据的存储结构。采用邻接表和邻接矩阵都可作为数据的存储结构,但当邻接边不多时,宜采用邻接表,以提高空间的存储效率。这里建议采用邻接表作为数据的存储结构。

(4) 用不同的功能模块对城市信息和交通信息进行编辑。添加、修改、删除功能可用菜单方式或命令提示方式。只要能方便的对城市信息和交通信息进行管理即可,但要注意人机界面,具体实现由学生自行设计,也可参考有关程序(届时在网上提供)。这些工作有不小的工作量。

(5) 最优决策功能模块(fast or province)。

① 读入城市信息和交通信息,用邻接表生成含权网络,表头数组中的元素存放城市名及对方城市到达该元素所代表城市的所有信息;表头数组中的元素所对应的单链表存放与该元素所代表的城市有交通联系的城市(代码、里程、航班、列车车次)。

② 根据具体最优决策的要求,用Dijkstra算法求出出发城市到其它各城市的最优值(最短时间或最小的费用),搜索过程中所经过城市的局部最优信息都保存在邻接表的表头数组中。其目的城市所代表的元素中就保存了所需的最优决策结果。这过程中,要用队列或栈保存局部最优决策值(局部最短的时间或最省的费用)变小的城市,其相应的初始值可为∞,并在表头数组对应的城市元素中保存响应的信息。开始时,栈(队)中只有出发地城市,随着对栈(队)顶(首)城市有交通联系的城市求得决策值(最短时间或最小的费用),若该值是局部最优值且该城市不在栈(队)中,则进栈(队),直至栈(队)为空。

③ 输出结果。从目的城市出发,搜索到出发城市,所经过的城市均入栈,再逐一出栈栈中的城市,输出保存在表头数组中对应城市的信息(对方城市的出发信息,里程、时间、费用等)及最终结果。即输出依次于何时何地乘坐几点的飞机或火车于何时到达何地;最终所需的最快需要多长时间才能到达及旅费,或者最少需要多少旅费才能到达及时间。

(6) 主程序可以有系统界面、菜单;也可用命令提示方式;选择功能模块执行,要求在程序运行过程中可以反复操作。

2、数据结构

本程序运用了关于图这种数据结构。

他的抽象数据类型定义如下:

typedef struct unDiGraph

{

int numVerts; //结点

costAdj cost; //邻接矩阵

}unDiGraph,*UNG;

unDiGraph* CreateTimeG()

操作结果:构造带权(时间)图。

构造飞机带权(费用)图。

PathMat *Floyed(unDiGraph *D)

操作结果:Floyed函数求任意两点的最短路径。

3、算法思想

本程序运用了图的知识,构造了无向带权费用图和无向带权时间图。(如图1,图2所示)

图1. 十三城市之间火车费用表(权值表示费用)

图2. 十三城市之间火车行驶时间表(权值表示时间)

走法。

为了简洁直观,本设计对课本内的交通网进行了简化,原来的25个城市缩减为13个。但是基本实现了设计的目的。满足了基本要求。

4、程序模块

1.程序是用dos 版做的界面。

2.主界面包括1.选择火车最短时间路线 2.选择火车最节约费用路线3.选择坐飞机 4.管理员程序确 5.退出本程序

3.程序的模块为

#include

#include

#include

#include

#include

#include //引用的文本件

#define INF 65535 //定义一个最大数定为无穷值

#define MAX 13

typedef int costAdj[MAX+1][MAX+1];//图邻接矩阵从1开始记数

int Path[MAX+1][MAX+1];//图邻接矩阵从1开始记数

int o[13],h;

typedef struct unDiGraph

{

int numVerts; //结点

costAdj cost; //邻接矩阵

}unDiGraph,*UNG; //图的定义

costAdj B,L;

void pr(int i)//选择城市

void pri()//输出城市

unDiGraph *CreateCostG()//构造带权(费用)图返回首地址G:

unDiGraph *CreateTimeG()//构造带权(时间)图返回首地址G:

unDiGraph *CreateFlyG()//飞机的相关信息

void Floyed(unDiGraph *D,unDiGraph *M) //Floyed函数求任意两点的最短路径::

void prn_pass(int i,int j) //为了求从i到j的最短路径,只需要调用如下的过程void time()//求最少时间路径。。

void money()//求最少花费路径

void administrator()//管理员功能

void main()//main函数

五、主程序

#include

#include

#include

#define INF 65535 //定义一个最大数定为无穷值

#define MAX 23

static int c_number=13;

static int k=0;

static int v=0,z=0,r=0,t=0;

typedef struct zhu

{

int c_cost;

int c_time;

int f_cost;

int f_time;

}zhu;

zhu m[20],x[20],n[20];

typedef int costAdj[MAX+1][MAX+1];//图邻接矩阵从1开始记数int Path[MAX+1][MAX+1];//图邻接矩阵从1开始记数

typedef struct unDiGraph

{

int numVerts; //结点

costAdj cost; //邻接矩阵

}unDiGraph,*UNG; //图的定义

typedef struct c_edit

{

char a[10];

}c_edit;

c_edit add[10];

costAdj B,L;

int pr(int i,int j)

{

int h=0;

if (j==0) {

h=i;

}

else if (j==1)

{

cin>>add[i].a;

}

switch(h)//运用switch语句。

{

case(0):cout<<"";

break;

case(1) : cout<<"成都";

break;

break;

case(4) : cout<<"武汉";

break;

case(5) : cout<<"株洲";

break;

case(6) : cout<<"贵阳";

break;

case(7) : cout<<"柳州";

break;

case(8) : cout<<"广州";

break;

case(9) : cout<<"南宁";

break;

case(10) : cout<<"徐州";

break;

case(11) : cout<<"北京";

break;

case(12) : cout<<"天津";

break;

case(13) : cout<<"上海";

break;

default:

cout<

}

return 1;

}

//输出城市列表及相应代码

void pri()

{

int i;

cout<<" 城市及其代码"<

cout<<" *********************************************************"<

for (i=1;i<=c_number;i++)

{

cout<

pr(i,0);

}

cout<

*********************************************************"<

//构造带权(费用)图返回首地址G:

unDiGraph *CreateCostG(int o)//火车的花费的存贮和编辑功能

{

unDiGraph *G;

int i,j;

int a=0,b=0,f,h=1;

if(!(G=(unDiGraph *)malloc(sizeof(unDiGraph)))) //为G分配存储空间。

{

return(NULL);

}

for(i=1;i

{

for(j=1;j

{

G->cost[i][j]=INF; //初始化使G->cost[i][j]为无穷。

}

}

G->numVerts=c_number;

G->cost[1][6]=G->cost[6][1]=96;

G->cost[1][2]=G->cost[2][1]=84;

G->cost[2][3]=G->cost[3][2]=51;

G->cost[3][4]=G->cost[4][3]=53;

G->cost[4][5]=G->cost[5][4]=40;

G->cost[5][6]=G->cost[6][5]=90;

G->cost[5][8]=G->cost[8][5]=67;

G->cost[5][7]=G->cost[7][5]=67;

G->cost[6][7]=G->cost[7][6]=60;

G->cost[7][9]=G->cost[9][7]=25;

G->cost[3][11]=G->cost[11][3]=69;

G->cost[11][12]=G->cost[12][11]=13;

G->cost[12][10]=G->cost[10][12]=67;

G->cost[3][10]=G->cost[10][3]=34;

G->cost[13][10]=G->cost[10][13]=65;

G->cost[13][5]=G->cost[5][13]=118;

if (o) {

while(h==1)

{

cout<<"请输入开始城市的代码"<

cin>>a;

cout<<"请输入结尾城市的代码"<

cin>>b;

cout<<"请输入你的两地花费"<

cin>>m[v].c_cost;

n[v].c_cost=a;

x[v].c_cost=b;

cout<<"请选择"<

cout<<"*********************************************************"<

cout<<"1:继续更改城市费用"<

cout<<"0:返回上一级菜单"<

cout<<"*********************************************************"<

cin>>h;

switch(h) {

case 1:

h=1;

break;

case 0:

h=0;

break;

default:{

cout<<"选择出错"<

}

}

}

}

f=v+1;

while (v--) {

G->cost[n[v].c_cost][x[v].c_cost]=m[v].c_cost;

}

v=f;

return(G);

}

//构造带权(时间)图返回首地址G:

unDiGraph *CreateTimeG(int o)//火车的时间的存贮和编辑功能

{

unDiGraph *G;

{

return(NULL);

}

for(i=1;i

{

for(j=1;j

{

G->cost[i][j]=INF;//初始化使G->cost[i][j]为无穷。

}

}

G->numVerts=c_number;

G->cost[1][6]=G->cost[6][1]=9;

G->cost[1][2]=G->cost[2][1]=8;

G->cost[2][3]=G->cost[3][2]=5;

G->cost[3][4]=G->cost[4][3]=5;

G->cost[4][5]=G->cost[5][4]=4;

G->cost[5][6]=G->cost[6][5]=9;

G->cost[5][7]=G->cost[7][5]=6;

G->cost[5][8]=G->cost[8][5]=6;

G->cost[6][7]=G->cost[7][6]=6;

G->cost[7][9]=G->cost[9][7]=2;

G->cost[3][11]=G->cost[11][3]=6;

G->cost[11][12]=G->cost[12][11]=1;

G->cost[12][10]=G->cost[10][12]=6;

G->cost[3][10]=G->cost[10][3]=3;

G->cost[13][10]=G->cost[10][13]=6;

G->cost[13][5]=G->cost[5][13]=11;

if (o) {

while(h==1)

{

z=z+1;

pri();

cout<<"火车时间编辑"<

cout<<"请输入开始城市的代码"<

cin>>a;

cout<<"请输入结尾城市的代码"<

cin>>b;

cout<<"请输入你的两地时间"<

cin>>m[z].c_time;

n[z].c_time=a;

x[z].c_time=b;

cout<<"请选择"<

cout<<"*********************************************************"<

cout<<"1:继续更改城市时间"<

cout<<"0:返回上一级菜单"<

switch(h) {

case 1:

h=1;

break;

case 0:

h=0;

break;

default:{

cout<<"选择出错"<

}

}

}

}

f=z+1;

while (z--) {

G->cost[n[z].c_time][x[z].c_time]=m[z].c_time;

}

z=f;

return(G);

}

unDiGraph *CreateTimeF(int o)//飞机的时间的存贮和编辑功能

{

unDiGraph *G;

int i,j;

int a=0,b=0,f,h=1;

if(!(G=(unDiGraph *)malloc(sizeof(unDiGraph)))) //为G分配存储空间。

{

return(NULL);

}

for(i=1;i

{

for(j=1;j

{

G->cost[i][j]=INF;//初始化使G->cost[i][j]为无穷。

}

}

G->numVerts=c_number;

G->cost[1][6]=G->cost[6][1]=3;

G->cost[1][2]=G->cost[2][1]=2;

G->cost[2][3]=G->cost[3][2]=1;

G->cost[3][4]=G->cost[4][3]=2;

G->cost[4][5]=G->cost[5][4]=4;

G->cost[6][7]=G->cost[7][6]=6;

G->cost[7][9]=G->cost[9][7]=2;

G->cost[3][11]=G->cost[11][3]=6;

G->cost[11][12]=G->cost[12][11]=1;

G->cost[12][10]=G->cost[10][12]=2;

G->cost[3][10]=G->cost[10][3]=3;

G->cost[13][10]=G->cost[10][13]=6;

G->cost[13][5]=G->cost[5][13]=1;

if (o) {

while(h==1)

{

t=t+1;

pri();

cout<<"飞机时间编辑"<

cout<<"请输入开始城市的代码"<

cin>>a;

cout<<"请输入结尾城市的代码"<

cin>>b;

cout<<"请输入你的两地时间"<

cin>>m[t].f_time;

n[t].f_time=a;

x[t].f_time=b;

cout<<"请选择"<

cout<<"*********************************************************"<

cout<<"1:继续更改城市时间"<

cout<<"0:返回上一级菜单"<

cout<<"*********************************************************"<

cin>>h;

switch(h) {

case 1:

h=1;

break;

case 0:

h=0;

break;

default:{

cout<<"选择出错"<

}

}

}

}

f=t+1;

}

t=f;

return(G);

}

unDiGraph *CreateCostF(int o)//飞机花费的存贮和编辑功能

{

unDiGraph *G;

int i,j;

int a=0,b=0,f,h=1;

if(!(G=(unDiGraph *)malloc(sizeof(unDiGraph)))) //为G分配存储空间。

{

return(NULL);

}

for(i=1;i

{

for(j=1;j

{

G->cost[i][j]=INF; //初始化使G->cost[i][j]为无穷。

}

}

G->numVerts=c_number;

G->cost[1][6]=G->cost[6][1]=960;

G->cost[1][2]=G->cost[2][1]=840;

G->cost[2][3]=G->cost[3][2]=501;

G->cost[3][4]=G->cost[4][3]=530;

G->cost[4][5]=G->cost[5][4]=400;

G->cost[5][6]=G->cost[6][5]=900;

G->cost[5][8]=G->cost[8][5]=670;

G->cost[5][7]=G->cost[7][5]=670;

G->cost[6][7]=G->cost[7][6]=600;

G->cost[7][9]=G->cost[9][7]=200;

G->cost[3][11]=G->cost[11][3]=690;

G->cost[11][12]=G->cost[12][11]=310;

G->cost[12][10]=G->cost[10][12]=670;

G->cost[3][10]=G->cost[10][3]=340;

G->cost[13][10]=G->cost[10][13]=650;

G->cost[13][5]=G->cost[5][13]=1180;

if (o) {

while(h==1)

{

r=r+1;

pri();

cout<<"飞机花费编辑"<

cout<<"请输入开始城市的代码"<

cin>>a;

cout<<"请输入结尾城市的代码"<

cin>>b;

cout<<"请输入你的两地花费"<

cin>>m[r].f_cost;

n[r].f_cost=a;

x[r].f_cost=b;

cout<<"请选择"<

cout<<"*********************************************************"<

cout<<"1:继续更改城市费用"<

cout<<"0:返回上一级菜单"<

cout<<"*********************************************************"<

cin>>h;

switch(h) {

case 1:

h=1;

break;

case 0:

h=0;

break;

default:{

cout<<"选择出错"<

}

}

}

}

f=r+1;

while (r--) {

G->cost[n[r].f_cost][x[r].f_cost]=m[r].f_cost;

}

r=f;

return(G);

//Floyed函数求任意两点的最短路径:

void Floyed(unDiGraph *D,unDiGraph *M)

{

int i,j,k,n;

costAdj A,C;

n=c_number;

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

{A[i][j]=D->cost[i][j];//初始化矩阵A。

C[i][j]=M->cost[i][j];

Path[i][j]=-1; //初始化矩阵p, 置-1.

}

}

for(k=1;k<=n;k++) //k为逐步加入的中间结点

{

for(i=1;i<=n;i++) //i为A中行号

{

for(j=1;j<=n;j++)

if(A[i][k]+A[k][j]

{A[i][j]=A[i][k]+A[k][j];

C[i][j]=C[i][k]+C[k][j];

Path[i][j]=k;//若i经过k到j比i到j小,则令A[i][j]=A[i][k]+A[k][j]。

B[i][j]=A[i][j];

L[i][j]=C[i][j];

}

else{

B[i][j]=A[i][j];

L[i][j]=C[i][j];

}

}

}//end-for

cout<<"\n最短路径为: "<

}///end-Floyed

//为了求从i到j的最短路径,只需要调用如下的过程:

void prn_pass(int i,int j)

{

if(Path[i][j]!=-1)

{

prn_pass(i,Path[i][j]);//输出最短路径经过的所有点

pr(Path[i][j],0);

//求最少时间路径。

void time()

{

int Bcity,Ecity;//起始成市号码和终点城市号码

int l,h=1;

do {

pri();//输出城市列表及相应代码。

cout<<"请输入起始城市和目的城市的代码,中间以空格隔开,范围(1-- "<

cin>>Bcity;

cin>>Ecity;//输入起始城市和终点城市的代码。

if

(!((0

cout<<"\n出错啦!!! 输入城市号码请在1-"<

}

Floyed(CreateTimeG(0),CreateCostG(0));//调用Floyed函数。

pr(Bcity,0);// 显示起始城市。

prn_pass(Bcity,Ecity);//调用prn_pass函数,显示最短路径经过的城市。

pr(Ecity,0);//显示终点城市。

if (B[Bcity][Ecity]>5000||L[Bcity][Ecity]>10000) {

cout<<"两地间还没有线路通过"<

}

else

{

cout<<"火车花的钱是"<

cout<<"火车花的时间是"<

}

printf("\n\n 1.继续最少花费查找\n 2.返回主菜单\n 清选择...");

scanf("%d",&l); //输入1或2选择是否继续。

h=l;

} while(h==1);

printf("\n");

}

void f_time()

{

int Bcity,Ecity;//起始成市号码和终点城市号码

int l,h=1;

do {

pri();//输出城市列表及相应代码。

cout<<"请输入起始城市和目的城市的代码,中间以空格隔开,范围(1--

if

(!((0

cout<<"\n出错啦!!! "<

}

Floyed(CreateTimeF(0),CreateCostF(0));//调用Floyed函数。

pr(Bcity,0);// 显示起始城市。

prn_pass(Bcity,Ecity);//调用prn_pass函数,显示最短路径经过的城市。

pr(Ecity,0);//显示终点城市。

if (B[Bcity][Ecity]>5000||L[Bcity][Ecity]>10000) {

cout<<"两地间还没有线路通过"<

}

else

{

cout<<"飞机花的钱是"<

cout<<"飞机花的时间是"<

}

printf("\n\n 1.继续最少花费查找\n 2.返回主菜单\n 清选择...");

scanf("%d",&l); //输入1或2选择是否继续。

h=l;

} while(h==1);

printf("\n");

}

//求最少花费路径。

void money()

{ int Bcity,Ecity;//起始成市号码和终点城市号码

char l,h=1;

/*unDiGraph *G;*/

do {

pri();//输出城市列表及相应代码。

cout<<"请输入起始城市和目的城市的代码,中间以空格隔开,范围(1-- "<

cin>>Bcity;

cin>>Ecity;//输入起始城市和终点城市的代码。

if

(!((0

cout<<"\n出错啦!!! "<

}

Floyed(CreateCostG(0),CreateTimeG(0));//调用Floyed函数。

pr(Bcity,0);//显示起始城市。

prn_pass(Bcity,Ecity);//调用prn_pass函数,显示最短路径经过的城市。

pr(Ecity,0);//显示终点城市。

if (B[Bcity][Ecity]>5000||L[Bcity][Ecity]>10000) {

cout<<"两地间还没有线路通过"<

cout<<"火车花的钱是"<

cout<<"火车花的时间"<

}

printf("\n\n 1.继续最少花费查找\n 2.返回主菜单\n 清选择...");

scanf("%d",&l); //输入1或2选择是否继续。

h=l;

} while(h==1);

printf("\n");

}

//求飞机的情况

void f_money()

{

cout<<"1"<

int Bcity,Ecity;//起始成市号码和终点城市号码

char l,h=1;

/*unDiGraph *G;*/

do {

cout<<"2"<

pri();//输出城市列表及相应代码。

cout<<"请输入起始城市和目的城市的代码,中间以空格隔开,范围(1-- "<

cin>>Bcity;

cin>>Ecity;//输入起始城市和终点城市的代码。

if

(!((0

cout<<"\n出错啦!!! "<

}

Floyed(CreateCostF(0),CreateTimeF(0));//调用Floyed函数。

pr(Bcity,0);//显示起始城市。

prn_pass(Bcity,Ecity);//调用prn_pass函数,显示最短路径经过的城市。

pr(Ecity,0);//显示终点城市。

if (B[Bcity][Ecity]>5000||L[Bcity][Ecity]>10000) {

cout<<"两地间还没有线路通过"<

}

else{

cout<<"飞机花的钱是"<

cout<<"飞机花的时间"<

}

printf("\n\n 1.继续最少花费查找\n 2.返回主菜单\n 清选择...");

scanf("%d",&l); //输入1或2选择是否继续。

h=l;

}

void add_city()//对城市的增加

{

static int i=1;

int j;

cout<<"请输入你要增加的城市的个数"<

cin>>j;

for (i=1;i<=j;i++)

{

cout<<"请输入你要增加的城市名"<

pr(i,1);

c_number=c_number+1;

}

cout<<"城市增加完毕"<

}

void chose_money()//花最少钱的算法

{

int h;

cout<<"1:火车"<

cout<<"2:飞机"<

cout<<"请选择:"<

cin>>h;

if (h==1) {

money();

}

else

{

f_money();

}

}

void chose_time()//花最少时间的算法

{

int h;

cout<<"1:火车"<

cout<<"2:飞机"<

cout<<"请选择:"<

cin>>h;

if (h==1) {

time();

}

else

{

f_time();

}

}

void edit_line()//增加编辑火车的费用

void edit_hour()//增加编辑火车的时间

{

CreateTimeG(1);

}

void edit_fline()//增加编辑飞机的费用

{

CreateCostF(1);

}

void edit_fhour()//增加编辑飞机的时间

{

CreateTimeF(1);

}

void administrator()//管理员功能

{

int h=1;

while (h) {

cout<<"************************************************************"<

cout<<"1:增加城市"<

cout<<"2:添加或编辑火车费用"<

cout<<"3:添加或编辑火车时间"<

cout<<"4:添加或编辑飞机费用"<

cout<<"5:添加或编辑飞机时间"<

cout<<"0:返回主菜单"<

cout<<"************************************************************"<

cout<<"请选择"<

cin>>h;

switch(h) {

case 1 :add_city();

break;

case 2: edit_line();

break;

case 3:edit_hour();

break;

case 4:edit_fline();

break;

case 5:edit_fhour();

break;

case 0:

h=0;

break;

default:

{

cout<<"选择出错!"<

}

}

}

}

//主函数

给出你所要的

//最短时间或最消费用的最佳路径的城市号码对照即可得出经过哪些城市

char n;

int x;

while(x!=0)

{

cout<

cout<<"输入你希望查询的种类代码,你将得到最佳方案!"<

cout<<" ******************全国交通咨询模拟系统******************"<

cout<<" * 主菜单*"<

cout<<" * 1.查看城市*"<

cout<<" * 2.选择最短时间路线*"<

cout<<" * 3.选择最节约费用路线*"<

cout<<" * 4.管理员程序*"<

cout<<" * 0.退出程序*"<

cout<<" ******中南民族大学计算机学院07软件工程@@@@@@@@@*******"<

cout<

cout<<"请选择(0—4)..... ";//输入选择菜单。

cin>>n ;

switch(n)//当输入为0-4,则用switch语句进行选择。

{

case '1': pri();//查看城市

break;

case '2' : chose_time(); //当输入为1,则调用time函数。

break;

case '3' : chose_money();//当输入为2,则调用money函数。

break;

case '4':administrator();

break;

case '0'://当输入为3。则确认退出。

x=0;

break;

default :

{

cout<

}

数据结构课程设计交通咨询系统

课程设计报告 课程名称数据结构课程设计 课题名称交通咨询系统 专业通信工程 班级通信1001班 学号 姓名 指导教师田娟秀胡瑛曹燚 2012年7 月 6 日

湖南工程学院 课程设计任务书 课程名称数据结构 课题交通咨询系统 专业班级通信1001班 学生姓名 学号 指导老师田娟秀胡瑛曹燚 审批田娟秀 任务书下达日期2012 年7 月 1 日任务完成日期2012 年7 月 6 日

1.1任务书 课题六:交通咨询系统: 在交通网络非常发达的今天,人们出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也很感兴趣。对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。图中顶点表示城市,边表示城市之间的交通关系。设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到达另外一个城市顶点之间的最短路径(里程)的问题。 要求完成以下功能: (a) 以图中顶点表示湖南省各市(至少包括8个以上的城市),存放城市名称、代号、简介等信息,以边表示路径,存放路径长度等有关信息,先建立交通网络图的存储结构; (b) 为用户提供图中任何城市有关信息的查询; (c) 为用户提供任意城市的交通查询,即查询任意两个城市之间的一条最短路径。 (d) 为用户提供指定城市的交通查询,即查询指定城市到其他城市之间的最短路径。 选做内容: (1)提供图的编辑功能:增、删城市;增删路径;修改已有信息等; (2)交通图的仿真界面。 1.2 选题方案: 所选题目根据学号确定,学号模6加1,即(学号%6+1)。如你的学号为9,则 所选题目号为:9%6+1=(题目4)。注意,所有的课题都要求用图形方式演示步骤 和结果。同学们可以自己针对数据结构课程中所讲算法来设计一个演示过程的算法。 1.3设计要求: 1.3.1 课程设计报告规范 (1)需求分析 a.程序的功能。 b.输入输出的要求。 (2)概要设计 a.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模 块的功能。

城市交通规划课程设计

成绩 土木工程与力学学院交通运输工程系 课程设计 课程名称:交通规划 专业:交通工程 班级:0902 学号:U5 姓名:姚崇富 指导教师:邹志云 职称:教授 日期:

第一章设计概述 1.1 设计目的 通过课程设计使学生对《城市交通规划》课程的基本概念、基本原理以及模型与方法得到全面的复习与巩固,并且能在系统总结和综合运用本课程专业知识的课程设计教学环节中,掌握和熟悉城市交通规划预测的操作程序和具体方法,从而为毕业设计和将来走上工作岗位从事专业技术工作打下良好的基础。 课程设计是一个重要的教学环节,在指导教师的指导下,训练学生严谨求实、认真负责的工作作风和独立思考、精益求精的工作态度。 1.2设计题目 A市城市交通预测与未来路网规划设计方案。 1.3设计内容 1.3.1 运用城市交通预测理论与模型,进行道路网交通流量预测。包括: (1)道路网编码并简化; (2)未来出行分布预测,采用福莱特法和Transcad软件两种方法计算出行分布; (3)未来交通分配预测。(这里只考虑对高峰小时的小汽车交通量进行分配) 1.3.2 在对现在路网进行加载测试的基础上,根据小汽车高峰小时饱和度调整未来路网。包括: ⑴通行能力的提高; ⑵路段阻抗的降低。 调整路网的具体措施包括提高道路等级、新建道路等。将调整后的路网重新进行OD分布和流量分配,然后根据调整后的路网饱和度大小决定是否要继续优化道路网络。最终得到的路网饱和度应在合理范围内。 1.4 设计成果 1.4.1 说明书 包括设计步骤、计算过程、说明简图、计算表格。 1.4.2 图纸(图幅297×420mm) (1)未来出行分布(期望线图); (2)未来路网流量分配图; (3)未来路网规划设计方案图。 第二章设计资料 2.1 A市基本情况 A市是某省政治、经济、文化中心城市,规划年(1995年)有人口107万,市区面积为

交通规划课程设计报告材料

《交通规划原理》 课程设计 报告题目:滨海地区道路网规划 姓名: 院系: 班级: 学号: 指导教师:

2012年6月15日 引言 我国城市化和汽车化正在以前所未有的速度推进,由两者带来的城市土地的超强度开发和无秩序化,以及交通阻塞、环境污染、交通事故和噪声的压力与日俱增,并且在城市道路方面尤其明显。尽管我国已经于1989年12月26日制定了《城市规划法》,但是由于多种原因,导致了上述现象的出现,影响了城市的可持续发展,任其发展下去将危及人民生活全面奔向小康社会的宏伟目标。因而,如何改善城市道路的交通拥堵、阻塞现象,是摆在交通工作者面前的一项重要而艰巨的课题。 “万事始于规划”,说明了人们在日常生活中进行规划的重要性,个人、家庭、单位、城市、地区、国家均不例外,有了切实可行的规划,才能促使人们瞄着确定的目标努力。作为社会经济发展基础的交通基础设施也是如此,做好交通规划是合理调整交通结构、均衡交通需求、适应和拉动土地利用的重要手段,其原理又是支撑交通规划的理论基础。在我国的城市交通发展历程中,越来越显露出没有合理进行交通规划的问题,造成了目前多数大城市“头痛医头,脚痛医脚”的被动局面。因此,迫切需要利用科学的手段与方法进行合理的交通规划。

在如此的大环境之下,作为一个交通工程专业的学生,对交通规划的重要性更是要有足够的认识,认真学习交通规划的基本原理和常用手段,为我国城市的交通规划做出应有的贡献。 所以,郭老师给我们安排了此次交通规划原理的课程设计。本次设计的主要内容是将老师给定的五个小区的交通出行量通过交通规划“四阶段预测法”——交通的发生与吸引预测、交通的分布预测、交通方式的划分预测、交通分配预测——合理地分配到自己设计的小区间路网上,并且对设计的路网进行分析、评价。通过本次课程设计,我们首先明确了交通规划的重要性、明白了规划的难度,端正了对交通规划的态度;其次,我们熟练掌握了“四阶段预测法”的基本流程及每阶段的各种实用方法和手段;再次,我们能较熟练地运用一些辅助设计的软件,如Excel、AutoCAD和Visual Basic计算机编程语言;最后,我们还了解了交通规划的一些相关的规范。 目录 引言 0 第Ⅰ部分课程设计指导书 (1) 1 课程设计的目的和意义 (1) 2 设计任务 (1) 2.1 现状路网的构造 (1) 2.2 人口增长预测 (1)

微机原理课程设计报告交通灯

WORD格式微机原理课程设计 设计题目交通灯的设计 实验课程名称微机原理 姓名王培培 学号080309069 专业09自动化班级2 指导教师张朝龙 开课学期2011至2012学年上学期

一、实验设计方案 实验名称:交通灯的设计实验时间:2011/12/23 小组合作:是□否?小组成员:无 1、实验目的: 分析实际的十字路口交通灯的亮灭过程,用实验箱上的8255实现交通灯的控制。(红,黄,绿三色灯) 2、实验设备及材料: 微机原理和接口技术实验室的实验箱和电脑设备等。 3、理论依据: 此设计是通过并行接口芯片8255A和8086计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。 如硬件连接图所示(在后),红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255 的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4(南东北西)路口的红灯,B,C口类推。8086工作在最小模式,低八位端口AD0~AD7接到8255和8253的D0~D7,AD8~AD15通过地址锁存器8282,接到三八译码器,译码后分别连到8255和8253的CS片选端。8253的 三个门控端接+5V,CLOCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK,2 OUT1接到8086的AD18,8086通过检测此端口是否有高电平来判断是否30s定时到。OUT2产生 1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。8255三个口全部工作在方式0既基本 输入输出方式,红绿灯的转换由软件编程实现。

4、实验方法步骤及注意事项: ○1设计思路 红,黄,绿灯可分别接在8255的A口,B口和C口上,灯的亮灭可直接由8086输出0,1 控制。 设8253各口地址分别为:设8253基地址即通道0地址为04A0H,通道1为04A2H,通道2 为04A4H,命令控制口为04A6H。 黄灯闪烁的频率为1HZ,所以想到由8253产生一个1HZ的方波,8255控制或门打开的时 间,在或门打开的时间内,8253将方波信号输入或门使黄灯闪烁。 由于计数值最大为65535,1MHZ/65536的值远大于2HZ,所以采用两个计数器级联的方 式,8253通道0的clock0输入由分频器产生的1MHZ时钟脉冲,工作在方式3即方波发生器方 式,理论设计输出周期为0.01s的方波。1MHZ的时钟脉冲其重复周期为T=1/1MHZ=1s,因此 通道0的计数初值为10000=2710H。由此方波分别作为clock1和clock2的输入时钟脉冲,所以 通道1和通道2的输入时钟频率为100HZ,通道1作计数器工作在方式1,计数初值3000=BB8H 既30s,计数到则输出一个高电平到8255的PA7口,8255将A口数据输入到8086,8086检测 到高电平既完成30s定时。通道2工作在方式3需输出一个1HZ的方波,通过一个或门和8086 共同控制黄灯的闪烁,因此也是工作在方波发生器方式,其计数初值为100=64H,将黄灯的状态 反馈到8055的端口PB7和PC7,同样输入到8086,8086通过两次检测端口状态可知黄灯的状态 变化,计9次状态变化可完成5次闪烁。 三个通道的门控信号都未用,均接+5V即可。 ○ 2硬件原理及电路图 由于8255A与8086CPU是以低八位数据线相连接的,所以应该是8255A的A1、A 0 线分别与 8086CPU的A2、A线相连,而将8086的 1 A 0 线作为选通信号。如果是按8255A内部地址来看, 则在图中它的地址是PA口地址即(CS+000H),PB口地址为(CS+001H),PC口地址为(CS+002H),

数据结构课程设计交通咨询系统设计(DOC36页)

设计题目<二>:7.3.4交通咨询系统设计P160 一、设计要求 1.问题描述 根据不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能的短,出门旅行的旅客希望旅费尽可能的少,而老年人则要求中转次数少。模拟一个全国城市之间的咨询交通程序,为旅客提供两种或三种最优的交通路线。 2.需求分析 二、概要设计 1.主界面设计 (图2.1“交通咨询系统”主菜单) 2.存储结构设计 本系统采用图结构类型存储抽象交通咨询系统的信息。 typedef struct TrafficNode { char name[MAX_STRING_NUM]; //班次//MAX_STRING_NUM最为10 int StartTime, StopTime; //起止时间 int EndCity; //该有向边指向的顶点在数组中的位置,即该城市编号 int Cost; //票价

} TrafficNodeDat; typedef struct VNode { CityType city; int TrainNum, FlightNum; //标记下面Train数组和Flight数组里元素个数 TrafficNodeDat Train[MAX_TRAFFIC_NUM]; //数组成员为结构体,记录了到达城市、起止时间、票价和班次 TrafficNodeDat Flight[MAX_TRAFFIC_NUM]; // int Cost; //遍历时到达该城市的耗费(时间或者费用) } VNodeDat; typedef struct PNode { int City; int TraNo; } PNodeDat; 3.系统功能设计 (1)添加城市。添加一个城市的名称 (2)删除城市。输入一个城市名称,删除该城市。 (3)添加交通路线。输入起始城市、终点城市、航班或火车、车次、起始时间、终点时间和票价 (4)删除交通路线。输入火车或飞机的班次删除该交通路线。 (5)查询最小费用路线。输入起始城市、终点城市、航班或火车、车次、起始时间、终点时间查询最小费用路线。 三、模块设计 1.模块设计 (图2.2 模块调用示意图)

交通系统规划课程设计

交通系统规划课程 设计

经济管理学院 交通运输系统规划 课程设计 题目:某小城市交通运输系统规划设计班级:交通运输 081 班 成员:湛志国刘彦辉贺明光 学号: 指导教师:惠红旗穆莉英 11月7号至 11月13号

交通运输系统规划课程设计指导书 一、设计的目的与任务 交通运输系统规划课程设计是交通运输专业教学计划中实践教学的重要组成部分,是贯彻理论联系实际、培养高素质人才的重要实践环节,其目的和任务是: 1、目的: 经过交通运输系统规划设计工作,培养学生理论联系实际、实事求是的良好作风,并进一步明确本专业学习的宗旨与任务; 2、任务: 经过对现有路网进行分析划出交通影响区以及主要节点,并在未来预测年的经济、社会发展预测基础上,采用四阶段法进行相应的交通规划,使学生了解交通运输系统规划的大致流程、基本技术方法和未来的发展趋势。 二、设计题目及相关要求 1、设计题目: 《某小城市交通系统规划设计》 2、相关要求: (1)、总体目标: 在交通规划区域内相关社会经济分析预测的基础上,完成交通规划设计内容,增强学生完整的交通运输系统规划设计概念及强化规划意识。 (2)、具体设计要求:

经过整理课程设计资料、撰写并打印课程设计报告等,锻炼学生分析问题、解决问题的能力,获得对本此课程设计的全面、系统的认识,同时取得一定的工作技能和专业经验。 (3)、成果要求 ①设计成果完整,计算数据准确,图表规范,字迹工整,步骤清晰。 ②计算书一律采用A4纸用钢笔书写。 三、设计内容 1、现有道路网络、交通影响区及主要节点分析 (1)、了解并分析现有道路网络; (2)、根据相关的经济发展、工业布局以及实际土地利用情况划分交通影响区; (3)、在交通影响区划分的基础上完成主要节点的设定。 2、规划区域的社会发展、道路交通量预测 (1)、分析预测区域的社会发展情况; (2)、完成预测年限内各项经济指标及各小区交通量的预测。3、交通发生、吸引模型的建立与标定 (1)、建立小区交通发生、吸引模型; (2)、完成预测年的交通发生、吸引量计算。 4、交通分布 (1)、建立相应的OD矩阵及距离矩阵; (2)、进行并完成规划区内的交通分布,进而得到规划区内的

基于单片机交通灯课程设计报告书

三峡职业学院 课程设计 课题名称交通灯控制系统设计 交通灯控制系统设计 摘要:本系统由单片机最小系统、按键(开关)、LED 显示等等组成交通灯演示系统。系统用红、黄、绿三个发光二极管模拟交通灯的红灯、黄灯、绿灯的功能。系统除基本交通灯功能外,还具有倒计时(15秒)、时间设置、紧急情况(按键模拟传感器)处理等功能。 关键词:AT89C51,交通规则 引言:随着日新月异的电子变革,电子产品发生了突飞猛进的巨变,而在其中AT89C51扮演着一个重要的角色,AT89C51单片机具有广泛性、工具性、基础性的几个特点。单片机应成为中等技术人员的重要技术知识层面。近年来,我国工程技术队伍的梯队建设有了很大的进展。各类高职、高专如雨后春笋,涉电专业普遍开设单片机类课程。直观性表现在尽可能让我们在学习基本原理时能直观地看到相关实物及实物表演,使基本原理能实现形象化的表达;实践性表现在我们要通过许多实际操作来理解与掌握单片机的本质与技能;综合性表现在最终能使我们达到运用知识与技能来完成一个应用系统开发的全过程,有助于大学生动手能力的培养和提高,课程设计就是一门应用性很强的课程。如何让我们在学好基础知识的同时,迅速掌握设计应用技术,其中,实验与课程设计环节起着非常重要的作用。对我们学习和掌握单片机设计技术起到积极的作用。 一、方案比较、设计与论证

(1) 电源提供方案 为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案 方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统线路变复杂,且可能影响系统各模块的电路电平。 方案二:采用干电池提供电源。该方案的优点是系统简明扼要,线路易于梳理,节约成本;缺点是输出功率不高。 综上所述,我们选择第二种方案。 (2) 显示界面方案: 该系统要求完成数码管倒计时(15s)、状态灯发光二极管(红、黄、绿)的显示功能。基于上述原因,我们考虑了二种方案: 方案一:东西南北四个方向分别采用两位数码管显示倒计时。这种方案只显示有限的符号和数码字苻,并且制作PCB图时有许多的线相交,线路十分的复杂,不易制作原理图与PCB图,无法胜任题目要求。 方案二:东西南北四面各自采用红、黄、绿三个发光二极管显示,采用一个两位数码管显示倒计时,主要优点是易于调整元件在硬制板上摆放的位置,同时也易于PCB图的制作。 综上所述,我们选择方案二。 (3) 输入方案: 题目要求系统能即时的处理外部紧急情况产生的中断,我们讨论了两种方案: 方案一:采用矩阵键盘。该方案的优点是: 可提供较多I/O 口,实现更多的外部中断。直接站单片机的接口少的特点,但操作起来稍显复杂,而且编程也趋于复杂。 方案二:直接在IO口线上接上按键开关。因为设计时精简和优化了电路。 由于该系统对于交通灯等发光二极管的控制,只用单片机本身的I/O 口就可实现,只要一个开关来模拟一个外部的紧急中断,且本身的计数器及RAM已经够用,故选择方案二。 (4) 系统方案: 本系统的硬件采用模块化设计,以单片机控制器为核心,与LED信号灯电路等组成单片机控制信号系统.

数据结构--交通咨询系统

目录 1 概述 (2) 1.1 问题描述 (2) 1.2 实现意义 (2) 2 系统分析 (2) 2.1 需求分析 (2) 2.1.1程序的功能 (2) 2.1.2输入输出的要求 (2) 2.2 设计思想 (2) 2.3 设计要求 (3) 3 概要设计 (3) 3.1用邻接矩阵建立交通网络模块 (3) 3.2 查询任意两个顶点之间的最短路径 (4) 3.3 查询一个城市到其他所有城市的最短路径 (5) 4 详细设计 (5) 4.1 用邻接矩阵构造图结构函数CreateMGraph() (5) 4.2 费洛伊德Floyd() (6) 4.3 迪杰斯特拉Dijkstra() (6) 4.4 主要函数流程图及其函数调用 (7) 4.4.1 主要函数流程图 (7) 4.4.2 一个城市到其他城市的路径调用 (8) 4.4.3 任意两个城市之间路径调用 (8) 5 运行与测试 (8) 5.1 有向图存储结构的建立模块的输出 (9) 5.2 单源路径迪杰斯特拉算法模块的输出 (10) 5.3 费洛伊德算法模块的输出 (10) 6 总结与心得 (10) 参考文献 (11) 附录 (11)

1 概述 1.1 问题描述 在交通网络非常发达,交通工具和交通方式不断更新的今天,人们在出差、旅游或做其它出行时,不仅关心节省费用,而且对里程和所需时间等问题也感兴趣。对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。图中顶点表示城市之间的交通关系。这个交通系统可以回答旅客提出的各种问题。比如任意一个城市到其他城市的最短路径,任意两个城市之间的最短路径问题。 1.2 实现意义 便于人们的日常出行,且更好地满足了用户的出行需求。这种最短路径问题的计算方法既简单又便于实现,同时大大提高了计算机的运行速率。 2 系统分析 2.1 需求分析 2.1.1程序的功能 (1)用户自己可以建立不同的路径之间的关系网(2)可以查询某个城市到达其余各城市的最短路径。(3)可以任一查询两个城市之间的最短路径。 2.1.2输入输出的要求 在刚进入主界面后系统提示输入建立交通网络储存结构,输入顶点个数和和边数为整数不能输入其他字符,随后系统提示输入边与边之间的关系分别为i,j,w表示边之间的距离。然后进入查询页面,输入整数1,2,0分别表示你所要查询的功能:一个城市至其他所有城市的最短路径查询、任意两个城市之间的最短路径查询、退出程序。不能输入其他字符否则不能执行操作。在整个操作都是用整数表示城市。 2.2 设计思想 用邻接矩阵来存储交通网络图的信息,运用迪杰斯特拉算法实现图上单源最短路径问题,然后运用费洛伊德算法实现图中任意一对顶点间最短路径问题,这样就会实现交通咨询系统设计的问题。

交通规划课程设计论文

利用Dijkstra算法与Floyd算法进行交通分配 比较分配结果 摘要:本文主要内容包括对乌鲁木齐市五区的人民进行OD调查,得到网络交通量数据,再利用Dijkstra算法与Floyd算法确定交通网络图的最短路径,运用全有全无的方法进行交通量的分配,最后比较这两种方法在确定最短路径时的利弊。 关键词: Using the algorithm of Dijkstra and Floyd to distribute the volume of traffic and compare the result of the traffic assignment Abstract: The article takes the main point to use the algorithm of Dijkstra and Floyd to decide the shortest way of traffic network , making use of the method of All-or-none to distribute the volume of traffic. At last,comparing the advantages and disadvantages between the two methods during deciding the shortest way. Key word: 0.引言: 随着科学技术的进步和工业的发展,城市中交通量激增,城市道路交通拥堵和环境污染现象越来越严重,对人民的出行和生活带来了很大的不便和危害,私人交通工具发展的结果,给城市交通带来了一系列的问题,主要是:①交通拥挤和交通阻塞,城市中的平均车速日益下降;②交通事故增加;③噪声和空气污染日趋严重;④能源消耗量猛增;⑤停放车场地严重不足。为了克服这些矛盾,一些工业发达的国家,曾致力于道路系统的改善:加宽地面道路,修建高架路和高速路,开辟地下交通。此外,在交通管理、交通控制系统方面采用了计算机等新技术。这些措施虽然提高了道路通过能力,但是仍解决不了由有增无减的私人交通流所造成的道路阻塞问题。就道路交通拥堵问题,这里运用Dijkstra算法与Floyd算法确定交通网络的最短路径,并用全有全无的方法进行交通量得分配,最后比较这两种方法在确定最短路径时的难易程度。 1.规划区社会经济发展概况 1.1 乌鲁木齐是新疆维吾尔自治区首府,全疆政治、经济、文化中心,也是第二座亚欧大陆桥中国西部桥头堡和我国向西开放的重要门户。她地处亚欧大陆中心,天山山脉中段北麓,准噶尔盆地南缘。乌鲁木齐经济建设长足进步。改革开放以来,特别是国家实施西部大开发战略以来,乌鲁木齐经济建设取得了前所未有的成就。以国有企业为中心的各项改革取得显著成效,建立和完善了社会主义市场经济体制,全方位的开放开发格局初步形成。经济结构战略性调整取得实质性进展,经济技术开发区、高新技术产业开发区和区级经济成为新的经济增长点,公有制为主体、混合所有制经济共同发展的格局基本形成。农村经济稳步发展,农业结构调整力度加大。工业结构调整继续深化,高新技术产业产值的比重不断提高。城市基础设施功能不断完善,建成了以中山路商业一条街、人民路金融一条街、二道桥民俗一条街和北京路科技一条街为主要代表的、各具特色的城市功能街区。新疆商贸城、中国新疆小商品城、新疆国际大巴扎、华凌、友好百盛等一批地方特色市场和大型超市相继建成,逐步形成了火

交通咨询系统设计报告

重庆科技学院 《数据结构》课程设计 报告 学院:_电气与信息工程学院_ 专业班级: 计科2 学生姓名: 学号: 设计地点(单位)__ _ 计算机基础自主学习中心__ _ _ 设计题目:________ 交通咨询系统设计__ ___ _ _ 完成日期:2012年7 月6 日 指导教师评语: ______________________ _________________ ________________________________________________________________________________________________ ________________________________________________________________________________________________

_________ __________ _ 成绩(五级记分制):______ __________ 指导教师(签字):________ ________ 重庆科技学院 课程设计任务书 设计题目:交通咨询系统的设计

系主任:雷亮指导教师:黄永文/王双明/熊茜/彭军/王成敏 2012年6月20日 摘要

在交通网络非常发达,人们在出差、旅游出行时,往往关心节省交通费用或节省所需要的时间等问题。对于这样一个人们关心的问题,可以用一个图结构来表示交通网络,利用计算机建立一个交通咨询系统。图中顶点表示城市,边表示城市之间的交通情况,其权值可代表里程、交通费用或时间。比如任意一个城市到其他城市的最短路径,任意两个城市之间的最短路径问题。 本次设计的交通咨询系统主要是运用C语言的数据结构来完成交通图的存储、图中顶点的单源最短路径和任意一对顶点间的最短路径问题。 关键词:数字结构C语言交通咨询最短路径

微机原理-交通灯课程设计报告

微型计算机原理及应用课程设计说明书 交通灯控制系统设计 班级:1401班 姓名: 学号: 指导教师: 日期:2016年6月

一.课程设计目的: 在车辆日渐增多的今天,人们也越来越关注交通问题,而交通灯在安全行车过程中无疑起着十分重要的作用。现在交通灯一般都设在十字路口,用红、绿、黄三种颜色的指示灯和一个倒计时的显示计时器来控制行车, 对一般情况下的安全行车、车辆分流发挥着作用, 但根据实际行车过程中出现的情况, 主要有如下几个缺点: 1、车道轮流放行时间相对固定, 不能根据实际情况中两个车道的车辆多少来设置改变通行时间;2、没有考虑紧急车辆通过时, 两车道应采取的措施。譬如, 有消防车通过执行紧急任务时, 两个车道的车都应停止, 让紧急车辆通过。因此如何合理高效地利用交通灯指示交通情况,是一个亟需解决的问题。 交通灯是采用计算机通过编写汇编语言程序控制的。红灯停,绿灯行的交通规则。广泛用于十字路口,车站, 码头等公共场所,成为人们出行生活中不可少的必需品,由于计算机技术的成熟与广泛应用,使得交通灯的功能多样化,远远超过老式交通灯, 交通灯的数字化给人们生产生活带来了极大的方便,而且大大地扩展了交通灯的功能。诸如闪烁警示、鸣笛警示,时间程序自动控制、倒计时显示,所有这些,都是以计算机为基础的。还可以根据主、次干道的交通状况的不同任意设置各自的不同的通行时间。或者给红绿色盲声音警示的人性化设计。现在的交通灯系统很多都增加了智能控制环节,比如对闯红灯的车辆进行拍照。当某方向红灯亮时,此时相应的传感器开始工作,当有车辆通过时,照相机就把车辆拍下。 要将交通灯系统产品化,应该根据客户不同的需求进行不同的设计,应该在程序中增加一些可以人为改变的参数,以便客户根据不同的需要随时调节交通灯。因此,研究交通灯及扩大其应用,有着非常现实的意义 二.课程设计内容: 设有一个十字路口,1、3为南北方向,2、4为东西方向。初始为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车;延时一段时间后,1、3路口的绿灯开始闪烁,闪烁若干次以后,1、3 路口黄灯亮,后1、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车;延时一段时间后,2、4 路口的绿灯熄灭,而绿灯开始闪烁,闪烁若干次以后,1、3路口红灯亮,而2、4路口黄灯亮,再切换到1、3路口方向,之后重复上述过程。 三.问题分析及硬件介绍: 本次课程设计的内容为利用8086、8255等接口,实现控制十二个二极管亮灭的过程。需要PC机一台,8255并口:用做接口芯片。LED:共12个LED灯。还有8086芯片,8253a定时器等器材. 将8086和74273、74154和8255连接起来.需用到8255的六个输出端口。所以要求8255工作在方式0,因为二极管是共阳的,所以输出低电平二极管才会亮。8086用作cpu,三个74273是锁存器,锁存地址。 用软件proteus7.8画出电路图,加载程序到8086cpu,进行模拟。 系统硬件设计

全国交通咨询模拟数据结构课程设计

数据结构课程设计报告 题目:全国交通咨询模拟 一.需求分析 1.程序设计任务:从中国地图平面图中选取部分城市,抽象为程序所需要图的结点,并以城市间的列车路线和飞机路线,作为图结点中的弧信息,设计一个全国交通咨询模拟系统。利用该系统实现两种最优决策:最快到达或最省钱到达。 2. 明确规定: (1) 输入形式和输入值的范围:每条飞机弧或者火车弧涉及的信息量很多,包括:起始城市、目的城市、出发时间、到达时间、班次以及费用。作为管理员要输入的信息包括以上信息,而作为用户或者客户,要输入的信息有起始城市和目的城市,并选择何种最优决策。 (2) 输出形式:按用户提供的最优决策的不同而输出不同的信息,其中输出的所搭飞机或火车的班次及其起始地点和终点、起始时间和出发时间还有相关的最优信息,比如最快经多少时间到达、最省钱多少钱到达和最少经多少中转站到达。 (3) 程序所能达到的功能 a. 该系统有供用户选择的菜单和交互性。可以对城市、列车车次和飞机航班进行 编辑,添加或删除。 b. 建立一个全国交通咨询系统,该系统具备自动查找任意两城市间铁路、飞机交通的最短路径和最少花费及中转次数最少等功能。 c. 初始化交通系统有两种方式,键盘和文档。

二.设计概要 1.算法设计 (1)、总体设计 (1)数据存储:城市信息(城市名、代码)、交通信息(城市间的里程、各航班和列车时刻)存储于磁盘文件。建议把城市信息存于文件前面,交通信息存于文件的后面,用fread和fwrite函数操作。 (2)数据的逻辑结构:根据设计任务的描述,其城市之间的旅游交通问题是典型的图结构,可看作为有向图,图的顶点是城市,边是城市之间所耗费的时间(要 包括中转站的等候时间)或旅费。 (3)数据的存储结构:采用邻接表和邻接矩阵都可作为数据的存储结构,但当邻接边不多时,宜采用邻接表,以提高空间的存储效率。这里采用邻接表作为数据的存储结构。 (4)用不同的功能模块对城市信息和交通信息进行编辑。添加、修改、删除 功能可用菜单方式或命令提示方式。只要能方便的对城市信息和交通信息进行管理即可,但要注意人机界面。 (5)最优决策功能模块(fast or province)。 ①读入城市信息和交通信息,用邻接表生成含权网络,表头数组中的元素存放城市名及对方城市到达该元素所代表城市的所有信息;表头数组中的元素所对应的单链表存放与该元素所代表的城市有交通联系的城市(代码、里程、航班、列车车次)。 ②根据具体最优决策的要求,用Dijkstra算法求出出发城市到其它各城市 的最优值(最短时间或最小的费用),搜索过程中所经过城市的局部最优信息都保存在邻接表的表头数组中。其目的城市所代表的元素中就保存了所需的最优决策结果。这过程中,要用队列或栈保存局部最优决策值(局部最短的时间或最省的费用)变小的城市,其相应的初始值可为%,并在表头数组对应的城市元素中保 存响应的信息。开始时,栈(队列)中只有出发地城市,随着对栈(队列)顶(首)城市有交通联系的城市求得决策值(最短时间或最小的费用),若该值是局部最优值且该城市不在栈(队列)中,则进栈(队列),直至栈(队列)为空,本题采用队列实现。 ③输出结果:从目的城市出发,搜索到出发城市,所经过的城市均入栈(队列),再逐一出栈栈(队列)中的城市,输出保存在表头数组中对应城市的信息 (对 方城市的出发信息,里程、时间、费用等)及最终结果。即输出依次于何时何地乘坐几点的飞机或火车于何时到达何地;最终所需的最快需要多长时间才能到达及旅费,或者最少需要多少旅费才能到达及时间。 (6)主程序可以有系统界面、菜单;也可用命令提示方式;选择功能模块执行,要求在程序运行过程中可以反复操作。 (2).详细设计思想: 本题所要求的交通系统是一个有向带权图结构,考虑到要求该系统有动态增加飞机和列车航班的功能,因而采用邻接表的形式存储:对每个顶点建立一个 单链表,单链表中的子结点表示以该顶点连接的弧,单链表中子结点的顺序可以 按权值递增的顺序排列,表头结点按顺序存储。题目中提到要提供三种策略,最快到达,最省钱到达和最少中转次数策略,前两种策略采用迪杰斯特拉算法思想,其中最快到达的权值为到达两城市所需的最短时间,最省钱到达的权值为到达两城市所需的费用,后一种采用广度优先算法的思想,只需求的两城市所在的层数,就可以求的到达两城市所需的最少中转次数。

09交通规划课程设计1

交通规划课程设计Course Exercise in Traffic Planning 专业班级:2009级交通工程 姓名:小脚丫 班级:交工 09-2 学号: 0900502 设计时间:2012\6\4-2012\6\10 指导教师:魏丹

成绩综合评定表

《交通规划》课程设计指导书 一、设计的目的与任务 交通规划课程设计是交通工程专业教学计划中实践教学的重要组成部分,是贯彻理论联系实际、培养高素质人才的重要实践环节,其目的和任务是:目的:为了巩固和进一步掌握在《交通规划》授课中学到的理论知识,通过交通规划设计工作,培养学生理论联系实际、实事求是的良好作风,并进一步明确本专业学习的宗旨与任务; 任务:通过对现有路网进行分析划出交通影响区以及主要节点,并在未来预测年的经济、社会发展预测基础上,采用四阶段法进行相应的交通规划,使学生了解交通规划的大体流程、基本技术方法和未来的发展趋势。 二、设计题目及相关要求 1、相关要求: 总体目标:在交通规划区域内相关社会经济分析预测的基础上,完成交通规划设计内容,增强学生完整的交通规划设计概念及强化规划意识。 具体设计要求: (1)依据分组情况合理分工,各组均独立、按时、按质、按量完成本课程设计。(2)充分理解并掌握相关理论,熟悉行业规范以及设计流程。 (3)完成设计项目后,将设计指导书、任务书、计算书按要求装订成册。 通过整理课程设计资料、撰写并打印课程设计报告等,锻炼学生分析问题、解决问题的能力,获得对本此课程设计的全面、系统的认识,同时取得一定的工作技能和专业经验。 2、注意事项: (1)本课程设计要求学生依据分组情况合理分工,各组均独立自主完成,严禁抄袭、抄袭者以零分计。

数电交通灯课程设计报告

电子技术课程 设计报告 二 级 学 院 机械与电子工程学院 专 业 电气工程及其自动化 年 级 2014级 学 号 14106***** 学 生 姓 名 苏 运 指 导 教 师 杨** 完 成 时 间 2015 年12 月25 日 简易交通灯的设计

简易交通灯的设计 作者:苏运 指导老师:杨** 摘要:利用数码管,74LS48译码器、74LS192计数器、ne555、与非门、或非门、触发器、蜂鸣器和小彩灯等电子元件,制作简易交通灯,实现15秒倒计时开始后,到达5秒时红灯熄灭,黄灯闪烁同时蜂鸣器响,到达0秒时切换到另外两个方向的红绿灯亮的功能。经测试,系统达到红绿灯转换和显示的基本要求,具有电路美观稳定性高的优点。 关键词:数电交通灯;交通灯;简易交通灯;计数器

目录 1 设计要求及方案选择 (1) 1.1设计要求 (1) 1.2方案选择 (1) 2 理论分析与设计 (1) 2.1脉冲发生器电路的分析及设计 (1) 2.2定时器电路的分析及设计 (2) 2.3交通灯和蜂鸣器电路的分析及设计 (3) 2.4控制器电路的分析及设计 (4) 2.5数码显示电路的分析及设计 (4) 3电路设计 (5) 3.1脉冲发生器电路的设计 (5) 3.2定时器电路的设计 (6) 3.3交通灯和蜂鸣器电路的设计 (6) 3.4控制电路的设计 (7) 3.5码显示电路的设计 (9) 3.6电源开关和指示灯电路的设计 (9) 4系统测试实验 (10) 4.1调试所用的基本仪器清单 (10) 4.2软件仿真调试 (10) 4.3实物电路板的调试 (10) 4.4时钟脉冲信号的测定 (10) 4.5调试结果 (11) 4.6测试结果分析 (11) 5 总结 (12) 附录 (13) 附录A 仿真图 (13) 附录B 原理图 (13) 附录C PCB图 (14) 附录D 实物图 (14) 附录E 脉冲信号测试图 (15) 附录F 元件清单 (15) 参考文献 (16)

数据结构课程设计全国交通咨询系统方案

工业应用技术学院 课程设计任务书 题目全国交通资询系统 主要容: 设计了一个方便用户查询交通咨询系统。该系统所做的工作的是模拟全国交通咨询,为旅客提供三种最优决策的交通咨询。该系统可以进行城市,列车车次和飞机航班的编辑的基本信息输入操作。程序的输出信息主要是:最快需要多少时间才能到达,或最少需要多少旅费才能到达,或最少需要多少次中转到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。程序的功能包括:提供对城市信息的编辑,提供列车时刻表和飞机航班表的编辑,提供三种最优决策:最快到达、最省钱到达、最少中转次数到达。 基本要求: 1、掌握C语言的变量及函数的灵活使用; 2、熟练掌握图的深度、广度优先遍历算法思想及其程序实现; 3、掌握C语言中文件的基本操作; 4、掌握VC++6.0软件的熟练使用。 主要参考资料: [1] 春葆.数据结构程序设计[M].:清华大学,2002,03 [2] 王黎,袁永康https://www.wendangku.net/doc/ce13310709.html,战略[M].:清华大学,2002,01 [3] 谭浩强.C程序设计第二版[M].:清华大学,2003,03 [4] 任哲.MFC Windows程序设计[M].:清华大学,2004,06 完成期限:2016.12.05—2017.01.05 指导教师签名: 课程负责人签名:

随着高科技的飞速发展,列车、飞机、动车、高铁的出现极大的减少了人们花在旅途上的时间。对于城市间错综复杂交通网的管理,是一项庞大而复杂的工作。在此基础上,如何实现交通网智能化的管理达到帮助乘客选择经济高效的交通工具是目前仍处空白。尤其乘客交通工具的择优选择是一个令人懊恼的工作,一个原因就是各种交通工具的查询十分分散和繁琐。即使有互联网的帮忙,但是没有一个统一的归类、没有一个精细的算法、系统的软件帮助,人们仍然无法获得最优方式。为此开发一个交通择优系统是十分必要的。采用计算机对城市间的交通工具进行系统录入和管理,进一步提高了交通部门针对城市间客运网络的管理效率,实现交通运营网络的系统化、规化和自动化。同时使乘客能通过网络进行称心的交通工具的选择,这也是交通网络优选智能决策的体现。交通信息的咨询和管理是交通部门管理工作中异常重要的一个环节,因此,运用交通资询管理系统对春运时减轻乘客购票压力、舒缓紧的城际拥堵有重要意义。 关键字:错综复杂;智能化;最优方式;择优系统

交通规划课程设计报告小城市交通规划设计

交通规划课程设计报告小城市交通规 划设计

<交通运输系统规划>课程设计报告 学生姓名:____***____ 学号:____*** ___ 指导教师:____***____ 吉林大学交通学院 .09.02---- .09.15

目录 第一章绪论 (1) 1.1 设计目的与任务 (1) 1.2 设计内容 (1) 1.3 设计方法 (2) 第二章交通发生量与吸引量的预测 (3) 2.1 交通发生量的预测 (3) 2.1.1 多元线性回归方程的建立 (3) 2.1.2 规划年各小区交通发生量的预测 (7) 2.2 交通吸引量的预测 (8) 2.2.1 初步预测 (8) 2.2.2 调整计算 (8) 第三章交通分布预测 (9) 3.1 重力模型的标定 (9) 3.2 交通分布量预测 (13) 第四章交通分配 (16) 4.1 交通量的转换 (16) 4.2 交通分配 (16) 第五章结果分析 (19) 5.1 各小区土地利用的变化情况 (19) 5.2 结果分析 (22) 结语 (23) 附录:福莱特法源程序代码 (25)

第一章绪论 1.1设计目的与任务 交通运输规划课程设计是交通工程专业教学计划中实践教学的重要组成部分,是贯彻理论联系实际、培养高素质人才的重要实践环节:1.设计题目:《小城市交通规划设计》。 2.目的:经过交通规划设计工作,培养学生理论联系实际、实事求是的良好作风,并进一步明确本专业学习的宗旨与任务,增强学生完整的交通规划设计概念及强化规划意识。 3.任务:经过对现有路网进行分析划出交通影响区以及主要节点,并在未来预测年的经济、社会发展预测基础上,采用四阶段法进行相应的交通规划设计,使学生掌握交通规划的大致流程、基本技术方法和未来的发展趋势。 1.2设计内容 1.交通现状分析 主要对现有道路网络、交通影响区及主要节点进行分析。 2. 规划区域道路交通量预测 1) 建立小区交通发生、吸引模型; 2) 完成交通发生、吸引量的预测。 3. 交通分布

智能交通灯系统课程设计报告

江苏师范大学物电学院课程设计报告 课程名称:单片机课程实训 题目:智能交通灯系统 专业班级: 学生姓名: 学生学号: 日期: 指导教师:

说明: 1、报告中的第一、二、三项由学生在课程设计开始前填写,由指导教师指 导并确认签字。 2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩,并 填写成绩评定表。 3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律 按不及格处理。答辩小组成员应由2人及以上教师组成。答辩后学生根据答辩情况填写答辩记录表。 4、报告正文字数一般应不少于3000字,也可由指导教师根据本门课程设 计的情况另行规定。 5、平时表现成绩低于6分的学生,取消答辩资格,其该课程设计成绩按不 及格处理。 6、课程设计完成后,由指导教师根据完成情况写出总结。 7、此表格式为江苏师范大学物理与电子工程学院提供的基本格式,指导教 师可根据本门课程设计的特点及内容做适当的调整。

一、课程设计目的、任务和内容要求: 通过该课程设计使学生进一步了解和加深智能化仪器设计的一般原则;熟练掌握智能化仪器与装置的软、硬件设计方法;掌握仪器的软件调试及软硬件联合统调方法与技能。掌握仪器的接口技术和程控方法;熟练掌握仪表总线的工作原理、设计步骤、编程及调试;掌握C设计软件的编程与调试方法;掌握网络化仪器设计编程与调试方法。 本课程设计的任务就是设计一个智能交通灯系统。鼓励学生在熟悉基本原理的前提下,与实际应用相联系,提出自己的方案,完善设计。 具体设计任务如下: 1.熟悉QG8芯片与ISD语音模块的工作原理; 2.写出智能交通灯系统的设计方案; 3.用硬件加以实现; 4.写课程设计报告。 设计要求: 1.数码管显示倒计时,且时间可调; 2.红绿灯亮时间与数码管一致; 3.红灯亮时对应语音模块提示; 4.绿灯亮时对应语音模块提示。

相关文档