文档库 最新最全的文档下载
当前位置:文档库 › 交通咨询系统 数据结构课程设计报告

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

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

中北大学

数据结构

课程设计报告

2011年1月6日

1.设计目的

《数据结构》课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。进行数据结构课程设计要达到以下目的:

?了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;

?初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;

?提高综合运用所学的理论知识和方法独立分析和解决问题的能力;

训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

2.设计内容和要求

设计内容:

设计一个交通咨询系统,能让旅客咨询从任一个城市定点到另一个城市定点之间的最短路径或最低花费或最少时间等问题。对于不同的咨询要求、可输入城市间的路程或所需时间或所需花费。

设计要求:

(1)建立交通网络网的存储结构。

(2)总体设计要画流程图。

(3)提供程序测试方案。

(4) 注意程序的实用性、安全性;

3.本设计所采用的数据结构

函数的基本功能,结构体的应用,文件的运用,数组的运用,

4.功能模块详细设计

交通咨

询系统

管理员用户

添加城市删除城市查询最小

耗费路线查询最短

时间路线

查询城市

所有路线

退出

添加交通

路线删除交通

路线

返回上一

级菜单

返回上一

级菜单

该图为主界面,选择序号即可进入所需界面。进入管理员界面需经过身份验证,输入用户名和密码,本程序用户名和密码均为123456。

此图为管理员界面,这是添加交通路线的例子。

此图为删除交通路线的例子。

此图为已输入的火车路线的保存文件。第一个数字表示的是火车路线总数,城市文件和飞机路线文件同此文件类似。

此图为查询火车最小耗费路线。这是两地之间无中转站的例子。

此图为查询火车最小耗费路线时两地之间有中转站的例子。飞机路线查询同此。

此图为查询最短时间路线。此为两站中无中转站的例子。有中转站和飞机路线同最小耗费路线的图类似。

此图为查询城市所有路线。此为查找北京所有火车的例子。程序中所用到的时刻表:

4.1 详细设计思想

本系统进入时需要选择您的身份:管理员或用户。

(1)管理员:

要进入管理员界面,首先需要输入用户名和密码。为本系统方便使用,用户名和密码都默认为123456。输入正确的用户名和密码后,即可进入管理员界面,若输入错误,则退回主界面。

管理员界面有5个选项:添加城市、删除城市、添加交通路线、删除交通路线、返回上一级菜单。添加城市和删除城市只需输入城市名即可删除该城市,添加交通路线需要输入起始站城市名、终点站城市名、选择交通工具、火车(飞机)班次、起始时刻、到达时刻和票价,删除交通路线需输入班次。若添加信息成功,会显示“系统信息输入成功!”,若输入选择序号错误,会显示“选择序号错误!请重新选择!”。返回上一级菜单是返回主界面。

输入的信息会分别写入city.txt,train.txt,flight.txt中,用户查询路线时会从文件中读入。

(2)用户:

用户界面有4个选项:查询最小耗费路线、查询最短时间路线、查询城市所有路线、返回上一级菜单。查询最小耗费和最短时间是一个图的最短路径问题,因此用迪杰斯特拉(Dijkstra)算法按路径长度递增的顺序逐步产生最短路径的方法。

最小耗费的编程思想如下:先设置一个二维数组,第一个下标放置城市编号,第二个下标为第一个下标城市中花费最小的终点站城市编号,数组放置的数据为所需要的花费。先判断初始城市和终点城市是否在交通路线中,再设置一个数组,将已找到的最小花费的城市放入这个数组。初始状态时,该数组只包含初始城市,然后不断的选取到该城市花费最小的路线加入数组中,直至找到终点城市。这就是迪杰斯特拉算法。最短时间的路线也是用此算法计算的。

查询城市所有路线需要输入所要查询的城市名和选择交通工具,可显示该城市中所选交通工具的所有路线。

4.2 详细设计

#include "stdafx.h"

#include

#include

#define Dij_MAXN 33

#define MAX_VERTEX_NUM 31

#define MAX_STRING_NUM 10

#define MAX_TRAFFIC_NUM 10

typedef short int CityType;

typedef struct TrafficNode

{

char name[MAX_STRING_NUM]; //班次

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];

} VNodeDat;

typedef struct PNode

{

int City;

int TraNo;

} PNodeDat;

char CityName[MAX_VERTEX_NUM][MAX_STRING_NUM]; //城市名,采用第一下标为该城市在本程序中的编号

int CityNum; //城市数目

VNodeDat AdjList[MAX_VERTEX_NUM]; //下标所在城市的线路

PNodeDat Path[MAX_VERTEX_NUM]; //存储临时最小时间路径

PNodeDat MinPath[MAX_VERTEX_NUM]; //存储搜索到当前的最小时间路径

int MinTime,StartTime;

int curPath;

int SeekCity(char *name)

