当前位置:文档之家› 交通咨询系统设计C语言

交通咨询系统设计C语言

交通咨询系统设计C语言
交通咨询系统设计C语言

/* *建立一个模拟的交通网络(用有向网来表示),编程实现从某个城市 *出发到另一个城市所需的最短的时间及路径。 * *建立一个模拟的交通网络(用有向网来表示),编程实现从某个城市 *出发到另一个城市所需的最短的时间及路径。 * */ #define MAX_VERTEX_NUM 18

#define NULL 0

#define MAX_ARC_SIZE 100

#define MAX_ROUTE_NUM 5

#include""

#include""

#include""

#define False 0

#define True 1

#define INFINITY 10000 /*预定义*/

typedef struct {

int number;

float expenditure;

int begintime[2];

int arrivetime[2];

}Vehide;

typedef struct {

Vehide stata[MAX_ROUTE_NUM];

int last;

}infolist;

typedef struct ArcNode {

int adjvex;

struct ArcNode *nextarc;

infolist info;

}ArcNode;

typedef struct VNode {

char cityname[10];

ArcNode *planefirstarc,*trainfirstarc;

}VNode,AdjList[MAX_VERTEX_NUM];

typedef struct {

AdjList vertices;

int vexnum,planearcnum,trainarcnum;

}ALGraph;

typedef struct Node {

int adjvex;

int route;

struct Node *next;

}Node;

typedef struct QNode {

int adjvex;

struct QNode *next;

}QNode;

typedef struct {

QNode *front;

QNode *rear;

}LinkQueue;

typedef struct TimeNode {

int adjvex;

int route;

int begintime[2];

int arrivetime[2];

struct TimeNode *child[MAX_ROUTE_NUM];

}TimeNode,*TimeTree;

struct arc {

int co;

char vt[10];

char vh[10];

int bt[2];

int at[2];

float mo;

}a[MAX_ARC_SIZE]; /*数据结构定义*/

char city[MAX_VERTEX_NUM][10];

int TTime[2];

int time[2];

int time1[2];

int time2[2];

int c[MAX_VERTEX_NUM];

int d[MAX_VERTEX_NUM]; /*变量定义*/

/*各种操作说明*/

void Disp();

void Administer(ALGraph *G);

void cityedit(ALGraph *G);

