溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么用C++編寫停車場管理系統(tǒng)

發(fā)布時間:2021-03-10 15:56:05 來源:億速云 閱讀:461 作者:TREX 欄目:編程語言

這篇文章主要介紹“怎么用C++編寫停車場管理系統(tǒng)”,在日常操作中,相信很多人在怎么用C++編寫停車場管理系統(tǒng)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用C++編寫停車場管理系統(tǒng)”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cstdlib>
#include<algorithm>
#include<queue>
#include<vector>
#include<stack>
#include<map>
using namespace std;
struct node
{
 string no;//車牌號
 int time;//車輛進入的時間(以小時為單位)
 int sub;//車輛在停車場的位置
} nod;
map<string,int>mp;//用來檢測車輛在停車場或者在便道內(nèi)
deque<node>q1;//模擬停車場
deque<node>q2;//模擬便道
stack<node>sk;//交換媒介
string str1="park",str2="pavement";
void Push(int n)//車輛駛?cè)氩僮?
{
 cout<<"請輸入要進入車輛的車牌號"<<endl;
 string x;
 int y,ans;
 cin>>x;
 cout<<"請輸入該車輛進入停車場的時間(時間為整形時刻)"<<endl;
 cin>>y;
 if(!mp[x])//如果此車不在停車場或者便道內(nèi)執(zhí)行以下命令
 {
 if(q1.size()<n)//如果停車場未滿
 {
 nod.no=x;
 nod.time=y;
 nod.sub=q1.size()+1;
 q1.push_back(nod);
 mp[x]=q1.size();
 }
 else//停車場滿了之后進入便道
 {
 nod.no=x;
 nod.time=y;
 nod.sub=q2.size()+1;
 q2.push_back(nod);
 mp[x]=n+q2.size();
 }
 }
 else
 cout<<"錯誤:該車輛已在停車場內(nèi)!"<<endl;
}
void Pop(int n)//車輛駛出操作
{
 cout<<"請輸入要駛出車輛的車牌號"<<endl;
 string x;
 int y,ans;
 cin>>x;
 cout<<"請輸入該車輛駛出停車場的時間(時間為整形時刻)"<<endl;
 cin>>y;
 if(!mp[x])
 cout<<"錯誤:該輛并不在停車場內(nèi)!"<<endl;
 else if(mp[x]<=n)//如果該車在停車場內(nèi)
 {
 mp[x]=0;
 while(q1.back().no!=x)//車出
 {
 q1.back().sub--;
 sk.push(q1.back());
 q1.pop_back();
 }
 ans=y-q1.back().time;
 q1.pop_back();
 while(!sk.empty())
 {
 q1.push_back(sk.top());
 sk.pop();
 mp[q1.back().no]=q1.back().sub;
 }
 if(!q2.empty())//如果便道里也有車,那么進入停車場,并且便道后面的車向前移動
 {
 q2.front().time=y;
 q2.front().sub=q1.size()+1;
 q1.push_back(q2.front());
 q2.pop_front();
 while(!q2.empty())
 {
 q2.back().sub--;
 sk.push(q2.back());
 q2.pop_back();
 }
 while(!sk.empty())
 {
 q2.push_back(sk.top());
 sk.pop();
 mp[q2.back().no]=q1.back().sub;
 }
 mp[q1.back().no]=q1.size();
 }
 cout<<"該車輛一共停了 "<<ans<<" 個小時"<<endl;
 cout<<"所以該車輛需要繳納 "<<ans*5<<"元"<<endl;
 }
 else if(mp[x]>n)//如果車在便道里,那么直接離開,后面的車向前移動
 {
 mp[x]=0;
 while(q2.back().no!=x)
 {
 q2.back().sub--;
 sk.push(q2.back());
 q2.pop_back();
 }
 q2.pop_back();
 while(!sk.empty())
 {
 q2.push_back(sk.top());
 sk.pop();
 }
 cout<<"由于該車輛并未進入停車場,所以不進行收費"<<endl;
 }
}
void Query1(int n)//查詢停車場的停車狀態(tài)
{
 cout<<"請輸入要查詢狀態(tài)的車牌號"<<endl;
 cout<<endl;
 string x;
 cin>>x;
 if(!mp[x])
 cout<<"該車輛并未在停車場"<<endl;
 else if(mp[x]<=n)
 cout<<"該車輛位于停車場"<<mp[x]<<"號位"<<endl;
 else
 cout<<"該車輛位于"<<mp[x]-n<<"號便道"<<endl;
}
void Query2(int n)//查詢停車場的空車位
{
 cout<<endl;
 if(q1.size()==n)
 cout<<"停車場已滿"<<endl;
 else
 {
 cout<<"停車場的"<<q1.size()+1;
 for(int i=q1.size()+2; i<=n; i++)
 cout<<"、"<<i;
 cout<<"號位車為空"<<endl;
 }
}
int main()
{
 int n;
 cout<<" **************停車場管理系統(tǒng)**************"<<endl;
 cout<<endl;
 cout<<"停車場管理系統(tǒng)說明:"<<endl;
 cout<<"1.當停車場車位已滿之后,車將會停在便道"<<endl;
 cout<<"2.停車場按照每小時五元的標準收費(不足一小時按照一小時計算)"<<endl;
 cout<<"3.停在便道的車輛不收費。"<<endl;
 cout<<endl;
 cout<<"首先請設(shè)置停車場的總共的車位數(shù):"<<endl;
 cin>>n;
 cout<<endl;
 cout<<"*********車位設(shè)置完畢!下面開始停車場管理系統(tǒng)模擬*********"<<endl;
 cout<<endl;
 cout<<" *********操作說明*********"<<endl;
 cout<<endl;
 cout<<"車輛駛?cè)氲怯?>請按1 ^_^ 車輛駛出登記->請按2 ^_^"<<endl;
 cout<<endl;
 cout<<"查詢停車場的停車狀態(tài)->請按3 ^_^ 查詢停車場空閑車位->請按4 ^_^ "<<endl;
 cout<<endl;
 cout<<"退出停車場管理系統(tǒng)->請按0 ^_^"<<endl;
 cout<<endl;
 cout<<"說明完畢!下面開始操作"<<endl;
 cout<<endl;
 while(1)
 {
 cout<<"********請選擇操作1~4或者退出按0********"<<endl;
 cout<<endl;
 int t;
 cin>>t;
 if(t==1)
 Push(n);
 else if(t==2)
 Pop(n);
 else if(t==3)
 Query1(n);
 else if(t==4)
 Query2(n);
 else
 break;
 cout<<endl;
 cout<<"***********************biubiu***********************"<<endl;
 cout<<"***********************biubiu***********************"<<endl;
 cout<<endl;
 }
 cout<<"歡迎使用停車場管理系統(tǒng),期待您的下次使用^_^"<<endl;
}

結(jié)果:

怎么用C++編寫停車場管理系統(tǒng)

怎么用C++編寫停車場管理系統(tǒng)

到此,關(guān)于“怎么用C++編寫停車場管理系統(tǒng)”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI