立體化停車場設(shè)計(jì)書

上傳人:E**** 文檔編號:44751619 上傳時間:2021-12-05 格式:DOC 頁數(shù):56 大?。?,003.50KB
收藏 版權(quán)申訴 舉報 下載
立體化停車場設(shè)計(jì)書_第1頁
第1頁 / 共56頁
立體化停車場設(shè)計(jì)書_第2頁
第2頁 / 共56頁
立體化停車場設(shè)計(jì)書_第3頁
第3頁 / 共56頁

下載文檔到電腦,查找使用更方便

118 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《立體化停車場設(shè)計(jì)書》由會員分享,可在線閱讀,更多相關(guān)《立體化停車場設(shè)計(jì)書(56頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、 立體化停車場設(shè)計(jì)書 1.1 課題任務(wù) 設(shè)停車場有地下和地面兩層, 統(tǒng)一管理。 地下停車場采用單入口和單出口。 地上停車場采用南北方向的雙口,每個口都有一個入口和出口。停車順序先地面,后地下。地面入口處 各有一個單車道的等候通道, 并允許等候的車輛因急事從等候通道直接開走。 具體的設(shè)計(jì)任務(wù)如下: ( 1)采用棧、隊(duì)列和有序表等數(shù)據(jù)結(jié)構(gòu)。 ( 2)等候車輛的管理。 ( 3)地下、地上停車位的管理。 ( 4)停車計(jì)費(fèi)功能 。 1.2 課題原理 針對本次課程設(shè)計(jì)的具體要求, 我們設(shè)計(jì)了如下方

2、案: 停車場部選擇棧作為基本數(shù)據(jù)結(jié)構(gòu),充分利用棧后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)特點(diǎn),停車場外部的等候區(qū)域,針對其“先到先出”的 工作特點(diǎn),選擇隊(duì)列作為基本數(shù)據(jù)結(jié)構(gòu)。同時設(shè)計(jì)了計(jì)時計(jì)費(fèi)功能,會員制度,針對不同型號,是否為會員的車輛進(jìn)行分類收費(fèi)。 2 需求分析 2.1 課題調(diào)研 為了完成本次課程設(shè)計(jì)任務(wù), 我們對校園周邊的停車場運(yùn)作狀況進(jìn)行了一系列的前期調(diào)研,包括停車場的管理系統(tǒng)的運(yùn)行原理, 收費(fèi)標(biāo)準(zhǔn)等等, 為本次課程設(shè)計(jì)任務(wù)的完成打下了良好的基礎(chǔ)。 2.2 功能需求 此次設(shè)計(jì)任務(wù),要求停車場分為上下兩層,上層為南北雙向入口和出口,下層為單向入口出口,并要求

3、我們設(shè)計(jì)等待區(qū)域。對于收費(fèi)標(biāo)準(zhǔn),我們將不同型號的車分類收費(fèi),同時增加會員管理制度,對于多次在本停車場停車的會員給予優(yōu)惠。 3 方案設(shè)計(jì) 3.1 總體功能設(shè)計(jì) 本次課程設(shè)計(jì)共分為四個主要功能: ( 1)進(jìn)入停車場 ( 2)離開停車場 ( 3)查看停車場現(xiàn)狀 ( 4)計(jì)費(fèi)功能 針對進(jìn)入停車場的功能,我們設(shè)計(jì)了“先地上,后地下” ,的停放順序,當(dāng)?shù)厣夏媳彪p向任一停車場停滿后,再向該停車場進(jìn)車,會顯示“停車場已滿”等提示信息,并將車輛停 入有剩余車位的其他停車場。 當(dāng)所有停車場均無停車位時, 到來車輛將會進(jìn)入等待區(qū)域, 一旦

4、有車輛離開停車場,最先到達(dá)等待的區(qū)域的車輛將會進(jìn)入停車場。 針對離開停車場的功能,可選擇任一停車場出車,并會根據(jù)停車時長,車輛類型,以及是否為會員等信息給出本次停車的費(fèi)用。 針對查看停車場現(xiàn)狀的功能,將顯示車牌號,何處停車等相關(guān)信息。 此外,我們還設(shè)計(jì)了計(jì)費(fèi)功能, 利用 windows 系統(tǒng)自帶函數(shù)獲取時間, 免去了人工手動輸入時間的繁瑣步驟, 同時,針對不同車型, 是否享受會員優(yōu)惠等差異制定了不同的收費(fèi)標(biāo)準(zhǔn),使停車場的運(yùn)行更為規(guī)化,合理化。 3.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 本次課程設(shè)計(jì)主要使用了棧和隊(duì)列兩種數(shù)據(jù)結(jié)構(gòu), 具體的設(shè)計(jì)方案和操作過程將在個人報告中給出,在此不

