当前位置:文档之家› 数据结构课程设计交通咨询系统设计

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

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

设计题目<二>: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 模块调用示意图)

2.系统子程序及功能设计

(1)int ShowMenu()//主菜单

(2)void CopyRight()

(3)int SeekCity(char *name) //寻找城市

(4)int InsertCity(char *Name) //添加城市

(5)int SaveSysInfo() //向程序输入数据

(6)int DelCity(char *Name) //删除城市

(7)int InsertTrain(char *train, char *StartCity, char *EndCity, int StartTime, int EndTime, int cost)//添加火车路线

(8)int InsertFlight(char *flight, char *StartCity, char *EndCity, int StartTime, int EndTime, int cost)//添加飞机航线

(9)int DelPath(char *name)//删除路线

(10)void Dijkstra(int matx[Dij_MAXN][Dij_MAXN], int p_start, int p_end, int TravelType)

(11)int InitSysData()//存储数据

(12)int SearchMinTime(CityType City, CityType EndCity, int CurTime, int curPathNo, int TravelType)//查询最短时间

(13)int CalcMinTime(int StartCity, int EndCity, int TravelType) //显示最短时间(14)int CalcMinCost(int StartCity, int EndCity, int TravelType)//最少花费(15)int main()//主函数

3.函数主要调用关系图

(图2.3函数主要调用关系图)

四、详细设计

1.数据类型定义

(1)全局变量的定义

typedef short int CityType;//CityType 定义短整形的变量

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;

2.系统主要子程序详细设计

(1)用户工作区模块的设计

int ShowMenu()

{

printf("\n|******************欢迎使用交通咨询系统*******|\n");

printf("\n|------------------1: 添加城市----------------|");

printf("\n|------------------2: 删除城市----------------|");

printf("\n|------------------3: 添加交通路线------------|");

printf("\n|------------------4: 删除交通路线------------|");

printf("\n|------------------5: 查询最小费用路线--------|");

printf("\n|------------------6: 查询最快路线------------|");

printf("\n|------------------7: 清除屏幕----------------|");

printf("\n|------------------0: 退出--------------------|\n");

printf("\n|***********o(∩_∩)o o(∩_∩)o **************|\n");

printf("\n请输入你的选择:");

return 1;

}

(2)用Dijkstra算法求两段路程的最短距离

void Dijkstra_Output(int matx[Dij_MAXN][Dij_MAXN], int

PreCity[Dij_MAXN], int p_end, int TravelType)

