From a9c1d2dbf885dd7a800f9ae075a06c550f79f175 Mon Sep 17 00:00:00 2001 From: jackfiled Date: Wed, 29 Jun 2022 16:47:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=86README=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20=E9=87=8D=E5=86=99=E4=BA=86=E8=8E=B7=E5=BE=97?= =?UTF-8?q?=E5=85=AC=E4=BA=A4=E8=BD=A6=E4=BD=8D=E7=BD=AE=E7=9A=84=E5=87=BD?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 23 +++++++++++++++++++-- include/BusStrategyBase.h | 31 +++++++++++++++++++++++++++- include/busModel.h | 8 ++++++++ md_pic/main.png | Bin 0 -> 19564 bytes md_pic/running.png | Bin 0 -> 48285 bytes src/busModel.cpp | 41 ++++++++++++++++++++++++++++---------- src/centralwidget.cpp | 20 +++++++++++++++++++ 7 files changed, 110 insertions(+), 13 deletions(-) create mode 100644 md_pic/main.png create mode 100644 md_pic/running.png diff --git a/README.md b/README.md index 7df5be9..42061bc 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Auto Bus GUI -北京邮电大学计算机学院2021级《计算导论与程序设计》实践大作业的GUI分支。 +北京邮电大学计算机学院2021级《计算导论与程序设计》实践大作业“公交车调度”的GUI分支。 -## 项目构建 +## 构建 ### 构建环境 @@ -26,5 +26,24 @@ cmake .. -G "Visual Studio 17 2022" > > 现代VS已经支持用`cmake`管理`C/C++`项目 +## 使用 +![主界面截图](md_pic/main.png) +### 主界面 + +主界面由四个部分组成,分别是最上方的菜单栏,左侧的动画区,右侧的控制面板,下方的日志输出。 + +### 使用 + +首先使用`File-Read ConfigFile`读取一个配置文件,在读取结束后动画区会显示公交车与公交站台,在控制面板的上方会显示当前选择的策略种类。 + +使用`Run-Run Bus`和`Run-Stop Bus`控制公交的启动和停止。在开始运行之后,在日志输出区会打印当前的状态。 + +在控制面板的下方可以查看当前存在的请求与添加请求。 + +![运行时截图](md_pic/running.png) + +### 策略上的补充说明 + +由于GUI的性质,所有的请求都是立即调度的,不同于OJ版的等待一个clock结束之后在进行调度。 diff --git a/include/BusStrategyBase.h b/include/BusStrategyBase.h index df3fa78..2057e2f 100644 --- a/include/BusStrategyBase.h +++ b/include/BusStrategyBase.h @@ -16,11 +16,29 @@ class BusStrategyBase : public QObject { Q_OBJECT public: + /** + * 轨道模型 + */ RailsModel *rails_model; + + /** + * 请求模型 + */ QueryModel *query_model; + + /** + * 公交车模型 + */ BusModel *bus_model; + /** + * 当前的计时时刻 + */ int bus_tick; + + /** + * 当前的处理策略 + */ int strategy; BusStrategyBase(); @@ -94,8 +112,14 @@ public slots: */ void OneTickSlot(int remaining_time); + /** + * 获得公交车前进方向的槽函数 + */ void GetBusDirectionSlot(); + /** + * 处理到站事件的槽函数 + */ void OnStopSlot(); private: @@ -110,9 +134,14 @@ private: */ QString PrintState(int remaining_time) const; - + /** + * 设置各种连接 + */ void SetConnection() const; + /** + * 处理请求 + */ void HandleQuery(); }; diff --git a/include/busModel.h b/include/busModel.h index a44c93f..73e42ec 100644 --- a/include/busModel.h +++ b/include/busModel.h @@ -19,6 +19,9 @@ class BusModel { public: + /** + * 公交车当前所在的站点 + */ rail_node_t *rail_pos; /** @@ -46,6 +49,11 @@ public: */ void ResetBus(rail_node_t *head); + /** + * 获得公交车当前所在位置 + * @param remaining_time 行驶计时器剩下的时间 + * @return 到起点的距离 + */ double GetBusPosition(int remaining_time); /** diff --git a/md_pic/main.png b/md_pic/main.png new file mode 100644 index 0000000000000000000000000000000000000000..d209e3f153d6417b543d27ecf1830e4eaa28f3e2 GIT binary patch literal 19564 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 literal 0 HcmV?d00001 diff --git a/md_pic/running.png b/md_pic/running.png new file mode 100644 index 0000000000000000000000000000000000000000..8eb64397aed958c4279ecce72fcf54e195f5128f GIT binary patch literal 48285 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

WP_Y^tY^{Ie@X!d3Gp5an$;p# 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 literal 0 HcmV?d00001 diff --git a/src/busModel.cpp b/src/busModel.cpp index ce8e109..bcb8e6d 100644 --- a/src/busModel.cpp +++ b/src/busModel.cpp @@ -29,6 +29,7 @@ void BusModel::ResetBus(rail_node_t *head) double BusModel::GetBusPosition(int remaining_time) { double result = 0; + double length = 0; rail_node_t *now_pos = rail_pos; rail_node_t *node = rail_head; @@ -39,23 +40,43 @@ double BusModel::GetBusPosition(int remaining_time) node = node->next_node; } while (node != now_pos); - // 如果就在起始点,距离为0 - if(now_pos == rail_head) - { - result = 0; - } - + // 获得可能存在的偏移量 if(remaining_time > 0) { if(direction == BUS_CLOCK_WISE) { - double length = now_pos->next_node_distance - (double)remaining_time / 1000.0 * velocity; - result = result + length; + length = now_pos->next_node_distance - (double)remaining_time / 1000.0 * velocity; } else if(direction == BUS_COUNTER_CLOCK_WISE) { - double length = now_pos->last_node_distance - (double)remaining_time / 1000.0 * velocity; - result = result - length; + length = now_pos->last_node_distance - (double)remaining_time / 1000.0 * velocity; + length = -length; + } + } + + if(now_pos == rail_head) + { + // 在起点 + if(length >= 0) + { + result = length; + } + else + { + result = result + length; + } + } + else + { + // 在其他点 + if(now_pos == rail_head->last_node and length == -rail_head->last_node_distance) + { + // 恰好即将回到出发点的情况 + result = 0; + } + else + { + result = result + length; } } diff --git a/src/centralwidget.cpp b/src/centralwidget.cpp index 08a5fe2..87976cb 100644 --- a/src/centralwidget.cpp +++ b/src/centralwidget.cpp @@ -139,6 +139,26 @@ void CentralWidget::DeleteQueryList() void CentralWidget::AppendQueryItemSlot(int query_type, int node_id) { + // 判断是否存在相同的请求 + // 如果存在就不再添加 + bool is_exist = false; + auto first_item = query_items.begin(); + first_item++; + + for(auto itor = first_item; itor != query_items.end(); ++itor) + { + if((*itor)->query_type == query_type and (*itor)->target_node_id == node_id) + { + is_exist = true; + break; + } + } + + if(is_exist) + { + return; + } + QueryListItem *item = new QueryListItem(query_type, node_id); query_items.push_back(item);