我是靠谱客的博主 伶俐摩托,最近开发中收集的这篇文章主要介绍基于C++的自动驾驶公交车调度系统,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  1. 用户界面设计 1
    1.1 文件方式(定义输入输出的格式) 1
    1.2 动画方式(画出图形界面) 1
    2 有限状态自动机状态转换图 1
    stop:停止drive:运行 3
    3 高层数据结构设计 3
    3.1 常量定义 3
    3.2 全局变量定义 3
    //以下为公共变量,默认全部为 0 3
    4 系统模块划分 4
    4.1 系统模块划分(说明共分成哪些程序模块,各模块功能概述) 4
  2. 模块名称 io.c 4
  3. 模块名称 public.c 5
  4. 模块名称 datastr.c 5
  5. 模块名称 strategy.c 5
    5.模块名称 init.c 5
    4.2 各模块接口说明 5
  6. 模块接口 init.h 5
  7. 模块接口 public.h 5
  8. 模块接口 default.h 5
  9. 模块接口 datstr.h 5
  10. 模块接口 datastr.h 5
  11. 模块接口 io.h 5
  12. 模块接口 strategy.h 5
    4.3 各模块函数说明 5
    5 核心算法设计 7
  13. FCFS:First Come First Service 先来先服务策略 7
  14. SSTF: Shortest Seek Time First 最短寻找时间优先策略 7
  15. SCAN 顺便服务策略 7
    写在最后: 7
    4系统模块划分
    4.1系统模块划分(说明共分成哪些程序模块,各模块功能概述)
    模块划分思路说明。
    哪些模块需要独立成线程?
    模块关系图,独立线程的模块要用红色标记出来!参考如下图例。

1.模块名称 io.c
模块功能简要描述:完成对用户输入的线程的实现,根据输入更新用户请求数据结构;读取配置文件,根据指令分析类型,调用相应策略;输出当前车辆的状态和各站点的请求信息。

2.模块名称 public.c
模块功能简要描述:三个策略的共同部分,如公交车状态的更新等。
3.模块名称 datastr.c
模块功能简要描述:存放三个策略以及输出状态时用到的数据结构。
4.模块名称 strategy.c
模块功能简要描述:先来先服务策略、最短寻道优先算法策略、扫描策略的具体实现。
5.模块名称 init.c
模块功能简要描述:负责初始化整个系统。
在这里插入图片描述

4.2各模块接口说明
1.模块接口 init.h
本模块声明 initSystem()函数,进行程序的初始化。
2.模块接口 public.h
本模块声明了三个策略通用的几个函数,如控制运行方向的 drive(),判断是否到目的地的
isArrive()等,还有一系列共用的全局变量,如时间变量 time,策略类型 STRATEGY 等。
3.模块接口 default.h
本模块使用 define 定义了两个常量,MAX_STATION=10 和 MAX_REQUEST=10000.
4.模块接口 datstr.h
本模块定义了程序的数据结构(data structure),采用了双向循环链表模拟轨道;定义以及相关变量与函数。
5.模块接口 datastr.h
本模块声明了一系列策略共用的函数,如删除链表的 deleteList(),增加站点信息的 addINFO(),删除站点信息的 delINFO()以及判断是否结束退出程序的 isExist(),以及表示公交车信息的结构体数组 INFO 等。
6.模块接口 io.h
本模块声明了用于输入输出的函数,如读取配置文件的函数 readCommand(),获取指令的函数
getRequest(),以及输出打印公交车目前状态的函数 printStatus()等。
7.模块接口 strategy.h
本模块声明了策略一:先来先服务策略、策略二:最短时间寻道策略、策略三:扫描算法的函数。

#include "public.h"
#include "datastr.h"
#include "strategy.h"
int time = 0;
//打印状态里的时间
int goal = 0;
//在FCFS中是当前目标在队列中的编号,在SSTF中是目标站的编号
int TOTAL_STATION = 5;
//默认为5
int STRATEGY = 1;
//默认为1,STRAGETY值含义:1 => FCFS,2 => SSTF,3 => SCAN
int DISTANCE = 2;
//默认为2
int TOTAL_LENGTH = 10;
//默认为10
int stop = 0;
//记录停站状态
int direction = 0;
void drive() {
//车辆运行函数
if (STRATEGY == 1) {
if (direction == 1) {
position = position->next;
}
if (direction == -1) {
position = position->prev;
}
}
if (STRATEGY == 2 || STRATEGY == 3) {
if (status == 1 && stop == 0) {
position = position->next;
}
if (status == 2 && stop == 0) {
position = position->prev;
}
}
}
int cacu(int now, int sta,int mn) {
int dis = fmin(abs(now - sta), fmin(abs(TOTAL_STATION - now + sta), abs(TOTAL_STATION - sta + now)));
return fmin(mn, dis);
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后

以上就是伶俐摩托为你收集整理的基于C++的自动驾驶公交车调度系统的全部内容,希望文章能够帮你解决基于C++的自动驾驶公交车调度系统所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部