華北電力大學
實驗報告
實驗名稱: 停車場管理
課程名稱: 資料結構
停車場管理系統
1 問題描述
停車場內有乙個可停放n輛汽車的狹長通道,且只有乙個大門可供汽車進出。汽車在停車場內按車輛到達時的先後順序,依次由北向南排列(大門在最南端,最先到達的第一車輛停放在車輛的最北端),若車場內已停滿n輛汽車則後來的汽車只能在門外便道上等候,一旦停車場內有車開走,則排在便道上的第一輛車即可開入;當停車場內某輛車要離開時,由於停車場是狹長的通道,在它之後開入車場的車輛必須先退出停車場為他讓路,待該車輛開出大門後,為它讓路的車輛再按原次序進入車場。在這裡假設汽車不能從便道上開走。
設計程式
2 需求分析
(1)車輛到達時,停車場若未滿,則進入停車場,否則到便道排隊等候。
(2)當有車輛從停車場離開時,停車場裡排到前面的車進入臨時停車場,等車離開後再回來,等待在便道的車輛按順序進入停車場停放。
(3)用順序棧來表示停車場,臨時棧表示臨時停車場,鏈隊表示停車場外的便道。
(4)程式執行的命令為:①車輛進入停車場 ②車輛在便道等候③車輛進入臨時停車場 ④車輛離開停車場。
3 執行環境
4 開發工具
vs2010
5 設計概要
定義兩個順序棧ts與ps:
typedef struct
elemtype;
struct seqstack
ts,ps;
定義鏈隊:
squeue:
typedef struct lnode
*squeue;
init_pstack(seqstack &s):
棧的初始化定義push(&s,e):
push_pstack(seqstack &s,int x):
棧中元素的新增
pop_pstack(seqstack &s):
棧中元素的刪除pop(&s,&e)
empty_pstack(seqstack &s):
判斷棧是否為空
top_pstack(seqstack &s):
取棧頂元素
init_que(squeue &f,squeue &r):
佇列的初始化定義
in_que(squeue &f,squeue &r,int x):
佇列的元素新增
out_que(squeue &f,squeue &r):
佇列的元素刪除
gethead_que(squeue &f):
取隊頭元素
empty_que(squeue &f,squeue &r):
判斷佇列是否為空
6 **實現
#include
using namespace std;
#define stacksize 3 //棧
#define queuesize n //佇列
#define error 0
typedef struct
elemtype;
struct seqstack
ts,ps;
typedef struct lnode
*squeue; //鏈隊的定義
squeue f,r;
int top;
bool out;
int temp;
int number;
char ch;
seqstack init_pstack(seqstack &s)//棧的初始化定義
void push_pstack(seqstack &s,int x)//棧中元素的新增
}void pop_pstack(seqstack &s)//棧中元素的刪除
bool empty_pstack(seqstack &s)//判斷棧是否為空
int top_pstack(seqstack &s)//取棧頂元素
void init_que(squeue &f,squeue &r)//佇列的初始化定義
void in_que(squeue &f,squeue &r,int x)//佇列的元素新增
void out_que(squeue &f,squeue &r)//佇列的元素刪除
}int gethead_que(squeue &f)//取隊頭元素
bool empty_que(squeue &f,squeue &r)//判斷佇列是否為空
void main()
{ int number;
init_pstack(ts);
init_pstack(ps);
init_que(f,r);
out=false;
cout<<"請輸入車號"< cin>>number;
cout<<"請選擇該車的出行,a為進入停車場,l為離開停車場"< cin>>ch;
while(number>0)
{switch(ch)
{case 'a':
if(in_que(f,r,number);
cout<<"車牌號為"<
else
push_pstack(ps,number);
cout<<"車牌號為"<
break;
case 'l':
while((!empty_pstack(ps))&&(top_pstack(ps)!=number))
temp=top_pstack(ps);
pop_pstack(ps);
push_pstack(ts,temp);
if (empty_pstack(ps))
cout<<"停車場沒有此車" pop_pstack(ps); cout<<"車牌號為" while(!empty_pstack(ts)) temp=top_pstack(ts); pop_pstack(ts); push_pstack(ps,temp); if(out&&!empty_que (f,r)) temp=gethead_que(f); out_que(f,r); out=false;; push_pstack(ps,temp); break; cout<<"請輸入車號"< cin>>number; cout<<"請選擇該車的出行,a為進入停車場,l為離開停車場"< cin>>ch; 實驗二 停車場管理問題 一 問題描述 1 實驗題目 設停車場是乙個可停放n輛汽車的狹長通道,且只有乙個大門可供汽車進出。汽車停在停車場內按車輛到達時間的先後順序,依次由北向南排列 大門在最南端,最先到達的第一輛車停放在車場的最北端 若停車場內已經停滿n輛車,那麼後來的車只能在門外的便道上等候。一旦有... 停車場管理系統是以一種高效 公正準確 科學經濟的停車場管理工具,實現停車場對於車輛動態和靜態的綜合管理。系統以感應卡為載體,通過感應卡記錄車輛進出資訊,利用計算機管理手段確定停車場的計費金額,結合工業自動化控制技術控制機電一體化外圍裝置,從而管理進出停車場的各種車輛。由於科技的日新月異不斷更新,為了... 目錄第一節停車場管理系統的分類 2 第二節停車場智慧型管理系統 2 一 系統的組成 2 二 與國內其它品牌對比優勢 3 三 管理體制 4 2 1系統使用的智慧卡種類 4 2 2收費制式 5 2 3計費 收費方式 5 2 4收費標準 5 四 系統安全保證措施 5 五 系統主要功能 6 1 自動道閘 6...實驗停車場管理系統
停車場管理系統簡介
停車場系統方案