void CopyTimeTree(TimeTree p,TimeTree 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(LinkQueue *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);

void ExpenditureDispose(int k,infolist (*arcs)[MAX_VERTEX_NUM],ALGraph G,int v0,int v1,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 arcs,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);

void TimeTreeDispose(Node *head,infolist (*arcs)[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 Disp() /*软件入口,显示函数*/

{

textbackground(7);

textcolor(5);

gotoxy(20,10);

printf("--------------------------------\n");

gotoxy(20,11);

printf("| 交通咨询系统 Version |\n");

gotoxy(20,12);

printf("| |\n");

gotoxy(20,13);

printf("| 一叶方舟 |\n");

gotoxy(20,14);

printf("| |\n");

gotoxy(20,15);

printf("--------------------------------\n"); gotoxy(40,20);

printf("^_^ 欢迎使用 ^_^");

sleep(3);

clrscr();

}

int main() /*主函数,程序入口*/

/* 显示程序功能选择界面 */

{

ALGraph G;

int i;

textbackground(7);

textcolor(5);

clrscr();

Disp();

printf("请选择程序功能:\n");

printf("*************************************\n"); printf("** 1=管理员管理 **\n");

printf("** 2=用户咨询 **\n");

printf("** 3=显示交通系统 **\n");

printf("** 4=退出 **\n");

printf("*************************************\n"); printf("请选择?");

scanf("%d",&i);

getchar();

while(i!=4)

{

clrscr();

switch(i)

{case 1:

Administer(&G);

break;

case 2:

UserDemand(G);

break;

case 3:

PrintGraph(&G);

break;

}

printf("\n请选择程序功能:\n");

printf("*************************************\n");

printf("** 1=管理员管理 **\n");

printf("** 2=用户咨询 **\n");

printf("** 3=显示交通系统 **\n");

printf("** 4=退出 **\n");

printf("*************************************\n");

printf("选择?");

scanf("%d",&i);

getchar();

}

clrscr();

gotoxy(20,10);

printf("--------------------------------\n");

gotoxy(20,11);

printf("| 指导老师:夏汉民老师 |\n");

gotoxy(20,12);

printf("| |\n");

gotoxy(20,13);

printf("| 制作:李济舟 |\n");

gotoxy(20,14);

printf("| |\n");

gotoxy(20,15);

printf("--------------------------------\n");

gotoxy(40,20);

printf("谢谢使用");

sleep(1);

gotoxy(40,20);

printf("正在退出");

for(i=0;i<3;i++)

{ printf(".");

sleep(i);

}

return 0;

}

void Administer(ALGraph *G) /* 显示管理员管理项目选择界面 */

int i,j=0;

char password[5];

be:clrscr();

gotoxy(20,10);

printf("-------------------------------------\n");

gotoxy(20,11);

printf("| 管理员管理项目 |\n");

gotoxy(20,13);

printf("| 1.初始化交通系统 |\n");

gotoxy(20,15);

printf("| 2.城市编辑 |\n");

gotoxy(20,17);

printf("| 3.飞机航班编辑 |\n");

gotoxy(20,19);

printf("| 4.列车车次编辑 |\n");

gotoxy(20,20);

printf("-------------------------------------\n");

gotoxy(40,25);

printf("请输入登陆密码(admin):");

for(i=0;i<5;i++)

{

password[i]=getch();

printf("*");

}

if(password[0]!='a'||password[1]!='d'||password[2]!='m'||password[3]!='i '||password[4]!='n') {

gotoxy(50,25);

printf("输入错误,请重新输入!");

j++;

if(j==3)

system(exit);

getch();

goto be;

}

printf("\n请选择管理项目:\n");

printf("1=初始化交通系统\n2=城市编辑\n3=飞机航班编辑\n4=列车车次编辑\n5=返回上一级菜单\n");

printf("选择?");

scanf("%d",&i);

while(i!=5)

switch(i)

{

case 1:initgraph(G); /*初始化交通系统*/ break;

case 2:cityedit(G); /*城市编辑*/ break;

case 3:flightedit(G); /*飞机航班编辑*/ break;

case 4:trainedit(G); /*列车车次编辑*/ break;

}

printf("\n请选择管理项目:\n");

printf("*************************************\n");

printf("** 1=初始化交通系统 **\n"); printf("** 2=城市编辑 **\n");

printf("** 3=飞机航班编辑 **\n");

printf("** 4=列车车次编辑 **\n");

printf("** 5=返回上一级菜单 **\n");

printf("*************************************\n");

printf("1=初始化交通系统\n2=城市编辑\n3=飞机航班编辑\n4=列车车次编辑\n5=返回上一级菜单\n");

printf("选择?");

scanf("%d",&i);

}

}

void initgraph(ALGraph *G) /*初始化交通系统*/

/* 初始化交通系统方式选择界面 */

{

int i;

printf("\n请选择初始化方式:\n");

printf("1=键盘\n2=文档\n");

printf("选择?");

scanf("%d",&i);

getchar();

switch(i)

{

case 1:createcityfile();

createplanefile();

createtrainfile();

CreateGraph(G);

break;

case 2:CreateGraph(G);

break;

}

}

void createcityfile() /* 创建城市名称文档 */

{

int i=0;

int j;

char flag='y';

FILE *fp;

printf("\n请输入城市名称的信息:\n");

while(flag=='y'||flag=='Y')

{

printf("城市名称:");

gets(city[i]);

i++;

printf("继续输入?(Y/N)");

scanf("%c",&flag);

getchar();

}

printf("\n");

if((fp=fopen("","wb"))==NULL)

{

printf("无法打开文件!\n");

return;

}

for(j=0;j

fprintf(fp,"%10s",city[j]);

fclose(fp);

}

void createplanefile() /* 创建飞机航班文档 */

{

int code,bt[2],at[2]; /*code航班编号,bt出发时间,at到达时间*/ float money;

int i;

int count;

char vt[10],vh[10],flag; /*vt起始城市,vh目标城市*/

FILE *fp;

flag='y';

count=0;

while(flag=='Y'||flag=='y') /*flag为标志位,初值为1*/

{

printf("请输入飞机航班的信息:\n");

/*提示"输入航班信息"*/

printf("飞机航班编号:"); /*输入航班code*/

scanf("%d",&code);

getchar();

printf("起始城市:"); /*输入航班的出发城市vt*/

gets(vt);

getchar();

printf("目的城市:"); /*输入航班的到达城市vh*/

gets(vh);

printf("航班费用:"); /*输入机票价格money*/

scanf("%f",&money);

getchar();

printf("起飞时间:"); /*输入航班的出发时间bt*/

scanf("%d:%d",&bt[0],&bt[1]);

getchar();

while(bt[0]<0||bt[0]>=24||bt[1]<0||bt[1]>=60)

{

printf("\n时间输入有误,请重新输入\n");

scanf("%d:%d",&bt[0],&bt[1]);

getchar();

}

printf("到达时间:"); /*输入航班的到达时间at*/

scanf("%d:%d",&at[0],&at[1]);

getchar();

while(at[0]<0||at[0]>=24||at[1]<0||at[1]>=60)

{

printf("\n时间输入有误,请重新输入\n");

scanf("%d:%d",&at[0],&at[1]);

getchar();

}

a[count].co=code; /*a 为程序头部定义的结构体*/

strcpy(a[count].vt,vt);

strcpy(a[count].vh,vh);

a[count].bt[0]=bt[0];

a[count].bt[1]=bt[1];

a[count].at[0]=at[0];

a[count].at[1]=at[1];

a[count].mo=money;

count++; /*计数值count+1*/

printf("继续输入?(Y/N)"); /*提示"是否要继续输入航班信息:"*/ scanf("%c",&flag);

getchar();

printf("\n");

}

if((fp=fopen("","wb"))==NULL) /*航班文件不能以读写形式打开*/

printf("\n无法打开文件!\n"); /*提示"无法打开文件"*/

fprintf(fp,"%d",count); /*将计数值count写入航班车文件*/

for(i=0;i

if(fwrite(&a[i],sizeof(struct arc),1,fp)!=1) /*无法将a[i]写入航班文件*/ printf("\n文件写入错误!\n"); /*提示"文件无法写入"*/

fclose(fp); /*关闭航班文件*/

}

void createtrainfile() /* 创建列车车次文档 */

{

int code,bt[2],at[2];

float money;

int i;

int count;

char vt[10],vh[10],flag;

FILE *fp;

flag='y';

count=0;

while(flag=='y'||flag=='Y')

{

printf("请输入列车车次的信息:\n");

printf("列车车次编号:");

scanf("%d",&code);

getchar();

printf("起始城市:");

gets(vt);

getchar();

printf("目的城市:");

gets(vh);

printf("车次费用:");

scanf("%f",&money);

getchar();

printf("发车时间:");

scanf("%d:%d",&bt[0],&bt[1]);

getchar();

while(bt[0]<0||bt[0]>=24||bt[1]<0||bt[1]>=60)

{

printf("\n时间输入有误,请重新输入\n");

scanf("%d:%d",&bt[0],&bt[1]);

getchar();

}

printf("到达时间:");

scanf("%d:%d",&at[0],&at[1]);

getchar();

while(at[0]<0||at[0]>=24||at[1]<0||at[1]>=60)

{

printf("\n时间输入有误,请重新输入\n");

scanf("%d:%d",&at[0],&at[1]);

getchar();

}

a[count].co=code;

strcpy(a[count].vt,vt);

strcpy(a[count].vh,vh);

a[count].bt[0]=bt[0];

a[count].bt[1]=bt[1];

a[count].at[0]=at[0];

a[count].at[1]=at[1];

a[count].mo=money;

count++;

printf("继续输入?(Y/N)");

scanf("%c",&flag);

getchar();

printf("\n");

}

if((fp=fopen("","wb"))==NULL)

printf("\n无法打开文件!\n");

fprintf(fp,"%d",count); for(i=0;i

if(fwrite(&a[i],sizeof(struct arc),1,fp)!=1)

printf("\n文件写入错误!\n");

fclose(fp);

}

int LocateVertex(ALGraph *G,char *v) /* 城市名在交通系统中定位操作,找出城市名在图中对应结点位置 */

{

int j,k;

j=-1;

for(k=0;kvexnum;k++)

if(strcmp(G->vertices[k].cityname,v)==0) /*第k个结点中的城市名与传过来的城市名相同*/

{

j=k; /*记录位置*/

break;

}

return(j);

}

void CreateGraph(ALGraph *G) /* 用city,plan,train三个文档创建城市交通系统 */

{

int i,j,k;

int arc_num;

int count1,count2;

int m,t;

ArcNode *p,*q;

FILE *fp;

i=0;

if((fp=fopen("","rb"))==NULL) /*打开城市文件,文件指针返回值为空*/

{

printf("\n无法打开文件!\n");

return;

}

while(!feof(fp)) /*文件不为空*/

{

fscanf(fp,"%10s",city[i]);

i++;

}

fclose(fp); /*关闭文件*/

j=0;

while(j

{

strcpy(G->vertices[j].cityname,city[j]);/*将 city[i] 中的内容复制到图的结构体的结点数组中;*/

G->vertices[j].planefirstarc=NULL; /* 图的结构体其他项赋初值;*/

G->vertices[j].trainfirstarc=NULL;

j++;

}

G->vexnum=i;

if((fp=fopen("","rb"))==NULL)

printf("\n无法打开文件!\n");

k=0;

fscanf(fp,"%d",&count1); /*打开航班信息文件""*/

while(k

{

if(fread(&a[k],sizeof(struct arc),1,fp)!=1)

printf("\n文件读入错误!\n");

k++;

}

fclose(fp); /*关闭文件*/

k=0; /*a的计数变量k=0*/

arc_num=0; /*弧的计数变量 arc_num=0*/

while(k

{

i=LocateVertex(G,a[k].vt);

/*调用函数 LocateVertex(G,a[k].vt)得到起始结点的位置 i*/

j=LocateVertex(G,a[k].vh);

/*调用函数 LocateVertex(G,a[k].vh)得到起始结点的位置 j*/

q=G->vertices[i].planefirstarc;

m=0;

while(q!=NULL)

{

if(q->adjvex==j) /*弧 q中的邻接顶点与j相等*/

{

t=q->+1; /* 将数组a[i] 中的内容都复制到弧q中*/

q->[t].number=a[k].co;

q->[t].expenditure=a[k].mo;

q->[t].begintime[0]=a[k].bt[0];

q->[t].begintime[1]=a[k].bt[1];

q->[t].arrivetime[0]=a[k].at[0];

q->[t].arrivetime[1]=a[k].at[1];

q->=t;

m=1;

break;

}

q=q->nextarc;

}

if(m==0)

{

p=(ArcNode*)malloc(sizeof(ArcNode)); /*开辟一个弧结点*/

p->adjvex=j;

/*将数组a[i]中的内容都复制到新的弧结点中*/

p->[0].number=a[k].co;

p->[0].expenditure=a[k].mo;

p->[0].begintime[0]=a[k].bt[0];

p->[0].begintime[1]=a[k].bt[1];

p->[0].arrivetime[0]=a[k].at[0];

p->[0].arrivetime[1]=a[k].at[1];

p->=0;

p->nextarc=G->vertices[i].planefirstarc;

G->vertices[i].planefirstarc=p; /* 将弧结点连接到适当的位置中去*/ arc_num++;

}

k++;

}

G->planearcnum=arc_num;

if((fp=fopen("","rb"))==NULL)

{

printf("\n无法打开文件!\n");

return;

}

k=0;

fscanf(fp,"%d",&count2); /*打开列车信息文件""*/

while(k

{

if(fread(&a[k],sizeof(struct arc),1,fp)!=1)

printf("\n文件读入错误!\n");

k++;

}

fclose(fp); /*关闭文件*/

k=0; /*a的计数变量k=0;*/

arc_num=0; /* 弧的计数变量 arc_num=0;*/

while(k

{

i=LocateVertex(G,a[k].vt);

/* 调用函数 LocateVertex(G,a[k].vt)得到起始结点的位置 i*/ j=LocateVertex(G,a[k].vh);

/* 调用函数 LocateVertex(G,a[k].vh)得到起始结点的位置 j*/ q=G->vertices[i].trainfirstarc;

m=0;

while(q!=NULL)

{

if(q->adjvex==j) /*弧 q中的邻接顶点与j相等*/

{

t=q->+1; /*将数组a[i] 中的内容都复制到弧q中*/

q->[t].number=a[k].co;

q->[t].expenditure=a[k].mo;

q->[t].begintime[0]=a[k].bt[0];

q->[t].begintime[1]=a[k].bt[1];

q->[t].arrivetime[0]=a[k].at[0];

q->[t].arrivetime[1]=a[k].at[1];

q->=t;

m=1;

break;

}

q=q->nextarc;

}

if(m==0)

{

p=(ArcNode*)malloc(sizeof(ArcNode)); /*开辟一个弧结点*/

p->adjvex=j; /*将数组a[i]中的内容都复制到新的弧结点中*/

p->[0].number=a[k].co;

p->[0].expenditure=a[k].mo;

p->[0].begintime[0]=a[k].bt[0];

p->[0].begintime[1]=a[k].bt[1];

p->[0].arrivetime[0]=a[k].at[0];

p->[0].arrivetime[1]=a[k].at[1];

p->=0;

p->nextarc=G->vertices[i].trainfirstarc;

G->vertices[i].trainfirstarc=p; /*将弧结点连接到适当的位置中去*/ arc_num++;

}

k++;

}

G->trainarcnum=arc_num;

}

int save(ALGraph *G) /* 保存城市交通系统到相应的文档 */

{

int i,j,k,t;

ArcNode *q;

FILE *fp;

j=0;

while(jvexnum)

{

strcpy(city[j],G->vertices[j].cityname);

j++;

}

i=0;

if((fp=fopen("","wb"))==NULL)

printf("\n错误,无法打开文件!\n");

while(ivexnum)

{

fprintf(fp,"%10s",city[i]);

i++;

}

fclose(fp);

k=0;

for(i=0;ivexnum;i++)

{

q=G->vertices[i].planefirstarc;

while(q!=NULL)

{

for(t=0;t<=q->;t++)

{

strcpy(a[k].vt,G->vertices[i].cityname);

strcpy(a[k].vh,G->vertices[q->adjvex].cityname); a[k].co=q->[t].number;

a[k].mo=q->[t].expenditure;

a[k].bt[0]=q->[t].begintime[0];

a[k].bt[1]=q->[t].begintime[1];

a[k].at[0]=q->[t].arrivetime[0];

a[k].at[1]=q->[t].arrivetime[1];

k++;

}

q=q->nextarc;

}

}

if((fp=fopen("","wb"))==NULL)

{

printf("\n无法打开文件!\n");

return 0;

}

i=0;

fprintf(fp,"%d",k);

while(i

{

if(fwrite(&a[i],sizeof(struct arc),1,fp)!=1) printf("\n文件写入错误!\n");

i++;

}

fclose(fp);

k=0;

for(i=0;ivexnum;i++)

{

q=G->vertices[i].trainfirstarc;

while(q!=NULL)

{

for(t=0;t<=q->;t++)

{

strcpy(a[k].vt,G->vertices[i].cityname);

strcpy(a[k].vh,G->vertices[q->adjvex].cityname); a[k].co=q->[t].number;

a[k].mo=q->[t].expenditure;

a[k].bt[0]=q->[t].begintime[0];

a[k].bt[1]=q->[t].begintime[1];

a[k].at[0]=q->[t].arrivetime[0];

a[k].at[1]=q->[t].arrivetime[1];

k++;

}

q=q->nextarc;

}

}

if((fp=fopen("","wb"))==NULL)

{

printf("\n无法打开文件!\n");

return 0;

}

i=0;

fprintf(fp,"%d",k);

while(i

{

if(fwrite(&a[i],sizeof(struct arc),1,fp)!=1)

printf("\n文件写入错误!\n");

i++;

}

fclose(fp);

return 1;

}

void cityedit(ALGraph *G) /* 显示城市编辑项目选择界面 */ {

int i;

printf("\n请选择城市编辑项目:\n");

printf("1=增加城市\n2=删除城市\n");

printf("选择?");

scanf("%d",&i);

getchar();

if(i==1)

EnterVertex(G);

if(i==2)

DeleteVertex(G);

}

void EnterVertex(ALGraph *G) /* 增加城市 */

{

char v[10],c;

int i;

printf("\n请输入新增城市的名称:");

gets(v);

i=LocateVertex(G,v);

if(i>=0&&ivexnum)

{

printf("\n错误!此城市已存在\n");

return;

}

else

{

printf("\n确认?(Y/N)");

c=getchar();

getchar();

if(c=='Y'||c=='y')

{

i=G->vexnum;

strcpy(G->vertices[i].cityname,v);

G->vertices[i].planefirstarc=NULL;

G->vertices[i].trainfirstarc=NULL;

G->vexnum=i+1;

save(G);

}

else return;

}

}

void DeleteVertex(ALGraph *G)

/* G是程序头部定义的结构体*/

/* 删除城市 */

{

int i,j,k,n;

char v[10],c;

ArcNode *p,*q,*m;

printf("\n请输入删除的城市:"); /*提示"输入删除城市名"*/

gets(v);

printf("\n确认?(Y/N)"); /*提示"是否确定要删除(Y/N)"*/

c=getchar();

getchar();

if(c=='Y'||c=='y')

{

n=0; /*0是记数标志,控制循环次数*/

while(nvexnum&&strcmp(G->vertices[n].cityname,v)!=0)

/*n<图G表头接点总个数&&图G的存储城市名与v不同,G表头结点总个数比实际大1*/

n++;

/*记数值n+1*/

if(n==G->vexnum) /*n==图G表头结点总个数*/

printf("\n错误!无法找到此城市!\n"); /*提示"无法找到此城市"*/

else

{

i=LocateVertex(G,v); /*利用G函数找到此城市名所处在G中位置*/

p=G->vertices[i].planefirstarc;

while(p!=NULL)

{

q=p;

p=p->nextarc;

free(q); /*删除从此结点出发的所有航班弧*/

}

p=G->vertices[i].trainfirstarc;

while(p!=NULL)

{

q=p;

p=p->nextarc;

free(q); /*删除从此结点出发的所有列车弧*/

}

for(j=i;jvexnum-1;j++)

{

strcpy(G->vertices[j].cityname,G->vertices[j+1].cityname);

/*将G第j个结点的信息依前移1位*/

G->vertices[j].planefirstarc=G->vertices[j+1].planefirstarc;

G->vertices[j].trainfirstarc=G->vertices[j+1].trainfirstarc;

}

G->vertices[j].planefirstarc=NULL; /*将G第j个结点的信息置空*/

G->vertices[j].trainfirstarc=NULL;

for(k=0;kvexnum-1;k++) /*以下是删除所有指向此结点的航班弧*/

{p=G->vertices[k].planefirstarc;

while(p!=NULL)

{

if(p->adjvex>i)

{

p->adjvex=p->adjvex-1;

q=p;

p=p->nextarc; /*p指向下一条飞机弧*/

}

Else

if(p->adjvex==i) /*该弧指向的顶点位置(p->adjvex )== i*/

{

if(p==G->vertices[k].planefirstarc) /*p指向图G中k结点的第一条飞机弧*/ {

m=p;

G->vertices[k].planefirstarc=p->nextarc;

/*将图G中k结点的第二条飞机弧改为第一弧*/

p=p->nextarc; /*p指向下一条飞机弧*/

free(m); /*释放(m)*/

}

Else

{

q->nextarc=p->nextarc; /*将p的下一条弧赋给q的下一条弧*/

m=p;

p=p->nextarc; /*p指向下一条飞机弧*/

free(q); /*释放(q)*/

}

}

Else

{

q=p;

p=p->nextarc; /*p指向下一条飞机弧*/

}

}

}

for(k=0;kvexnum-1;k++) /*以下是删除所有指向此结点的列车弧*/

{

p=G->vertices[k].trainfirstarc; /*p指向图G中k结点的第一条列车弧*/ while(p!=NULL)

{

if(p->adjvex>i) /*该弧指向的顶点位置(p->adjvex)>i */

{

p->adjvex=p->adjvex-1; /*将该弧指向顶点位置-1*/

q=p;

p=p->nextarc; /*p指向下一条列车弧*/

}

Else

if(p->adjvex==i) /*该弧指向的顶点位置(p->adjvex)==i*/

{

if(p==G->vertices[k].trainfirstarc)/*p指向图G中k结点的第一条列车*/ {

m=p;

G->vertices[k].trainfirstarc=p->nextarc;

/*将图G中k结点的第二条列车弧改为第一弧*/

p=p->nextarc;

free(m);

}

Else

{

q->nextarc=p->nextarc;

城市智能交通系统ITS总体设计

城市智能交通系统ITS总体设计

目录 背景及需求 (3) 形势与背景 (3) 规划定位 (4) 规划目标 (5) 系统总体设计 (8) 城市智能交通总体建设规划 (8) 围绕六大业务核心开展ITS子系统建设 (9) 以人为本开展交通信息交换平台建设 (18)

背景及需求 形势与背景 机动车出行需求不断增加,时间与空间分布模式转变公众机动车出行需求不断增加、时间与空间分布模式转变、交通拥堵范围与程度扩大,需要ITS构建宏观调控手段。 城市化进程加快,交通建设与管理并重 城市化进程加快,交通建设与管理并重,在大规模进行城市交通基础设施建设的同时,需要ITS软环境为城市交通可持续发展提速。 打击多样化交通违法行为,维持交通管理秩序面对日益严峻的交通管理需求,通过开展多种专项整治活动,打击机动车闯红灯、行人闯红灯、机动车斑马线不礼让行人、非法占用公交车道、道路逆行压线等行为,规范出行交通新秩序。 打造绿色交通、节能减排的人居城市 打造绿色交通、节能减排的人居城市,引进先进的IT手段,通过交通物联网等技术,缓解交通拥堵、提高出行效率、减少交通事故、降低交通污染,实现“智慧交通、低碳出行”。 ITS信息服务体系形成新架构 城市交通信息服务,借鉴国外先进经验,提出“智慧交通、低碳出行、感知全程”的公众出行服务理念,全力打造城市ITS信息服务体系新架构。

构建人性化执法服务环境,合理规划勤务信息以人为本,构建人性化执法服务环境,确保道路执勤、执法、现场事故处理等工作的安全、严谨和规范性,并做到“警力跟着警情走”,合理规划勤务信息。 规划定位 强化指挥中心职能,紧密围绕“六大业务核心”开展城市ITS建设 指挥中心智能交通信息平台,作为城市ITS发展的基础,其依托作用是显而易见的。城市ITS建设将依托指挥中心智能交通信息平台,围绕秩序管理、事故管理、路网管理、特勤任务、交通肇事逃逸追捕、城市交通服务这六大业务核心,建设交通运行指挥中心、交通监管指挥中心、城市交通信息管理服务中心;建设/改造15个子系统,即交通固定点监视系统、交通制高点监视系统、交通违法手动抓拍系统、车辆监测及参数采集系统、交通事件视频检系统、公路车辆智能监测记录系统、闯红灯自动记录系统、违法占用公交车道监测记录系统、城市道路违法停车监测记录系统、机动车超速监测记录系统、机动车区间测速系统、人行横道智能监测系统、动态交通诱导系统、交通信号控制系统、执法车辆车载取证系统执法系统。 依托城市已建成及规划格局,细分业务重点,构筑城市ITS感知网格 城市ITS感知网格的合理建设,依托于对城市已建成及规划格局的深入解读,综合考虑城市出入口、工业聚集区、商业聚集区、市民居住聚集区、道路分布、铁路分布、水路分布、客(货)运交通枢纽、建筑物空间分布及高度等因素,同时结合城市发展历史,不同阶段的发展需求和侧重点,进行科学的点位设置和前端感知设备类型选择,构筑“点、线、面、空”多维度一体的城市ITS动态感

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

课程设计报告 课程名称数据结构课程设计 课题名称交通咨询系统 专业通信工程 班级通信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.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模 块的功能。

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

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),

智能交通建设系统总体设计

智能交通建设系统总体设计 1.1 总体设计原则 在本次系统的总体设计中,要求在总结同类型项目建设经验的基础上,统筹规划,将遵循以下总体设计原则。 ?标准性 本系统与其它应用系统和数据库之间存着大量的数据交互,因此强调信息系统的标准化,系统应保证与现行业务系统实现有效的衔接,实现信息的共享和集成。在系统建设中将遵循各类业界标准,从数据结构、技术架构、数据库存储等多个方面标准化建设。 ?先进性 采用当前成熟且先进的技术,保持系统硬件、软件、技术方法和数据管理的先进性,保证系统建成后在技术层次上3~5年内不落后。同时具有较强的可移植性、可重用性,在将来能迅速采用最新技术,以长期保持系统的先进性。 ?可靠性 一是以可靠的硬件、成熟的软件产品为基础,结合具体需求进行配置、定制和二次开发的方式进行实施,保证有效缩短项目实施时间,降低项目实施的风险。 二是系统应能够支持较大并发用户同时进行浏览、操作等与数据库的交互式的操作,并且相对占用较少的硬件资源。当意外事件发生时,能通过快速的应急处理,实现故障

修复,保证数据的完整性,避免丢失重要数据。 三是系统应具有较强的应变能力和容错能力,确保系统在运行时反应快速、安全可靠。 ?安全性 一是保证系统的安全性。首先,选择先进、可靠的主流硬件产品和成熟、领先的软件产品构建系统,为系统的安全性奠定良好的基础;其次,必须考虑到各种特殊情况下的恢复机制和备份机制,以保证数据的一致性、完整性以及灾难恢复;再次,严格管理制度,为系统安全性提供制度保证。 二是完整的权限控制机制、考虑充分的系统保密措施也是保证安全的重要因素。需依据信息访问权限,向用户提供授权查询,有效避免越权使用。 系统后台用户分层次管理,并且具有可灵活调整、可细分的权限控制。可对信息内容进行严格的角色权限管理,保证每个用户能够看到且只能看到自己权限范围内的所有信息。对系统的管理操作有详实的历史记录。 ?扩展性 系统真正符合多层浏览器/服务器体系结构,不仅基于当前的需求,而且应保证在系统的体系结构不需做较大改变的前提下,实现今后的平滑升级。主要包括以下几个层次:数据的扩展:可以利用可视化的工作界面,进行数据的添加,或通过数据库管理工具,创建新的数据库、词典。 应用的扩展:考虑到和其它信息系统的连接,系统应具有良好的外接接口,将来随着业务的不断扩充,整个系统中应能够方便地添加新的业务模块;利用开放标准的应用开发接口可以进行更加个性化的二次应用开发。 ?易用性 系统应具有一致的、友好的客户化界面,易于使用和推广,并具有实际可操作性,使用户能够快速地掌握系统的使用。除特殊的、必须的应用外,用户终端全部采用浏览器方

数据结构课程设计交通咨询系统设计(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 模块调用示意图)

模拟交通灯 毕业设计

毕业设计 题目模拟交通灯 系别电气工程系 专业电气自动化技术 班级电气0801班 姓名 学号 指导教师 日期 2010年12月

设计任务书 设计题目: 模拟交通灯 设计要求: 1.用单片机组成模拟交通灯系统,设计硬件电路及相应软件。 2.在十字路口的两个方向上各设一组红绿黄灯,显示顺序为:其中一个方向是绿灯、黄灯、红灯,另一个方向是红灯、绿灯、黄灯。 3.设置一组数码管,以倒计时的方式显示允许通过或禁止通行的时间,其中左转灯、绿灯、黄灯、红灯的持续时间分别是15S、30S、3S、48S。 4.当各条路上任意一条出现特殊情况,例如消防车、救护车或其他需要优先放行的车辆时,各方向上均是红灯亮,倒计时停止,且显示数字在闪烁,当特殊运行状态结束后,控制器恢复原来状态,继续正常运行。 设计进度要求: 第一周:确定题目,查阅有关资料; 第二周:查阅资料,收集资料; 第三周:列出设计思路; 第四周:硬件电路的设计; 第五周:软件程序的设计; 第六周:软件程序的仿真与调试; 第七周:打印毕业论文; 第八周:毕业答辩 指导教师(签名):

摘要 设计以单片机为核心部件的模拟交通灯,利用74LS244作为断码驱动器,74LS07作为位码驱动,LED七段数码管作为计时显示用,用发光二极管指示交通的通行,用按键进行紧急事件的发生,使两个方向都亮红灯,绿灯亮通行,红灯亮停止通行。 本设计利用定时器进行定时,使定时器工作于方式一定时50ms,配合软件计数器,调用中断程序使定时器定时20次,达到定时1S的目的,同时调用显示程序,显示到计时的时间,用单片机Intel89S51作为核心部件,8路74LS244总线驱动器作为字形驱动芯片和6路驱动74LS07位选码作为中心器件来设计交通灯控制器,实现了交通灯的控制,显示时间直接通过89S51的P0、P1口输出;交通灯信号通过P3口输出;本交通灯系统简单,实用性强,成本低,使用维护方便,软件功能强,运行稳定可靠等优点。 关键词:单片机,交通灯,位码,段码,显示

汇编语言交通灯

设计报告 一、设计方法: 1、通过老师上课讲的内容及要求来设计。 2、开始时可跟着老师走从基础使用4094实现倒计时开始一步一 步实现。 3、实现基础部分后我们就可按着自己的思路结合单片机的学习 从而一步一步实现整个功能。 二、设计思路: 1、首先在实现整个功能之前我并不清楚自己要设计的界面应是什么 样子的,我从最基本的开始先学会使用4094实现一位倒计时,然 后使用4094实现两位倒计时,实现了两位倒计时之后基本上就可 以实现四个路口的倒计时显示。 2、完成基本型后就要想办法如何才能实现在线修改参数,且按照新 的参数执行,而且参数用什么来设置等等,通过单片机的学习我 想到了用中断方式的方法来实现,且在中断里来调用子程序来设 置参数,并选用了键盘来设置参数。因为单片机里已学过键盘子 程序,现在再来使用这样的键盘,虽比单片机里学过的4*4键盘 复杂点,但总不会太难了。就这样一步一步按照自己的思路完成。 3、以上实现后,我们也可多加些按键来控制暂停、复位、行人按键 等等,而这些在完成以上功能后再来实现它们就会很容易了。 流程图:

三、选择的芯片: AT89C51、4094、KEYPAD-PHONE、LED-GREEN、LED-RED、LED-YELLOW、TSEG-COM-AN-GRN、3WATT100R、BUTTON 四、硬件设计:

五、软件设计: 1、部分代码: ;30H、34H、35H主干道红、绿、黄灯,33H、31H、32H支干道红、绿、黄灯,修改用外部中断 ORG 0000H LJMP MAIN ORG 0003H ;复位中断入口地址 LJMP FW ORG 0013H ;修改参数中断入口地址 LJMP XG ORG 0030H MAIN:MOV 30H,#50 MOV 31H,#30

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

目录 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 设计思想 用邻接矩阵来存储交通网络图的信息,运用迪杰斯特拉算法实现图上单源最短路径问题,然后运用费洛伊德算法实现图中任意一对顶点间最短路径问题,这样就会实现交通咨询系统设计的问题。

模拟交通灯课程设计

《单片机微机原理及应用》 题目:模拟交通灯的设计 专业:测控技术与仪器 班级: 姓名: 姓名: 姓名: 姓名: 指导老师: 2015年1月10日

目录 1、设计任务 (3) 2、模拟交通灯控制系统工作原理 (4) 2.1 模拟交通灯控制系统的工作原理 (4) 3、设计基本要求和步骤 (5) 3.1 基本要求 (5) 3.2 设计思路 (5) 3.2 设计步骤 (5) 4、硬件和软件设计 (7) 4.1 交通灯控制系统硬件框图 (7) 4.2 硬件电路图 (9) 4.3 程序流程图 (10) 5、心得体会 (13) 6、附录 (14) 5.1 汇编语言源程序 (14) 5.2 模拟交通灯仿真效果图 (18)

1、设计任务:模拟交通灯的设计 1.1、模拟交通灯控制系统的总体方案设计 本设计研究的是基于AT89C51单片机的交通灯智能控制系统的设计原理及阐述。主控系统采用AT89C51单片机作为控制器,控制通行倒计时及直行、行人的通行,占用端口少,耗电也最小。系统电源采用独立的+5V稳压电源,有各种成熟电路可供选用,使此方案可靠稳定。该设计精简并优化了电路。结合实际情况,显示界面采用点阵LED数码管动态扫描的方法,满足了倒计时的时间显示输出和状态灯提示信息输出的要求,减少系统的复杂度。

2、交通灯控制系统工作原理 2.1、交通灯控制系统工作原理 本系统运用单片机对交通灯控制系统实施控制,通过直接控制信号灯的状态变化,指挥交通的具体运行,运用了LED数码管显示倒计时以提醒行驶者,更添加了盲人提示音电路,方便视力障碍群体通行,更具人性化。在此基础上,加入了特种车辆自动通行控制模块和车流量检测电路为系统采集数据,经单片机进行具体处理,及时调整通行方向。由此,本设计系统以单片机为控制核心,构成最小系统,根据特种车辆自动通行控制模块、车辆检测模块和按键设置模块等产生输入,由信号灯状态模块,LED倒计时模块输出。系统进入工作状态,LED数码管实时显示数据倒计时,执行交通灯状态显示控制,在此过程中若有控制信号和实时车流量检测信号,可对异常状态进行实时控制,随时调用中断,达到修正通行时间满足不同时间不同路况的需求。

城市路口交通灯设计.

城市路口交通灯设计 摘要 随着社会经济的发展,城市交通问题越来越引起人们的关注,人、车、路三者关系得和谐已成为交通治理部分必需要解决的主要问题之一,本交通灯设计系统用于对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。 本设计主要为实现一款带时间自主修改功能的多功能交通灯。本文选定了采用单片机技术实现交通灯功能,本设计应用AT89C51芯片作为核心,CD4511芯片作为显示芯片驱动,详细介绍了Atmel公司的AT89C51单片机的性能和特点,以及CD4511原理和特性,指出了交通灯设计系统的思路和所需考虑的问题,详细描述了交通灯系统的硬件、软件设计以及系统仿真调试过程等。该设计的优点是电路简单、性能可靠、实时性好、时间精度高,操作简单,可广泛应用于各个交通要道。 关键词:单片机,交通灯,控制器

The Design of Traffic Light in the City Abstrac t:This design is mainly for realizing a paragraph of time the independent modify functions with multi-function traffic. This paper adopts single-chip microcomputer selected technologies to realize this design, lights function AT89C51 chip as the core, CD4511 chip as display chip drive, introduces in detail the AT89C51 Atmel company performance and characteristics of CD4511 principle and characteristics, and lights design system, points out the idea and the problems needed to consider the advantages of this method is reliable in performance, simple circuit, good real-time, high precision time, simple operation. And widely used in various hubs. When entering adjustment function can add, subtract function operation, in order to achieve timing function, thus can undertake traffic lights countdown system. When the timing Settings, system through the AT89C51 control things, sn of traffic light real-time status. Eight LED digital tube will show countdown time, time display format for: ten - bytes; And have real-time display current countdown time functions Keyword: a single-chip microcomputer, the lights, controller, design, realization

交通咨询系统设计报告

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

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

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

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

城市智能交通系统总体设计

城市智能交通系统总体设计·ITS 目录 背景及需求4 形势与背景4 机动车出行需求不断增加,时间与空间分布模式转变4 城市化进程加快,交通建设与管理并重4 打击多样化交通违法行为,维持交通管理秩序4 打造绿色交通、节能减排的人居城市4

ITS信息服务体系形成新架构4 构建人性化执法服务环境,合理规划勤务信息5 规划定位5 强化指挥中心职能,紧密围绕“六大业务核心”开展城市ITS建设5 依托城市已建成及规划格局,细分业务重点,构筑城市ITS感知网格5 “打基础、上业绩、出成效”三年三大步,合理推进城市ITS进程6 以人为本,推进人、车、路、环境协同发展6 规划目标6 提升全城路网实时态势监控和交通秩序监管水平6 打造全城一体的城市智能交通数据中心6 提升交通管理分析的智能化程度,加强涉牌违法目标车辆的打击能力7 提升应急指挥协作水平,加强应急处突综合调度能力7 提升道路科学辅助决策能力,优化路网渠化、信号配时等交通管理措施7 增加互联网+智能交通应用,增加道路交通信息交互能力,提升城市交通形象8 提高系统运维和数据运维的自主分析能力,提高智能交通系统健壮性8 提升业务需求迅速转换为实际系统建设落地的能力,打造城市交通管理亮点8 系统总体设计9 城市智能交通总体建设规划9 围绕六大业务核心开展ITS子系统建设10 以人为本开展交通信息交换平台建设18

背景及需求 形势与背景 机动车出行需求不断增加,时间与空间分布模式转变公众机动车出行需求不断增加、时间与空间分布模式转变、交通拥堵范围与程度扩大,需要ITS构建宏观调控手段。 城市化进程加快,交通建设与管理并重 城市化进程加快,交通建设与管理并重,在大规模进行城市交通基础设施建设的同时,需要ITS软环境为城市交通可持续发展提速。 打击多样化交通违法行为,维持交通管理秩序面对日益严峻的交通管理需求,通过开展多种专项整治活动,打击机动车闯红灯、行人闯红灯、机动车斑马线不礼让行人、非法占用公交车道、道路逆行压线等行为,规范出行交通新秩序。 打造绿色交通、节能减排的人居城市 打造绿色交通、节能减排的人居城市,引进先进的IT手段,通过交通物联网等技术,缓解交通拥堵、提高出行效率、减少交通事故、降低交通污染,实现“智慧交通、低碳出行”。 ITS信息服务体系形成新架构 城市交通信息服务,借鉴国外先进经验,提出“智慧交通、低碳出行、感知全程”的公众出行服务理念,全力打造城市ITS信息服务体系新架构。

汇编语言交通灯控制系统设计

交通灯控制系统 一、设计要求 1.东西方向车辆放行60秒钟。即东西方向的绿灯和南北方向的红灯同时点亮1分钟; 2.1分钟后,东西方向的黄灯闪烁5秒钟,以警示车辆将切换红绿灯。此时南北方向仍维持红灯点亮。在南北方向亮红灯期间,在2位数码管上显示计数值(每秒减1),从60减为0。 3.东西方向的黄灯闪烁5秒钟后,转为南北方向放行20秒钟。即东西方向的红灯和南北方向的绿灯同时点亮20秒钟; 4.南北方向放行20秒钟后,转为南北方向的黄灯闪烁5秒钟,以警示将切换红绿灯。此时东西方向仍维持红灯点亮。 5.南北方向的黄灯闪烁5秒钟后,再转为东西方向车辆放行1分钟。如此循环重复。 二、设计目的 ⒈了解交通灯管理的基本工作原理 ⒉熟悉8259A中断控制器的工作原理和应用编程 ⒊熟悉8255A并行接口的各种工作方式和应用 ⒋熟悉8254计数器/定时器的工作方式及应用编程,掌握利用软硬件相结合定时的方法 ⒌掌握多位LED显示问题的解决 三、程序设计流程图 主程序流程图,如下图所示。 装入计数初值

四、总体设计和电路图 Ⅰ.芯片选择及端口选择 1.用实验系统8255A实现对信号灯的控制(所用端口自定);2位数码显示用8255A实现控制。 2. 用实验系统8254的计数器2定时向实验系统主片8259A的IRQ7请求中断,以实现要求的1分钟、5秒钟和20秒的定时。实验系统8254的计数器2的CLK2接OPCLK,频率为1.19318MHZ;GATE2已接 +5V;定时采用软硬件相结合的方式实现。 ⒊用实验系统的发光二极管模拟红绿灯。 注:8259A的端口地址为:218H、219H 8255A的端口地址为:端口A-200H、端口B-201H、端口C-202H、控制端 口-203H

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

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

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

交通灯毕业设计 摘要

中文摘要 传统的交通灯控制系统大多是由数字电路来实现的,交通灯控制系统稳定性可靠性与抗干扰能力较差,随着社会经济的发展,数字电路交通灯越来越不能满足日益增长的交通压力,因此必须寻求一种新的方法来取代这种复杂而工作不稳定的控制系统。 随着科技的发展,可编程控制器(PLC )的功能日益完善,可编程控制器已作为一种以微电脑技术为核心的自动控制装置,已被广泛应用于机械制造、冶金、化工、能源等各种行业。它可靠性高、功能完善、抗干扰能力强,具有结构简单、重量轻等优点,是一种用于工业环境及过程控制的数字运算操作的电子系统。采用PLC控制交通信号灯,主要是考虑其具有对使用环境适应性强的特性,同时其内部定时器资源十分丰富,可对目前普遍使用的“渐进式”信号灯进行精确控制,特别是方便地实现多岔路口的控制。由于PLC本身具有通信联网功能,可将同一条道路上的信号灯组成一局域网进行统一调度管理,可缩短车辆通行等候时间,实现科学化管理。 在实际应用中,采用PLC控制城市交通信号灯,能根据不同的路况要求,随时修改控制程序,以改变各信号灯的工作时间和工作状况。与继电器或逻辑电路控制系统相比,PLC控制系统具有更高的可靠性、灵活性和经济实用性。本论文就是运用PLC原理来实现对十字路口的交通灯的控制,介绍了基于PLC 在交通系统的运用,系统介绍了PLC的基本原理。

关键词:交通灯控制系统;可编程控制器(PLC);十字路口;科学化管理;稳 定性;可靠性 ABSTRACT The traditional traffic control system is mostly by digital circuit, traffic control system stability reliability and anti-interference ability is bad, With the development of society and economy, and digital circuit traffic lights to meet the growing traffic pressure, therefore, must seek a new method to replace the complex and working stability of the control system. With the development of science and technology, the programmable logic controller (PLC) function, the programmable controller has, as a kind of microcomputer technology as the core in automatic control equipment, has been widely used in mechanical manufacturing, metallurgy, chemical, energy, etc. It has high reliability, complete functions, strong anti-jamming capability, with simple structure, light weight, it is a kind of process control for industrial environment and the number of operating system. PLC control traffic lights, mainly is for use with the consideration of the characteristics of strong adaptability to environment, and its internal timer resources are very rich, but for now the widespread use of "progressive" light accurately control, particularly easily realize more control of the cross-roads. Because of PLC network communication function, has the same path can be composed of a

智能交通系统设计方案

智能交通系统设计方案 随着经济建设的日新月异,经济的迅猛发展,现有的机动车和驾驶员增长快速与城市道路信息化管理建设的相对滞后,造成了现有的交通管理模式与急剧增长的交通需求不相适应,给公安交通管理部门带来了严峻的挑战,因此,建设智能交通信息化系统,为城市的经济发展增添后劲,切实解决城市的投资环境,制定城市现代化交通管理规划,采用先进的技术手段,实现科学管理已成为城市交通管理建设的当务之急。 目录 1.智能交通系统的目标 2.智能交通系统案例展示 3.智能交通系统的应用 1.智能交通系统的目标 智能交通系统(ITS)应用在城市交通中主要体现在微观的交通信

息采集、交通控制和诱导等方面,通过提高对交通信息的使用和管理来提高交通系统的效率,主要是由信息采集输入、策略控制、输出执行、各子系统间数据传输与通信等子系统组成。信息采集子系统通过传感器采集车辆和路面信息,策略控制子系统根据设定的目标运用计算方法(例如模糊控制、遗传算法等)计算出较好的方案,并输出控制信号给执行子系统(一般是交通信号控制器),以引导和控制车辆的通行,达到预设的目标。所谓智能交通,主要是通过综合手段,对城市道路通行进行智能化管理,包括根据通行情况实时指挥车辆通行顺序、疏导道路拥堵的智能化交通拥堵解决方案。 2.智能交通系统案例展示 “全国公路出行信息服务系统升级改造”项目,是基于英唐众创

方案公司研发的地图数据,整合多源交通出行信息数据、路网运行信息、高速公路运行信息、气象信息等各类动态信息,完成全国城际与主要城市交通流信息汇聚。全国公路出行信息服务系统的建成,将满足公众的出行信息服务需求;全国公路交通地理信息系统,将提供权威的电子地图服务;多源交通信息数据自动接入的实现,将完成全国城际与主要城市交通流信息的汇聚。 3.智能交通系统的应用 智能交通系统在充分整合、简化公安交警现有业务流程基础上,将先进的信息技术、数据通信技术、电子控制技术及计算机处理技术等综合运用于地面交通管理,建设面向交警业务,具备交通管理数据采集与分析、交通控制、交通管理辅助决策等功能的智能交通系统,

相关主题
文本预览
相关文档 最新文档