{

//查找城市

int i;

for(i=0;i

if(strcmp(name,CityName[i])==0)

return i;

return -1;

}

int SaveFile()

{

//将火车飞机交通信息写入文件

FILE *fp;

int i,j,total;

if((fp=fopen("city.txt","wb"))==NULL)

{printf("\n\t无法打开文件!\n"); return -1;}

fprintf(fp,"%d\n",CityNum);//在city文件中输入城市总数

for(i=0;i

fprintf(fp,"%s\n",CityName[i]);//再输入城市名

fclose(fp);

total=0;

if((fp=fopen("train.txt","wb"))==NULL)

{printf("\n\t无法打开文件!\n"); return -1;}

for(i=0;i

total+=AdjList[i].TrainNum;

fprintf(fp,"%d\n",total);//在train文件中输入火车总数

for(i=0;i

for(j=0;j

{

fprintf(fp,"%s %s %s ",AdjList[i].Train[j].name,CityName[i],

CityName[AdjList[i].Train[j].EndCity]);

//输入火车车次,始发站和终点站

fprintf(fp,"%2d:%2d %2d:%2d %d\n",AdjList[i].Train[j].StartTime/60, AdjList[i].Train[j].StartTime%60,

AdjList[i].Train[j].StopTime/60,

AdjList[i].Train[j].StopTime%60,

AdjList[i].Train[j].Cost);//输入发车时间和到站时间和费用}

fclose(fp);

total=0;

if((fp=fopen("flight.txt","wb"))==NULL)

{printf("\n\t无法打开文件!\n");return -1;}

for(i=0;i

total+=AdjList[i].FlightNum;

fprintf(fp,"%d\n",total);//在flight文件中输入飞机总数

for(i=0;i

for(j=0;j

{

fprintf(fp,"%s %s %s ",AdjList[i].Flight[j].name,CityName[i],

CityName[AdjList[i].Flight[j].EndCity]);

//输入飞机航班号,始发站和终点站

fprintf(fp,"%2d:%2d %2d:%2d %d\n",AdjList[i].Flight[j].StartTime/60, AdjList[i].Flight[j].StartTime%60,

AdjList[i].Flight[j].StopTime/60,

AdjList[i].Flight[j].StopTime%60,

AdjList[i].Flight[j].Cost);//输入起飞时间,到达时间和费用}

fclose(fp);return 1;

}

int InsertCity(char *Name)

{

//添加城市

strcpy(CityName[CityNum],Name);

AdjList[CityNum].city=CityNum;//设置城市编号

AdjList[CityNum].FlightNum=0;

AdjList[CityNum].TrainNum=0;//新增城市火车数和飞机数初始为零

CityNum++;//城市总数加1

return 1;

}

int DelCity(char *Name)

{

//删除城市

int city,i,j;

city=SeekCity(Name);

for(i=city;i

{

strcpy(CityName[i],CityName[i+1]);

AdjList[i].FlightNum=AdjList[i+1].FlightNum;AdjList[i].TrainNum=AdjList[i+1 ].TrainNum;

for(j=0;j

{

AdjList[i].Flight[j].Cost=AdjList[i+1].Flight[j].Cost;

AdjList[i].Flight[j].EndCity=AdjList[i+1].Flight[j].EndCity;

strcpy(AdjList[i].Flight[j].name,AdjList[i+1].Flight[j].name);

AdjList[i].Flight[j].StartTime=AdjList[i+1].Flight[j].StartTime;

AdjList[i].Flight[j].StopTime=AdjList[i+1].Flight[j].StopTime;

}

}

CityNum--;return 1;

}

int InsertTrain(char *train,char *StartCity,char *EndCity,int StartTime,int EndTime,int cost)

{

//添加火车路线

int i,j;

i=SeekCity(StartCity);j=SeekCity(EndCity);

AdjList[i].Train[AdjList[i].TrainNum].Cost=cost;AdjList[i].Train[AdjList[i] .TrainNum].EndCity=j;

AdjList[i].Train[AdjList[i].TrainNum].StartTime=StartTime;

AdjList[i].Train[AdjList[i].TrainNum].StopTime=EndTime;

strcpy(AdjList[i].Train[AdjList[i].TrainNum].name,train);

AdjList[i].TrainNum++;return 1;

}

int InsertFlight(char *flight,char *StartCity,char *EndCity,int StartTime,int EndTime,int cost)

{

//添加飞机路线

int i,j;

i=SeekCity(StartCity);j=SeekCity(EndCity);

AdjList[i].Flight[AdjList[i].FlightNum].Cost=cost;AdjList[i].Flight[AdjList [i].FlightNum].EndCity=j;

AdjList[i].Flight[AdjList[i].FlightNum].StartTime=StartTime;

AdjList[i].Flight[AdjList[i].FlightNum].StopTime=EndTime;

strcpy(AdjList[i].Flight[AdjList[i].FlightNum].name,flight);

AdjList[i].FlightNum++;

return 1;

}

int DelPath(char *name)

{

//删除路线

int i,j,flag=0;

for(i=0;i

{

for(j=0;j

if(strcmp(AdjList[i].Flight[j].name,name)==0)

{

flag=1;break;//找到要删除的路线,找到跳出for循环

}

if(flag)

{

for(;j

{

AdjList[i].Flight[j].Cost=AdjList[i].Flight[j+1].Cost;

AdjList[i].Flight[j].EndCity=AdjList[i].Flight[j+1].EndCity;

strcpy(AdjList[i].Flight[j].name,AdjList[i].Flight[j+1].name);

AdjList[i].Flight[j].StartTime=AdjList[i].Flight[j+1].StartTime;

AdjList[i].Flight[j].StopTime=AdjList[i].Flight[j+1].StopTime;

}

AdjList[i].FlightNum--;break;//将要删除路线后面的路线全部向前移,并将总数减1

}

for(j=0;j

if(strcmp(AdjList[i].Train[j].name,name)==0)

{flag=1;break;}

if(flag)

{

for(;j

{

AdjList[i].Train[j].Cost=AdjList[i].Train[j+1].Cost;

AdjList[i].Train[j].EndCity=AdjList[i].Train[j+1].EndCity;

strcpy(AdjList[i].Train[j].name,AdjList[i].Train[j+1].name);

AdjList[i].Train[j].StartTime=AdjList[i].Train[j+1].StartTime;

AdjList[i].Train[j].StopTime=AdjList[i].Train[j+1].StopTime;

}

AdjList[i].TrainNum--;break;

}

}

return 1;

}

void Dijkstra_Output(int s[30][30],int PreCity[30],int p_end,int TravelType) {

//输出最短路径

int track[30];

int i=0,j,k,min,tmp,end,cost=0;

j=p_end;

track[i++]=j;//下标为0中存储了终点站的城市编号,i变为1

while(PreCity[j]>=0)

{

cost+=s[PreCity[j]][j];//循环后cost为总费用

j=PreCity[j];track[i++]=j;

}

printf("\n\t您要查找的路线为:");

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

printf("\t车号起始站终点站时间花费\n");

if(!TravelType)//类型为火车

{

for(i--;i>0;i--)//初始时i--后i为路线中的城市数目

{

end=track[i-1];min=32767;

for(k=0;k

if(AdjList[track[i]].Train[k].EndCity==end&&min>AdjList[track[i]].Train[k]. Cost)

{

min=AdjList[track[i]].Train[k].Cost;//min为路径中的最小花费

tmp=k;//k为一条路径中花费最小的火车编号

}

printf("\n\t%s",AdjList[track[i]].Train[tmp].name);//输出火车班次

printf("\t%10s",CityName[track[i]]);//输出起始城市名

printf("\t%10s",CityName[track[i-1]]);//输出终点城市名

printf("\t%2d:%2d-%2d:%2d",AdjList[track[i]].Train[tmp].StartTime/60,

AdjList[track[i]].Train[tmp].StartTime%60,

AdjList[track[i]].Train[tmp].StopTime/60,

AdjList[track[i]].Train[tmp].StopTime%60);//输出起止时间printf("\t%d\n",AdjList[track[i]].Train[tmp].Cost);//输出花费}

}

else//类型为飞机

{

for(i--;i>0;i--)

{

end=track[i-1];min=32767;

for(k=0;k

if(AdjList[track[i]].Flight[k].EndCity==end&&min>AdjList[track[i]].Flight[k ].Cost)

{min=AdjList[track[i]].Flight[k].Cost;tmp=k;}

printf("\n\t%s",AdjList[track[i]].Flight[tmp].name);printf("\t%10s",CityNam e[track[i]]);

printf("\t%10s",CityName[track[i-1]]);

printf("\t%2d:%2d-%2d:%2d",AdjList[track[i]].Flight[tmp].StartTime/60,

AdjList[track[i]].Flight[tmp].StartTime%60,

AdjList[track[i]].Flight[tmp].StopTime/60,

AdjList[track[i]].Flight[tmp].StopTime%60);

printf("\t%d\n",AdjList[track[i]].Flight[tmp].Cost);

}

}

printf("\n\t最终花费: %d\n",cost);

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

}

void Dijkstra(int s[30][30],int p_start,int p_end,int TravelType)

{

//迪杰斯特拉算法计算最短路径

int PreCity[30];//数组的值为计算出的路线中下标表示的城市中的前一个城市编号int i,j,min,pre,pos;

for(i=0;i

PreCity[p_start]=-2;

while(PreCity[p_end]==-1)

{

min=-1;

for(i=0;i

if(PreCity[i]!=-1)//i为起始站

{

for(j=0;j

if(PreCity[j]==-1&&s[i][j]>0&&(min<0||s[i][j]

{

pre=i;pos=j;//j为起始站中花费最小的到达站的城市编号

min=s[i][j];

}

}

PreCity[pos]=pre;

}

Dijkstra_Output(s,PreCity,p_end,TravelType);

}

int CalcMinCost(int StartCity,int EndCity,int TravelType)

{

//查询最小耗费路线

int s[30][30];

int i,j,min,end,flag1,flag2;

flag1=0;flag2=0;

for(i=0;i

for(j=0;j

s[i][j]=-1;//设空路径

if(TravelType==0)//判断初始城市和终点城市是否在火车交通路线中

for(i=0;i

for(j=0;j

{

if(AdjList[i].Train[j].EndCity==StartCity) flag1=1;

if(AdjList[i].Train[j].EndCity==EndCity) flag2=1;

}

else if(TravelType==1)//判断初始和终点城市是否在飞机交通路线中

for(i=0;i

for(j=0;j

{

if(AdjList[i].Flight[j].EndCity==StartCity)

flag1=1;

if(AdjList[i].Flight[j].EndCity==EndCity) flag2=1;

}

if(flag1!=1||flag2!=1)

{printf("\n\t抱歉!没有您要查找的路线!");return 0;}

if(TravelType==0)

{

for(i=0;i

{

min=32767;j=0;

while(j

{

min=32767;end=AdjList[i].Train[j].EndCity;

while(end==AdjList[i].Train[j].EndCity&&j

{

if(AdjList[i].Train[j].Cost

min=AdjList[i].Train[j].Cost;

j++;

}//min为i城市中的最小花费,end为其路线终点站

s[i][end]=min;

}

}

}

else

{

for(i=0;i

{

min=32767;j=0;

while(j

{

min=32767;end=AdjList[i].Flight[j].EndCity;

while(end==AdjList[i].Flight[j].EndCity&&j

{

if(AdjList[i].Flight[j].Cost

min=AdjList[i].Flight[j].Cost;

j++;

}

s[i][end]=min;

}

}

}

Dijkstra(s,StartCity,EndCity,TravelType);

return 1;

}

int SearchMinTime (CityType City,CityType EndCity,int CurTime,int curPathNo,int TravelType)

{

//计算出最短时间

int i;

if (City==EndCity)//若到达城市为终点站

{

if (MinTime>CurTime-StartTime)

{

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

{

MinPath[i].City=Path[i].City; MinPath[i].TraNo=Path[i].TraNo; curPath=curPathNo;

}

MinTime=CurTime-StartTime;

}

}

else

{

curPathNo++; Path[curPathNo].City=City;

if (!TravelType)

{

for (i=0;i

{

if ((AdjList[City].Train[i].StartTime>=(CurTime%1440))&&

(AdjList[City].Train[i].StopTime+(CurTime/1440)*1440-StartTime

//到达车站的发车时间要比始发车的到达时间晚,同时已经经过的时间加上要做火车的时间要比最小时间还小

//即选择发车时间在上一辆火车之后,要花费时间最少的路线

Path[curPathNo].TraNo=i;

SearchMinTime(AdjList[City].Train[i].EndCity,EndCity,

AdjList[City].Train[i].StopTime+(CurTime/1440)*1440,curPathNo,TravelType);

}

if ((AdjList[City].Train[i].StartTime<(CurTime%1440))&& (AdjList[City].Train[i].StopTime+(CurTime/1440)*1440-StartTime

{

//若发车时间在上一辆火车之前,则多待一天

Path[curPathNo].TraNo=i;

SearchMinTime(AdjList[City].Train[i].EndCity,EndCity,

AdjList[City].Train[i].StopTime+(CurTime/1440+1)*1440,curPathNo,TravelType) ;

}

}

}

else

{

for (i=0;i

{

if ((AdjList[City].Flight[i].StartTime>=CurTime)&&

(AdjList[City].Flight[i].StopTime+(CurTime/1440)*1440-StartTime

Path[curPathNo].TraNo=i;

SearchMinTime(AdjList[City].Flight[i].EndCity,EndCity,

AdjList[City].Flight[i].StopTime+(CurTime/1440)*1440,curPathNo,TravelType);

}

if ((AdjList[City].Flight[i].StartTime

(AdjList[City].Flight[i].StopTime+(CurTime/1440)*1440-StartTime

Path[curPathNo].TraNo=i;

SearchMinTime(AdjList[City].Flight[i].EndCity,EndCity,

AdjList[City].Flight[i].StopTime+(CurTime/1440+1)*1440,curPathNo,TravelType );

}

}

}

}

return 1;

}

int CalcMinTime(int StartCity,int EndCity,int TravelType)

{

//查询最短时间路线

int i;

int hour,minute;

MinTime=32767;curPath=0;Path[0].City=StartCity;

if(!TravelType)

for(i=0;i

{

Path[0].TraNo=i;StartTime=AdjList[StartCity].Train[i].StartTime;

SearchMinTime(AdjList[StartCity].Train[i].EndCity,EndCity,

AdjList[StartCity].Train[i].StopTime,0,TravelType);

}

else

for(i=0;i

{

Path[0].TraNo=i;

StartTime=AdjList[StartCity].Flight[i].StartTime;

SearchMinTime(AdjList[StartCity].Flight[i].EndCity,EndCity,

AdjList[StartCity].Flight[i].StopTime,0,TravelType);

}

if(MinTime==32767)

{printf("\n\t抱歉!没有您要查找的路线!");return 0;}

printf("\n\t您要查找的路线为:");

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

printf("\t车号起始站终点站时间花费\n");

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

{

if(!TravelType)

{

printf("\n%10s\t%10s",AdjList[MinPath[i].City].Train[MinPath[i].TraNo].name ,

CityName[MinPath[i].City]);

printf("\t%10s",CityName[AdjList[MinPath[i].City].Train[MinPath[i].TraNo].E ndCity]);

printf("\t%2d:%2d-%2d:%2d",AdjList[MinPath[i].City].Train[MinPath[i].TraNo] .StartTime/60,

AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StartTime%60,

AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StopTime/60,

AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StopTime%60);

printf("\t%d\n",AdjList[MinPath[i].City].Train[MinPath[i].TraNo].Cost);

}

else

{

printf("\n%10s\t%10s",AdjList[MinPath[i].City].Flight[MinPath[i].TraNo].nam e,

CityName[MinPath[i].City]);

printf("\t%10s",CityName[AdjList[MinPath[i].City].Flight[MinPath[i].TraNo]. EndCity]);

printf("\t%2d:%2d-%2d:%2d",AdjList[MinPath[i].City].Flight[MinPath[i].TraNo ].StartTime/60,

AdjList[MinPath[i].City].Flight[MinPath[i].TraNo].StartTime%60,

AdjList[MinPath[i].City].Flight[MinPath[i].TraNo].StopTime/60,

AdjList[MinPath[i].City].Flight[MinPath[i].TraNo].StopTime%60);

printf("\t%d\n",AdjList[MinPath[i].City].Flight[MinPath[i].TraNo].Cost);

}

}

hour=MinTime/60;minute=MinTime%60;

if(hour<0) hour+=23;

if(minute<0) minute+=60;

printf("\n\t最短时间: %2d:%2d\n",hour,minute);

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

return 1;

}

int InitSystem()

{

//从文件中读信息

FILE *fp;

int i,j,hour,minute,num,cost;

char stmp1[10];char stmp2[10];char stmp3[10];

fp=fopen("city.txt","r");

if(!fp)

{printf("\n\t无法打开文件!\n");return -1;}

fscanf(fp,"%d",&CityNum);//读入城市总数

for(i=0;i

{

fscanf(fp,"%s",&CityName[i]);

城市智能交通系统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.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模 块的功能。

数据结构课程设计报告模板

《数据结构I》三级项目报告 大连东软信息学院 电子工程系 ××××年××月

三级项目报告注意事项 1. 按照项目要求书写项目报告,条理清晰,数据准确; 2. 项目报告严禁抄袭,如发现抄袭的情况,则抄袭者与被抄袭者均 以0分计; 3. 课程结束后报告上交教师,并进行考核与存档。 三级项目报告格式规范 1. 正文:宋体,小四号,首行缩进2字符,1.5倍行距,段前段后 各0行; 2. 图表:居中,图名用五号字,中文用宋体,英文用“Times New Roman”,位于图表下方,须全文统一。

目录 一项目设计方案 (3) 二项目设计分析 (4) 三项目设计成果 (4) 四项目创新创业 (5) 五项目展望 (6) 附录一:项目成员 (6) 附录二:相关代码、电路图等 (6)

一项目设计方案 1、项目名称: 垃圾回收 2、项目要求及系统基本功能: 1)利用数据结构的知识独立完成一个应用系统设计 2)程序正常运行,能够实现基本的数据增加、删除、修改、查询等功能3)体现程序实现算法复杂度优化 4)体现程序的健壮性 二项目设计分析 1、系统预期实现基本功能: (结合本系统预期具体实现,描述出对应基本要求(增、删、改、查等)的具体功能) 1. 2. 3. 4. 5. 6. 7. 2、项目模块功能描述 (基本分为组织实施组织、程序功能模块编写、系统说明撰写等。其中程序功能子模块实现) 模块一: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 模块二: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 模块n: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

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

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

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

数据结构课程设计报告

《数据结构与算法》课程设计报告 学号: 班级序号: 姓名: 指导教师: 成绩: 中国地质大学信息工程学院地理信息系统系 2011年12 月

1.需求规格说明 【问题描述】 利用哈夫曼编码进行对已有文件进行重新编码可以大大提高减小文件大小,减少存储空间。但是,这要求在首先对一个现有文件进行编码行成新的文件,也就是压缩。在文件使用时,再对压缩文件进行解压缩,也就是译码,复原原有文件。试为完成此功能,写一个压缩/解压缩软件。 【基本要求】 一个完整的系统应具有以下功能: (1)压缩准备。读取指定被压缩文件,对文件进行分析,建立哈夫曼树,并给出分析结果(包括数据集大小,每个数据的权值,压缩前后文件的大小),在屏幕上输出。 (2)压缩。利用已建好的哈夫曼树,对文件进行编码,并将哈夫曼编码及文件编码后的数据一起写入文件中,形成压缩文件(*.Haf)。 (3)解压缩。打开已有压缩文件(*.Haf),读取其中的哈夫曼编码,构建哈夫曼树,读取其中的数据,进行译码后,写入文件,完成解压缩。 (4)程序使用命令行方式运行 压缩命令:SZip A Test.Haf 1.doc 解压缩命令:SZip X Test.Haf 2.doc或SZip X Test.Haf 用户输入的命令不正确时,给出提示。 (5)使用面向对象的思想编程,压缩/解压缩、哈夫曼构建功能分别构建类实现。 2.总体分析与设计 (1)设计思想: 1、压缩准备:1> 读文件,逐个读取字符,统计频率 2> 建立哈夫曼树 3> 获得哈弗曼编码 2、压缩过程: 1> 建立一个新文件,将储存权值和字符的对象数组取存储在文件头

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

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

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

数据结构实验总结报告

数据结构实验总结报告 一、调试过程中遇到哪些问题? (1)在二叉树的调试中,从广义表生成二叉树的模块花了较多时间调试。 由于一开始设计的广义表的字符串表示没有思考清晰,处理只有一个孩子的节点时发生了混乱。调试之初不以为是设计的问题,从而在代码上花了不少时间调试。 目前的设计是: Tree = Identifier(Node,Node) Node = Identifier | () | Tree Identifier = ASCII Character 例子:a(b((),f),c(d,e)) 这样便消除了歧义,保证只有一个孩子的节点和叶节点的处理中不存在问题。 (2)Huffman树的调试花了较长时间。Huffman编码本身并不难处理,麻烦的是输入输出。①Huffman编码后的文件是按位存储的,因此需要位运算。 ②文件结尾要刷新缓冲区,这里容易引发边界错误。 在实际编程时,首先编写了屏幕输入输出(用0、1表示二进制位)的版本,然后再加入二进制文件的读写模块。主要调试时间在后者。 二、要让演示版压缩程序具有实用性,哪些地方有待改进? (1)压缩文件的最后一字节问题。 压缩文件的最后一字节不一定对齐到字节边界,因此可能有几个多余的0,而这些多余的0可能恰好构成一个Huffman编码。解码程序无法获知这个编码是否属于源文件的一部分。因此有的文件解压后末尾可能出现一个多余的字节。 解决方案: ①在压缩文件头部写入源文件的总长度(字节数)。需要四个字节来存储这个信息(假定文件长度不超过4GB)。 ②增加第257个字符(在一个字节的0~255之外)用于EOF。对于较长的文件,

会造成较大的损耗。 ③在压缩文件头写入源文件的总长度%256的值,需要一个字节。由于最后一个字节存在或不存在会影响文件总长%256的值,因此可以根据这个值判断整个压缩文件的最后一字节末尾的0是否在源文件中存在。 (2)压缩程序的效率问题。 在编写压缩解压程序时 ①编写了屏幕输入输出的版本 ②将输入输出语句用位运算封装成一次一个字节的文件输入输出版本 ③为提高输入输出效率,减少系统调用次数,增加了8KB的输入输出缓存窗口 这样一来,每写一位二进制位,就要在内部进行两次函数调用。如果将这些代码合并起来,再针对位运算进行一些优化,显然不利于代码的可读性,但对程序的执行速度将有一定提高。 (3)程序界面更加人性化。 Huffman Tree Demo (C) 2011-12-16 boj Usage: huffman [-c file] [-u file] output_file -c Compress file. e.g. huffman -c test.txt test.huff -u Uncompress file. e.g. huffman -u test.huff test.txt 目前的程序提示如上所示。如果要求实用性,可以考虑加入其他人性化的功能。 三、调研常用的压缩算法,对这些算法进行比较分析 (一)无损压缩算法 ①RLE RLE又叫Run Length Encoding,是一个针对无损压缩的非常简单的算法。它用重复字节和重复的次数来简单描述来代替重复的字节。尽管简单并且对于通常的压缩非常低效,但它有的时候却非常有用(例如,JPEG就使用它)。 变体1:重复次数+字符 文本字符串:A A A B B B C C C C D D D D,编码后得到:3 A 3 B 4 C 4 D。

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

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

数据结构课程设计报告模板

课程设计说明书 课程名称:数据结构 专业:班级: 姓名:学号: 指导教师:成绩: 完成日期:年月日

任务书 题目:黑白棋系统 设计内容及要求: 1.课程设计任务内容 通过玩家与电脑双方的交替下棋,在一个8行8列的方格中,进行棋子的相互交替翻转。反复循环下棋,最后让双方的棋子填满整个方格。再根据循环遍历方格程序,判断玩家与电脑双方的棋子数。进行大小判断,最红给出胜负的一方。并根据y/n选项,判断是否要进行下一局的游戏。 2.课程设计要求 实现黑白两色棋子的对峙 开发环境:vc++6.0 实现目标: (1)熟悉的运用c语言程序编写代码。 (2)能够理清整个程序的运行过程并绘画流程图 (3)了解如何定义局部变量和整体变量; (4)学会上机调试程序,发现问题,并解决 (5)学习使用C++程序来了解游戏原理。 (6)学习用文档书写程序说明

摘要 本文的研究工作在于利用计算机模拟人脑进行下黑白棋,计算机下棋是人工智能领域中的一个研究热点,多年以来,随着计算机技术和人工智能技术的不断发展,计算机下棋的水平得到了长足的进步 该程序的最终胜负是由棋盘上岗双方的棋子的个数来判断的,多的一方为胜,少的一方为负。所以该程序主要运用的战术有削弱对手行动战术、四角优先战术、在游戏开局和中局时,程序采用削弱对手行动力战术,即尽量减少对手能够落子的位置;在游戏终局时则采用最大贪吃战术,即尽可能多的吃掉对手的棋子;而四角优先战术则是贯穿游戏的始终,棋盘的四角围稳定角,不会被对手吃掉,所以这里是兵家的必争之地,在阻止对手进角的同时,自己却又要努力的进角。 关键词:黑白棋;编程;设计

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

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

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

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

城市智能交通系统总体设计·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信息服务体系新架构。

交通咨询系统设计报告

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

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

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

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

数据结构课程设计报告

编号 课程设计 题目 1、一元稀疏多项式计算器 2、模拟浏览器操作程序 3、背包问题的求解 4、八皇后问题 二级学院计算机科学与工程学院 专业计算机科学与技术 班级 2011级 37-3班 学生姓名 XX 学号 XXXXXXXXXX 指导教师 XXXXX 评阅教师 时间 1、一元稀疏多项式计算器 【实验内容】 一元稀疏多项式计算器。

【问题描述】 设计一个一元稀疏多项式简单计算器。 【需求分析】 其基本功能包括: (1)输入并建立多项式; (2)输出多项式,输出形式为整数序列为:n,c1,e1,c2,e2,……,cn,en,其中n 是多项式的项数,ci,ei分别是第i项的系数和指数,序列按指数降序排序;(3)多项式a和b相减,建立多项a+b; (4)多项式a和b相减,建立多项式a-b; (5)计算多项式在x处的值; (6)计算器的仿真界面(选做); 【概要设计】 -=ADT=- { void input(Jd *ha,Jd *hb); void sort(dnode *h)

dnode *operate(dnode *a,dnode *b) float qiuzhi(int x,dnode *h) f",sum); printf("\n"); } 【运行结果及分析】 (1)输入多项式:

(2)输出多项式(多项式格式为:c1x^e1+c2x^e2+…+cnx^en): (3)实现多项式a和b相加: (4)实现多项式a和b相减: (5)计算多项式在x处的值:

2、模拟浏览器操作程序 【实验内容】 模拟浏览器操作程序 【问题描述】 标准Web浏览器具有在最近访问的网页间后退和前进的功能。实现这些功能的一个方法是:使用两个栈,追踪可以后退和前进而能够到达的网页。在本题中,要求模拟实现这一功能。 【需求分析】 需要支持以下指令: BACK:将当前页推到“前进栈”的顶部。取出“后退栈”中顶端的页面,使它成为当前页。若“后退栈”是空的,忽略该命令。 FORWARD:将当前页推到“后退栈”的顶部。取出“前进栈”中顶部的页面,使它成为当前页。如果“前进栈”是空的,忽略该命令。 VISIT:将当前页推到“后退栈”的顶部。使URL特指当前页。清空“前进栈”。 QUIT:退出浏览器。 假设浏览器首先加载的网页URL是:http:

2数据结构_全国交通咨询模拟系统实验报告

全国交通咨询模拟 一、设计目的 掌握线性表、栈、图结构和对文件的操作,学习屏幕编辑和菜单技术,掌握用最短路径及其搜索算法编制较综合性的程序,能用图的邻接存储结构求解最优路线问题,解决有关实际问题。得到软件设计技能的训练。 二、问题描述 交通咨询模拟。根据旅客的不同需要,要考虑到旅客希望在旅途中的时间尽可能短、希望旅费尽可能省等的要求。 三、基本要求 1、对城市信息(城市名、城市间的里程)进行编辑:具备添加、修改、删除功能; 2、对城市间的交通工具:火车。对列车时刻表进行编辑:里程、和列车班次的添加、修改、删除; 3、提供两种最优决策:最快到达或最省钱到达。全程只考虑一种交通工具,可以不考虑回程; 4、咨询以用户和计算机对话方式进行,要注意人机交互的屏幕界面。由用户选择最优决策原则和交通工具,输入起始站、终点站、出发时间,输出信息:最快需要多长时间才能到达及旅费,或者最少需要多少旅费才能到达及时间,并详细说明依次于何时何地乘坐哪一趟列车何时到达何地。

四、具体实现 1、思路 (1) 数据存储。城市信息(城市名、代码)、交通信息(城市间的里程、各航班和列车时刻)存储于磁盘文件。在实验中本想用文本储存数据,但操作不熟悉,而是改用图的邻接矩阵储存原始信息,而后用数组进行添加删改 (2) 数据的逻辑结构。根据设计任务的描述,其城市之间的旅游交通问题是典型的图结构,可看作为无向图,图的顶点是城市,边是城市之间所耗费的时间(要包括中转站的时间)或旅费。 (3) 数据的存储结构。采用邻接表和邻接矩阵都可作为数据的存储结构,这里建议采用邻接矩阵作为数据的存储结构。 (4) 用不同的功能模块对城市信息和交通信息进行编辑。添加、修改、删除功能可用菜单方式或命令提示方式。只要能方便的对城市信息和交通信息进行管理即可,但要注意人机界面,具体实现由学生自行设计,也可参考有关程序(届时在网上提供)。这些工作有不小的工作量。 (5) 最优决策功能模块 ① 读入城市信息和交通信息,用邻接表生成含权网络,表头数组中的元素存放城市名及对方城市到达该元素所代表城市的所有信息;表头数组中的元素所对应的单链表存放与该元素所代表的城市有交通联系的城市(代码、里程、列车车次)。 ② 根据具体最优决策的要求,用floyd算法求出出发城市到其它各城市的最优值(最短时间或最小的费用),搜索过程中所经过城市的局部最优信息都保存在邻接表的表头数组中。其目的城市所代表的元素中就保存了所需的最优决策结果。其相应的初始值可为∞,并在表头数组对应的城市元素中保存响应的信息。 ③主程序可以有系统界面、菜单;也可用命令提示方式;选择功能模块执行,要求在程序运行过程中可以反复操作。 2、数据结构 本程序运用了关于图这种数据结构。 他的抽象数据类型定义如下: typedef struct unDiGraph

数据结构课程设计报告

数据结构课程设计 设计说明书 TSP 问题 起止日期:2016 年 6 月27 日至2016 年7 月 1 日 学生姓名 班级 学号 成绩 指导教师( 签字) 2016 年7 月 1 日

目录 第1 章需求分析.................................................................................1... 1.1 简介 (1) 1.2 系统的开发背景 (1) 1.3 研究现状 (1) 第2 章概要设计.................................................................................2... 2.1 系统开发环境和技术介绍 (2) 2.2 系统需求分析 (2) 2.2.1 总体功能分析 (2) 2.2.2 核心功能分析 (3) 第3 章详细设计...................................................................................4... 3.1 系统开发流程 (4) 3.2 系统模块设计 (4) 3.3 系统结构 (6) 3.2 系统流程图 (6) 第4 章调试分析...................................................................................7... 4.1 程序逻辑调试 (7) 4.2 系统界面调试 (8) 第5 章测试结果...................................................................................9... 5.1 测试环境 (9) 5.2 输入输出测试项目 (9) 5.3 测试结果 (10) 结论.....................................................................................................1..1.. 参考文献................................................................................................1..1. 附录.......................................................................................................1..2..

数据结构全国交通模拟系统

全国交通模拟系统课程设计报告 姓名:唐文龙 班级: 2班 学号: 411417080216 学院:华信学院 专业:计算机科学与技术 指导: 日期:2013.06.20

目录 1 需求分析 (1) 1.1 概述 (1) 1.2 数据需求 (1) 1.3 功能性需求 (1) 1.4 其他需求 (1) 2 概要设计 (2) 3 详细设计 (4) 3.1 记录的定义 (4) 3.2 子程序说明 (5) 3.3 子程序的算法说明 (5) 3.3.1主函数流程图 (6) 4 系统实现 (7) 4.1开发环境 (8) 4.2运行界面 (9) 4.3测试用例 (10) 5 总结 (11) 6.参考文献 (11) 附录:源程序 (11)

1 需求分析 出于不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则期望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。 1.1 概述 程序的功能包括:提供对城市信息的编辑,提供列车时刻表和飞机航班表的编辑,提供两种最优决策:最快到达、最省钱到达。 1.2 数据需求 输入列车或飞机编号时需输入一个整型数据;输入列车或飞机的费用时需输入一个实型数据;输入列车或飞机开始时间和到达时间时均需输入两个整型数据;在选择功能时,应输入与所选功能对应的一个整型数据。 1.3 功能性需求 总体功能描述 (1) 提供对城市信息进行编辑的功能。 (2) 城市之间有两种交通工具:火车和飞机。提供对列车时刻表和飞机航班进行编辑的功能。 (3) 提供两种最优决策: 最快到达或最省钱到达。全程只考虑一种交通工具,不考虑回程; (4) 旅途中耗费的总时间应该包括中转站的等候时间。 (5) 咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原 则和交通工具, 输出信息: 最快需要多长时间才能到达或者最少需要多少旅费才能到达。 1.4 其他需求 (1)具有可靠性,可用性。

智能交通系统设计方案

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

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

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

相关文档
相关文档 最新文档