這篇文章主要介紹“怎么用C++編寫停車場管理系統”,在日常操作中,相信很多人在怎么用C++編寫停車場管理系統問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用C++編寫停車場管理系統”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
#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;//用來檢測車輛在停車場或者在便道內
deque<node>q1;//模擬停車場
deque<node>q2;//模擬便道
stack<node>sk;//交換媒介
string str1="park",str2="pavement";
void Push(int n)//車輛駛入操作
{
cout<<"請輸入要進入車輛的車牌號"<<endl;
string x;
int y,ans;
cin>>x;
cout<<"請輸入該車輛進入停車場的時間(時間為整形時刻)"<<endl;
cin>>y;
if(!mp[x])//如果此車不在停車場或者便道內執行以下命令
{
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<<"錯誤:該車輛已在停車場內!"<<endl;
}
void Pop(int n)//車輛駛出操作
{
cout<<"請輸入要駛出車輛的車牌號"<<endl;
string x;
int y,ans;
cin>>x;
cout<<"請輸入該車輛駛出停車場的時間(時間為整形時刻)"<<endl;
cin>>y;
if(!mp[x])
cout<<"錯誤:該輛并不在停車場內!"<<endl;
else if(mp[x]<=n)//如果該車在停車場內
{
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)//查詢停車場的停車狀態
{
cout<<"請輸入要查詢狀態的車牌號"<<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<<" **************停車場管理系統**************"<<endl;
cout<<endl;
cout<<"停車場管理系統說明:"<<endl;
cout<<"1.當停車場車位已滿之后,車將會停在便道"<<endl;
cout<<"2.停車場按照每小時五元的標準收費(不足一小時按照一小時計算)"<<endl;
cout<<"3.停在便道的車輛不收費。"<<endl;
cout<<endl;
cout<<"首先請設置停車場的總共的車位數:"<<endl;
cin>>n;
cout<<endl;
cout<<"*********車位設置完畢!下面開始停車場管理系統模擬*********"<<endl;
cout<<endl;
cout<<" *********操作說明*********"<<endl;
cout<<endl;
cout<<"車輛駛入登記->請按1 ^_^ 車輛駛出登記->請按2 ^_^"<<endl;
cout<<endl;
cout<<"查詢停車場的停車狀態->請按3 ^_^ 查詢停車場空閑車位->請按4 ^_^ "<<endl;
cout<<endl;
cout<<"退出停車場管理系統->請按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<<"歡迎使用停車場管理系統,期待您的下次使用^_^"<<endl;
}結果:


到此,關于“怎么用C++編寫停車場管理系統”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。