停车场管理系统.docx
- 文档编号:15404107
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:16
- 大小:175.39KB
停车场管理系统.docx
《停车场管理系统.docx》由会员分享,可在线阅读,更多相关《停车场管理系统.docx(16页珍藏版)》请在冰点文库上搜索。
停车场管理系统
问题描述:
设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可以供汽车进出。
汽车在停车场内按照车辆到达的先后顺序,依次由北向南排列,大门在最南段。
若停车场内车位已经停满,则后来的车位只能停在过道上等候。
一旦停车场内有车离开,停靠在过道上的车辆就能开进停车场停放。
根据每辆车在停车场的停靠时间计费。
请设计一个停车场管理系统。
实验代码如下:
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd;
#defineMAXNUM5
#definePRICE2.0
structcar
{
charnum[10];
structtmintime;
structtmoutime;
doubleexpense;
intlength;
intposition;
};
//////////thestackofcar//////////////////////////////
typedefstruct
{
carcarlist[MAXNUM];
inttop;
}Seqstack;
voidStackinit(Seqstack*s)
{
s->top=-1;
}
intIsempty(Seqstack*s)
{
if(s->top==-1)
return1;
else
return0;
}
intIsfull(Seqstack*s)
{
if(s->top==MAXNUM-1)
return1;
else
return0;
}
voidStackpush(Seqstack*s,carcar1)
{
if(!
Isfull(s))
{
s->top++;
s->carlist[s->top]=car1;
}
else
{
cout<<"it'sfullnow"< } } carStackpop(Seqstack*s) { carcar1; if(! Isempty(s)) { car1=s->carlist[s->top]; s->top--; returncar1; } } carStackgettop(Seqstack*s) { carcar1; if(! Isempty(s)) { car1=s->carlist[s->top]; returncar1; } } //////////thequeueofcarinttunnel////////////////////////////// structcarnode { cardata; structcarnode*next; }; structcarnodequeue { carnode*head; carnode*rear; }; voidcarnodequeueinit(carnodequeue*q) { if(! (q->head=(carnode*)malloc(sizeof(carnode)))) { cout<<"failedtomalloc! "< exit(0); } q->rear=q->head; q->head->next=NULL; q->rear->next=NULL; } intcarnodequeueisempty(carnodequeue*q) { if(q->rear==q->head) return1; else return0; } voidcarnodequeuein(carnodequeue*q,carcc) { carnode*p; if(! (p=(carnode*)malloc(sizeof(carnode)))) { cout<<"failedtomalloc! "< exit(0); } p->data=cc; p->next=NULL; q->rear->next=p; q->rear=p; } carcarnodequeueout(carnodequeue*q) { carnode*p; carcc; if(q->head! =q->rear) { p=q->head->next; if(p->next==NULL) { cc=p->data; q->rear=q->head; free(p); } else { q->rear->next=p->next; cc=p->data; free(p); } returncc; } } //////theseparatorofcout////////////////////////// voidseparator(intn,charch,charnewline) { for(inti=0;i cout< if(newline==1) cout< } /////printthetimestruct////////////////////////////// voidprintdata(structtmgm_data) { cout< "< "< } /////showpark//////////////////////////////////////// voidshowpark(Seqstack*s) { structtmgm; cout<<"theparkinformationisfollow: "< separator(40,'-',1); if(Isempty(s)) cout<<"theparkisempty! "< else { cout<<"positionnumberintime"< for(inti=0;i<=s->top;i++) { cout< printdata(s->carlist[i].intime); } cout<<"thetotalis"< if(s->top==MAXNUM-1) cout<<"andtheparkisfullnow! "< else cout<<"andtheparkhave"< "< } separator(40,'-',1); } ////////////////showaisleofcar///////////////////////////////// voidshowaisle(carnodequeue*q) { if(! carnodequeueisempty(q)) { carnode*p; p=q->head->next; cout<<"theailseinformationisfollow: "< separator(30,'-',1); cout<<"numbertheintime"< while(p! =NULL) { cout< printdata(p->data.intime); p=p->next; } } else { cout<<"theailseisempty! "< } separator(30,'-',1); cout< } //////////////showparkandailse///////////////////////////// voidshowall(Seqstack*s,carnodequeue*q) { showpark(s); showaisle(q); } /////////////inpark////////////////////////////////////////// voidInpark(Seqstack*s,carnodequeue*q) { carcc; structtm*gm_data; time_tseconds; time(&seconds);//getthetime gm_data=gmtime(&seconds); cout<<"thenumberofcar"< cin>>cc.num; cc.intime=*gm_data; if(! Isfull(s)&&carnodequeueisempty(q)) { cc.position=(s->top)+2; Stackpush(s,cc); showpark(s); } elseif(Isfull(s)||! carnodequeueisempty(q)) { cout<<"theparkiffull,thecarcanonlyparkinttheailse."< cc.position=MAXNUM; carnodequeuein(q,cc); showall(s,q); } } ////////////////theoutpark///////////////////////////////// voidOutpark(Seqstack*s,carnodequeue*q) { structtm*gm_data; time_tseconds; Seqstackp; charnowtime[10]; inti,pos; carcc; Stackinit(&p); if(Isempty(s)) { cout<<"theparkisempty,nocarneedtoleave."< exit(0); } else { cout<<"theparkinformationisfollow."< showpark(s); cout<<"whichoneneedtoleave? "< cin>>pos; if(pos>0&&pos<=s->top+1) { for(i=s->top+1;i>pos;i--) { cc=Stackpop(s); cc.position=cc.position-1; Stackpush(&p,cc); } cc=Stackpop(s); time(&seconds); gm_data=gmtime(&seconds); cc.outime=*gm_data; cc.length=mktime(&cc.outime)-mktime(&cc.intime); cc.expense=(cc.length/3600+1)*PRICE; cout<<"theinformationwhichcaristoleaveisfollow."< cout< while(! Isempty(&p)) { cc=Stackpop(&p); Stackpush(s,cc); } while(! Isempty(s)&&! carnodequeueisempty(q)) { cc=carnodequeueout(q); time(&seconds); gm_data=gmtime(&seconds); cc.intime=*gm_data; Stackpush(s,cc); } } else { cout<<"thecarpositioniswrong! "< } } } 主函数调用为: #include"stdafx.h" #include"example34_car.h" intmain() { SeqstackPark; carnodequeueAisle; Stackinit(&Park); carnodequeueinit(&Aisle); charchoice; do { cout< separator(10,'-',0); cout<<"themanagementofpark"< separator(30,'-',1); cout<<"1.thecarin"< cout<<"2.thecarout"< cout<<"3.watchtheparkinformation"< cout<<"0.exit"< separator(56,'-',1); cout<<"thetotalis"< cin>>choice; switch(choice) { case'1': Inpark(&Park,&Aisle);break; case'2': Outpark(&Park,&Aisle);break; case'3': showall(&Park,&Aisle);break; } }while(choice! ='0'); return0; } 实验结果展示:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 停车场 管理 系统