立體化停車場設計書
《立體化停車場設計書》由會員分享,可在線閱讀,更多相關《立體化停車場設計書(56頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 立體化停車場設計書 1.1 課題任務 設停車場有地下和地面兩層, 統(tǒng)一管理。 地下停車場采用單入口和單出口。 地上停車場采用南北方向的雙口,每個口都有一個入口和出口。停車順序先地面,后地下。地面入口處 各有一個單車道的等候通道, 并允許等候的車輛因急事從等候通道直接開走。 具體的設計任務如下: ( 1)采用棧、隊列和有序表等數(shù)據(jù)結(jié)構。 ( 2)等候車輛的管理。 ( 3)地下、地上停車位的管理。 ( 4)停車計費功能 。 1.2 課題原理 針對本次課程設計的具體要求, 我們設計了如下方
2、案: 停車場部選擇棧作為基本數(shù)據(jù)結(jié)構,充分利用棧后進先出的數(shù)據(jù)結(jié)構特點,停車場外部的等候區(qū)域,針對其“先到先出”的 工作特點,選擇隊列作為基本數(shù)據(jù)結(jié)構。同時設計了計時計費功能,會員制度,針對不同型號,是否為會員的車輛進行分類收費。 2 需求分析 2.1 課題調(diào)研 為了完成本次課程設計任務, 我們對校園周邊的停車場運作狀況進行了一系列的前期調(diào)研,包括停車場的管理系統(tǒng)的運行原理, 收費標準等等, 為本次課程設計任務的完成打下了良好的基礎。 2.2 功能需求 此次設計任務,要求停車場分為上下兩層,上層為南北雙向入口和出口,下層為單向入口出口,并要求
3、我們設計等待區(qū)域。對于收費標準,我們將不同型號的車分類收費,同時增加會員管理制度,對于多次在本停車場停車的會員給予優(yōu)惠。 3 方案設計 3.1 總體功能設計 本次課程設計共分為四個主要功能: ( 1)進入停車場 ( 2)離開停車場 ( 3)查看停車場現(xiàn)狀 ( 4)計費功能 針對進入停車場的功能,我們設計了“先地上,后地下” ,的停放順序,當?shù)厣夏媳彪p向任一停車場停滿后,再向該停車場進車,會顯示“停車場已滿”等提示信息,并將車輛停 入有剩余車位的其他停車場。 當所有停車場均無停車位時, 到來車輛將會進入等待區(qū)域, 一旦
4、有車輛離開停車場,最先到達等待的區(qū)域的車輛將會進入停車場。 針對離開停車場的功能,可選擇任一停車場出車,并會根據(jù)停車時長,車輛類型,以及是否為會員等信息給出本次停車的費用。 針對查看停車場現(xiàn)狀的功能,將顯示車牌號,何處停車等相關信息。 此外,我們還設計了計費功能, 利用 windows 系統(tǒng)自帶函數(shù)獲取時間, 免去了人工手動輸入時間的繁瑣步驟, 同時,針對不同車型, 是否享受會員優(yōu)惠等差異制定了不同的收費標準,使停車場的運行更為規(guī)化,合理化。 3.2 數(shù)據(jù)結(jié)構設計 本次課程設計主要使用了棧和隊列兩種數(shù)據(jù)結(jié)構, 具體的設計方案和操作過程將在個人報告中給出,在此不
5、再贅述。
3.3 函數(shù)原型設計
int main()
{
system("color E1");
cout< 6、~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^"< 7、=================================== "< 8、out< 9、
}
3.4 用戶界面設計
運行時為 DOS界面,通過增加字符畫,更換背景顏色等方法增加界面的美觀度。
4 方案實現(xiàn)
4.1 開發(fā)環(huán)境與工具
開發(fā)環(huán)境: VisualC++6.0
4.2 個人設計實現(xiàn)(按組員分小節(jié))
奕設計實現(xiàn)
隊列類的實現(xiàn):
typedef struct QueueNode
//
隊列結(jié)構
{
Car data;
struct QueueNode *next;
}QueueNode;
class Queue // 定義隊列類
{
10、
public:
QueueNode *front, *rear;
Queue(){cout<<" 構造函數(shù) "< 11、ue(){cout<<" 析構函數(shù) "< 12、
if (front == NULL)
{
return (FALSE);
}
else
{
rear = front;
front->next = NULL;
cout<<" 構造了一個空隊列 "< 13、
cout<<" 銷毀隊列成功 "< 14、data.licence= rear->data.leaved;
cout<<" 車輛入隊成功 "< 15、e
{
t = front->next;
if (rear == t)
rear = front;
(*c)= t->data;
front->next = t->next;
free(t);
cout<<" 車輛刪除成功 "< 16、
return 1;
}
else return 0;
}
王卓君設計實現(xiàn)
Time 類:
#include 17、IME LocalTime;
int month;
int day;
int hour;
int minuet;
int second;
public:
Time()
{
GetLocalTime(&LocalTime); // 取系統(tǒng)時間
}
void OutputTime(); // 輸出時間函數(shù)
int getmonth() {return LocalTime.wMonth;}
int getday() {return LocalTime.wDay;}
int gethour() {return Loca 18、lTime.wHour;}
int getminute() {return LocalTime.wMinute;}
int getsecond() {return LocalTime.wSecond;}
void save()
{
month=getmonth();
day=getday();
hour=gethour();
minuet=getminute();
second=getsecond();
}
~Time(){}
};
void Time::OutputTime()
19、
//
輸出當前系統(tǒng)時間
{
cout<<" 當 前 時 間 為 : "< 20、month()<<"
分 "< 21、int carfre[100]={0};
//static int carid=0;
using namespace std;
class Time // 時間類
{
private:
SYSTEMTIME LocalTime;
int month;
int day;
int hour;
int minuet;
int second;
public:
Time()
{
GetLocalTime(&LocalTime); // 取系統(tǒng)時間
}
void OutputTime(); 22、 // 輸出時間函數(shù)
int getmonth() {return LocalTime.wMonth;}
int getday() {return LocalTime.wDay;}
int gethour() {return LocalTime.wHour;}
int getminute() {return LocalTime.wMinute;}
int getsecond() {return LocalTime.wSecond;}
void save()
{
month=getmonth();
day=getday();
hour= 23、gethour();
minuet=getminute();
second=getsecond();
}
~Time(){}
};
void Time::OutputTime()
//
輸出當前系統(tǒng)時間
{
cout<<" 當 前 時 間 為 : "< 24、E 100 typedef struct{ //
//
鏈表的最大長度
線性表的靜態(tài)單鏈表的存儲結(jié)構
//char data[10];
int data;
int cur;
}component,SLinkList[MAXSIZE];
typedef struct Car
{
int leaved;
char licence[LICENCESIZE];
Time arrive;
Time leave;
}Car;
class Guest:public Time
25、
//
客戶類,繼承
Time 類
{
public:
Time t1,t2;
SLinkList carid;
//
該數(shù)組存車牌號
//char e[10];
int e;
int j,k,v;
int cartype;
//
車輛類型:
1 客車
2
貨車
3
轎車
4 越野車
5 跑車
float price;
public:
Guest(){
for(int i=1,m=0 26、;i<=100,m<100;i++,m++)
{
carid[m].cur=i;
//carid[i].data = "0000000";
}
//j=0;
}
~Guest(){}
int LocateElem(SLinkList
carid,int
*e);
//
線性表定位函數(shù),查找值為
e 的元
素
void saveid(Car *c,int v); float fee(Time t1,Time t2);
//
//
該函數(shù)儲存會員的車牌號和 27、停車次數(shù)計算價格函
float cutprice(float price,int v);
//
計算打折價格函數(shù)
};
int Guest::LocateElem(SLinkList carid,int *e)
//
在靜態(tài)單鏈線性表中查找第個值為 i 的元素若找到,則返回它在表中的位序,否則返回下一
1
位
{
k=0;
//while(k&&strcmp(carid[k].data,e)!=0)
//
在表 28、中順鏈查找
while(carid[k].data != *e)
{
k=carid[k].cur;
if(!carid[k].data)
{
j=k;
k=0;
return j+1;
}
}
return k+1;
}//LocateElem
float Guest::fee(Time t1,Time t2)
//
計算普通價格
{
if(t1.getmonth()!=t2.getmonth())
price=(t2.get 29、month()-t1.getmonth())*3000;
else if(t1.getday()!=t2.getday())
price=(t2.getday()-t1.getday())*500;
else
{
price=((t2.gethour()-t1.gethour())*3600+(t2.getsecond()-t1.getsecond())*60+ (t2.getsecond()-t1.getsecond()))*CHARGE;
cout<<" 您的車是什么類型? 1 客車 2 貨車 3 轎車 4 越野車 5 跑車 "< 30、in>>cartype;
switch(cartype) //1
{
case 1:
case 2:
price=price*2;
break;
case 3:
price=price;
break;
case 4:
price=price*1.5;
break;
case 5:
price=price*1.2;
break;
客車
2
貨車
3
轎車
4 越野車
5 跑車
}
}
return price;
}
31、
float Guest::cutprice(float price,int v)
//
計算會員打折后的價格
{
//int i = LocateElem(carid,*e);
// 調(diào)用線性表定位函數(shù)
if(carfre[v-1]>=100)
price=price*0.55;
else if(carfre[v-1]>=50)
price=price*0.7;
else if(carfre[v-1]>=20)
price=price*0.85;
else
p 32、rice=price*0.95;
return price;
}
//LocateElem 函數(shù)的測試函數(shù)
void main()
{
Guest guest;
int e;
SLinkList carid;
for(int n=0,x=1111;n<5,x<=5555;n++,x=x+1111)
{
carid[n].data=x;
}
for(int i=1,m=0;i<=100,m<100;i++,m++)
{
carid[m].cur=i;
}
for(int y=5;y<10 33、0;y++)
{
carid[y].data=0;
}
cout<<" 請輸入要查詢的值: ";
cin>>e;
cout<<" 結(jié)果是存在第 "< 34、Time t2;
t2.save();
Guest guest;
t2.OutputTime();
cout<<" ★★★★★★★★請輸入車牌號: ";
gets(licence);
printf(" ★★★★★★★★南停車場出車請輸入 0,北停車場出車請輸入 1.\n");
scanf("%d%*c", &a);
if(!(a==1))
{
int i = 0;
s1.sPop(&s1, &c);
while (strcmp(c.licence, licence) != 0 && s1.top!=0)
35、
{
temt1.sPush(&temt1, c);
s1.sPop(&s1, &c);
i++;
}
c.leave=t2;
int x;
float price;
cout<<" ★★★★★★★★您是否是會員? 1 是 2 否★★★ ";
cin>>x;
if(x==1)
{
price= guest.fee(c.arrive,c.leave);
price= guest.cutprice();
}
else
price=guest.fee(guest.t1,guest.t2);
cou 36、t<<" ★★★★★★★★該車應付 "< 37、sPop(&s2,&c);
while (strcmp(c.licence, licence) != 0)
{
temt1.sPush(&temt1, c);
s2.sPop(&s2, &c);
}
c.leave=t2;
int x;
float price;
cout<<" ★★★★★★★★您是否是會員?★ 1 是 ☆ 2 否★★★ "; cin>>x;
if(x==1)
{
price=guest.fee(c.arrive,c.leave);
price=guest.cutprice();
38、
}
else
price=guest.fee(guest.t1,guest.t2);
cout<<" ★★★★★★★★該車應付 "< 39、
printf("\n");
}
}
void CarOut2(Stack *park, Stack *temp,Queue *Q)
{
char licence[LICENCESIZE];
Car c;
Time t2;
t2.save();
Guest guest;
t2.OutputTime();
cout<<" ★★★★★★★★請輸入車牌號: ";
gets(licence);
s3.Pop(&s3, &c);
while (strcmp(c.licence, licence) != 0)
40、{
temp1.Push(&temp1, c);
s3.Pop(&s3, &c);
}
c.leave=t2;
int x;
float price;
cout<<" ★★★★★★★★您是否是會員?★ 1 是 ☆ 2 否★★★ "; cin>>x;
if(x==1)
{
price=guest.fee(c.arrive,c.leave);
price=guest.cutprice();
}
else
price=guest.fee(guest.t1,guest.t2);
cout<<" ★ 41、★★★★★★★該車應付 "< 42、 *parking1,SqStack *parking2,SqStack *temt ,Queue *shortcut)
{
int P;
cout<<" ★★★★★★★★地上停車場出車請輸入★ 1,地下停車場出車請輸入★ 2☆☆☆ "; scanf("%d%*c", &P);
switch(P)
{
case 1:CarOut1(parking1, parking2,temt, shortcut );break;
case 2:CarOut2(park, temp, shortcut);break;
}
}
天舒設計實 43、現(xiàn)
typedef struct Car
{
int licence;
}Car;
class SqStack
{
public:
Car data[STACKSIZE];
int top;
int base;
SqStack();
void InitSqStack(SqStack *s);
int EmptySqStack(SqStack *s);
int FullSqStack(SqStack *S);
int SGetTop(SqStack *s,Car c);
i 44、nt SPush(SqStack *s,Car c);
int SPop(SqStack *s,Car *c);
};
SqStack::SqStack(){}// 析構函數(shù)
int SqStack::EmptySqStack(SqStack *s)
{
if (base==top)
{
cout<<" 地上停車場現(xiàn)無車,棧為空 !"< 45、
}
}
int SqStack::FullSqStack(SqStack *S)
{
if (top == STACKSIZE - 1)
{
cout<<" 地上停車場車輛已滿,棧滿 !"< 46、k(S))
return (FALSE);
else
{
top++;
data[top] = c;
cout<<" 車輛已入棧,成功停入地上停車場 !"< 47、 48、
}// 置棧一個空棧 S
class Stack
{
public:
Car data[STACKSIZE];
int top;
int base;
Stack();
void InitStack(Stack *s);
int EmptyStack(Stack *s);
int FullStack(Stack *S);
int GetTop(Stack *s,Car c);
int Push(Stack *s,Car c);
int Pop(Stack *s,Car *c);
49、
};
Stack::Stack(){
cout<<" 現(xiàn)已構造一個棧類 "< 50、S)
{
if (top == STACKSIZE - 1)
{
cout<<" 地下停車場車輛已滿,棧滿 !"< 51、a[top] = c;
cout<<" 車輛已入棧,成功停入地下停車場 !"< 52、 *s,Car c){
if(top==base)
return FALSE;
else
c=data[top-1];
top--;
return (TRUE);
}// 若棧非空,則返回 s 的棧頂元素;否則返回 ERROR
void Stack::InitStack(Stack *s)
{
top=0;
base=0;
cout<<" 現(xiàn)構造一個空棧 !"< 53、rking1,SqStack *parking2,Queue *shortcuttt)
{
int q=1;
Car c;
Time t1;
Guest guest;
t1.OutputTime();
t1.save();
c.arrive=t1;
cout< 54、★停車場已滿,新來的車在過道等待 !"< 55、
";
}
else
{
if((s1.sFullStack(&s1)==0)&&(s2.sFullStack(&s2)==0))
{
cout<<" ★★★★★★★★南北停車場均有車位★★★★★★★★
cout< 56、Push(&s1,c);break;
case 2:s2.sPush(&s2, c);break;
}
}
else if((s1.sFullStack(& s1)==0)&&(s2.sFullStack(& s2)==1))
{
cout<<" ★★★★★★★★北入口已滿,車輛進入南入口 "< 57、
{
cout<<"
★★★★★★★★南入口已滿,車輛進入北入口
"< 58、ow(Stack *park, Stack *temp,SqStack *parking1,SqStack *parking2,SqStack
*temt,Queue *shortcut,Car *c)
{
QueueNode *p;
while (!s1.sEmpty(&s1))
{
s1.sPop(&s1,c);
temt1.sPush(&temt1,* c);
}
while (!temt1.sEmpty(&temt1))
{
temt1.sPop(&temt1, c);
cout<<" ★★★★★★★★車輛停車 59、信息 "< 60、dl;
s2.sPush(&s2, *c);
}
while (!s3.EmptyStack(&s3))
{
s3.Pop(&s3, c);
temp1.Push(&temp1, *c);
}
while (!temp1.EmptyStack(&temp1))
{
temp1.Pop(&temp1, c);
cout<<" ★★★★★★★★車輛停車信息 "< 61、nt->next;
while (p != NULL)
{
cout<<" ★ ★ ★ ★ ★ ★ ★ ★ 車 輛 停 車 信 息 "< 62、out<<" <<<<<<< 進入停車場管理系統(tǒng) >>>>>>> "< 63、
s2.sInitStack();
temt1.sInitStack();
s3.InitStack(&s3);
temp1.InitStack(&temp1);
shortcut.InitQueue();
while (t)
{
cout<<"
================================================ "< 64、ut<<"
****
****
◇ 2. 離開停車場 **** ◇3.查看停車場現(xiàn)狀
"< 65、itch (t)
{
case 1: CarIn(&s3,&s1,&s2, &shortcut); break;
case 2: CarOut(&s3,&temp1,&s1,&s2,&temt1 ,&shortcut); break;
case 3: LookNow(&s3, &temp1, &s1, &s2, &temt1, &shortcut,&w); break;
case 0: break;
}
}
return 0;
}
5 測試與調(diào)試
5.1 個人測試(按組員分小節(jié))
奕測試
# 66、include
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習題含答案
- 2煤礦安全監(jiān)測工種技術比武題庫含解析
- 1 礦山應急救援安全知識競賽試題
- 1 礦井泵工考試練習題含答案
- 2煤礦爆破工考試復習題含答案
- 1 各種煤礦安全考試試題含答案