基于C++實(shí)現(xiàn)旅行線路設(shè)計(jì)
訪問【W(wǎng)RITE-BUG數(shù)字空間】_[內(nèi)附完整源碼和文檔]
系統(tǒng)根據(jù)風(fēng)險(xiǎn)評估,為旅客設(shè)計(jì)一條符合旅行策略的旅行線路并輸出,系統(tǒng)能查詢當(dāng)前時(shí)刻旅客所處的地點(diǎn)和狀態(tài)(停留城市/所在交通工具)。
1. 實(shí)驗(yàn)內(nèi)容和實(shí)驗(yàn)環(huán)境描述
1.1 實(shí)驗(yàn)內(nèi)容
城市之間有各種交通工具(汽車、火車和飛機(jī))相連,有些城市之間無法直達(dá),需要途徑中轉(zhuǎn)城市。某旅客于某一時(shí)刻向系統(tǒng)提出旅行要求。考慮在當(dāng)前 COVID-19 疫情環(huán)境下,各個城市的風(fēng)險(xiǎn)程度不一樣,分為低風(fēng)險(xiǎn)、中風(fēng)險(xiǎn)和高風(fēng)險(xiǎn)三種。系統(tǒng)根據(jù)風(fēng)險(xiǎn)評估,為該旅客設(shè)計(jì)一條符合旅行策略的旅行線路并輸出;系統(tǒng)能查詢當(dāng)前時(shí)刻旅客所處的地點(diǎn)和狀態(tài)(停留城市/所在交通工具)。
1.2 環(huán)境描述
Windows 10 環(huán)境 PC 機(jī);
Microsoft Visual Studio 2019 集成化開發(fā)環(huán)境;
Qt Creator 4.11.1(Based on Qt 5.14.1) 集成化開發(fā)環(huán)境;
Qt 運(yùn)行庫(Qt 5.14.2 MinGW 32-bit)
2. 軟件設(shè)計(jì)
2.1 數(shù)據(jù)結(jié)構(gòu)
City 類(city.h):
class City : public QObject
{
public:
? ?City(string name = "", int number = 0, double risk = 0);
? ?string name; //城市名
? ?int number; //城市序號
? ?QPoint pos; //城市在地圖上的位置
? ?double risk; //城市風(fēng)險(xiǎn)值
? ?void add_route(); //為該城市添加時(shí)刻表(未使用)
? ?vector<class Transport*> everyday_table; //每日時(shí)刻表
signals:
};
Tourist 類(tourist.h):
class Tourist
{
public:
? ?Tourist(City* A = nullptr, City* B = nullptr, int limit = 0, int number = 0);
? ?bool enabled; //是否啟用
? ?int number; //旅客序號
? ?int status; //旅客狀態(tài)
? ?int stlimit; //最早出發(fā)時(shí)間
? ?int limit; //最晚到達(dá)時(shí)間
? ?void plan_route(int time); //為旅客規(guī)劃路線
? ?void update_status(int time); //更新旅客信息
? ?City* start; //出發(fā)點(diǎn)
? ?City* destination; //目的地
? ?City* nowat; //當(dāng)前位置
? ?Route plan; //當(dāng)前規(guī)劃路徑
? ?double risk; //當(dāng)前旅客所承受的風(fēng)險(xiǎn)值
? ?void dfs(City* at, Route rut, int time); //當(dāng)前所在位置 路線 當(dāng)前時(shí)間 時(shí)間限制
signals:
};
Transport 類(transport.h):
class Transport
{
public:
? ?Transport(class City* A = nullptr, class City* B = nullptr, int st = 0, double risk = 0, int cost = 0);
? ?int transportKind; //載具種類
? ?class City* start; //首發(fā)站
? ?class City* destination; //終點(diǎn)站
? ?int start_time; //出發(fā)時(shí)間
? ?double risk; //風(fēng)險(xiǎn)
? ?int time_cost; //所需時(shí)間
signals:
};
Route 類(route.h):
class Route
{
public:
? ?Route();
? ?vector<City*> via;
? ?vector<int> mid_arrive_time;
? ?vector<int> mid_again_time;
? ?int transportKind;
? ?double risk;
? ?int start_time; //出發(fā)時(shí)間
? ?int time_cost; //下一步到達(dá)的時(shí)間
signals:
};