{

int track[Dij_MAXN];

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

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

while (PreCity[j] >= 0)

{

cost += matx[PreCity[j]][j];

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

}

printf("\nTrack Way:");

if (!TravelType)

{

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

{

printf("\n%s:", CityName[track[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;

tmp = k;

}

printf("%s", AdjList[track[i]].Train[tmp].name);

printf("%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);

}

}

else

{

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

{

printf("\n%s:", CityName[track[i]]);

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

for (k = 0; k

if (AdjList[track[i]].Train[k].EndCity ==

end&&min>AdjList[track[i]].Flight[k].Cost)

{

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

tmp = k;

}

printf("%s", AdjList[track[i]].Flight[tmp].name);

printf("%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("\n%s: DESTINATION!", CityName[track[0]]);

printf("\nMin Cost : %d\n", cost);

}

void Dijkstra(int matx[Dij_MAXN][Dij_MAXN], int p_start, int p_end, int TravelType)

{

int PreCity[Dij_MAXN]; //PreCity[i]==-1,never used;

//PreCity>0,the precity of City i

int i, j, min, pre, pos;

for (i = 0; i

{

PreCity[i] = -1;

}

PreCity[p_start] = -2;

while (PreCity[p_end] == -1)

{

min = -1;

for (i = 0; i

if (PreCity[i] != -1)

{

for (j = 0; j

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

{

pre = i; pos = j; min = matx[i][j];

}

}

PreCity[pos] = pre;

}

Dijkstra_Output(matx, PreCity, p_end, TravelType);

}

五、测试分析

1. 添加城市

在主菜单下,用户输入1,添加城市名称。

(图2.4添加城市)

2.删除城市

在主菜单下,用户输入2,删除已添加城市名称。

(图2.5删除城市)

3.添加交通路线

在主菜单下,用户输入3,已添加城市名称。添加起始城市、终点城市名称、乘车类型、乘车班次、起始时刻、终点时刻、和票价。

(图2.6添加交通路线)

4.删除交通路线

输入班次号,删除交通路线

(图2.7删除交通路线)

5.查询最小费用交通路线

(图2.8 查询最小费用交通路线)

6.查询最快交通路线

(图2.9查询最快交通路线)

7.清除屏幕

8.退出

六、用户手册

使用本系统时,用户需先向程序添加城市后,在已有城市基础上添加已有城市的路线和使用各项功能。

七、调试报告

程序运行无错误,但当系统输入其他无储存内容时程序会意外中断,代码需要优化。

八、程序清单

#include "stdafx.h"

#include

#include

#include

#define ERR 0

#define OK 1

#define Dij_MAXN 100

#define MAX_VERTEX_NUM 100

#define MAX_STRING_NUM 100

#define MAX_TRAFFIC_NUM 100

const char CityFile[] = "city.txt";

const char TrainFile[] = "train.txt";

const char FlightFile[] = "flight.txt";

typedef short int CityType;//CityType 定义短整形的变量

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;

VNodeDat AdjList[MAX_VERTEX_NUM];

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

int CityNum; //城市数目

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

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

int MinTime, StartTime;

int curPath;

int ShowMenu()

{

printf("\n|******************欢迎使用交通咨询系统*******|\n");

printf("\n|------------------1: 添加城市----------------|");

printf("\n|------------------2: 删除城市----------------|");

printf("\n|------------------3: 添加交通路线------------|");

printf("\n|------------------4: 删除交通路线------------|");

printf("\n|------------------5: 查询最小费用路线--------|");

printf("\n|------------------6: 查询最快路线------------|");

printf("\n|------------------7: 清除屏幕----------------|");

printf("\n|------------------0: 退出--------------------|\n");

printf("\n|***********o(∩_∩)o o(∩_∩)o **************|\n");

printf("\n请输入你的选择:");

return 1;

}

void CopyRight()

{

printf("\n");

}

int SeekCity(char *name) //寻找城市

{

int i;

for (i = 0; i

{

if (strcmp(name, CityName[i]) == 0) //比较函数,若相等,则返回i值

{

return i;

}

}

return -1;

}

//=============================================Edit

Info====================================================

int SaveSysInfo() //向程序输入数据

{

FILE *fp; int i, j, total;

fp = fopen(CityFile, "w"); //打开CityFile文档

fprintf(fp, "%d\n", CityNum); //往文档中写城市的数量

for (i = 0; i

{

fprintf(fp, "%s\n", CityName[i]); //往文档中写城市的名字}

fclose(fp);//将CityFile文档关闭

total = 0;

fp = fopen(TrainFile, "w");//打开TrainFile文档

for (i = 0; i

{

total += AdjList[i].TrainNum;

}

fprintf(fp, "%d\n", total); //往文档中写列车班次的数量

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;

fp = fopen(FlightFile, "w");

for (i = 0; i

{

total += AdjList[i].FlightNum;

}

fprintf(fp, "%d\n", total);

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

return 1;

}

int DelCity(char *Name) //删除城市{

int city, i, j,o=1,k=1;

city = SeekCity(Name);

printf("%s",Name);

while (true)

{

while (CityName[k] != Name)

{

k++;

}

if (k > CityNum)

o--;

printf("未找到此城市,请重新输入!");

return 0;

}

for (i = city; i < CityNum - 1; i++) //???可能city是从0开始的

{

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].FlightNum; 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)

{

//InsertTrain(name,s_city,e_city,s_hour*60+s_minute,e_hour*60+e_minute,cost);

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++; //火车的数加1

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].Train[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;

}

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;

}

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;

}

//==============================================Check

Info================================================

void Dijkstra_Output(int matx[Dij_MAXN][Dij_MAXN], int PreCity[Dij_MAXN], int p_end, int TravelType)

{

int track[Dij_MAXN];

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

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

while (PreCity[j] >= 0)

{

cost += matx[PreCity[j]][j];

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

}

printf("\nTrack Way:");

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

数据结构课程设计交通咨询系统设计-参考模板

设计题目<二>: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年内不落后。同时具有较强的可移植性、可重用性,在将来能迅速采用最新技术,以长期保持系统的先进性。 ?可靠性 一是以可靠的硬件、成熟的软件产品为基础,结合具体需求进行配置、定制和二次开发的方式进行实施,保证有效缩短项目实施时间,降低项目实施的风险。 二是系统应能够支持较大并发用户同时进行浏览、操作等与数据库的交互式的操作,并且相对占用较少的硬件资源。当意外事件发生时,能通过快速的应急处理,实现故障

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

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

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

交通咨询系统设计报告

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

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

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

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

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

智能交通系统设计方案

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

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

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

交通咨询系统 C语言

CHINA 交通咨询系统

目录 一、需求分析 (2) 1、程序的功能及设计要求 (2) 2、输入输出的要求 (2) 二、环境说明 (2) 三、详细设计 (3) 1、模块设计 (3) 2、画出各函数的调用关系图、主要函数的流程图。 (3) 2、详细代码 (4) 四、调试分析 (4) 1、测试数据: (4) 2、借鉴的资料 (5) 五、课程总结 (6) 六、附录 (6)

一、需求分析 1、程序的功能及设计要求 在交通网络非常发达、交通工具和交通方式不断更新的今天, 人们在出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也感兴趣。对于这样一个人们关心的问题,通过建立交通网络图的存储结构图,提供用户查询的功能,功能一:通过输入城市名及任意两个城市的距离,查询任意两个城市之间的最短距离,从而达到最省目的;功能二:通过输入城市名以及任意两个程序的距离,查询中转路线最少。程序所具有的功能特色本程序主要目的是为了给用户提供路径咨询,可以通过输入设置,延续程序的拓展性。 设计要求及分析 设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到另一城市顶点之间的中转次数最少问题或最低花费或最少时间(最短路径)问题。 该设计共分三个部分:一是建立交通网络图的存储结构;二是解决单源最短路径问题;最后再实现任意两个城市顶点之间的最短路径问题。 1. 建立交通网络图的存储结构 要实现设计要求,首先要定义交通图的存储结构:邻接链表和邻接矩阵; 2. 解决任意两个城市顶点之间的中转次数最少的问题; 3. 解决任意两个城市顶点之间的最短路径(最低花费或最少时间)问题。 2、输入输出的要求 定义变量类型应该保持类型一致,通过键盘输入,确保输入输出一致,使最短路径途径以及最短路径能够简单明了的输出,同时保持程序简洁美观,效果明显。输入要求为输入界面直观、亲切;有利于快速输入;有利于准确输入;有利于输入、修改;方便操作。输出要求:输出要求应简单、直观,一目了然,尽量符合用户的习惯,便于用户阅读、理解与使用。输出内容应尽量汉字化,从而使输出格式醒目;各种输出设计要长考虑以利于系统发展和输出项目扩充、变动的需要;输出操作方便 二、环境说明 系统:WINDOS7 开发软件:vc6+

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

信息科学与工程学院课程设计任务书 题目:交通咨询系统设计 学号: 201112220141 姓名: 年级: 专业:计算机应用与技术 课程:数据结构 指导教师:职称: 完成时间:

课程设计任务书及成绩评定

一、需求分析 设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到另一城市顶点之间的最短路径(里程)或最低花费或最少时间等问题。对于不同的咨询要求,可输入城市间的路程或所需时间或所需费用。 本设计共分三部分,一是建立交通网络图的存储结构;二是解决单源最短路径问题;三是实现任两个城市顶点之间的最短路径问题。 1.1.1建立图的存储结构 邻接矩阵是表示图形中顶点之间相邻关系的矩阵。图的邻接矩阵是定义如下的n 阶方阵: 设G=(V ,E )是一个图,结点集为 {} n v v v V ,,,21 =。 G 的邻接矩阵,E ,,0E ,,)(,)(???? ?>?<∞>∈<==??j i j i j i j i n n j i ij n n ij v v v v v v v v w a a A )或当(,或)或当(, 当邻接矩阵的行表头、列表头顺序一定时,一个图的邻接矩阵表示是唯一的。 图的邻接矩阵表示,除了需用一个二维数组存储顶点之间的相邻关系的邻接矩阵外,通常还需要使用一个具有n 个元素的一维数组来存储顶点信息,其中下标为i 的元素存储顶点i 的信息。因此,图的邻接矩阵的存储结构定义如下: 1.1.2 单源最短路径 最短路径的提法很多。在这里先讨论单源最短路径问题:即已知有向图(带权),我们希望找出从某个源点S ∈V 到G 中其余各顶点的最短路径。 为了叙述方便,我们把路径上的开始点称为源点,路径的最后一个顶点为终点。那么,如何求得给定有向图的单源最短路径呢?迪杰斯特拉(Dijkstra )提出按路径长度递增产生诸点的最短路径算法,称之为迪杰斯特拉算法。 迪杰斯特拉算法求最短路径的实现思想是:设G=(V ,E )是一个有向图,

基于单片机的智能交通红绿灯控制系统设计

1选题背景 今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。 信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。在交通中管理引入单片机交通灯控制代替交管人员在交叉路口服务,有助于提高交通运输的安全性、提高交通管理的服务质量。并在一定程度上尽可能的降低由道路拥挤造成的经济损失,同时也减小了工作人员的劳动强度。 关键词:AT89C51;7448,LED 2方案论证 2.1设计任务 设计基于单片机的智能交通红绿灯控制系统,要求能通过按键或遥控器设置系统参数,系统运行时,“倒计时等信息”能通过数码管或点阵发光管显示,设计时应考虑交通红绿灯控制的易操作性及智能性。以单片机的最小系统为基础设计硬件,用汇编语言、或C语言设计软件。通过本设计可以培养学生分析问题和解决问题的能力,掌握Mcs51单片机的硬件与软件设计方法,从而将学到的理论知识应用于实践中,为将来走向社会奠定良好的基础。 东西(A)、南北(B)两干道交于一个十字路口,各干道有一组红、黄、绿三个指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行,黄灯亮时车辆及行人小心通过。红灯的设计时间为45秒,绿灯为40秒,黄灯为5秒。 2.2 方案介绍 方案1设计思想: 采用分模块设计的思想,程序设计实现的基本思想是一个计数器,选择一个单片机,其内部为一个计数,是十六进制计数器,模块化后,通过设置或程序清除来实现状 态的转换,由于每一个模块的计数多不是相同,这里的各模块是以预置数和计数器计 数共同来实现的,所以要考虑增加一个置数模块,其主要功能细分为,对不同的状态输 入要产生相应状态的下一个状态的预置数,如图中A道和B道,分别为次干道的置数选 择和主干道的置数选择。 方案2 设计思想: 由两个传感器监视南北方向即A道与东西方向即B道的车辆来往情况,设开关K=1 为有车通过,K=0为没有车通过。则有以下四种情况: Ka=1时:Kb=0,表示A有车B没有车,则仅通行B道:

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

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

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

交通咨询系统设计

《数据结构课程设计》实验报告 编号实验五实验项目名称交通咨询系统设计 学时数3课时指导教师冯韵班 级 计科一班 学 号 33 姓 名 周兴 实验日期2010-10-16 成绩 一、实验目的:设计一个交通咨询系统能让旅客咨询从任意一个城市顶点到另一城市顶点之间的最短路径或最低花费或最少时间等问题。 二、内容与设计思想:(设计思想、主要数据结构、主要代码结构、主要代码段分析) 1.设计思想:一是用有向图的邻接矩阵建立交通网络图的存储结构;二是是用迪杰斯特拉(Dijkstra)算法解决源点到所有点的最短路径问题;三是用费罗伊德(Floyd)算法算出任意两点之间的最短路径。 2.主要数据结构:1.建立有向图的存储结构 2.迪杰斯特拉算法 3.费罗伊德算法 4.主框架函数的实现 3.主要代码结构: {//采用邻接矩阵表示法构造有向图G,n,e表示图的当前顶点数和边数 int i,j,k,w; for(i=1;i<=n;i++) G->vexs[i]=(char)i; for(i=1;i<=n;i++) for(j=1;j<=n;j++) G->arcs[i][j]=Maxint; printf("输入%d条边的i,j及w:\n",e); for(k=1;k<=e;k++){ scanf("%d,%d,%d",&i,&j,&w); G->arcs[i][j]=w; } printf("有向图的存储结构建立完毕!\n"); } void Dijkstra(MGraph*G,int v1,int n) { int D2[MVNum],P2[MVNum]; int v,i,w,min; enum boolean S[MVNum]; for(v=1;v<=n;v++){ S[v]=FALSE; D2[v]=G->arcs[v1][v]; if(D2[v]

智能交通系统设计说明书模板(1)

文件编号 分发号 版本号 1.0 受控状态 智能交通系统设计说明书(模板) 工位号:__________ 编写日期:__________

修订记录Revision record 日期Date 修订版本 Revision version 修改描述 Change Description 作者 Author 工位号_01 工位号_02 工位号_03

目录 1 系统背景【填写】 (1) 2 系统开发环境 (2) 2.1 硬件环境 (2) 2.2 软件环境 (2) 2.3 相关技术 (2) 3 需求分析 (2) 3.1 可行性分析 (2) 3.2 功能需求 (2) 3.3 性能需求 (2) 3.4 系统用例 (2) 4 系统概要设计 (2) 4.1 系统运行原理 (2) 4.2 系统框架 (2) 4.3 数据库设计 (2) 5 系统功能模块实现【填写】 (3) 5.1 XXX模块的实现 (3) 5.1.1 功能描述 (3) 5.1.2 模块设计(类图) (3) 5.1.3 详细设计 (3) 5.1.4 数据库设计 (4) 5.1.5实现效果图 (4) 6 总结 (5)

1 系统背景 [根据项目的具体情况,文档编写者可进行说明]

2 系统开发环境2.1 硬件环境 2.2 软件环境 2.3 相关技术 3 需求分析 3.1 可行性分析3.2 功能需求 3.3 性能需求 3.4 系统用例 4 系统概要设计4.1 系统运行原理4.2 系统框架 4.3 数据库设计

5 系统功能模块实现【填写】 [描述对系统功能模块的实现,包括实现描述、类图、核心代码(不能超过一页)、运行效果图等] 5.1 XXX模块的实现 5.1.1 功能描述 5.1.2 流程图 5.1.3 模块设计(类图以及时序图) 5.1.4 详细设计 ●方法 方法名称及类型 功能描述 Input输入参数 Return返回值 Exception抛出异常 ●实现描述(方法核心片段)

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

设计题目<二>:交通咨询系统设计P160 一、设计要求 1 .问题描述根据不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能的短,出门旅行的旅客希望旅费尽可能的少,而老年人则要求中转次数少。模拟一个全国城市之间的咨询交通程序,为旅客提供两种或三种最优的交通路线。 2.需求分析 二、概要设计 1.主界面设计 (图“交通咨询系统”主菜单) 2.存储结构设计 本系统采用图结构类型存储抽象交通咨询系统的信息 typedef struct TrafficNode

tmp = k; } printf("%s", AdjList[track[i]].Train[tmp].name); pri ntf("%2d:%2d-%2d:%2d", AdjList[track[i]].Trai n[tmp].StartTime / 60, AdjList[track[i]].Train[tmp].StartTime % 60, AdjList[track[i]].Trai n[tmp].StopTime / 60, AdjList[track[i]].Trai n[tmp].StopTime % 60); else { for (i--; i>0; i--) um; [k++) ghar name[MAX_STRlNG_NUM];jajnN

{ printf("\n%s:", CityName[track[i]]); end = track[i - 1]; min = 32767; for (k = 0; kAdjList[track[i]].Flight[k].Cost) { min = AdjList[track[i]].Flight[k].Cost; tmp = k; } printf("%s", AdjList[track[i]].Flight[tmp].name); printf("%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);

全国交通咨询系统设计 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 {

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