C++實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng)
本文實(shí)例為大家分享了停車場(chǎng)管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
#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;//車牌號(hào) int time;//車輛進(jìn)入的時(shí)間(以小時(shí)為單位) int sub;//車輛在停車場(chǎng)的位置 } nod; map<string,int>mp;//用來檢測(cè)車輛在停車場(chǎng)或者在便道內(nèi) deque<node>q1;//模擬停車場(chǎng) deque<node>q2;//模擬便道 stack<node>sk;//交換媒介 string str1="park",str2="pavement"; void Push(int n)//車輛駛?cè)氩僮? { cout<<"請(qǐng)輸入要進(jìn)入車輛的車牌號(hào)"<<endl; string x; int y,ans; cin>>x; cout<<"請(qǐng)輸入該車輛進(jìn)入停車場(chǎng)的時(shí)間(時(shí)間為整形時(shí)刻)"<<endl; cin>>y; if(!mp[x])//如果此車不在停車場(chǎng)或者便道內(nèi)執(zhí)行以下命令 { if(q1.size()<n)//如果停車場(chǎng)未滿 { nod.no=x; nod.time=y; nod.sub=q1.size()+1; q1.push_back(nod); mp[x]=q1.size(); } else//停車場(chǎng)滿了之后進(jìn)入便道 { nod.no=x; nod.time=y; nod.sub=q2.size()+1; q2.push_back(nod); mp[x]=n+q2.size(); } } else cout<<"錯(cuò)誤:該車輛已在停車場(chǎng)內(nèi)!"<<endl; } void Pop(int n)//車輛駛出操作 { cout<<"請(qǐng)輸入要駛出車輛的車牌號(hào)"<<endl; string x; int y,ans; cin>>x; cout<<"請(qǐng)輸入該車輛駛出停車場(chǎng)的時(shí)間(時(shí)間為整形時(shí)刻)"<<endl; cin>>y; if(!mp[x]) cout<<"錯(cuò)誤:該輛并不在停車場(chǎng)內(nèi)!"<<endl; else if(mp[x]<=n)//如果該車在停車場(chǎng)內(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())//如果便道里也有車,那么進(jìn)入停車場(chǎng),并且便道后面的車向前移動(dòng) { 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<<" 個(gè)小時(shí)"<<endl; cout<<"所以該車輛需要繳納 "<<ans*5<<"元"<<endl; } else if(mp[x]>n)//如果車在便道里,那么直接離開,后面的車向前移動(dòng) { 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<<"由于該車輛并未進(jìn)入停車場(chǎng),所以不進(jìn)行收費(fèi)"<<endl; } } void Query1(int n)//查詢停車場(chǎng)的停車狀態(tài) { cout<<"請(qǐng)輸入要查詢狀態(tài)的車牌號(hào)"<<endl; cout<<endl; string x; cin>>x; if(!mp[x]) cout<<"該車輛并未在停車場(chǎng)"<<endl; else if(mp[x]<=n) cout<<"該車輛位于停車場(chǎng)"<<mp[x]<<"號(hào)位"<<endl; else cout<<"該車輛位于"<<mp[x]-n<<"號(hào)便道"<<endl; } void Query2(int n)//查詢停車場(chǎng)的空車位 { cout<<endl; if(q1.size()==n) cout<<"停車場(chǎng)已滿"<<endl; else { cout<<"停車場(chǎng)的"<<q1.size()+1; for(int i=q1.size()+2; i<=n; i++) cout<<"、"<<i; cout<<"號(hào)位車為空"<<endl; } } int main() { int n; cout<<" **************停車場(chǎng)管理系統(tǒng)**************"<<endl; cout<<endl; cout<<"停車場(chǎng)管理系統(tǒng)說明:"<<endl; cout<<"1.當(dāng)停車場(chǎng)車位已滿之后,車將會(huì)停在便道"<<endl; cout<<"2.停車場(chǎng)按照每小時(shí)五元的標(biāo)準(zhǔn)收費(fèi)(不足一小時(shí)按照一小時(shí)計(jì)算)"<<endl; cout<<"3.停在便道的車輛不收費(fèi)。"<<endl; cout<<endl; cout<<"首先請(qǐng)?jiān)O(shè)置停車場(chǎng)的總共的車位數(shù):"<<endl; cin>>n; cout<<endl; cout<<"*********車位設(shè)置完畢!下面開始停車場(chǎng)管理系統(tǒng)模擬*********"<<endl; cout<<endl; cout<<" *********操作說明*********"<<endl; cout<<endl; cout<<"車輛駛?cè)氲怯?>請(qǐng)按1 ^_^ 車輛駛出登記->請(qǐng)按2 ^_^"<<endl; cout<<endl; cout<<"查詢停車場(chǎng)的停車狀態(tài)->請(qǐng)按3 ^_^ 查詢停車場(chǎng)空閑車位->請(qǐng)按4 ^_^ "<<endl; cout<<endl; cout<<"退出停車場(chǎng)管理系統(tǒng)->請(qǐng)按0 ^_^"<<endl; cout<<endl; cout<<"說明完畢!下面開始操作"<<endl; cout<<endl; while(1) { cout<<"********請(qǐng)選擇操作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<<"歡迎使用停車場(chǎng)管理系統(tǒng),期待您的下次使用^_^"<<endl; }
結(jié)果:
更多學(xué)習(xí)資料請(qǐng)關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:c語言通過opencv實(shí)現(xiàn)輪廓處理與切割
欄 目:C語言
下一篇:Opencv光流運(yùn)動(dòng)物體追蹤詳解
本文標(biāo)題:C++實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng)
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/993.html
您可能感興趣的文章
- 04-02c語言沒有round函數(shù) round c語言
- 01-10數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-用棧實(shí)現(xiàn)表達(dá)式求值的方法詳解
- 01-10使用OpenGL實(shí)現(xiàn)3D立體顯示的程序代碼
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10求斐波那契(Fibonacci)數(shù)列通項(xiàng)的七種實(shí)現(xiàn)方法
- 01-10C語言 解決不用+、-、&#215;、&#247;數(shù)字運(yùn)算符做加法
- 01-10使用C++實(shí)現(xiàn)全排列算法的方法詳解
- 01-10c++中inline的用法分析
- 01-10用C++實(shí)現(xiàn)DBSCAN聚類算法
- 01-10深入全排列算法及其實(shí)現(xiàn)方法


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10C#中split用法實(shí)例總結(jié)