立體化停車場設(shè)計(jì)書
《立體化停車場設(shè)計(jì)書》由會(huì)員分享,可在線閱讀,更多相關(guān)《立體化停車場設(shè)計(jì)書(56頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、 立體化停車場設(shè)計(jì)書 1.1 課題任務(wù) 設(shè)停車場有地下和地面兩層, 統(tǒng)一管理。 地下停車場采用單入口和單出口。 地上停車場采用南北方向的雙口,每個(gè)口都有一個(gè)入口和出口。停車順序先地面,后地下。地面入口處 各有一個(gè)單車道的等候通道, 并允許等候的車輛因急事從等候通道直接開走。 具體的設(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í)設(shè)計(jì)了計(jì)時(shí)計(jì)費(fèi)功能,會(huì)員制度,針對不同型號,是否為會(huì)員的車輛進(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),同時(shí)增加會(huì)員管理制度,對于多次在本停車場停車的會(huì)員給予優(yōu)惠。 3 方案設(shè)計(jì) 3.1 總體功能設(shè)計(jì) 本次課程設(shè)計(jì)共分為四個(gè)主要功能: ( 1)進(jìn)入停車場 ( 2)離開停車場 ( 3)查看停車場現(xiàn)狀 ( 4)計(jì)費(fèi)功能 針對進(jìn)入停車場的功能,我們設(shè)計(jì)了“先地上,后地下” ,的停放順序,當(dāng)?shù)厣夏媳彪p向任一停車場停滿后,再向該停車場進(jìn)車,會(huì)顯示“停車場已滿”等提示信息,并將車輛停 入有剩余車位的其他停車場。 當(dāng)所有停車場均無停車位時(shí), 到來車輛將會(huì)進(jìn)入等待區(qū)域, 一旦
4、有車輛離開停車場,最先到達(dá)等待的區(qū)域的車輛將會(huì)進(jìn)入停車場。 針對離開停車場的功能,可選擇任一停車場出車,并會(huì)根據(jù)停車時(shí)長,車輛類型,以及是否為會(huì)員等信息給出本次停車的費(fèi)用。 針對查看停車場現(xiàn)狀的功能,將顯示車牌號,何處停車等相關(guān)信息。 此外,我們還設(shè)計(jì)了計(jì)費(fèi)功能, 利用 windows 系統(tǒng)自帶函數(shù)獲取時(shí)間, 免去了人工手動(dòng)輸入時(shí)間的繁瑣步驟, 同時(shí),針對不同車型, 是否享受會(huì)員優(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ì)方案和操作過程將在個(gè)人報(bào)告中給出,在此不
5、再贅述。
3.3 函數(shù)原型設(shè)計(jì)
int main()
{
system("color E1");
cout< 6、~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^"< 7、=================================== "< 8、out< 9、
}
3.4 用戶界面設(shè)計(jì)
運(yùn)行時(shí)為 DOS界面,通過增加字符畫,更換背景顏色等方法增加界面的美觀度。
4 方案實(shí)現(xiàn)
4.1 開發(fā)環(huán)境與工具
開發(fā)環(huán)境: VisualC++6.0
4.2 個(gè)人設(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)造了一個(gè)空隊(duì)列 "< 13、
cout<<" 銷毀隊(duì)列成功 "< 14、data.licence= rear->data.leaved;
cout<<" 車輛入隊(duì)成功 "< 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 17、IME LocalTime;
int month;
int day;
int hour;
int minuet;
int second;
public:
Time()
{
GetLocalTime(&LocalTime); // 取系統(tǒng)時(shí)間
}
void OutputTime(); // 輸出時(shí)間函數(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)時(shí)間
{
cout<<" 當(dāng) 前 時(shí) 間 為 : "< 20、month()<<"
分 "< 21、int carfre[100]={0};
//static int carid=0;
using namespace std;
class Time // 時(shí)間類
{
private:
SYSTEMTIME LocalTime;
int month;
int day;
int hour;
int minuet;
int second;
public:
Time()
{
GetLocalTime(&LocalTime); // 取系統(tǒng)時(shí)間
}
void OutputTime(); 22、 // 輸出時(shí)間函數(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)時(shí)間
{
cout<<" 當(dāng) 前 時(shí) 間 為 : "< 24、E 100 typedef struct{ //
//
鏈表的最大長度
線性表的靜態(tài)單鏈表的存儲(chǔ)結(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ù)儲(chǔ)存會(huì)員的車牌號和 27、停車次數(shù)計(jì)算價(jià)格函
float cutprice(float price,int v);
//
計(jì)算打折價(jià)格函數(shù)
};
int Guest::LocateElem(SLinkList carid,int *e)
//
在靜態(tài)單鏈線性表中查找第個(gè)值為 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ì)算普通價(jià)格
{
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ì)算會(huì)員打折后的價(jià)格
{
//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<<" ★★★★★★★★您是否是會(huì)員? 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<<" ★★★★★★★★您是否是會(huì)員?★ 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<<" ★★★★★★★★您是否是會(huì)員?★ 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、
}// 置棧一個(gè)空棧 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)造一個(gè)棧類 "< 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)造一個(gè)空棧 !"< 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、信息 "< 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<<" <<<<<<< 進(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)狀
"< 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 個(gè)人測試(按組員分小節(jié))
奕測試
# 66、include
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。