5、再贅述。 3.3 函數(shù)原型設(shè)計(jì) int main() { system("color E1"); cout<>>>>>> "<

6、~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^"<

7、=================================== "<

8、out<>t; switch (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;

9、 } 3.4 用戶界面設(shè)計(jì) 運(yùn)行時為 DOS界面,通過增加字符畫,更換背景顏色等方法增加界面的美觀度。 4 方案實(shí)現(xiàn) 4.1 開發(fā)環(huán)境與工具 開發(fā)環(huán)境: VisualC++6.0 4.2 個人設(shè)計(jì)實(shí)現(xiàn)(按組員分小節(jié)) 奕設(shè)計(jì)實(shí)現(xiàn) 隊(duì)列類的實(shí)現(xiàn): typedef struct QueueNode  //  隊(duì)列結(jié)構(gòu) { Car data; struct QueueNode *next; }QueueNode; class Queue // 定義隊(duì)列類 {

10、 public: QueueNode *front, *rear; Queue(){cout<<" 構(gòu)造函數(shù) "<

11、ue(){cout<<" 析構(gòu)函數(shù) "<

12、 if (front == NULL) { return (FALSE); } else { rear = front; front->next = NULL; cout<<" 構(gòu)造了一個空隊(duì)列 "<next; free(front); front=rear; }

13、 cout<<" 銷毀隊(duì)列成功 "<next = (QueueNode *)malloc(sizeof(QueueNode)); if (rear->next == NULL) { cout<<" 車輛入隊(duì)失敗 "<next; rear->data = c; //rear->

14、data.licence= rear->data.leaved; cout<<" 車輛入隊(duì)成功 "<next = NULL; count++; return (TRUE); } } int Queue::DeleteQueue(Queue *Q,Car *c) { // 刪除隊(duì)列元素 QueueNode *t; if (EmptyQueue( Q)) { 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; } 王卓君設(shè)計(jì)實(shí)現(xiàn) Time 類: #include #include #include #include #include #include #include using namespace std; class Time // 時間類 { private: SYSTEMT

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、 //  輸出當(dāng)前系統(tǒng)時間 { cout<<" 當(dāng) 前 時 間 為 : "<

20、month()<<" 分 "< #include #include #include #include #include #include static

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()  //  輸出當(dāng)前系統(tǒng)時間 { cout<<" 當(dāng) 前 時 間 為 : "<

24、E 100 typedef struct{ //  //  鏈表的最大長度 線性表的靜態(tài)單鏈表的存儲結(jié)構(gòu) //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ù)計(jì)算價格函 float cutprice(float price,int v);  //  計(jì)算打折價格函數(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)  //  計(jì)算普通價格 { 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)  //  計(jì)算會員打折后的價格 { //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<<" ★★★★★★★★該車應(yīng)付 "<

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<<" ★★★★★★★★該車應(yīng)付 "<

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、★★★★★★★該車應(yīng)付 "<

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; } } 天舒設(shè)計(jì)實(shí)

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(){}// 析構(gòu)函數(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)已構(gòu)造一個棧類 "<

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)構(gòu)造一個空棧 !"<

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<<" ★★★★★★★★北入口已滿,車輛進(jìn)入南入口 "<

57、 { cout<<"  ★★★★★★★★南入口已滿,車輛進(jìn)入北入口  "<

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、信息 "<licence<<" :地上南停車場停車 ★★★★ "<licence<<" :地上北停車場停車 ★★★★ "<

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<<" ★★★★★★★★車輛停車信息 "<licence<<" :地下停車場停車★ ★★★ "<fro

61、nt->next; while (p != NULL) { cout<<" ★ ★ ★ ★ ★ ★ ★ ★ 車 輛 停 車 信 息 "<licence<<" : 排 隊(duì) 等 待 中 ..."<next; } printf("\n"); } int main() { system("color E1"); cout<

62、out<<" <<<<<<< 進(jìn)入停車場管理系統(tǒng) >>>>>>> "<

63、 s2.sInitStack(); temt1.sInitStack(); s3.InitStack(&s3); temp1.InitStack(&temp1); shortcut.InitQueue(); while (t) { cout<<"  ================================================ "<

64、ut<<"  **** ****  ◇ 2. 離開停車場 **** ◇3.查看停車場現(xiàn)狀  "<>t; sw

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 #include #include #include #include #include #include #include #define STACKSIZE 3 // #define LICENCESIZE 10// static int count=1;  設(shè)置地下停車場容量 設(shè)置車牌號 #define TRUE 1 #define FALSE 0 using namespace std; typedef struct Car { int leaved; char licence[LICENCESIZE]; }Car; typedef struct QueueNode // {  隊(duì)列結(jié)構(gòu)

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!